~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/locking/percpu-rw-semaphore.rst

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/locking/percpu-rw-semaphore.rst (Architecture i386) and /Documentation/locking/percpu-rw-semaphore.rst (Architecture ppc)


  1 ====================                                1 ====================
  2 Percpu rw semaphores                                2 Percpu rw semaphores
  3 ====================                                3 ====================
  4                                                     4 
  5 Percpu rw semaphores is a new read-write semap      5 Percpu rw semaphores is a new read-write semaphore design that is
  6 optimized for locking for reading.                  6 optimized for locking for reading.
  7                                                     7 
  8 The problem with traditional read-write semaph      8 The problem with traditional read-write semaphores is that when multiple
  9 cores take the lock for reading, the cache lin      9 cores take the lock for reading, the cache line containing the semaphore
 10 is bouncing between L1 caches of the cores, ca     10 is bouncing between L1 caches of the cores, causing performance
 11 degradation.                                       11 degradation.
 12                                                    12 
 13 Locking for reading is very fast, it uses RCU      13 Locking for reading is very fast, it uses RCU and it avoids any atomic
 14 instruction in the lock and unlock path. On th     14 instruction in the lock and unlock path. On the other hand, locking for
 15 writing is very expensive, it calls synchroniz     15 writing is very expensive, it calls synchronize_rcu() that can take
 16 hundreds of milliseconds.                          16 hundreds of milliseconds.
 17                                                    17 
 18 The lock is declared with "struct percpu_rw_se     18 The lock is declared with "struct percpu_rw_semaphore" type.
 19 The lock is initialized percpu_init_rwsem, it      19 The lock is initialized percpu_init_rwsem, it returns 0 on success and
 20 -ENOMEM on allocation failure.                     20 -ENOMEM on allocation failure.
 21 The lock must be freed with percpu_free_rwsem      21 The lock must be freed with percpu_free_rwsem to avoid memory leak.
 22                                                    22 
 23 The lock is locked for read with percpu_down_r     23 The lock is locked for read with percpu_down_read, percpu_up_read and
 24 for write with percpu_down_write, percpu_up_wr     24 for write with percpu_down_write, percpu_up_write.
 25                                                    25 
 26 The idea of using RCU for optimized rw-lock wa     26 The idea of using RCU for optimized rw-lock was introduced by
 27 Eric Dumazet <eric.dumazet@gmail.com>.              27 Eric Dumazet <eric.dumazet@gmail.com>.
 28 The code was written by Mikulas Patocka <mpatoc     28 The code was written by Mikulas Patocka <mpatocka@redhat.com>
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php