US 12,067,416 B2
Dynamically redistributing I/O jobs among operating system threads
Varsha Shetty, Bangalore (IN); and Manickavasaham M. Senguden, Bangalore (IN)
Assigned to EMC IP Holding Company LLC, Hopkinton, MA (US)
Filed by EMC IP Holding Company LLC, Hopkinton, MA (US)
Filed on Jul. 22, 2021, as Appl. No. 17/382,416.
Claims priority of application No. 202111025055 (IN), filed on Jun. 5, 2021.
Prior Publication US 2022/0391243 A1, Dec. 8, 2022
Int. Cl. G06F 9/48 (2006.01); G06F 9/50 (2006.01); G06F 11/30 (2006.01); G06F 13/16 (2006.01)
CPC G06F 9/4843 (2013.01) [G06F 9/48 (2013.01); G06F 9/4806 (2013.01); G06F 9/485 (2013.01); G06F 9/4856 (2013.01); G06F 9/4881 (2013.01); G06F 9/50 (2013.01); G06F 9/5005 (2013.01); G06F 9/5011 (2013.01); G06F 9/5027 (2013.01); G06F 9/505 (2013.01); G06F 9/5061 (2013.01); G06F 9/5083 (2013.01); G06F 11/30 (2013.01); G06F 13/1668 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A method comprising:
creating a plurality of job bins for grouping I/O jobs on a processing node of a storage system;
creating a first quantity of bin groups equal to a first quantity of active threads currently executing on the processing node;
distributing the plurality of job bins among the first quantity of bin groups of the processing node, including assigning a different subset of the plurality of job bins to each of the first quantity of bin groups;
associating each of the first quantity of bin groups with a single different active thread of the first quantity of active threads of an operating system of the processing node, wherein each active thread of the first quantity is associated with a single one of the first quantity of bin groups and executes I/O jobs of job bins assigned to the single bin group associated with said each active thread;
in response to a change in a current number of active threads from the first quantity of active threads to a second quantity of active threads of the processing node, performing first processing including:
changing a current number of bin groups from the first quantity to the second quantity so as to retain a one-to-one relationship between bin groups and active threads where the current number of bin groups equals the current number of active threads; and
redistributing I/O jobs among the second quantity of active threads of the processing node, wherein said redistributing I/O jobs includes:
re-associating one or more of the second quantity of bin groups with one or more active threads of the second quantity of active threads, wherein each of the second quantity of active threads is associated with a single one of the second quantity of bin groups and executes I/O jobs of job bins assigned to the single bin group associated with said each active thread, and wherein each of the second quantity of bin groups is associated with a single different active thread of the second quantity of active threads;
reassigning one or more of the plurality of jobs bins to at least one of the second quantity of bin groups; and
redistributing the plurality of job bins among the second quantity of bin groups; and
moving one or more I/O jobs of one or more job bins of the re-associated one or more bin groups to the one or more active threads of the second quantity for execution.