Skip to content
  • Kirill A. Shutemov's avatar
    mm: create a separate slab for page->ptl allocation · b35f1819
    Kirill A. Shutemov authored
    
    
    If DEBUG_SPINLOCK and DEBUG_LOCK_ALLOC are enabled spinlock_t on x86_64
    is 72 bytes.  For page->ptl they will be allocated from kmalloc-96 slab,
    so we loose 24 on each.  An average system can easily allocate few tens
    thousands of page->ptl and overhead is significant.
    
    Let's create a separate slab for page->ptl allocation to solve this.
    
    To make sure that it really works this time, some numbers from my test
    machine (just booted, no load):
    
    Before:
      # grep '^\(kmalloc-96\|page->ptl\)' /proc/slabinfo
      kmalloc-96         31987  32190    128   30    1 : tunables  120   60    8 : slabdata   1073   1073     92
    After:
      # grep '^\(kmalloc-96\|page->ptl\)' /proc/slabinfo
      page->ptl          27516  28143     72   53    1 : tunables  120   60    8 : slabdata    531    531      9
      kmalloc-96          3853   5280    128   30    1 : tunables  120   60    8 : slabdata    176    176      0
    
    Note that the patch is useful not only for debug case, but also for
    PREEMPT_RT, where spinlock_t is always bloated.
    
    Signed-off-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b35f1819