• Chuck Ebbert's avatar
    [PATCH] i386: add sleazy FPU optimization · acc20761
    Chuck Ebbert authored
    i386 port of the sLeAZY-fpu feature.  Chuck reports that this gives him a +/-
    0.4% improvement on his simple benchmark
    
    x86_64 description follows:
    
    Right now the kernel on x86-64 has a 100% lazy fpu behavior: after *every*
    context switch a trap is taken for the first FPU use to restore the FPU
    context lazily.  This is of course great for applications that have very
    sporadic or no FPU use (since then you avoid doing the expensive save/restore
    all the time).  However for very frequent FPU users...  you take an extra trap
    every context switch.
    
    The patch below adds a simple heuristic to this code: After 5 consecutive
    context switches of FPU use, the lazy behavior is disabled and the context
    gets restored every context switch.  If the app indeed uses the FPU, the trap
    is avoided.  (the chance of the 6th time slice using FPU after the previous 5
    having done so are quite high obviously).
    
    After 256 switches, this is reset and lazy behavior is returned (until there
    are 5 consecutive ones again).  The reason for this is to give apps that do
    longer bursts of FPU use still the lazy behavior back after some time.
    Signed-off-by: default avatarChuck Ebbert <76306.1226@compuserve.com>
    Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    acc20761
traps.c 32.6 KB