“a5544e021fff1044e2805604c18e7e4dbbf36302”上不存在“README.rst”
  1. 08 5月, 2013 1 次提交
    • L
      Merge branch 'rwsem-optimizations' · c8de2fa4
      Linus Torvalds 提交于
      Merge rwsem optimizations from Michel Lespinasse:
       "These patches extend Alex Shi's work (which added write lock stealing
        on the rwsem slow path) in order to provide rwsem write lock stealing
        on the fast path (that is, without taking the rwsem's wait_lock).
      
        I have unfortunately been unable to push this through -next before due
        to Ingo Molnar / David Howells / Peter Zijlstra being busy with other
        things.  However, this has gotten some attention from Rik van Riel and
        Davidlohr Bueso who both commented that they felt this was ready for
        v3.10, and Ingo Molnar has said that he was OK with me pushing
        directly to you.  So, here goes :)
      
        Davidlohr got the following test results from pgbench running on a
        quad-core laptop:
      
          | db_size | clients  |  tps-vanilla   |   tps-rwsem  |
          +---------+----------+----------------+--------------+
          | 160 MB   |       1 |           5803 |         6906 | + 19.0%
          | 160 MB   |       2 |          13092 |        15931 |
          | 160 MB   |       4 |          29412 |        33021 |
          | 160 MB   |       8 |          32448 |        34626 |
          | 160 MB   |      16 |          32758 |        33098 |
          | 160 MB   |      20 |          26940 |        31343 | + 16.3%
          | 160 MB   |      30 |          25147 |        28961 |
          | 160 MB   |      40 |          25484 |        26902 |
          | 160 MB   |      50 |          24528 |        25760 |
          ------------------------------------------------------
          | 1.6 GB   |       1 |           5733 |         7729 | + 34.8%
          | 1.6 GB   |       2 |           9411 |        19009 | + 101.9%
          | 1.6 GB   |       4 |          31818 |        33185 |
          | 1.6 GB   |       8 |          33700 |        34550 |
          | 1.6 GB   |      16 |          32751 |        33079 |
          | 1.6 GB   |      20 |          30919 |        31494 |
          | 1.6 GB   |      30 |          28540 |        28535 |
          | 1.6 GB   |      40 |          26380 |        27054 |
          | 1.6 GB   |      50 |          25241 |        25591 |
          ------------------------------------------------------
          | 7.6 GB   |       1 |           5779 |         6224 |
          | 7.6 GB   |       2 |          10897 |        13611 | + 24.9%
          | 7.6 GB   |       4 |          32683 |        33108 |
          | 7.6 GB   |       8 |          33968 |        34712 |
          | 7.6 GB   |      16 |          32287 |        32895 |
          | 7.6 GB   |      20 |          27770 |        31689 | + 14.1%
          | 7.6 GB   |      30 |          26739 |        29003 |
          | 7.6 GB   |      40 |          24901 |        26683 |
          | 7.6 GB   |      50 |          17115 |        25925 | + 51.5%
          ------------------------------------------------------
      
        (Davidlohr also has one additional patch which further improves
        throughput, though I will ask him to send it directly to you as I have
        suggested some minor changes)."
      
      * emailed patches from Michel Lespinasse <walken@google.com>:
        rwsem: no need for explicit signed longs
        x86 rwsem: avoid taking slow path when stealing write lock
        rwsem: do not block readers at head of queue if other readers are active
        rwsem: implement support for write lock stealing on the fastpath
        rwsem: simplify __rwsem_do_wake
        rwsem: skip initial trylock in rwsem_down_write_failed
        rwsem: avoid taking wait_lock in rwsem_down_write_failed
        rwsem: use cmpxchg for trying to steal write lock
        rwsem: more agressive lock stealing in rwsem_down_write_failed
        rwsem: simplify rwsem_down_write_failed
        rwsem: simplify rwsem_down_read_failed
        rwsem: move rwsem_down_failed_common code into rwsem_down_{read,write}_failed
        rwsem: shorter spinlocked section in rwsem_down_failed_common()
        rwsem: make the waiter type an enumeration rather than a bitmask
      c8de2fa4
  2. 07 5月, 2013 37 次提交
  3. 06 5月, 2013 2 次提交
新手
引导
客服 返回
顶部