Skip to content
  • Yuanhan Liu's avatar
    rwsem-spinlock: Implement writer lock-stealing for better scalability · 41ef8f82
    Yuanhan Liu authored
    We (Linux Kernel Performance project) found a regression
    introduced by commit:
    
      5a505085 mm/rmap: Convert the struct anon_vma::mutex to an rwsem
    
    which converted all anon_vma::mutex locks rwsem write locks.
    
    The semantics are the same, but the behavioral difference is
    quite huge in some cases. After investigating it we found the
    root cause: mutexes support lock stealing while rwsems don't.
    
    Here is the link for the detailed regression report:
    
      https://lkml.org/lkml/2013/1/29/84
    
    
    
    Ingo suggested adding write lock stealing to rwsems:
    
        "I think we should allow lock-steal between rwsem writers - that
         will not hurt fairness as most rwsem fairness concerns relate to
         reader vs. writer fairness"
    
    And here is the rwsem-spinlock version.
    
    With this patch, we got a double performance increase in one
    test box with following aim7 workfile:
    
        FILESIZE: 1M
        POOLSIZE: 10M
        10 fork_test
    
     /usr/bin/time output w/o patch                       /usr/bin/time_output with patch
     -- Percent of CPU this job got: 369%                 Percent of CPU this job got: 537%
     Voluntary context switches: 640595016                Voluntary context switches: 157915561
    
    We got a 45% increase in CPU usage and saved about 3/4 voluntary context switches.
    
    Reported-by: default avatarLKP project <lkp@linux.intel.com>
    Suggested-by: default avatarIngo Molnar <mingo@kernel.org>
    Signed-off-by: default avatarYuanhan Liu <yuanhan.liu@linux.intel.com>
    Cc: Alex Shi <alex.shi@intel.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Michel Lespinasse <walken@google.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Anton Blanchard <anton@samba.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: paul.gortmaker@windriver.com
    Link: http://lkml.kernel.org/r/1359716356-23865-1-git-send-email-yuanhan.liu@linux.intel.com
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    41ef8f82