Re: Dynamic symbol table

Karl Vogel <[email protected]>
Newsgroups gmane.comp.kde.devel.optimize
Message-ID <[email protected]>
Lubos Lunak wrote:

> On Friday 16 of July 2004 16:56, Karl Vogel wrote:
>> Lubos Lunak <[email protected]> wrote in
>>
>> news:[email protected]:
>> > On Friday 16 of July 2004 14:00, Karl Vogel wrote:
>> >> Really?! This seems like a bad idea to me! I did a preload test with
>> >> madvise() on all linked libs and well it took a lot longer than
>> >> demand paging the libs..
>> >
>> >  And I did a test as well and it took somewhat shorter than demand
>> >  paging the
>> > libs. Makes sense given that seeking is much slower than the actual
>> > reading. You can search this list archives for madvise for details.
>>
>> I've read your messages on the subject. But maybe you were using a
>> desktop system with a fast 7200RPM disk?.. while my laptop has a slow
>> 4500RPM disk.
>>
>> Or.. maybe I did something wrong :)
> 
>  I measured like this:
> - reboot
> - start in runlevel 3
> - (X vt10 :1 -terminate &);sleep 5; DISPLAY=:1 xterm
> - measure initial memory usage or whatever
> - startkde
> 
> 
>  But yes, perhaps the some init script should guess and set LD_NOMADVISE
>  if it
> thinks madvise() would do more harm than good on the specific machine.

Well I had a look at some load patters... ie starting kedit and directly
stopping it gives pattern as shown below:

X 08048520        0 X 008 paddr 08048000 acc 08048520 pgoff 00000000 foff 00000000 fnam=/usr/bin/kedit
A 002498a3        0 X 002 paddr 00432000 acc 004323f4 pgoff 00000000 foff 00000000 fnam=/usr/lib/libkdeinit_kedit.so
A 002498ba     8192 X 002 paddr 00434000 acc 004342ec pgoff 00000000 foff 00002000 fnam=/usr/lib/libkdeinit_kedit.so
A 002498ba     4096 X 002 paddr 00433000 acc 00433a5c pgoff 00000000 foff 00001000 fnam=/usr/lib/libkdeinit_kedit.so
A 002498ba    16384 X 002 paddr 00436000 acc 004366ec pgoff 00000000 foff 00004000 fnam=/usr/lib/libkdeinit_kedit.so
A 00252578    28672 X 002 paddr 00439000 acc 00439186 pgoff 00000000 foff 00007000 fnam=/usr/lib/libkdeinit_kedit.so
A 00249aa6    45056 X 002 paddr 0043d000 acc 0043dee0 pgoff 00000000 foff 0000b000 fnam=/usr/lib/libkdeinit_kedit.so
X 0044b500   102400 X 002 paddr 0044b000 acc 0044b500 pgoff 00000000 foff 00019000 fnam=/usr/lib/libkdeinit_kedit.so
X 0044d666   110592 X 002 paddr 0044d000 acc 0044d666 pgoff 00000000 foff 0001b000 fnam=/usr/lib/libkdeinit_kedit.so
X 00443438    69632 X 002 paddr 00443000 acc 00443438 pgoff 00000000 foff 00011000 fnam=/usr/lib/libkdeinit_kedit.so
A 0024c61a    61440 X 002 paddr 00441000 acc 004418ec pgoff 00000000 foff 0000f000 fnam=/usr/lib/libkdeinit_kedit.so
A 002c0b02   135168 X 002 paddr 00453000 acc 004530ed pgoff 00000000 foff 00021000 fnam=/usr/lib/libkdeinit_kedit.so
X 004445f8    73728 X 002 paddr 00444000 acc 004445f8 pgoff 00000000 foff 00012000 fnam=/usr/lib/libkdeinit_kedit.so
A 0024c61a    65536 X 002 paddr 00442000 acc 004421cc pgoff 00000000 foff 00010000 fnam=/usr/lib/libkdeinit_kedit.so
A 0024c63c    12288 X 002 paddr 00435000 acc 00435f05 pgoff 00000000 foff 00003000 fnam=/usr/lib/libkdeinit_kedit.so
A 00252578    40960 X 002 paddr 0043c000 acc 0043cd40 pgoff 00000000 foff 0000a000 fnam=/usr/lib/libkdeinit_kedit.so
A 00252578    36864 X 002 paddr 0043b000 acc 0043beaf pgoff 00000000 foff 00009000 fnam=/usr/lib/libkdeinit_kedit.so
A 00252578    24576 X 002 paddr 00438000 acc 00438f02 pgoff 00000000 foff 00006000 fnam=/usr/lib/libkdeinit_kedit.so
A 00252578    20480 X 002 paddr 00437000 acc 00437ba7 pgoff 00000000 foff 00005000 fnam=/usr/lib/libkdeinit_kedit.so
A 00252578    32768 X 002 paddr 0043a000 acc 0043a9cc pgoff 00000000 foff 00008000 fnam=/usr/lib/libkdeinit_kedit.so
X 0044cde0   106496 X 002 paddr 0044c000 acc 0044cde0 pgoff 00000000 foff 0001a000 fnam=/usr/lib/libkdeinit_kedit.so
X 0044e910   114688 X 002 paddr 0044e000 acc 0044e910 pgoff 00000000 foff 0001c000 fnam=/usr/lib/libkdeinit_kedit.so
X 00445000    77824 X 002 paddr 00445000 acc 00445000 pgoff 00000000 foff 00013000 fnam=/usr/lib/libkdeinit_kedit.so
A 002c07a3   131072 X 002 paddr 00452000 acc 00452a24 pgoff 00000000 foff 00020000 fnam=/usr/lib/libkdeinit_kedit.so
X 00446360    81920 X 002 paddr 00446000 acc 00446360 pgoff 00000000 foff 00014000 fnam=/usr/lib/libkdeinit_kedit.so
X 00450800   122880 X 002 paddr 00450000 acc 00450800 pgoff 00000000 foff 0001e000 fnam=/usr/lib/libkdeinit_kedit.so
X 00451520   126976 X 002 paddr 00451000 acc 00451520 pgoff 00000000 foff 0001f000 fnam=/usr/lib/libkdeinit_kedit.so
X 0044a160    98304 X 002 paddr 0044a000 acc 0044a160 pgoff 00000000 foff 00018000 fnam=/usr/lib/libkdeinit_kedit.so
X 00449000    94208 X 002 paddr 00449000 acc 00449000 pgoff 00000000 foff 00017000 fnam=/usr/lib/libkdeinit_kedit.so

$ ls -l /usr/bin/kedit
-rwxr-xr-x  1 root root 32620 May  6 19:03 /usr/bin/kedit
[kvo@localhost kvo]$ ls -l /usr/lib/libkdeinit_kedit.so
-rwxr-xr-x  1 root root 151040 May  6 19:03 /usr/lib/libkdeinit_kedit.so

>From /usr/bin/kedit only 1 page is executed/accessed (x86 pagesize = 4Kb)
and from the libkdeinit_kedit.so 28 pages are executed/accessed (=112Kb)

I'm not sure if loading 151040 bytes instead of 114688 bytes is really 
hurting. Something I'm planning on looking into after the symbol pruning
stuff.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.