Skip to content
  • Mel Gorman's avatar
    mm, page_alloc: check multiple page fields with a single branch · 7bfec6f4
    Mel Gorman authored
    
    
    Every page allocated or freed is checked for sanity to avoid corruptions
    that are difficult to detect later.  A bad page could be due to a number
    of fields.  Instead of using multiple branches, this patch combines
    multiple fields into a single branch.  A detailed check is only
    necessary if that check fails.
    
                                                 4.6.0-rc2                  4.6.0-rc2
                                            initonce-v1r20            multcheck-v1r20
      Min      alloc-odr0-1               359.00 (  0.00%)           348.00 (  3.06%)
      Min      alloc-odr0-2               260.00 (  0.00%)           254.00 (  2.31%)
      Min      alloc-odr0-4               214.00 (  0.00%)           213.00 (  0.47%)
      Min      alloc-odr0-8               186.00 (  0.00%)           186.00 (  0.00%)
      Min      alloc-odr0-16              173.00 (  0.00%)           173.00 (  0.00%)
      Min      alloc-odr0-32              165.00 (  0.00%)           166.00 ( -0.61%)
      Min      alloc-odr0-64              162.00 (  0.00%)           162.00 (  0.00%)
      Min      alloc-odr0-128             161.00 (  0.00%)           160.00 (  0.62%)
      Min      alloc-odr0-256             170.00 (  0.00%)           169.00 (  0.59%)
      Min      alloc-odr0-512             181.00 (  0.00%)           180.00 (  0.55%)
      Min      alloc-odr0-1024            190.00 (  0.00%)           188.00 (  1.05%)
      Min      alloc-odr0-2048            196.00 (  0.00%)           194.00 (  1.02%)
      Min      alloc-odr0-4096            202.00 (  0.00%)           199.00 (  1.49%)
      Min      alloc-odr0-8192            205.00 (  0.00%)           202.00 (  1.46%)
      Min      alloc-odr0-16384           205.00 (  0.00%)           203.00 (  0.98%)
    
    Again, the benefit is marginal but avoiding excessive branches is
    important.  Ideally the paths would not have to check these conditions
    at all but regrettably abandoning the tests would make use-after-free
    bugs much harder to detect.
    
    Signed-off-by: default avatarMel Gorman <mgorman@techsingularity.net>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    7bfec6f4