US10360070B2ActiveUtilityA1

Application-level dispatcher control of application-level pseudo threads and operating system threads

60
Assignee: IBMPriority: Oct 8, 2014Filed: Dec 22, 2017Granted: Jul 23, 2019
Est. expiryOct 8, 2034(~8.2 yrs left)· nominal 20-yr term from priority
G06F 9/5055G06F 9/505G06F 9/4881G06F 2209/5011G06F 2209/5018G06F 2209/483
60
PatentIndex Score
0
Cited by
75
References
20
Claims

Abstract

An application-level thread dispatcher that operates in a main full-weight operating system-level thread allocated to an application initializes at least one application-level pseudo threads that operates as an application-controlled thread within the main full-weight operating system-level thread allocated to the application. The application-level thread dispatcher migrates work associated with the application between the at least one application-level pseudo thread and a separate operating system-level thread in accordance with evaluated changes in run-time performance of the application.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method, comprising:
 initializing, by an application-level thread dispatcher that executes on a processor in a main full-weight operating system-level thread allocated to an application, 
 at least one application-level pseudo thread that operates as an application-controlled thread within the main full-weight operating system-level thread allocated to the application; and 
 migrating, by the application-level thread dispatcher in accordance with evaluated changes in run-time performance of the application, work associated with the application between the at least one application-level pseudo thread and a separate operating system-level thread. 
 
     
     
       2. The method of  claim 1 , further comprising:
 establishing, by the application-level thread dispatcher, an application-level threading model under which the application-level thread dispatcher creates and schedules the at least one application-level pseudo thread, where scheduling the at least one application-level pseudo thread comprises providing a portion of overall time an operating system allocates to the main full-weight operating system-level thread to each created one of the at least one application-level pseudo thread. 
 
     
     
       3. The method of  claim 1 , where migrating, by the application-level thread dispatcher in accordance with the evaluated changes in the run-time performance of the application, the work associated with the application between the at least one application-level pseudo thread and the separate operating system-level thread comprises:
 dispatching, from the main full-weight operating system-level thread by the application-level thread dispatcher in response to determining that the at least one application-level pseudo thread meets configuration requirements to operate within the separate operating system-level thread in parallel with the main full-weight operating system-level thread, the at least one application-level pseudo thread to the separate operating system-level thread. 
 
     
     
       4. The method of  claim 1 , where the separate operating system-level thread comprises one of another full-weight operating system-level thread and a separate lighter-weight operating system-level thread. 
     
     
       5. The method of  claim 4 , where, in response to the separate operating system-level thread comprising the separate lighter-weight operating system-level thread, the separate lighter-weight operating system-level thread is executed on a separate thread execution offload processor. 
     
     
       6. The method of  claim 1 , where migrating, by the application-level thread dispatcher in accordance with the evaluated changes in the run-time performance of the application, the work associated with the application between the at least one application-level pseudo thread and the separate operating system-level thread comprises:
 placing a function pointer to a memory-mapped application function usable to perform the work from the at least one application-level pseudo thread within a work dispatching queue; and 
 invoking the separate operating system-level thread to process the work dispatching queue, where the function pointer to the memory-mapped application function allows the separate operating system-level thread to directly invoke the memory-mapped application function to perform the work. 
 
     
     
       7. The method of  claim 1 , further comprising:
 dynamically adjusting, by the application-level thread dispatcher in response to the evaluated changes in the run-time performance of the application, at least one of:
 a quantity of full-weight operating system-level threads allocated to the application; 
 a quantity of application-level pseudo threads allocated to the application; and 
 a quantity of lighter-weight operating system-level threads allocated to the application. 
 
 
     
     
       8. A system, comprising:
 a memory; and 
 a processor programmed to:
 initialize, by an application-level thread dispatcher that executes on the processor in a main full-weight operating system-level thread allocated to an application, 
 at least one application-level pseudo thread that operates as an application-controlled thread within the main full-weight operating system-level thread allocated to the application; and 
 migrate, by the application-level thread dispatcher in accordance with evaluated changes in run-time performance of the application, work associated with the application between the at least one application-level pseudo thread and a separate operating system-level thread. 
 
 
     
     
       9. The system of  claim 8 , where the processor is further programmed to:
 establish, by the application-level thread dispatcher, an application-level threading model under which the application-level thread dispatcher creates and schedules the at least one application-level pseudo thread, where scheduling the at least one application-level pseudo thread comprises providing a portion of overall time an operating system allocates to the main full-weight operating system-level thread to each created one of the at least one application-level pseudo thread. 
 
     
     
       10. The system of  claim 8 , where, in being programmed to migrate, by the application-level thread dispatcher in accordance with the evaluated changes in the run-time performance of the application, the work associated with the application between the at least one application-level pseudo thread and the separate operating system-level thread, the processor is programmed to:
 dispatch, from the main full-weight operating system-level thread by the application-level thread dispatcher in response to determining that the at least one application-level pseudo thread meets configuration requirements to operate within the separate operating system-level thread in parallel with the main full-weight operating system-level thread, the at least one application-level pseudo thread to the separate operating system-level thread. 
 
     
     
       11. The system of  claim 8 , where the separate operating system-level thread comprises one of another full-weight operating system-level thread and a separate lighter-weight operating system-level thread. 
     
     
       12. The system of  claim 11 , where, in response to the separate operating system-level thread comprising the separate lighter-weight operating system-level thread, the separate lighter-weight operating system-level thread is executed on a separate thread execution offload processor. 
     
     
       13. The system of  claim 8 , where the processor is further programmed to:
 dynamically adjust, by the application-level thread dispatcher in response to the evaluated changes in the run-time performance of the application, at least one of:
 a quantity of full-weight operating system-level threads allocated to the application; 
 a quantity of application-level pseudo threads allocated to the application; and 
 a quantity of lighter-weight operating system-level threads allocated to the application. 
 
 
     
     
       14. A computer program product, comprising:
 a computer readable storage medium having computer readable program code embodied therewith, where the computer readable program code when executed on a computer causes the computer to:
 initialize, by an application-level thread dispatcher that executes on the computer in a main full-weight operating system-level thread allocated to an application, 
 at least one application-level pseudo thread that operates as an application-controlled thread within the main full-weight operating system-level thread allocated to the application; and 
 migrate, by the application-level thread dispatcher in accordance with evaluated changes in run-time performance of the application, work associated with the application between the at least one application-level pseudo thread and a separate operating system-level thread. 
 
 
     
     
       15. The computer program product of  claim 14 , where the computer readable program code when executed on the computer further causes the computer to:
 establish, by the application-level thread dispatcher, an application-level threading model under which the application-level thread dispatcher creates and schedules the at least one application-level pseudo thread, where scheduling the at least one application-level pseudo thread comprises providing a portion of overall time an operating system allocates to the main full-weight operating system-level thread to each created one of the at least one application-level pseudo thread. 
 
     
     
       16. The computer program product of  claim 14 , where, in causing the computer to migrate, by the application-level thread dispatcher in accordance with the evaluated changes in the run-time performance of the application, the work associated with the application between the at least one application-level pseudo thread and the separate operating system-level thread, the computer readable program code when executed on the computer causes the computer to:
 dispatch, from the main full-weight operating system-level thread by the application-level thread dispatcher in response to determining that the at least one application-level pseudo thread meets the configuration requirements to operate within the separate operating system-level thread in parallel with the main full-weight operating system-level thread, the at least one application-level pseudo thread to the separate operating system-level thread. 
 
     
     
       17. The computer program product of  claim 14 , where the separate operating system-level thread comprises one of another full-weight operating system-level thread and a separate lighter-weight operating system-level thread. 
     
     
       18. The computer program product of  claim 17 , where, in response to the separate operating system-level thread comprising the separate lighter-weight operating system-level thread, the separate lighter-weight operating system-level thread is executed on a separate thread execution offload processor. 
     
     
       19. The computer program product of  claim 14 , where, in causing the computer to migrate, by the application-level thread dispatcher in accordance with the evaluated changes in the run-time performance of the application, the work associated with the application between the at least one application-level pseudo thread and the separate operating system-level thread, the computer readable program code when executed on the computer causes the computer to:
 place a function pointer to a memory-mapped application function usable to perform the work from the at least one application-level pseudo thread within a work dispatching queue; and 
 invoke the separate operating system-level thread to process the work dispatching queue, where the function pointer to the memory-mapped application function allows the separate operating system-level thread to directly invoke the memory-mapped application function to perform the work. 
 
     
     
       20. The computer program product of  claim 14 , where the computer readable program code when executed on the computer further causes the computer to:
 dynamically adjust, by the application-level thread dispatcher in response to the evaluated changes in the run-time performance of the application, at least one of:
 a quantity of full-weight operating system-level threads allocated to the application; 
 a quantity of application-level pseudo threads allocated to the application; and 
 a quantity of lighter-weight operating system-level threads allocated to the application.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.