• Barry Song's avatar
    arm64: enable THP_SWAP for arm64 · d0637c50
    Barry Song authored
    THP_SWAP has been proven to improve the swap throughput significantly
    on x86_64 according to commit bd4c82c2 ("mm, THP, swap: delay
    splitting THP after swapped out").
    As long as arm64 uses 4K page size, it is quite similar with x86_64
    by having 2MB PMD THP. THP_SWAP is architecture-independent, thus,
    enabling it on arm64 will benefit arm64 as well.
    A corner case is that MTE has an assumption that only base pages
    can be swapped. We won't enable THP_SWAP for ARM64 hardware with
    MTE support until MTE is reworked to coexist with THP_SWAP.
    
    A micro-benchmark is written to measure thp swapout throughput as
    below,
    
     unsigned long long tv_to_ms(struct timeval tv)
     {
     	return tv.tv_sec * 1000 + tv.tv_usec / 1000;
     }
    
     main()
     {
     	struct timeval tv_b, tv_e;;
     #define SIZE 400*1024*1024
     	volatile void *p = mmap(NULL, SIZE, PROT_READ | PROT_WRITE,
     				MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
     	if (!p) {
     		perror("fail to get memory");
     		exit(-1);
     	}
    
     	madvise(p, SIZE, MADV_HUGEPAGE);
     	memset(p, 0x11, SIZE); /* write to get mem */
    
     	gettimeofday(&tv_b, NULL);
     	madvise(p, SIZE, MADV_PAGEOUT);
     	gettimeofday(&tv_e, NULL);
    
     	printf("swp out bandwidth: %ld bytes/ms\n",
     			SIZE/(tv_to_ms(tv_e) - tv_to_ms(tv_b)));
     }
    
    Testing is done on rk3568 64bit Quad Core Cortex-A55 platform -
    ROCK 3A.
    thp swp throughput w/o patch: 2734bytes/ms (mean of 10 tests)
    thp swp throughput w/  patch: 3331bytes/ms (mean of 10 tests)
    
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Steven Price <steven.price@arm.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Reviewed-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
    Signed-off-by: default avatarBarry Song <v-songbaohua@oppo.com>
    Link: https://lore.kernel.org/r/20220720093737.133375-1-21cnbao@gmail.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    d0637c50
Kconfig 74.2 KB