• Mihai Caraman's avatar
    KVM: PPC: e500mc: Enhance tlb invalidation condition on vcpu schedule · 1f0eeb7e
    Mihai Caraman authored
    On vcpu schedule, the condition checked for tlb pollution is too loose.
    The tlb entries of a vcpu become polluted (vs stale) only when a different
    vcpu within the same logical partition runs in-between. Optimize the tlb
    invalidation condition keeping last_vcpu per logical partition id.
    
    With the new invalidation condition, a guest shows 4% performance improvement
    on P5020DS while running a memory stress application with the cpu oversubscribed,
    the other guest running a cpu intensive workload.
    
    Guest - old invalidation condition
      real 3.89
      user 3.87
      sys 0.01
    
    Guest - enhanced invalidation condition
      real 3.75
      user 3.73
      sys 0.01
    
    Host
      real 3.70
      user 1.85
      sys 0.00
    
    The memory stress application accesses 4KB pages backed by 75% of available
    TLB0 entries:
    
    char foo[ENTRIES][4096] __attribute__ ((aligned (4096)));
    
    int main()
    {
    	char bar;
    	int i, j;
    
    	for (i = 0; i < ITERATIONS; i++)
            	for (j = 0; j < ENTRIES; j++)
                		bar = foo[j][0];
    
    	return 0;
    }
    Signed-off-by: default avatarMihai Caraman <mihai.caraman@freescale.com>
    Reviewed-by: default avatarScott Wood <scottwood@freescale.com>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    1f0eeb7e
e500mc.c 9.71 KB