US 12,450,104 B2
Multiple locking of resources and lock scaling in concurrent computing
Alexander Nip, Redmond, WA (US); and Milos Petrbok, Redmond, WA (US)
Assigned to CrowdStrike, Inc., Sunnyvale, CA (US)
Filed by CrowdStrike, Inc., Sunnyvale, CA (US)
Filed on Jul. 26, 2021, as Appl. No. 17/385,902.
Prior Publication US 2023/0025760 A1, Jan. 26, 2023
Int. Cl. G06F 9/46 (2006.01); G06F 9/50 (2006.01); G06F 9/52 (2006.01)
CPC G06F 9/52 (2013.01) [G06F 9/505 (2013.01); G06F 9/5072 (2013.01); G06F 9/5077 (2013.01)] 12 Claims
OG exemplary drawing
 
1. A method comprising:
creating a monitoring process comprising a plurality of threads;
creating a partitioned table of resources accessible by threads of the monitoring process in process memory allocated to the monitoring process, the partitioned table comprising a plurality of partitions;
mapping each of a plurality of keys of the partitioned table to a resource of the partitioned table;
in response to a thread of the monitoring process requesting access to a resource of the partitioned table, inputting a key mapped to the resource into a pseudorandom deterministic function to yield an output, and performing a modulus operation upon the output by a count of the plurality of locks to yield a first lock of the plurality of locks;
tracking, by the monitoring process, degree of lock contention at the resources;
performing, by the monitoring process, one of increasing or decreasing the plurality of locks and plurality of partitions in number based on the degree of lock contention; and
in response to the thread requesting access to the resource, inputting the key into the pseudorandom deterministic function to yield the output, and performing the modulus operation upon the output by an increased or decreased count of the plurality of locks to yield a second lock of the plurality of locks.