summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/asm/kvm_host.h
diff options
context:
space:
mode:
authorMihai Caraman2014-06-18 09:15:22 +0200
committerAlexander Graf2014-07-28 15:22:16 +0200
commit1f0eeb7e1a88f46afa0f435cf7c34b0c84cf2394 (patch)
treef1eb80cb27209f2e395bb34cf6d08af7e1af2e79 /arch/powerpc/include/asm/kvm_host.h
parentKVM: PPC: Book3S PR: Fix sparse endian checks (diff)
downloadkernel-qcow2-linux-1f0eeb7e1a88f46afa0f435cf7c34b0c84cf2394.tar.gz
kernel-qcow2-linux-1f0eeb7e1a88f46afa0f435cf7c34b0c84cf2394.tar.xz
kernel-qcow2-linux-1f0eeb7e1a88f46afa0f435cf7c34b0c84cf2394.zip
KVM: PPC: e500mc: Enhance tlb invalidation condition on vcpu schedule
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: Mihai Caraman <mihai.caraman@freescale.com> Reviewed-by: Scott Wood <scottwood@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'arch/powerpc/include/asm/kvm_host.h')
0 files changed, 0 insertions, 0 deletions