US2013332778A1PendingUtilityA1

Performance-imbalance-monitoring processor features

49
Assignee: SPRACKLEN LAWRENCE ANDREWPriority: Jun 7, 2012Filed: Jun 7, 2012Published: Dec 12, 2013
Est. expiryJun 7, 2032(~5.9 yrs left)· nominal 20-yr term from priority
G06F 2201/815G06F 11/3024G06F 9/45533G06F 2201/81G06F 2201/885G06F 2201/88G06F 11/3409G06F 11/348G06F 2201/865G06F 2201/86G06F 9/52G06F 11/3433G06F 9/4881
49
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

The current application is directed to architected hardware support within computer processors for detecting and monitoring various types of potential performance imbalances with respect to simultaneously executing hardware threads in simultaneous multi-threading (“SMT”) processors and SMT-processor cores. The architected hardware support may include various types of performance-imbalance-monitoring registers that accumulate indications of performance imbalances and that can be used, by performance-monitoring software and by human analysts to detect performance-degrading conflicts between simultaneously executing hardware threads. Such conflicts can be ameliorated by changing the scheduling of virtual machines, tasks, and other computational entities, by redesigning and re-implementing all or portions of performance-limited and performance-degrading applications, by altering resource-allocation strategies, and by other means. In addition, performance imbalance detection and monitoring can be used to provide accurate, computational-throughput-based accounting in cloud-computing environments.

Claims

exact text as granted — not AI-modified
1 . A performance-imbalance-monitoring register associated with a component or resource within a processor, the performance-imbalance-monitoring register comprising:
 a register that stores accumulated indications of potential performance imbalances that adversely impact a hardware thread due to a resource-exhaustion event associated with the component or resource; and   processor logic that detects a potential performance imbalance when handling the resource-exhaustion event and accordingly updates the register.   
     
     
         2 . The performance-imbalance-monitoring register of  claim 1  wherein the component or resource within the processor is also associated with a performance-monitoring register that accumulates indications of resource-exhaustion events associated with the component or resource. 
     
     
         3 . The performance-imbalance-monitoring register of  claim 1  wherein the processor logic detects a potential performance imbalance by determining that the hardware thread is using less than a threshold portion of the functionality provided by the component or resource. 
     
     
         4 . The performance-imbalance-monitoring register of  claim 1  wherein the processor logic detects a potential performance imbalance by determining that the hardware thread has experienced a resource-exhaustion event as a result of an operation or activity initiated by another hardware thread simultaneously executing within the processor. 
     
     
         5 . The performance-imbalance-monitoring register of  claim 1  wherein the performance-imbalance-monitoring register accumulates indications of potential performance imbalances that adversely impact a particular hardware thread. 
     
     
         6 . The performance-imbalance-monitoring register of  claim 1  wherein the performance-imbalance-monitoring register accumulates indications of potential performance imbalances that adversely impact each of two simultaneously executing hardware threads. 
     
     
         7 . The performance-imbalance-monitoring register of  claim 1  wherein the processor is one of:
 an SMT processor; and 
 an SMT-processor core. 
 
     
     
         8 . The performance-imbalance-monitoring register of  claim 1  wherein the component or resources is one of:
 a queue; 
 a reservation station; 
 a memory cache; 
 a translation-lookaside buffer; 
 a return-stack buffer; 
 a memory-load queue; 
 a memory-store queue; 
 an instruction decoder queue; and 
 a reorder buffer. 
 
     
     
         9 . A virtualization layer within a computer system that assigns each of two or more virtual machines to execute according to an execution schedule within a different one of two or more hardware threads within each of multiple processors, the multiple processors each including performance-monitoring and performance-imbalance-monitoring registers associated with components within the processor that are flexibly partitioned among, or shared by, the hardware threads, the virtualization layer comprising:
 a virtual-machine-monitor that virtualizes physical processors to create virtual processors on which each of the virtual machines executes;   a kernel that manages memory, communications, and data-storage machine resources on behalf of executing virtual machines; and   a scheduling component that that intermittently uses values in the performance-monitoring and performance-imbalance-monitoring registers to reassign virtual machines to hardware threads and reschedule execution of virtual machines in order to optimize computational throughput and performance of the virtual machines.   
     
     
         10 . The virtualization layer of  claim 9  wherein the scheduling component determines that the virtual machines in a first set of one or more of the two or more virtual machines simultaneously executing within hardware threads on a processor are experiencing a performance imbalance with respect to a second set of the two or more virtual machines simultaneously executing within the hardware threads on the processor by determining that performance-imbalance registers associated with the virtual machines in the first set have accumulated numbers of performance-imbalance indications greater than a threshold number of performance-imbalance indications. 
     
     
         11 . The virtualization layer of  claim 9  wherein, when the scheduling component determines that the virtual machines in a first set of one or more of the two or more virtual machines simultaneously executing within hardware threads on a processor are experiencing a performance imbalance with respect to a second set of the two or more virtual machines simultaneously executing within the hardware threads on the processor, the scheduling component carries out one or more of:
 remapping the first and second sets of virtual machines to available hardware threads to avoid resource conflicts among virtual machines mapped to a common processor; 
 remapping one or more of the virtual machines in the first and second sets of virtual machines to each execute alone on a processor; and 
 rescheduling execution of one or more of the virtual machines in the first and second sets of virtual machines to avoid resource conflicts among virtual machines mapped to a common processor. 
 
     
     
         12 . The virtualization layer of  claim 9  wherein each performance-imbalance-monitoring register associated with a processor component comprises:
 a register that stores accumulated indications of potential performance imbalances that adversely impact a hardware thread due to a resource-exhaustion event associated with the component; and 
 processor logic that detects a potential performance imbalance when handling the resource-exhaustion event and accordingly updates the register. 
 
     
     
         13 . The virtualization layer of  claim 9  wherein of  claim 12  wherein the processor component is also associated with a performance-monitoring register that accumulates indications of resource-exhaustion events associated with the component or resource. 
     
     
         14 . The virtualization layer of  claim 9  wherein of  claim 12  wherein the processor logic detects a potential performance imbalance by determining that the hardware thread is using less than a threshold portion of the functionality provided by the component. 
     
     
         15 . The virtualization layer of  claim 9  wherein of  claim 12  wherein the processor logic detects a potential performance imbalance by determining that the hardware thread has experienced a resource-exhaustion event as a result of an operation or activity initiated by another hardware thread simultaneously executing within the processor. 
     
     
         16 . The virtualization layer of  claim 9  wherein of  claim 12  wherein the performance-imbalance-monitoring register accumulates indications of potential performance imbalances that adversely impact a particular hardware thread. 
     
     
         17 . The virtualization layer of  claim 9  wherein of  claim 12  wherein the performance-imbalance-monitoring register accumulates indications of potential performance imbalances that adversely impact each of two simultaneously executing hardware threads. 
     
     
         18 . The virtualization layer of  claim 9  wherein of  claim 12  wherein the processor is one of:
 an SMT processor; and 
 an SMT-processor core. 
 
     
     
         19 . The virtualization layer of  claim 9  wherein of  claim 12  wherein the component is one of:
 a queue; 
 a reservation station; 
 a memory cache; 
 a translation-lookaside buffer; 
 a return-stack buffer; 
 a memory-load queue; 
 a memory-store queue; 
 an instruction decoder queue; and 
 a reorder buffer.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.