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.