Re: [PATCH] x86/asm/entry/32: Restore %ss before SYSRETL if necessary

From: H. Peter Anvin
Date: Thu Apr 23 2015 - 21:00:42 EST


On 04/23/2015 03:55 PM, Andy Lutomirski wrote:
> On Thu, Apr 23, 2015 at 3:52 PM, H. Peter Anvin <hpa@xxxxxxxxx> wrote:
>> On 04/23/2015 03:38 PM, Andy Lutomirski wrote:
>>>>
>>>> Because there are way more sysrets than context switches, and Linux is
>>>> particularly sensitive to system call latency, by design.
>>>
>>
>> Just to clarify: why would Linux be more sensitive to system call by
>> design? It enables much simpler APIs and avoids hacks like sending down
>> a syscall task list (which was genuinely proposed at one point.) If
>> kernel entry/exit is too expensive, then the APIs get more complex
>> because they *have* to do everything in the smallest number of system calls.
>>
>
> It's a matter of the ratio, right? One cycle of syscall overhead
> saved is worth some number of context switch cycles added, and the
> ratio probably varies by workload.
>

Correct. For workloads which do *no* system calls it is kind of "special".

> If we do syscall, two context switches, and sysret, then we wouldn't
> have been better off fixing it on sysret. But maybe most workloads
> still prefer the fixup on context switch.
>

There is also a matter of latency, which tends to be more critical for
syscall.

-hpa


--
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/