• Hui Zhu's avatar
    zsmalloc: zs_page_migrate: skip unnecessary loops but not return -EBUSY if zspage is not inuse · 77ff4657
    Hui Zhu authored
    Getting -EBUSY from zs_page_migrate will make migration slow (retry) or
    fail (zs_page_putback will schedule_work free_work, but it cannot ensure
    the success).
    
    I noticed this issue because my Kernel patched
    (https://lkml.org/lkml/2014/5/28/113) that will remove retry in
    __alloc_contig_migrate_range.
    
    This retry will handle the -EBUSY because it will re-isolate the page
    and re-call migrate_pages.  Without it will make cma_alloc fail at once
    with -EBUSY.
    
    According to the review from Minchan Kim in
    https://lkml.org/lkml/2014/5/28/113, I update the patch to skip
    unnecessary loops but not return -EBUSY if zspage is not inuse.
    
    Following is what I got with highalloc-performance in a vbox with 2 cpu
    1G memory 512 zram as swap.  And the swappiness is set to 100.
    
                                       ori          ne
                                      orig         new
    Minor Faults                  50805113    50830235
    Major Faults                     43918       56530
    Swap Ins                         42087       55680
    Swap Outs                        89718      104700
    Allocation stalls                    0           0
    DMA allocs                       57787       52364
    DMA32 allocs                  47964599    48043563
    Normal allocs                        0           0
    Movable allocs                       0           0
    Direct pages scanned             45493       23167
    Kswapd pages scanned           1565222     1725078
    Kswapd pages reclaimed         1342222     1503037
    Direct pages reclaimed           45615       25186
    Kswapd efficiency                  85%         87%
    Kswapd velocity               1897.101    1949.042
    Direct efficiency                 100%        108%
    Direct velocity                 55.139      26.175
    Percentage direct scans             2%          1%
    Zone normal velocity          1952.240    1975.217
    Zone dma32 velocity              0.000       0.000
    Zone dma velocity                0.000       0.000
    Page writes by reclaim       89764.000  105233.000
    Page writes file                    46         533
    Page writes anon                 89718      104700
    Page reclaim immediate           21457        3699
    Sector Reads                   3259688     3441368
    Sector Writes                  3667252     3754836
    Page rescued immediate               0           0
    Slabs scanned                  1042872     1160855
    Direct inode steals               8042       10089
    Kswapd inode steals              54295       29170
    Kswapd skipped wait                  0           0
    THP fault alloc                    175         154
    THP collapse alloc                 226         289
    THP splits                           0           0
    THP fault fallback                  11          14
    THP collapse fail                    3           2
    Compaction stalls                  536         646
    Compaction success                 322         358
    Compaction failures                214         288
    Page migrate success            119608      111063
    Page migrate failure              2723        2593
    Compaction pages isolated       250179      232652
    Compaction migrate scanned     9131832     9942306
    Compaction free scanned        2093272     2613998
    Compaction cost                    192         189
    NUMA alloc hit                47124555    47193990
    NUMA alloc miss                      0           0
    NUMA interleave hit                  0           0
    NUMA alloc local              47124555    47193990
    NUMA base PTE updates                0           0
    NUMA huge PMD updates                0           0
    NUMA page range updates              0           0
    NUMA hint faults                     0           0
    NUMA hint local faults               0           0
    NUMA hint local percent            100         100
    NUMA pages migrated                  0           0
    AutoNUMA cost                       0%          0%
    
    [akpm@linux-foundation.org: remove newline, per Minchan]
    Link: http://lkml.kernel.org/r/1500889535-19648-1-git-send-email-zhuhui@xiaomi.comSigned-off-by: default avatarHui Zhu <zhuhui@xiaomi.com>
    Acked-by: default avatarMinchan Kim <minchan@kernel.org>
    Reviewed-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    77ff4657
zsmalloc.c 59 KB