-
公开(公告)号:US20240345901A1
公开(公告)日:2024-10-17
申请号:US18757299
申请日:2024-06-27
发明人: David Dice , Alex Kogan
CPC分类号: G06F9/52 , G06F9/5022 , G06F9/524
摘要: Generic Concurrency Restriction (GCR) may divide a set of threads waiting to acquire a lock into two sets: an active set currently able to contend for the lock, and a passive set waiting for an opportunity to join the active set and contend for the lock. The number of threads in the active set may be limited to a predefined maximum or even a single thread. Generic Concurrency Restriction may be implemented as a wrapper around an existing lock implementation. Generic Concurrency Restriction may, in some embodiments, be unfair (e.g., to some threads) over the short term, but may improve the overall throughput of the underlying multithreaded application via passivation of a portion of the waiting threads.
-
公开(公告)号:US12099885B2
公开(公告)日:2024-09-24
申请号:US18365880
申请日:2023-08-04
发明人: David Dice , Virendra J. Marathe
CPC分类号: G06F9/526 , G06F9/468 , G06F9/52 , G06F16/176 , G06F16/1767 , G06F16/1774 , G06F16/2343 , G06F9/50 , G06F13/1605
摘要: NUMA-aware reader-writer locks may leverage lock cohorting techniques that introduce a synthetic level into the lock hierarchy (e.g., one whose nodes do not correspond to the system topology). The synthetic level may include a global reader lock and a global writer lock. A writer thread may acquire a node-level writer lock, then the global writer lock, and then the top-level lock, after which it may access a critical section protected by the lock. The writer may release the lock (if an upper bound on consecutive writers has been met), or may pass the lock to another writer (on the same node or a different node, according to a fairness policy). A reader may acquire the global reader lock (whether or not node-level reader locks are present), and then the top-level lock. However, readers may only hold these locks long enough to increment reader counts associated with them.
-
3.
公开(公告)号:US11972777B2
公开(公告)日:2024-04-30
申请号:US18174520
申请日:2023-02-24
发明人: David Dice , Alex Kogan
CPC分类号: G11B20/10268 , G06F9/526 , G06F16/2343 , G06F16/2365 , G11B20/105 , G11C16/26
摘要: A data object has a lock and a condition indicator associated with it. Based at least partly on detecting a first setting of the condition indicator, a reader stores an indication that the reader has obtained read access to the data object in an element of a readers structure and reads the data object without acquiring the lock. A writer detects the first setting and replaces it with a second setting, indicating that the lock is to be acquired by readers before reading the data object. Prior to performing a write on the data object, the writer verifies that one or more elements of the readers structure have been cleared.
-
公开(公告)号:US20230333916A1
公开(公告)日:2023-10-19
申请号:US18341588
申请日:2023-06-26
发明人: David Dice , Alex Kogan
CPC分类号: G06F9/52 , G06F9/5022 , G06F9/524
摘要: Generic Concurrency Restriction (GCR) may divide a set of threads waiting to acquire a lock into two sets: an active set currently able to contend for the lock, and a passive set waiting for an opportunity to join the active set and contend for the lock. The number of threads in the active set may be limited to a predefined maximum or even a single thread. Generic Concurrency Restriction may be implemented as a wrapper around an existing lock implementation. Generic Concurrency Restriction may, in some embodiments, be unfair (e.g., to some threads) over the short term, but may improve the overall throughput of the underlying multithreaded application via passivation of a portion of the waiting threads.
-
5.
公开(公告)号:US11594252B2
公开(公告)日:2023-02-28
申请号:US17507714
申请日:2021-10-21
发明人: David Dice , Alex Kogan
摘要: A data object has a lock and a condition indicator associated with it. Based at least partly on detecting a first setting of the condition indicator, a reader stores an indication that the reader has obtained read access to the data object in an element of a readers structure and reads the data object without acquiring the lock. A writer detects the first setting and replaces it with a second setting, indicating that the lock is to be acquired by readers before reading the data object. Prior to performing a write on the data object, the writer verifies that one or more elements of the readers structure have been cleared.
-
公开(公告)号:US20220374287A1
公开(公告)日:2022-11-24
申请号:US17817854
申请日:2022-08-05
发明人: David Dice , Alex Kogan
摘要: A computer comprising one or more processors and memory may implement multiple threads that perform a lock operation using a data structure comprising an allocation field and a grant field. Upon entry to a lock operation, a thread allocates a ticket by atomically copying a ticket value contained in the allocation field and incrementing the allocation field. The thread compares the allocated ticket to the grant field. If they are unequal, the thread determines a number of waiting threads. If the number is above the threshold, the thread enters a long term wait operation comprising determining a location for long term wait value and waiting on changes to that value. If the number is below the threshold or the long term wait operation is complete, the thread waits for the grant value to equal the ticket to indicate that the lock is allocated.
-
公开(公告)号:US20220253339A1
公开(公告)日:2022-08-11
申请号:US17169246
申请日:2021-02-05
发明人: David Dice , Alex Kogan
摘要: Compact and scalable mutual exclusion techniques are implemented for multiple executing threads. A thread may acquire a lock by swapping a pointer to the thread into a tail field of a lock data structure. If the swap operation returned a null value, then the lock is acquired. If the swap operation does not return a null value, then the thread may wait to obtain the lock from a predecessor thread. The thread may wait until a grant field in a data structure for the predecessor thread stores a pointer to the lock, signaling to the thread that the thread may acquire the lock.
-
8.
公开(公告)号:US20220214930A1
公开(公告)日:2022-07-07
申请号:US17701302
申请日:2022-03-22
发明人: David Dice
IPC分类号: G06F9/52
摘要: A concurrency-restricting lock may divide a set of threads waiting to acquire the lock into an active circulating set (ACS) that contends for the lock, and a passive set (PS) that awaits an opportunity to contend for the lock. The lock, which may include multiple constituent lock types, lists, or queues, may be unfair over the short term, but improve throughput of the underlying multithreaded application. Culling and long-term fairness policies may be applied to the lock to move excess threads from the ACS to the PS or promote threads from the PS to the ACS. These policies may constraint the size or distribution of threads in the ACS (which may be NUMA-aware). A waiting policy may avoid aggressive promotion from the PS to the ACS, and a short-term fairness policy may move a thread from the tail of a list or queue to its head.
-
公开(公告)号:US20220100587A1
公开(公告)日:2022-03-31
申请号:US17547956
申请日:2021-12-10
发明人: David Dice , Virendra J. Marathe
IPC分类号: G06F9/52 , G06F9/46 , G06F16/176 , G06F16/23
摘要: NUMA-aware reader-writer locks may leverage lock cohorting techniques that introduce a synthetic level into the lock hierarchy (e.g., one whose nodes do not correspond to the system topology). The synthetic level may include a global reader lock and a global writer lock. A writer thread may acquire a node-level writer lock, then the global writer lock, and then the top-level lock, after which it may access a critical section protected by the lock. The writer may release the lock (if an upper bound on consecutive writers has been met), or may pass the lock to another writer (on the same node or a different node, according to a fairness policy). A reader may acquire the global reader lock (whether or not node-level reader locks are present), and then the top-level lock. However, readers may only hold these locks long enough to increment reader counts associated with them.
-
10.
公开(公告)号:US11170816B2
公开(公告)日:2021-11-09
申请号:US17020655
申请日:2020-09-14
发明人: David Dice , Alex Kogan
摘要: A data object has a lock and a condition indicator associated with it. Based at least partly on detecting a first setting of the condition indicator, a reader stores an indication that the reader has obtained read access to the data object in an element of a readers structure and reads the data object without acquiring the lock. A writer detects the first setting and replaces it with a second setting, indicating that the lock is to be acquired by readers before reading the data object. Prior to performing a write on the data object, the writer verifies that one or more elements of the readers structure have been cleared.
-
-
-
-
-
-
-
-
-