IP Library Granted Patent US 7,574,567
Granted Patent B2
US 7,574,567 · App. 12/106,275 · Granted Aug 11, 2009

Monitoring processes in a non-uniform memory access (NUMA) computer system

Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,574,567
App. No.
12/106,275
Filed
Apr 19, 2008
Granted
Aug 11, 2009
Kind
B2
Art Unit
2185
USPC
711/141
Abstract

A monitoring process for a NUMA system collects data from multiple monitored threads executing in different nodes of the system. The monitoring process executes on different processors in different nodes. The monitoring process intelligently collects data from monitored threads according to the node it which it is executing to reduce the proportion of inter-node data accesses. Preferably, the monitoring process has the capability to specify a node to which it should be dispatched next to the dispatcher, and traverses the nodes while collecting data from threads associated with the node in which the monitor is currently executing. By intelligently associating the data collection with the node of the monitoring process, the frequency of inter-node data accesses for purposes of collecting data by the monitoring process is reduced, increasing execution efficiency.

Claims (28)

1. A program product for monitoring threads in a non-uniform memory access (NUMA) computer system having a plurality of processors and a plurality of portions of memory, wherein each said processor accesses each memory portion in a respective memory access time, at least some of said respective memory access times being different, the set of respective memory access times for a first processor being different from the set of respective memory access times for a second processor, the program product comprising:

a plurality of computer executable instructions recorded on tangible computer-readable media, wherein said instructions, when executed by a NUMA computer system, cause the NUMA computer system to perform the steps of:

executing at least one thread of said program product on a first plurality of said processors having different sets of respective memory access times to different memory portions of said NUMA computer system, said program product for collecting data for a plurality of monitored threads of said NUMA computer system product, each monitored thread being associated with a respective said portion of memory;

selecting a respective subset of said plurality of monitored threads corresponding to each of said first plurality of processors, said subsets being selected using the memory access time from each respective processor of said first plurality of processors to each respective memory portion with which a respective monitored thread is associated; and

collecting data for each said monitored thread of each respective said subset of said plurality of monitored threads by executing a thread of said program product in a respective said processor corresponding to the respective said subset.

2. The program product for monitoring threads of claim 1 , wherein said step of selecting a respective subset of said plurality of monitored threads corresponding to each of said first plurality of processors comprises:

changing an order in which data is collected for monitored threads to group monitored threads associated with the same respective portion of memory together.

3. The program product for monitoring threads of claim 1 , wherein said step of selecting a respective subset of said plurality of monitored threads corresponding to each of said first plurality of processors comprises:

changing a processor on which a thread of said program product is executing to reduce memory access time to a portion of memory with which a next monitored thread for which data is to be collected is associated.

4. The program product for monitoring threads of claim 3 ,

wherein said program product has the capability to designate an absolute association with a portion of memory;

wherein a dispatcher dispatching threads in said NUMA computer system is bound to follow said absolute association by dispatching a thread of said program product only to a processor associated with the designated portion of memory; and

wherein said step of changing a processor on which said program product is executing comprises: (a) changing a designated portion of memory with which said program product has said absolute association, and (b) yielding the processor on which said thread of said program product is executing.

5. The program product for monitoring threads of claim 1 , wherein said computer system comprises a plurality of nodes, each node containing a respective subset of said plurality of processors and a respective said portion of memory, wherein memory access time for each processor to access the respective said portion of memory contained in the node containing the processor is less than memory access time for the processor to access any respective portion of memory contained in a different node.

6. The program product for monitoring threads of claim 1 , wherein each said monitored thread is associated with a respective said portion of memory using at least one of the set of association criteria consisting of: (a) a portion of memory associated with a processor on which the respective monitoring thread has most recently executed; (b) a designated association made by the respective thread itself; and (c) an association made by an operating system at the time the thread is instantiated based on workload balancing considerations.

7. The program product for monitoring threads of claim 1 , wherein said program product process periodically collects data for said monitored threads responsive to an automatic triggering event.

8. A non-uniform memory access (NUMA) computer system, comprising:

a plurality of nodes, each node comprising at least one processor and a respective portion of main memory of said computer system, wherein a memory access time from each respective processor to a memory location in the portion of memory in the same node as the respective processor is less than a memory access time from the respective processor to a memory location in a portion of memory in a different node than the respective processor;

an operating system including at least one dispatcher, said dispatcher dispatching threads for execution on said processors;

a thread monitor which automatically collects data for a plurality of monitored threads executing on said computer system, each monitored thread being associated with a respective node of said plurality of nodes, said thread monitor being embodied as a plurality of instructions executable by at least one said processor of said computer system and storable in said main memory of said computer system, each instance of said plurality of instructions of said thread monitor forming one or more threads dispatchable by said dispatcher, wherein said thread monitor preferentially collects data for monitored threads associated with the node containing a processor in which the thread monitor is executing when collecting the data.

9. The computer system of claim 8 , wherein said thread monitor changes an order in which data is collected for monitored threads to group monitored threads associated with the same node together.

10. The computer system of claim 8 , wherein said thread monitor changes a processor on which said thread monitor executes to coincide with a node with which a next monitored thread for which data is to be collected is associated.

11. The computer system of claim 10 ,

wherein said thread monitor has the capability to designate an absolute association with a node;

wherein said dispatcher is bound to follow said absolute association by dispatching a thread of said thread monitor only to a processor within the designated node; and

wherein said thread monitor changes a processor on which said thread monitor executes by: (a) changing a designated node with which said thread monitor has said absolute association, and (b) yielding the processor on which said thread of said thread monitor is executing.

12. The computer system of claim 8 , wherein said dispatcher is shared by all nodes of said computer system, and selects a thread for dispatch to an available processor from among a plurality of threads on one or more common dispatch queues, said one or more common dispatch queues not being restricted for dispatching of threads to any particular node of said plurality of nodes.

13. The computer system of claim 8 , wherein each said monitored thread is associated with a respective said node using at least one of the set of association criteria consisting of: (a) a node containing a processor on which the respective monitoring thread has most recently executed; (b) a designated association made by the respective thread itself; and (c) an association made by said operating system at the time the thread is instantiated based on workload balancing considerations.

Assignments (2)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058553/0802 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 9, 2012
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: FACEBOOK, INC.
Reel/Frame 028015/0863 →
Continuity (2)
Continuation 1112807000 · May 12, 2005
Related Publication 20080229308A1 · Sep 18, 2008