VDSO – what is this?

(updated 3/12/2013)

Virtual Dynamically-linked Shared Object (VDSO) is a shared library provided by the kernel. This allows normal programs to do certain system calls without the usual overhead of system calls like switching address spaces.

For Linux on System z there are three functions at the moment that are accelerated in this way: gettimeofday, clock_getres, and clock_gettime. The most important one is probably gettimeofday. On a z196 system by using VDSO more than six times as many function calls of this function are possible as without using it.

The newer distributions (RHEL 5.9+, RHEL 6, SLES 11) have this feature and it’s enabled by default.   In the rare case of an application that can’t deal with such fast responses it can be turned of by the kernel parameter “vdso=0“. If you are experiencing performance problems on older systems due to slow time operations it’s definitely worth a try of this get’s resolved by this feature.

If you want to check if your system already has it enabled do a
grep vdso /proc/self/maps
if this command finds an entry it’s enabled.

Leave a Comment

Your email address will not be published. Required fields are marked *