Re: [PATCH v2 08/10] x86-64: Emulate vsyscalls

From: Andrew Lutomirski
Date: Mon May 30 2011 - 08:25:56 EST


On Mon, May 30, 2011 at 8:15 AM, Ingo Molnar <mingo@xxxxxxx> wrote:
>
> * Andrew Lutomirski <luto@xxxxxxx> wrote:
>
>> On Mon, May 30, 2011 at 6:59 AM, Ingo Molnar <mingo@xxxxxxx> wrote:
>> >
>> > * Andrew Lutomirski <luto@xxxxxxx> wrote:
>> >
>> >>
>> >> I'd advocate waiting until glibc 2.14 comes out with this change:
>> >>
>> >> http://sourceware.org/git/?p=glibc.git;a=commit;h=a8509ca540427502bd955f35296ff7b727c7a8a1
>> >>
>> >> I want to add a warning (ratelimited to an extremely low rate) in v3
>> >> whenever any of the vsyscalls get used telling users that their legacy
>> >> code is suffering a performance impact, but it seems like bad form to
>> >> tell people to build glibc from git to avoid a regression.
>> >
>> > But only statically built binaries would be impacted in practice,
>> > right? The number of statically built binaries that heavily rely on
>> > vsyscalls ought to be a very small set ...
>>
>> With current glibc even dynamic binaries take the hit on time().
>
> Indeed, you are right, i completely forgot that again :)
>
>> With the emulation warning (coming in v3), I get (on a Fedora
>> 15-based VM):
>>
>> [    0.635493] init[1] emulated legacy vsyscall time(); upgrade your
>> code to avoid a performance hit. ip:ffffffffff600404 sp:7fff277fe9c8
>> caller:3da3e9e27d in libc.so.6[3da3e00000+192000]
>
> Ok, so we should leave the option enabled by default and distros can
> flip it as they upgrade/fix glibc, right?

Yes.

But I'll make the option control just time() instead of all three.
That will also reduce the size of the patch :)

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/