About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / percpu-rw-semaphore.txt




Custom Search

Based on kernel version 4.13.3. Page generated on 2017-09-23 13:55 EST.

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

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.