KR20220110509A - 자동 중앙 처리 장치(cpu) 사용 최적화 - Google Patents
자동 중앙 처리 장치(cpu) 사용 최적화 Download PDFInfo
- Publication number
- KR20220110509A KR20220110509A KR1020227020938A KR20227020938A KR20220110509A KR 20220110509 A KR20220110509 A KR 20220110509A KR 1020227020938 A KR1020227020938 A KR 1020227020938A KR 20227020938 A KR20227020938 A KR 20227020938A KR 20220110509 A KR20220110509 A KR 20220110509A
- Authority
- KR
- South Korea
- Prior art keywords
- resource allocation
- cores
- thread
- modifying
- threads
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/501—Performance criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/502—Proximity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Debugging And Monitoring (AREA)
Abstract
자동 중앙 처리 장치(CPU) 사용 최적화는, 복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 단계, 및 성능 활동에 기초하여, 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 단계를 포함한다.
Description
현재 융합된 선호 코어 알고리즘은 최악의 경우의 작업 부하 동안에 최대 주파수를 기초로 하지만, 이 순위는 가벼운 스레드 애플리케이션이나 최악의 경우가 아닌 고객 작업 부하에 대해서는 동일하지 않을 수 있다.
도 1은 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 컴퓨터의 블록도이다.
도 2는 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
도 3은 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
도 4는 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
도 5는 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
도 6은 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
도 2는 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
도 3은 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
도 4는 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
도 5는 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
도 6은 일부 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 예시적인 방법의 흐름도이다.
일부 실시형태에서, 자동 중앙 처리 장치(CPU) 사용 최적화 방법은 복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 단계, 및 성능 활동에 기초하여 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 단계를 포함한다.
일부 실시형태에서, 방법은, 성능 활동에 기초하여, 제 1 스레드와 관련된 복수의 스레드 중 제 1 스레드 및 복수의 스레드 중 제 2 스레드를 식별하는 단계를 포함하되, 자원 할당을 수정하는 단계는, 제 1 스레드가 할당된 복수의 코어 중 제 1 코어와 제 2 스레드가 할당된 복수의 코어 중 제 2 코어 사이의 물리적 거리를 단축시키기 위해 코어 할당을 수정하는 단계를 포함한다. 일부 실시형태에서, 제 1 코어 및 제 2 코어는 동일한 컴퓨팅 코어 콤플렉스(CCX: compute core complex), 동일한 코어 콤플렉스 다이(CCD: core complex die), 동일한 소켓, 동일한 비균일 메모리 액세스(NUMA: non-uniform memory access) 도메인 및/또는 동일한 컴퓨팅 노드 내에 위치된다. 일부 실시형태에서, 방법은, 성능 활동에 표시된 캐시 미스의 정도에 기초하여, 복수의 코어 중 동일한 코어에 할당된 복수의 스레드 중 제 1 스레드 및 복수의 스레드 중 제 2 스레드를 식별하는 단계를 더 포함하되, 자원 할당을 수정하는 단계는 제 1 스레드 및 제 2 스레드 중 하나 이상을 복수의 코어 중 서로 다른 코어에 할당하는 단계를 포함한다. 일부 실시형태에서, 방법은, 자원 할당을 수정하는 단계 후에, 추가 성능 활동을 모니터링하는 단계, 및 추가 성능 활동에 기초하여, 자원 할당에 대한 수정을 취소할 지를 결정하는 단계를 더 포함한다. 일부 실시형태에서, 방법은, 작업 부하와 관련하여 자원 할당을 나타내는 데이터를 저장하는 단계, 및 작업 부하의 실행에 기초하여, 자원 할당을 나타내는 데이터를 로딩하는 단계를 더 포함한다. 일부 실시형태에서, 자원 할당을 수정하는 단계는 복수의 코어 중 하나 이상의 코어에 대한 하나 이상의 임계값을 수정하는 단계를 포함하며, 여기서, 하나 이상의 임계값은 패키지 전력 추적(PPT: package power tracking) 임계값, 열 설계 전류(TDC: thermal design current) 임계값, 전기 설계 전류(EDC: electrical design current) 임계값, 또는 코어가 전압/온도 쌍에서 안전하게 보낼 수 있는 시간 임계값을 포함하는 신뢰성 제한(Reliability Limit)을 포함한다.
일부 실시형태에서, 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 장치는, 복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 것, 및 성능 활동에 기초하여, 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 것을 포함하는 단계를 수행한다.
일부 실시형태에서, 이 단계는, 성능 활동에 기초하여, 복수의 스레드 중 제 1 스레드, 및 제 1 스레드와 관련된 복수의 스레드 중 제 2 스레드를 식별하는 것을 더 포함하되, 자원 할당을 수정하는 것은 제 1 스레드가 할당된 복수의 코어 중 제 1 코어와 제 2 스레드가 할당된 복수의 코어 중 제 2 코어 사이의 물리적 거리를 단축시키기 위해 코어 할당을 수정하는 것을 포함한다. 일부 실시형태에서, 제 1 코어 및 제 2 코어는 동일한 컴퓨팅 코어 콤플렉스(CCX), 동일한 코어 콤플렉스 다이(CCD), 동일한 소켓, 동일한 비균일 메모리 액세스(NUMA) 도메인 및/또는 동일한 컴퓨팅 노드 내에 위치된다. 일부 실시형태에서, 이 단계는, 성능 활동에 표시된 캐시 미스의 정도에 기초하여, 복수의 코어 중 동일한 코어에 할당된 복수의 스레드 중 제 1 스레드 및 복수의 스레드 중 제 2 스레드를 식별하는 것을 더 포함하되, 자원 할당을 수정하는 것은 제 1 스레드 및 제 2 스레드 중 하나 이상을 복수의 코어 중 서로 다른 코어에 할당하는 것을 포함한다. 일부 실시형태에서, 이 단계는, 자원 할당을 수정한 후에, 추가 성능 활동을 모니터링하는 것, 및 추가 성능 활동에 기초하여, 자원 할당에 대한 수정을 취소할 지를 결정하는 것을 더 포함한다. 일부 실시형태에서, 이 단계는, 작업 부하와 관련하여 자원 할당을 나타내는 데이터를 저장하는 것, 및 작업 부하의 실행에 기초하여, 자원 할당을 나타내는 데이터를 로딩하는 것을 더 포함한다. 일부 실시형태에서, 자원 할당을 수정하는 것은 복수의 코어 중 하나 이상의 코어에 대한 하나 이상의 임계값을 수정하는 것을 포함하며, 여기서, 하나 이상의 임계값은 패키지 전력 추적(PPT) 임계값, 열 설계 전류(TDC) 임계값, 전기 설계 전류(EDC) 임계값 또는 코어가 전압/온도 쌍에서 안전하게 보낼 수 있는 시간 임계값을 포함하는 신뢰성 제한(Reliability Limit)을 포함한다.
일부 실시형태에서, 컴퓨터 판독 가능 매체에 배치된 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 컴퓨터 프로그램 제품은, 실행 시에, 컴퓨터로 하여금, 복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링 하는 것, 및 성능 활동에 기초하여, 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 것을 포함하는 단계를 수행하게 하는 컴퓨터 프로그램 명령어를 포함한다.
일부 실시형태에서, 이 단계는, 성능 활동에 기초하여, 복수의 스레드 중 제 1 스레드, 및 제 1 스레드와 관련된 복수의 스레드 중 제 2 스레드를 식별하는 것을 더 포함하되, 자원 할당을 수정하는 것은 제 1 스레드가 할당된 복수의 코어 중 제 1 코어와 제 2 스레드가 할당된 복수의 코어 중 제 2 코어 사이의 물리적 거리를 단축시키기 위해 코어 할당을 수정하는 것을 포함한다. 일부 실시형태에서, 제 1 코어 및 제 2 코어는 동일한 컴퓨팅 코어 콤플렉스(CCX), 동일한 코어 콤플렉스 다이(CCD), 동일한 소켓, 동일한 비균일 메모리 액세스(NUMA) 도메인 및/또는 동일한 컴퓨팅 노드 내에 위치된다. 일부 실시형태에서, 이 단계는, 성능 활동에 표시된 캐시 미스의 정도에 기초하여, 복수의 코어 중 동일한 코어에 할당된 복수의 스레드 중 제 1 스레드 및 복수의 스레드 중 제 2 스레드를 식별하는 것을 더 포함하되, 자원 할당을 수정하는 것은 제 1 스레드 및 제 2 스레드 중 하나 이상을 복수의 코어 중 서로 다른 코어에 할당하는 것을 포함한다. 일부 실시형태에서, 이 단계는, 자원 할당을 수정한 후에, 추가 성능 활동을 모니터링하는 것, 및 추가 성능 활동에 기초하여, 자원 할당에 대한 수정을 취소할 지를 결정하는 것을 더 포함한다. 일부 실시형태에서, 이 단계는, 작업 부하와 관련하여 자원 할당을 나타내는 데이터를 저장하는 것, 및 작업 부하의 실행에 기초하여, 자원 할당을 나타내는 데이터를 로딩하는 것을 더 포함한다.
본 발명에 따른 자동 중앙 처리 장치(CPU) 사용 최적화는 일반적으로 컴퓨터, 즉, 자동화된 컴퓨팅 기계로 구현된다. 따라서, 추가 설명을 위해, 도 1은 특정 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위해 구성된 예시적인 컴퓨터(100)를 포함하는 자동화된 컴퓨팅 기계의 블록도를 나타낸다. 도 1의 컴퓨터(100)는 고속 메모리 버스(106) 및 버스 어댑터(108)를 통해 컴퓨터(100)의 프로세서(102) 및 다른 구성요소에 연결된 랜덤 액세스 메모리(104)('RAM')뿐만 아니라, 적어도 하나의 컴퓨터 프로세서(102) 또는 'CPU'를 포함한다.
RAM(104)에는 운영 체제(110)가 저장되어 있다. 자동 중앙 처리 장치(CPU) 사용 최적화를 위해 구성된 컴퓨터에 유용한 운영 체제에는 UNIX™, Linux™, Microsoft Windows™ 및 당업자에게 적용될 수 있는 다른 것이 포함된다. 도 1의 예에서 운영 체제(108)는 RAM(104)에 도시되어 있지만, 그러한 소프트웨어의 많은 구성요소는 일반적으로, 비휘발성 메모리, 예를 들어, 디스크 드라이브와 같은 데이터 스토리지(112)에도 저장된다. 본 발명의 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 구성 모듈(114)도 RAM에 저장된다.
도 1의 컴퓨터(100)는 확장 버스(118) 및 버스 어댑터(108)를 통해 프로세서(102) 및 컴퓨터(100)의 다른 구성요소에 커플링된 디스크 드라이브 어댑터(116)를 포함한다. 디스크 드라이브 어댑터(116)는 비휘발성 데이터 스토리지를 데이터 스토리지(112)의 형태로 컴퓨터(100)에 연결한다. 자동 중앙 처리 장치(CPU) 사용 최적화를 위해 구성된 컴퓨터에 유용한 디스크 드라이브 어댑터에는 통합 드라이브 전자기기('IDE(Integrated Drive Electronics)') 어댑터, 소형 컴퓨터 시스템 인터페이스('SCSI(Small Computer System Interface)') 어댑터 및 당업자에게 적용될 수 있는 다른 것이 포함된다. 일부 실시형태에서, 비휘발성 컴퓨터 메모리는 광 디스크 드라이브, 전기적으로 삭제할 수 있는 프로그램 가능 판독 전용 메모리(소위, 'EEPROM' 또는 '플래시' 메모리), RAM 드라이브 및 당업자에게 적용될 수 있는 다른 것이 포함된다.
도 1의 예시적인 컴퓨터(100)에는 하나 이상의 입/출력('I/O') 어댑터(120)가 포함된다. I/O 어댑터는, 예를 들어, 컴퓨터 디스플레이 스크린과 같은 디스플레이 디바이스에 대한 출력뿐만 아니라 키보드 및 마우스와 같은 사용자 입력 디바이스(122)로부터의 사용자 입력을 제어하기 위한 소프트웨어 드라이버 및 컴퓨터 하드웨어를 통해 사용자 지향 입력/출력을 구현한다. 도 1의 예시적인 컴퓨터(100)에는 디스플레이 스크린 또는 컴퓨터 모니터와 같은 디스플레이 디바이스(126)로의 그래픽 출력을 위해 특별히 설계된 I/O 어댑터의 예인 비디오 어댑터(124)가 포함된다. 비디오 어댑터(124)는 고속 비디오 버스(128), 버스 어댑터(108), 및 고속 버스인 전면 버스(130)를 통해 프로세서(102)에 연결된다.
도 1의 예시적인 컴퓨터(100)에는 다른 컴퓨터와의 데이터 통신 및 데이터 통신 네트워크와의 데이터 통신을 위한 통신 어댑터(132)가 포함된다. 이와 같은 데이터 통신은 RS-232 연결, 범용 직렬 버스('USB(Universal Serial Bus)')와 같은 외부 버스, IP 데이터 통신 네트워크와 같은 데이터 통신 네트워크, 및/또는 당업자에 의해 적용될 수 있는 다른 방법을 통해 직렬로 수행된다. 통신 어댑터는 하나의 컴퓨터가 직접 또는 데이터 통신 네트워크를 통해 다른 컴퓨터와 데이터 통신을 하는 것에 의해 하드웨어 수준의 데이터 통신을 구현한다. 자동 중앙 처리 장치(CPU) 사용 최적화를 위해 구성된 컴퓨터에 유용한 통신 어댑터의 예에는 유선 전화 접속 통신용 모뎀, 유선 데이터 통신용 이더넷(IEEE 802.3) 어댑터, 및 무선 데이터 통신용 802.11 어댑터가 포함된다.
추가 설명을 위해, 도 2에는 복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 단계 202(예컨대, 구성 모듈(114)에 의함)를 포함하는 자동 중앙 처리 장치(CPU) 최적화를 위한 예시적인 방법을 나타내는 흐름도가 제시된다. 작업 부하에는 실행된 소프트웨어 애플리케이션, 프로세스, 서비스 또는 이들의 조합이 포함된다. 작업 부하의 실행은 복수의 스레드에 의해 용이해진다. 각각의 스레드는 (예컨대, 중앙 처리 장치(CPU)의) 복수의 코어 중 특정 코어에 할당되며, 각 코어는 복수의 스레드 중 하나 이상의 스레드를 지원할 수 있다.
작업 부하의 성능 활동을 모니터링하는 단계 202에는 작업 부하의 실행과 관련된 동작 또는 메트릭을 식별하는 것이 포함된다. 성능 활동의 예에는, 지정된 스레드에 대하여, 데이터 패브릭 전반의 트래픽 양, 지연 시간, 활동 시간(예컨대, 스레드가 활성 상태 대 비활성 상태인 시간), 수행된 기능 또는 작업의 수(예컨대, 초당), 메모리 또는 캐시 액세스의 양이나 유형, 캐시 히트 또는 미스의 양이나 빈도 등이 포함된다. 일부 실시형태에서, 성능 활동을 모니터링하는 단계 202에는 특정 시간 윈도우(예컨대, 샘플링)에 걸쳐 성능 활동을 모니터링하는 단계가 포함된다. 다른 실시형태에서, 성능 활동을 모니터링하는 단계 202에는 지속적으로 성능 활동을 모니터링하고 시간 경과에 따른 성능 활동을 나타내는 데이터를 업데이트하는 단계가 포함된다.
도 2의 방법에는 또한 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 단계 204가 포함된다. 일부 실시형태에서, 자원 할당을 수정하는 단계 204에는 코어 중 하나 이상에 대한 하나 이상의 임계값을 수정하는 단계가 포함된다. 수정되는 임계값의 예에는, 특정 코어에 대해, 패키지 전력 추적(PPT: Package Power Tracking) 임계값(예컨대, 소켓을 공급하는 전압 레일에서 허용되는 허용 소켓 전력 소비의 임계값), 열 설계 전류(TDC: Thermal Design Current) 임계값(예컨대, 열적으로 제한된 시나리오에서, 특정 마더보드의 전압 레귤레이터 구성에 의해 전달될 수 있는 최대 전류량(암페어 단위)), 전기 설계 전류(EDC: Electrical Design Current) 임계값(예컨대, 특정 마더보드의 전압 레귤레이터 구성으로 짧은 시간 동안 피크("스파이크") 상태로 전달될 수 있는 최대 전류량(암페어 단위)) 또는 신뢰성 한계(예컨대, 칩 내의 실리콘에 안전한 것으로 간주되는 전압/온도 쌍에서 코어가 소비하는 시간의 최대 임계값)가 포함된다. 일례로서, 제 1 스레드가 제 2 스레드에 비해 매우 활성인 것으로 식별되는 경우, 제 1 스레드에 할당된 제 1 코어 중 하나 이상의 임계값은 증가되고, 제 2 스레드가 할당된 제 2 코어 중 하나 이상의 임계값은 감소된다. 따라서, 제 1 스레드에 할당된 제 1 코어는 제 2 스레드에 할당된 제 2 코어에 비해 더 많은 전류를 수신한다.
일부 실시형태에서, 자원 할당을 수정하는 단계 204에는 하나 이상의 스레드에 대한 코어 할당을 수정하는 단계가 포함된다. 각 스레드가 특정 코어에 할당됨에 따라, 하나 이상의 스레드는 다른 코어에 재할당된다. 일부 실시형태에서, 코어 할당을 수정하는 단계에는 특정 스레드가 할당되는 코어 사이의 물리적 거리를 단축시키기 위해 코어 할당을 수정하는 단계가 포함된다. 예를 들어, 상위(parent) 및 하위(child) 스레드, 주요(hero) 및 보조(helper) 스레드 또는 기타 관련성이 높은 스레드는 데이터 패브릭 전반에 걸친 광범위한 스레드 간 통신에 의존한다. 하나 이상의 관련 스레드를 더 가까운 코어에 재할당함으로써, 스레드 간 통신의 지연 시간이 감소된다.
다른 예로, 동일한 코어에서 실행되는 제 1 및 제 2 스레드를 가정한다. 성능 활동은 제 1 및 제 2 스레드가 모두 이러한 동일한 코어의 캐시에 액세스하는 데 매우 능동적이며, 제 1 및 제 2 스레드가 모두 많은 수의 캐시 미스를 유발함을 나타낸다(예컨대, 캐시 미스로 인해 하나의 스레드가 캐시에 기록되기 때문에 다른 스레드가 캐시 미스를 갖게 됨). 그런 다음, 제 1 및 제 2 스레드가 서로 다른 캐시를 가진 서로 다른 코어에 각각 할당되도록, 제 1 및/또는 제 2 스레드는 재할당된다. 캐시가 부족한 스레드를 다른 코어로 분리함으로써, 전체 캐시 미스 수가 감소되고 성능이 향상된다.
기존 솔루션에서, 주어진 작업 부하에 대한 복수의 스레드에는 일반적으로 동일한 자원이 할당된다. 또한, 기존의 선호 코어 알고리즘은 일반적으로 최악의 경우의 시나리오에서 최대 주파수를 기초로 한다. 최악의 경우의 시나리오에 다다르지 않는 가벼운 스레드 애플리케이션이나 작업 부하의 경우에는, 이러한 기본 자원 할당은 작업 부하에 대한 최적의 성능을 제공할 수 없다. 작업 부하의 성능 활동을 모니터링하는 단계 202 및 자원 할당을 동적으로 수정하는 단계 204에 의해, 작업 부하는 최적의 자원 할당의 이점을 얻는다.
추가 설명을 위해, 도 3에는, 복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 단계 202(예컨대, 구성 모듈(114)에 의함) 및 성능 활동에 기초하여 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 단계 204를 포함하는 자동 중앙 처리 장치(CPU) 최적화를 위한 예시적인 방법을 나타내는 흐름도가 제시된다.
또한, 도 3의 방법은 도 3의 방법이, 성능 활동에 기초하여, (예컨대, 구성 모듈(114)에 의해) 복수의 스레드 중 제 1 스레드, 및 제 1 스레드와 관련된 복수의 스레드 중 제 2 스레드를 식별하는 단계 302도 포함한다는 점에서, 도 2와 상이하다. 일부 실시형태에서, 제 1 스레드 및 제 2 스레드를 식별하는 단계 302에는 제 1 스레드에 의해 호출되거나 액세스되는 제 2 스레드를 식별하는 단계가 포함된다. 예를 들어, 제 2 스레드는 제 1 스레드로부터의 컨텍스트 스위치(예컨대, 임계값을 초과하는 컨텍스트 스위치의 수 또는 빈도)에 응답하여 실행되는 것으로 식별된다. 다른 예로서, 제 2 스레드는 제 1 스레드로부터의 호출(예컨대, 임계값을 초과하는 호출의 수 또는 빈도)에 응답하여 실행되는 것으로 식별된다. 추가의 예로서, 제 2 스레드는 (예컨대, 임계값을 초과하는 지속기간 동안 또는 임계값을 초과하는 데이터를 전달하는 동안) 데이터 패브릭을 통해 제 1 스레드와 통신하는 것으로 식별된다. 즉, 제 2 스레드는 제 1 스레드와 어느 정도의 상호 통신 또는 상호 관계를 갖는 것으로 식별된다.
도 3의 방법은, 또한, 성능 활동에 기초하여, 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 단계 204가 제 1 스레드에 할당된 복수의 코어 중 제 1 코어와 제 2 스레드에 할당된 복수의 코어 중 제 2 코어 사이의 물리적 거리를 단축시키기 위해 코어 할당을 수정하는 단계 304를 포함한다는 점에서, 도 2와 상이하다. 제 1 스레드 및/또는 제 2 스레드는 제 1 스레드를 실행하는 코어와 제 2 스레드를 실행하는 코어 사이의 데이터 경로의 거리를 단축시키기 위해 새로운 코어에 할당된다. 예를 들어, 제 1 스레드 및/또는 제 2 스레드는 제 1 코어 및 제 2 코어가 동일한 컴퓨팅 코어 콤플렉스(CCX), 동일한 코어 콤플렉스 다이(CCD), 동일한 소켓, 동일한 비균일 메모리 액세스(NUMA) 도메인 및/또는 동일한 컴퓨팅 노드 내에 위치되도록 재할당된다.
추가 설명을 위해, 도 4에는, 복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 단계 202(예컨대, 구성 모듈(114)에 의함) 및 성능 활동에 기초하여 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 단계 204를 포함하는 자동 중앙 처리 장치(CPU) 최적화를 위한 예시적인 방법을 나타내는 흐름도가 제시된다.
도 4의 방법은, 도 4의 방법이, 성능 활동에 표시된 캐시 미스의 정도에 기초하여, (예컨대, 구성 모듈(114)에 의해) 복수의 스레드 중 제 1 스레드 및 복수의 코어 중 동일한 코어에 할당된 복수의 스레드 중 제 2 스레드를 식별하는 단계 402도 포함한다는 점에서, 도 2와 상이하다. 즉, 제 1 스레드와 제 2 스레드는 모두 동일한 코어의 동일한 캐시에 액세스한다. 제 1 스레드 및 제 2 스레드는 임계값을 초과하는 양 스레드에 대한 캐시 미스(예컨대, 시간 창 내)의 정도에 기초하여 식별된다. 따라서, 제 1 스레드와 제 2 스레드의 각 스레드에서 캐시 미스가 발생하여, 각 스레드가 공유 캐시에 새 데이터를 기록하도록 강제하고 다른 스레드에 대한 캐시 미스를 진행시킨다.
도 4의 방법은, 또한, 성능 활동에 기초하여, 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 단계 204가 제 1 스레드 및 제 2 스레드 중 하나 이상을 복수의 코어의 상이한 코어에 할당하는 단계 404를 포함한다는 점에서, 도 2와 상이하다. 즉, 제 1 스레드와 제 2 스레드는 동일한 코어에 할당되지 않고 서로 다른 코어에 할당된다. 예를 들어, 제 1 스레드나 제 2 스레드는 서로 다른 코어에 재할당된다. 다른 예로서, 제 1 스레드와 제 2 스레드는 모두 서로 다른 신규 코어에 할당된다. 따라서, 제 1 스레드와 제 2 스레드는 더 이상 동일한 캐시를 공유하지 않고 캐시 미스의 정도가 감소되어, 양 스레드의 성능이 향상된다.
추가 설명을 위해, 도 5에는, 복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 단계 202(예컨대, 구성 모듈(114)에 의함) 및 성능 활동에 기초하여 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 단계 204를 포함하는 자동 중앙 처리 장치(CPU) 최적화를 위한 예시적인 방법을 나타내는 흐름도가 제시된다.
도 5의 방법은, 도 5의 방법이 (예컨대, 구성 모듈(114)에 의해) 추가적인 성능 활동을 모니터링하는 단계 502도 포함한다는 점에서, 도 2와 상이하다. 다시 말해, 자원 할당을 수정하는 단계 204 후에 작업 부하에 대한 성능 활동이 모니터링된다(단계 502). 따라서, 추가 성능 활동은 자원 할당을 수정하는 단계 204 후에 작업 부하의 성능을 반영한다.
도 5의 방법은, 또한, 도 5의 방법이 자원 할당에 대한 수정을 취소할 지를 추가 성능 활동에 기초하여 결정하는 단계 504를 포함한다는 점에서, 도 2와 상이하다. 예를 들어, 자원 할당을 수정하는 단계 204 전에 모니터링된 성능 활동(단계 202)은 성능이 개선되었는 지를 결정하기 위해 자원 할당을 수정하는 단계 204 후에 모니터링된 추가의 성능 활동(단계 502)과 비교된다. 성능이 감소하거나, 동일하게 유지되거나, 임계값 미만 정도까지 증가했음을 추가 성능 활동이 나타내는 경우, 자원 할당에 대한 수정이 취소된 것으로 결정된다. 추가 성능 활동이 성능이 증가되거나 임계값을 초과할 정도까지 증가했음을 나타내는 경우, 수정을 취소하지 않는 것으로 결정된다.
당업자는, 일부 실시형태에서, 도 5의 방법이 반복적으로 수행되어 자원 할당에 대한 여러 번의 수정이 이루어진다는 것을 이해할 것이다. 주어진 수정으로 인해 성능이 향상되면, 수정은 유지된다. 그런 다음, 추가의 수정이 수행되고, 수정을 유지할 지 취소할 지의 여부가 결정된다.
추가 설명을 위해, 도 6에는, 복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 단계 202(예컨대, 구성 모듈(114)에 의함) 및 성능 활동에 기초하여 복수의 스레드에 대한 복수의 코어의 자원 할당을 수정하는 단계 204를 포함하는 자동 중앙 처리 장치(CPU) 최적화를 위한 예시적인 방법을 나타내는 흐름도가 제시된다.
도 6의 방법은, 도 6의 방법이 작업 부하와 관련된 자원 할당을 나타내는 데이터(604)를 (예컨대, 구성 모듈(114)에 의해) 저장하는 단계 602도 포함한다는 점에서, 도 2와 상이하다. 데이터(604)는 저장 위치(606)에 저장된다. 일부 실시형태에서, 저장 위치(606)는 로컬 스토리지(예컨대, 디스크 스토리지와 같은 비휘발성 로컬 메모리)이다. 다른 실시형태에서, 저장 위치(606)는 원격 스토리지(예컨대, 클라우드 저장 시스템 또는 서버)이다. 데이터(604)는, 데이터(604)에서 자원 할당이 최적화된 특정 작업 부하를 식별함으로써, 작업 부하와 관련된 자원 할당을 나타낸다. 예를 들어, 데이터(604)는 프로세스 명칭 또는 식별자, 애플리케이션 명칭, 또는 작업 부하와 관련된 다른 식별자를 나타낸다.
도 6의 방법은, 도 6의 방법이, 작업 부하의 실행에 기초하여, 자원 할당을 나타내는 데이터(604)를 로딩하는 단계 608도 포함한다는 점에서, 도 2와 상이하다. 예를 들어, 일부 실시형태에서, 데이터(604)는 작업 부하를 실행하기 위한 요청 또는 명령에 응답하여 로딩된다(단계 608). 다른 실시형태에서, 구성 모듈(114) 또는 다른 모듈은 작업 부하가 실행되고 있는 지를 결정하기 위해 실행된 애플리케이션 및 서비스를 모니터링한다. 일부 실시형태에서, 데이터(604)를 로딩하는 단계 608 이후, 데이터(604)에 표시된 자원 할당은 자원이 특정 작업 부하에 대해 최적으로 할당되도록 적용된다.
위에 제시된 설명의 관점에서, 독자는 본 발명의 실시형태에 따른 자동 중앙 처리 장치(CPU) 사용 최적화의 이점은, 다음을 포함한다는 것을 인식할 것이다.
● 특정 작업 부하에 대한 자원 할당을 최적화하여 컴퓨팅 시스템의 향상된 성능의 제공.
본 발명의 예시적인 실시형태는 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 완전한 기능의 컴퓨터 시스템과 관련하여 폭넓게 설명된다. 그러나, 당업자는 본 발명을 임의의 적합한 데이터 처리 시스템과 함께 사용하기 위해 컴퓨터 판독가능 저장 매체상에 배치된 컴퓨터 프로그램 제품으로 구현할 수도 있음을 인식할 것이다. 이와 같은 컴퓨터 판독가능 저장 매체는 자기 매체, 광학 매체, 또는 다른 적절한 매체를 포함하는 기계 판독가능 정보용의 임의의 저장 매체일 수 있다. 이와 같은 매체의 예시는 하드 드라이브 또는 디스켓의 자기 디스크, 광학 드라이브용 콤팩트 디스크, 자기 테이프, 및 당업자에게 적용될 수 있는 다른 것이 포함된다. 당업자라면, 적절한 프로그래밍 수단을 구비하는 임의의 컴퓨터 시스템이 본 발명의 방법 단계를 컴퓨터 프로그램 제품에서 구현하도록 실행될 수 있다는 것을 즉시 인식할 것이다. 또한, 당업자라면, 본 명세서에 기술된 예시적인 실시형태 중 일부가 컴퓨터 하드웨어에 설치되고 실행되는 소프트웨어에 지향되지만, 그럼에도 불구하고, 펌웨어 또는 하드웨어로 구현되는 대안적인 실시형태도 본 발명의 범주 내에 있음을 인식할 것이다.
본 발명은 시스템, 방법 및/또는 컴퓨터 프로그램 제품일 수 있다. 컴퓨터 프로그램 제품은, 프로세서로 하여금, 본 발명의 양태를 수행하게 하기 위해 컴퓨터 판독가능 프로그램 명령어를 포함하는 컴퓨터 판독가능 저장 매체(또는 미디어)를 포함할 수 있다.
컴퓨터 판독 가능 저장 매체는 명령어 실행 장치에 의해 사용하기 위한 명령어를 보유 및 저장할 수 있는 유형의 디바이스일 수 있다. 컴퓨터 판독 가능 저장 매체는, 예를 들어, 전자 저장 디바이스, 자기 저장 디바이스, 광학 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스, 또는 기기 또는 장치, 또는 전술한 것의 임의의 적절한 조합일 수 있지만, 이것들로 한정되는 것은 아니다. 컴퓨터 판독 가능한 저장 매체의 보다 구체적인 예의 비배타적인 목록은, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM: Random Access Memory), 판독 전용 메모리(ROM: Read-Only Memory), 삭제 가능한 프로그램 가능한 판독 전용 메모리(EPROM: Erasable Programmable ROM) 또는 플래시 메모리, 정적 랜덤 액세스 메모리(SRAM: Static RAM), 휴대용 컴팩트 디스크 판독 전용 메모리(CD-ROM), 디지털 다목적 디스크(DVD: Digital Versatile Disk), 메모리 스틱, 플로피 디스크, 펀치 카드 또는 그 위에 기록된 명령어를 포함하는 홈의 융기 구조와 같은 기계적으로 인코딩된 장치, 및 전술한 것의 임의의 적절한 조합을 포함한다. 본원에 사용된 바와 같은 컴퓨터 판독 가능 저장 매체는 무선파 또는 다른 자유롭게 전파되는 전자기파, 도파관 또는 기타 전송 매체를 통해 전파되는 전자기파(예컨대, 광섬유 케이블을 통과하는 광 펄스), 또는 와이어를 통해 전송되는 전기 신호와 같은 일시적인 신호 그 자체로 해석되어서는 안 된다.
본원에 기술된 컴퓨터 판독 가능 프로그램 명령어는 컴퓨터 판독 가능 저장 매체로부터 각각의 컴퓨팅/프로세싱 디바이스로 다운로드되거나, 네트워크, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 저장 디바이스로 다운로드될 수 있다. 네트워크에는 구리 전송 케이블, 광 전송 섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 에지 서버가 포함될 수 있다. 각각의 컴퓨팅/프로세싱 디바이스의 네트워크 어댑터 카드 또는 네트워크 인터페이스는 네트워크로부터 컴퓨터 판독 가능한 프로그램 명령어를 수신하고, 각각의 컴퓨팅/프로세싱 디바이스 내의 컴퓨터 판독 가능 저장 매체에 저장하기 위해 컴퓨터 판독 가능 프로그램 명령어를 전달한다.
본 발명의 동작을 수행하기 위한 컴퓨터 판독가능 프로그램 명령어는 어셈블러 명령어, 명령어 세트 아키텍처(ISA: Instruction Set Architecture) 명령어, 기계 명령어, 기계 종속 명령어, 마이크로코드, 펌웨어 명령어, 상태 설정 데이터, 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 기존의 절차적 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의 조합으로 작성된 소스 코드나 객체 코드일 수 있다. 컴퓨터 판독 가능 프로그램 명령어는 완전히 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 및 부분적으로 원격 컴퓨터상에서 또는 전체적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 근거리 네트워크(LAN: Local Area Network) 또는 광역 네트워크(WAN: Wide Area Network)를 포함하는 모든 유형의 네트워크를 통해, 사용자의 컴퓨터에 연결되거나, (예를 들어, 인터넷 서비스 공급업체를 이용하여 인터넷을 통해) 외부 컴퓨터에 연결될 수 있다. 일부 실시형태에서, 본 발명의 양태를 수행하기 위해, 예를 들어, 프로그래밍 가능 논리 회로, 필드 프로그래머블 게이트 어레이(FPGA: Field-Programmable Gate Arrays), 또는 프로그래머블 로직 어레이(PLA: Programmable Logic Arrays)를 포함하는 전자 회로는 전자 회로를 개별화하기 위해 컴퓨터 판독 가능 프로그램 명령어의 상태 정보를 활용함으로써 컴퓨터 판독 가능 프로그램 명령어를 실행할 수 있다.
본 발명의 양태는, 본 발명의 실시형태에 따른 방법, 기기(시스템) 및 컴퓨터 프로그램 제품의 흐름도 예시 및/또는 블록도를 참조하여 본원에 설명된다. 흐름도 예시 및/또는 블록도의 각 블록, 및 흐름도 예시 및/또는 블록도의 블록의 조합은 컴퓨터 판독가능 프로그램 명령어에 의해 구현될 수 있음을 이해할 것이다.
이러한 컴퓨터 판독 가능 프로그램 명령어는, 컴퓨터 또는 기타 프로그래밍 가능한 데이터 처리 기기의 프로세서를 통해 실행되는 명령어가 흐름도 및/또는 블록도의 블록이나 블록들에 지정된 기능/동작의 구현하기 위한 수단을 생성하는 기계를 생산하기 위해, 범용 컴퓨터, 특수 목적 컴퓨터 또는 기타 프로그래밍 가능한 데이터 처리 기기의 프로세서에 제공될 수 있다. 이들 컴퓨터 판독가능 프로그램 명령어는, 또한, 컴퓨터, 프로그래밍 가능 데이터 처리 장치, 및/또는 기타 장치가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 저장 매체에 저장될 수 있으며, 이로써 내부에 명령어가 저장된 컴퓨터 판독가능 저장 매체는 흐름도 및/또는 블록도 블록(들)에 명시된 기능/행위의 양태를 구현하는 명령어를 포함하는 제조 물품을 포함한다.
또한, 컴퓨터 판독 가능 프로그램 명령어는 컴퓨터, 다른 프로그래밍 가능 데이터 처리 장치, 또는 다른 디바이스에 로딩되어, 컴퓨터, 다른 프로그래밍 가능 장치 또는 다른 디바이스로 하여금, 일련의 작동 단계를 수행하게 하여, 컴퓨터, 다른 프로그래밍 가능 장치 또는 다른 디바이스에서 실행되는 명령어가 흐름도 및/또는 블록도의 블록(들)에 명시된 기능/동작을 구현하도록 하는 컴퓨터 구현 프로세스를 생성하게 할 수 있다.
도면의 흐름도 및 블록도는 본 발명의 다양한 실시형태에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현예의 아키텍처, 기능 및 작동을 도시한다. 이와 관련하여, 흐름도 또는 블록도의 각 블록은 특정의 논리 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 모듈, 세그먼트 또는 명령어의 일부분을 나타낼 수 있다. 일부 대안적인 구현예에서, 블록에서 언급된 기능은 도면에 도시된 순서와 다를 수 있다. 예를 들어, 연속적으로 도시된 2개의 블록은 관련된 기능에 따라 실제로 거의 동시에 실행되거나 때때로 역순으로 실행될 수도 있다. 또한, 블록도 및/또는 흐름도 예시의 각 블록, 및 블록도 및/또는 흐름도 예시의 블록들의 조합은 특정 기능이나 동작을 수행하거나, 특수 목적 하드웨어 및 컴퓨터 명령어의 조합을 실행하는 특수 목적 하드웨어 기반 시스템에 의해 구현될 수 있다.
본 발명의 다양한 실시형태에서, 수정 및 변경이 이루어질 수 있음은 전술한 설명으로부터 이해될 것이다. 본 명세서에서의 설명은 단지 예시를 위한 것이며 제한적인 의미로 해석되어서는 안 된다. 본 발명의 범위는 다음 청구범위의 표현에 의해서만 제한된다.
Claims (20)
- 자동 중앙 처리 장치(CPU) 사용 최적화의 방법에 있어서,
상기 CPU는, 복수의 코어를 포함하고,
상기 방법은,
복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 단계; 및
상기 성능 활동에 기초하여, 상기 복수의 스레드에 대한 상기 복수의 코어의 자원 할당을 수정하는 단계
를 포함하는 방법. - 제 1 항에 있어서,
상기 성능 활동에 기초하여, 상기 복수의 스레드 중 제 1 스레드 및 상기 제 1 스레드와 관련된 상기 복수의 스레드 중 제 2 스레드를 식별하는 단계를 더 포함하되,
상기 자원 할당을 수정하는 상기 단계는, 상기 제 1 스레드에 할당된 상기 복수의 코어 중 제 1 코어와 상기 제 2 스레드가 할당된 상기 복수의 코어 중 제 2 코어 사이의 물리적 거리를 단축시키기 위해 코어 할당을 수정하는 단계를 포함하는,
방법. - 제 2 항에 있어서,
상기 제 1 코어 및 상기 제 2 코어는, 동일한 컴퓨팅 코어 콤플렉스(CCX), 동일한 코어 콤플렉스 다이(CCD), 동일한 소켓, 동일한 비균일 메모리 액세스(NUMA) 도메인 및/또는 동일한 컴퓨팅 노드 내에 위치되는, 방법. - 제 1 항에 있어서,
상기 성능 활동에 표시된 캐시 미스의 정도에 기초하여, 상기 복수의 코어 중 동일한 코어에 할당된 상기 복수의 스레드 중 제 1 스레드 및 상기 복수의 스레드 중 제 2 스레드를 식별하는 단계를 더 포함하되,
상기 자원 할당을 수정하는 상기 단계는, 상기 제 1 스레드 및 상기 제 2 스레드 중 하나 이상을 상기 복수의 코어 중 서로 다른 코어에 할당하는 것을 포함하는,
방법. - 제 1 항에 있어서,
상기 자원 할당을 수정하는 단계 후에, 추가적인 성능 활동을 모니터링하는 단계, 및
상기 추가적인 성능 활동에 기초하여, 상기 자원 할당에 대한 수정을 취소할 지를 결정하는 단계
를 더 포함하는 방법. - 제 1 항에 있어서,
상기 작업 부하와 관련하여 상기 자원 할당을 나타내는 데이터를 저장하는 단계, 및
상기 작업 부하의 실행에 기초하여, 상기 자원 할당을 나타내는 상기 데이터를 로딩하는 단계
를 더 포함하는 방법. - 제 1 항에 있어서,
상기 자원 할당을 수정하는 상기 단계는, 상기 복수의 코어 중 하나 이상의 코어에 대한 하나 이상의 임계값을 수정하는 것을 포함하고,
상기 하나 이상의 임계값은, 패키지 전력 추적(PPT) 임계값, 열 설계 전류(TDC) 임계값, 전기 설계 전류(EDC) 임계값 또는 코어가 전압/온도 쌍에서 안전하게 보낼 수 있는 시간 임계값을 포함하는 신뢰성 제한(Reliability Limit)을 포함하는,
방법. - 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 장치로서,
상기 CPU는 복수의 코어를 포함하고,
상기 장치는,
복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하고, 또한
상기 성능 활동에 기초하여, 상기 복수의 스레드에 대한 상기 복수의 코어의 자원 할당을 수정하도록 구성되는,
장치. - 제 8 항에 있어서,
상기 성능 활동에 기초하여, 상기 복수의 스레드 중 제 1 스레드 및 상기 제 1 스레드와 관련된 상기 복수의 스레드 중 제 2 스레드를 식별하도록 추가 구성되고,
상기 자원 할당을 수정하는 것은, 상기 제 1 스레드에 할당된 상기 복수의 코어 중 제 1 코어와 상기 제 2 스레드가 할당된 상기 복수의 코어 중 제 2 코어 사이의 물리적 거리를 단축시키기 위해 코어 할당을 수정하는 것을 포함하는,
장치. - 제 9 항에 있어서,
상기 제 1 코어 및 상기 제 2 코어는, 동일한 컴퓨팅 코어 콤플렉스(CCX), 동일한 코어 콤플렉스 다이(CCD), 동일한 소켓, 동일한 비균일 메모리 액세스(NUMA) 도메인 및/또는 동일한 컴퓨팅 노드 내에 위치되는, 장치. - 제 8 항에 있어서,
상기 성능 활동에 표시된 캐시 미스의 정도에 기초하여, 상기 복수의 코어 중 동일한 코어에 할당된 상기 복수의 스레드 중 제 1 스레드 및 상기 복수의 스레드 중 제 2 스레드를 식별하도록 추가 구성되고,
상기 자원 할당을 수정하는 것은, 상기 제 1 스레드 및 상기 제 2 스레드 중 하나 이상을 상기 복수의 코어 중 서로 다른 코어에 할당하는 것을 포함하는,
장치. - 제 8 항에 있어서,
상기 자원 할당을 수정하는 것 이후에, 추가적인 성능 활동을 모니터링하고, 또한
상기 추가적인 성능 활동에 기초하여, 상기 자원 할당에 대한 수정을 취소할 지를 결정하도록 추가 구성되는,
장치. - 제 8 항에 있어서,
상기 작업 부하와 관련하여 상기 자원 할당을 나타내는 데이터를 저장하고, 또한
상기 작업 부하의 실행에 기초하여, 상기 자원 할당을 나타내는 상기 데이터를 로딩하도록 추가 구성되는,
장치. - 제 8 항에 있어서,
상기 자원 할당을 수정하는 것은, 상기 복수의 코어 중 하나 이상의 코어에 대한 하나 이상의 임계값을 수정하는 것을 포함하고,
상기 하나 이상의 임계값은, 패키지 전력 추적(PPT) 임계값, 열 설계 전류(TDC) 임계값, 전기 설계 전류(EDC) 임계값 또는 코어가 전압/온도 쌍에서 안전하게 보낼 수 있는 시간 임계값을 포함하는 신뢰성 제한(Reliability Limit)을 포함하는,
장치. - 자동 중앙 처리 장치(CPU) 사용 최적화를 위한 컴퓨터 프로그램 제품으로서,
상기 CPU는, 복수의 코어를 포함하고, 상기 프로그램 제품은, 컴퓨터 판독 가능한 매체에 배치되고, 컴퓨터로 하여금, 실행 시에,
복수의 스레드를 포함하는 작업 부하의 성능 활동을 모니터링하는 단계; 및
상기 성능 활동에 기초하여, 상기 복수의 스레드에 대한 상기 복수의 코어의 자원 할당을 수정하는 단계
를 수행하게 하는 컴퓨터 프로그램 명령어를 포함하는,
컴퓨터 프로그램 제품. - 제 15 항에 있어서,
상기 성능 활동에 기초하여, 상기 복수의 스레드 중 제 1 스레드 및 상기 제 1 스레드와 관련된 상기 복수의 스레드 중 제 2 스레드를 식별하는 단계를 더 포함하되,
상기 자원 할당을 수정하는 상기 단계는, 상기 제 1 스레드에 할당된 상기 복수의 코어 중 제 1 코어와 상기 제 2 스레드가 할당된 상기 복수의 코어 중 제 2 코어 사이의 물리적 거리를 단축시키기 위해 코어 할당을 수정하는 단계를 포함하는,
컴퓨터 프로그램 제품. - 제 16 항에 있어서,
상기 제 1 코어 및 상기 제 2 코어는, 동일한 컴퓨팅 코어 콤플렉스(CCX), 동일한 코어 콤플렉스 다이(CCD), 동일한 소켓, 동일한 비균일 메모리 액세스(NUMA) 도메인 및/또는 동일한 컴퓨팅 노드 내에 위치되는, 컴퓨터 프로그램 제품. - 제 15 항에 있어서,
상기 성능 활동에 표시된 캐시 미스의 정도에 기초하여, 상기 복수의 코어 중 동일한 코어에 할당된 상기 복수의 스레드 중 제 1 스레드 및 상기 복수의 스레드 중 제 2 스레드를 식별하는 단계를 더 포함하되,
상기 자원 할당을 수정하는 상기 단계는, 상기 제 1 스레드 및 상기 제 2 스레드 중 하나 이상을 상기 복수의 코어 중 서로 다른 코어에 할당하는 것을 포함하는,
컴퓨터 프로그램 제품. - 제 15 항에 있어서,
상기 자원 할당을 수정하는 단계 후에, 추가적인 성능 활동을 모니터링하는 단계, 및
상기 추가적인 성능 활동에 기초하여, 상기 자원 할당에 대한 수정을 취소할 지를 결정하는 단계를 더 포함하는,
컴퓨터 프로그램 제품. - 제 15 항에 있어서,
상기 작업 부하와 관련하여 상기 자원 할당을 나타내는 데이터를 저장하는 단계, 및
상기 작업 부하의 실행에 기초하여, 상기 자원 할당을 나타내는 상기 데이터를 로딩하는 단계를 더 포함하는,
컴퓨터 프로그램 제품.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/723,427 US12008401B2 (en) | 2019-12-20 | 2019-12-20 | Automatic central processing unit (CPU) usage optimization |
US16/723,427 | 2019-12-20 | ||
PCT/US2020/065905 WO2021127369A1 (en) | 2019-12-20 | 2020-12-18 | Automatic central processing unit usage optimization |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220110509A true KR20220110509A (ko) | 2022-08-08 |
Family
ID=74187373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227020938A KR20220110509A (ko) | 2019-12-20 | 2020-12-18 | 자동 중앙 처리 장치(cpu) 사용 최적화 |
Country Status (6)
Country | Link |
---|---|
US (1) | US12008401B2 (ko) |
EP (1) | EP4078367A1 (ko) |
JP (1) | JP2023508280A (ko) |
KR (1) | KR20220110509A (ko) |
CN (1) | CN114830090A (ko) |
WO (1) | WO2021127369A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230067109A1 (en) * | 2021-08-30 | 2023-03-02 | Apple Inc. | Performance islands for cpu clusters |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7197652B2 (en) * | 2003-12-22 | 2007-03-27 | International Business Machines Corporation | Method and system for energy management in a simultaneous multi-threaded (SMT) processing system including per-thread device usage monitoring |
US8087022B2 (en) * | 2007-11-27 | 2011-12-27 | International Business Machines Corporation | Prevention of deadlock in a distributed computing environment |
US8615647B2 (en) * | 2008-02-29 | 2013-12-24 | Intel Corporation | Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state |
US20120297395A1 (en) * | 2008-08-18 | 2012-11-22 | Exludus Inc. | Scalable work load management on multi-core computer systems |
US8495395B2 (en) * | 2010-09-14 | 2013-07-23 | Advanced Micro Devices | Mechanism for controlling power consumption in a processing node |
US8782645B2 (en) * | 2011-05-11 | 2014-07-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
US10185566B2 (en) * | 2012-04-27 | 2019-01-22 | Intel Corporation | Migrating tasks between asymmetric computing elements of a multi-core processor |
KR101684677B1 (ko) * | 2013-12-26 | 2016-12-09 | 한국전자통신연구원 | 멀티코어 시스템의 시스템 성능 최적화 장치 및 방법 |
US10339023B2 (en) * | 2014-09-25 | 2019-07-02 | Intel Corporation | Cache-aware adaptive thread scheduling and migration |
US20170039093A1 (en) | 2015-08-04 | 2017-02-09 | Futurewei Technologies, Inc. | Core load knowledge for elastic load balancing of threads |
US20170097854A1 (en) * | 2015-10-01 | 2017-04-06 | Qualcomm Innovation Center, Inc. | Task placement for related tasks in a cluster based multi-core system |
KR102464678B1 (ko) | 2016-03-18 | 2022-11-11 | 한국전자통신연구원 | 매니코어 시스템에서 쓰레드를 스케줄링 하는 방법 및 그 장치 |
US10922137B2 (en) * | 2016-04-27 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Dynamic thread mapping |
US12106203B2 (en) * | 2018-07-12 | 2024-10-01 | VMware LLC | Neural network model for predicting usage in a hyper-converged infrastructure |
US10922123B2 (en) * | 2018-12-12 | 2021-02-16 | Microsoft Technology Licensing, Llc | Container migration in computing systems |
-
2019
- 2019-12-20 US US16/723,427 patent/US12008401B2/en active Active
-
2020
- 2020-12-18 EP EP20842630.4A patent/EP4078367A1/en active Pending
- 2020-12-18 CN CN202080088667.5A patent/CN114830090A/zh active Pending
- 2020-12-18 WO PCT/US2020/065905 patent/WO2021127369A1/en unknown
- 2020-12-18 JP JP2022537368A patent/JP2023508280A/ja active Pending
- 2020-12-18 KR KR1020227020938A patent/KR20220110509A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
US20210191778A1 (en) | 2021-06-24 |
JP2023508280A (ja) | 2023-03-02 |
US12008401B2 (en) | 2024-06-11 |
CN114830090A (zh) | 2022-07-29 |
EP4078367A1 (en) | 2022-10-26 |
WO2021127369A1 (en) | 2021-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9760395B2 (en) | Monitoring hypervisor and provisioned instances of hosted virtual machines using monitoring templates | |
US9262199B2 (en) | Virtualization and dynamic resource allocation aware storage level reordering | |
US8589923B2 (en) | Preprovisioning virtual machines based on request frequency and current network configuration | |
US10831559B2 (en) | Processor thread management | |
US8661447B1 (en) | Method and apparatus for managing execution of a plurality of computer tasks based on availability of computer resources | |
JP6349264B2 (ja) | 計算資源割当て方法およびシステム | |
US11171852B2 (en) | Computer system productivity monitoring | |
KR20220110509A (ko) | 자동 중앙 처리 장치(cpu) 사용 최적화 | |
US10489189B2 (en) | Selection of maintenance tasks | |
US20200142736A1 (en) | Computer processing system with resource optimization and associated methods | |
US9658965B2 (en) | Cache utilization to efficiently manage a storage system | |
US20170063718A1 (en) | Repurposing a target endpoint to execute a management task | |
US20160139963A1 (en) | Virtual computing power management | |
US9239792B2 (en) | Sharing cache in a computing system | |
US20170109196A1 (en) | Managing thread execution in a multitasking computing environment | |
US9069888B2 (en) | Tracking errors in a computing system | |
US10819607B2 (en) | Reducing power consumption of a compute node experiencing a bottleneck | |
US11941296B2 (en) | Intelligent storage of messages in page sets | |
JP7447186B2 (ja) | 計算機システム及び仮想化基盤の構築制御方法 | |
KR20220116467A (ko) | 자동 전압 재구성 | |
CN114450670A (zh) | 用于并发执行数据库操作的方法 |