• Alex Shi's avatar
    x86/tlb: enable tlb flush range support for x86 · 611ae8e3
    Alex Shi authored
    Not every tlb_flush execution moment is really need to evacuate all
    TLB entries, like in munmap, just few 'invlpg' is better for whole
    process performance, since it leaves most of TLB entries for later
    accessing.
    
    This patch also rewrite flush_tlb_range for 2 purposes:
    1, split it out to get flush_blt_mm_range function.
    2, clean up to reduce line breaking, thanks for Borislav's input.
    
    My micro benchmark 'mummap' http://lkml.org/lkml/2012/5/17/59
    show that the random memory access on other CPU has 0~50% speed up
    on a 2P * 4cores * HT NHM EP while do 'munmap'.
    
    Thanks Yongjie's testing on this patch:
    -------------
    I used Linux 3.4-RC6 w/ and w/o his patches as Xen dom0 and guest
    kernel.
    After running two benchmarks in Xen HVM guest, I found his patches
    brought about 1%~3% performance gain in 'kernel build' and 'netperf'
    testing, though the performance gain was not very stable in 'kernel
    build' testing.
    
    Some detailed testing results are below.
    
    Testing Environment:
    	Hardware: Romley-EP platform
    	Xen version: latest upstream
    	Linux kernel: 3.4-RC6
    	Guest vCPU number: 8
    	NIC: Intel 82599 (10GB bandwidth)
    
    In 'kernel build' testing in guest:
    	Command line  |  performance gain
        make -j 4      |    3.81%
        make -j 8      |    0.37%
        make -j 16     |    -0.52%
    
    In 'netperf' testing, we tested TCP_STREAM with default socket size
    16384 byte as large packet and 64 byte as small packet.
    I used several clients to add networking pressure, then 'netperf' server
    automatically generated several threads to response them.
    I also used large-size packet and small-size packet in the testing.
    	Packet size  |  Thread number | performance gain
    	16384 bytes  |      4       |   0.02%
    	16384 bytes  |      8       |   2.21%
    	16384 bytes  |      16      |   2.04%
    	64 bytes     |      4       |   1.07%
    	64 bytes     |      8       |   3.31%
    	64 bytes     |      16      |   0.71%
    Signed-off-by: default avatarAlex Shi <alex.shi@intel.com>
    Link: http://lkml.kernel.org/r/1340845344-27557-8-git-send-email-alex.shi@intel.comTested-by: default avatarRen, Yongjie <yongjie.ren@intel.com>
    Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
    611ae8e3
tlb.c 12.1 KB