US 11,886,916 B2
System for adaptive multithreaded recalculation operations
Prashant Anand Shirolkar, Kirkland, WA (US); Bradley Scott Prugar, Peoria, AZ (US); Jeffrey James Duzak, Redmond, WA (US); Qusai Bassam Saleam Al-Rabadi, Woodinville, WA (US); and Chae Seong Lim, Issaquah, WA (US)
Assigned to Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed by Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed on Jun. 30, 2020, as Appl. No. 16/916,650.
Prior Publication US 2021/0406080 A1, Dec. 30, 2021
Int. Cl. G06F 9/46 (2006.01); G06F 9/50 (2006.01); G06F 40/18 (2020.01); G06F 9/30 (2018.01)
CPC G06F 9/5027 (2013.01) [G06F 9/3009 (2013.01); G06F 9/5066 (2013.01); G06F 40/18 (2020.01); G06F 2209/508 (2013.01); G06F 2209/5018 (2013.01)] 15 Claims
OG exemplary drawing
 
1. A system comprising:
a processing system;
a storage device comprising instructions, which when executed by the processing system, cause the processing system to:
receive an indication that a recalculation operation is to be completed for data stored in a data file;
determine that a currently assigned number of available threads for execution of the recalculation operation is lower than a target number of threads for the recalculation operation, wherein the target number of threads for the recalculation operation is dynamically determined and periodically updated, by:
determining a thread utilization metric for each thread in the currently assigned number of available threads, during execution of a current dependency level of the recalculation operation; and
periodically updating the target number of threads for the recalculation operation based on the determined thread utilization metric for each thread in the currently assigned number of available threads;
request an additional thread for execution of the recalculation operation;
begin execution of the recalculation operation using the currently assigned number of available threads;
receive an indication that the additional thread is available for execution of the recalculation operation;
update the currently assigned number of available threads to include the additional thread; and
subsequent to the update, continue execution of the recalculation operation using the updated number of threads.