[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Best practice downgrade MySQL von 5.1 nach 5.0 unter Squeeze



Hallo,

Gregor Schneider <rc46fi@googlemail.com>:

>ldd  /usr/lib/apache2/modules/mod_auth_cookie_mysql2.so | sort
>[...]
>        linux-vdso.so.1 =>  (0x00007fffbf3ff000)

>Wozu braucht's linux-vdso.so.1?

linux-vdso ist eine virtuelle Library, die in jeden Prozess deines Systems
vom Kernel automatisch eingeblendet wird. Es gibt kein File dieses Namens
auf deinem System, wa man u.a. daran erkennt, dass in der Ausgabe von ldd
hinter dem => kein Filename steht.

Der Sinn dahinter ist, dass es je nach verwendetem CPU Modell mehrere,
unterschiedlich performance Möglichkeiten gibt, wie System Calls vom User
Space aus getätigt werden. Der Kernel ermittelt beim Booten, welches die
optimale ist, und stellt diese in der virtuellen Library allen Prozessen
bereit. Dadurch laufen die User Space Binaries auf einer Vielzahl verschiedener
Prozessoren und nutzen trotzdem für Syscalls immer den optimalen Weg.

linux-vdso.so ist für 64 Bit Systeme; auf 32 Bit Systemen heisst das gleiche
linux-gate.so. In diesem Artikel wird der Mechanismus genauer beschrieben:
http://www.trilithium.com/johan/2005/08/linux-gate/

>Falls man es nicht braucht, kann man
>das evtl. per Compiler- / Linker-Flag entfernen?

Es mag sein, dass man mit einer der Optionen -nodefaultlibs, -nostdlib oder
o.ä.  diese Einbindung verhindern kann. Man könnte auch die Lib statisch
linken, dann enthält sie generell keine Abhängigkeiten mehr von dynamischen
Bibliotheken.

Ich denke, dass der Unterschied zwischen deinen beiden Builds darin besteht,
dass der eine gar keine Syscalls verwendet. Letzten Endes ist das aber
egal, denn die Library wird in den Prozessraum des Apache gelinkt, und in
diesem steht die linux-vdso.so eh an der bekannten Adresse zur Verfügung.

Gruß, Harald


Reply to: