KR20200090957A - 서비스 하한 품질에 기초한 메모리 대역폭 스케줄링 - Google Patents

서비스 하한 품질에 기초한 메모리 대역폭 스케줄링 Download PDF

Info

Publication number
KR20200090957A
KR20200090957A KR1020207021114A KR20207021114A KR20200090957A KR 20200090957 A KR20200090957 A KR 20200090957A KR 1020207021114 A KR1020207021114 A KR 1020207021114A KR 20207021114 A KR20207021114 A KR 20207021114A KR 20200090957 A KR20200090957 A KR 20200090957A
Authority
KR
South Korea
Prior art keywords
nls
processes
latency
scheduler
throttling
Prior art date
Application number
KR1020207021114A
Other languages
English (en)
Other versions
KR102430934B1 (ko
Inventor
더글라스 벤슨 헌트
제이 플라이쉬만
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20200090957A publication Critical patent/KR20200090957A/ko
Application granted granted Critical
Publication of KR102430934B1 publication Critical patent/KR102430934B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0852Delays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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/3433Recording 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

시스템은 스케줄러[111]를 포함하는 멀티-코어 프로세서[102]를 포함한다. ?揮?-코어 프로세서는 시스템 메모리[103] 및 운연 체제[120]과 통신한다. 멀티-코어 프로세서는 제1 프로세스 및 제2 프로세스를 실행한다. 시스템은 제1 설정값이 레이턴시 감지(LS) 하한 이하일 때 또는 제1 설정값이 LS 하한을 초과할 경우 제1 프로세스에 의한 제어 사이클에서 현재 사용이 LS 하한을 초과할 때, 제1 프로세스에 의한 제어 사이클에서 현재 사용이 제1 프로세스에 대한 사용의 제1 설정값[129]를 충족할 때까지 제2 프로세스에 의한 메모리 대역폭의 사용을 제어하기 위한 스케줄러를 사용한다.

Description

서비스 하한 품질에 기초한 메모리 대역폭 스케줄링
컴퓨터 서버와 같은 프로세싱 시스템에서, 프로세서는 종종 서로 다른 프로세스들이 서로 다른 사용자들, 클라이언트들 및 장치들과 연관되어 동시에 실행되는 상이한 프로세스들의 작업들을 서비스 제공해야 한다. 동시 프로세스들은 리소스들을 처리하기 위하 경쟁한다. 프로세서들과 프로세싱 시스템들은 특정 리소스들이 항상 사용될 수 있도록 보장하기 위해 과도하게 구축될 수 있지만, 이 방법은 비용이 많이 들며 많은 수명 동안 아이들(idle) 상태에 방치되어 리소스가 낭비될 수 있다. 일부 시스템들에서, 다른 프로세스들로의 리소스 할당을 관리하기 위해, 운영 체제는 각 프로세스에 우선 순위가 할당되고 운영 체제가 우선 순위에 따라 각 프로세스에 리소스를 할당하는 우선 순위 체계를 구현한다. 그러나, 종래 우선 순위 체계들은 특히 이러한 프로세스들이 다른 리소스가 아닌 일부 리소스들에 대해 아이들 상태에 있을 경우, 우선 순위가 높은 프로세스들에 리소스들을 과도하게 할당할 수 있다. 우선 순위가 높은 프로세스들에 의한 활동이 적은 기간에는, 엄격한 규칙들에 의해 제약된 프로세싱 시스템은 우선 순위가 낮은 프로세서들에 의해 사용하도록 놓일 수 있는 상당한 컴퓨팅 용량을 낭비한다.
본 개시는 첨부된 도면들을 참조함으로써 더 잘 이해될 수 있으며, 그 많은 특징들 및 이점들이 당업자에게 명백해질 수 있다. 서로 다른 도면들에서 동일한 참조 부호들의 사용은 유사하거나 동일한 아이템들을 나타낸다.
도 1은 일부 실시예들에 따른 SLO(service level objectives)를 충족시키기 위한 복수의 프로세싱 코어들 및 스케줄러를 갖는 컴퓨팅 시스템을 예시하는 블록도이다.
도 2 내지 6은 일부 실시예들에 따른 컴퓨팅 시스템을 운용하기 위한 방법들을 예시하는 흐름도들이다.
도 7 내지 11은 일부 실시예들에 따른 시스템에서 다양한 시간들에서의 레이턴시 감지(LS) 하한들 및 비-레이턴시 감지(NLS) 제한들을 예시하는 표들이다.
도 12는 일부 실시예들에 따른 컴퓨팅 시스템에 대한 시간이 지남에 따른 리소스 소모 및 프로세스 레이턴시를 예시하는 그래프이다.
도 13은 일부 실시예들에 따른 컴퓨팅 시스템에서 프로세스에 대한 메모리 대역폭 사용 대 메모리 레이턴시를 예시하는 그래프이다.
일반적으로, 도 1 내지 13은 프로세싱 시스템에서 프로세스를 동시에 프로세스들을 실행하기 위해 리소스들을 할당하는 기술들을 예시하며, 이에 의해 각 프로세스는 다양한 제한된 공유 컴퓨팅 시스템 리소스들에 대한 적어도 접근성의 최소 하한이 할당된다. 이러한 제한된 리소스(LR)들은 다수의 카운트들 또는 사이클들로 측정된 CPU 가용성, 메모리 가용성(예를 들어, L3 메모리 캐시 가용성), 메모리 대역폭 가용성, 네트워크 리소스 가용성, 인바운드(inbound) 네트워크 대역폭 사용 등에서 적어도 하나를 포함한다. 컴퓨팅 시스템은 제한된 리소스를 관리하여 레이턴시 감지(LS) 프로세스들 및 비-레이턴시 감지(NLS) 프로세스들이 SLO(service level objective)들을 충족시키면서 동시에 사용 가능한 LR들의 사용을 최대화한다. SLO들은 필수(mandatory) 목표들 및 어스피레이셔널(aspirational) 목표들을 포함하지만, 편의상 필수 목표는 본원에서 목표 또는 SLO로 지칭되고, 및 어스피레이셔널 SLO는 설정값들(setpoints)로 지칭된다. 프로세싱 시스템은 또한 측정될 수 있고 어느 정도까지는 제어되지만 프로세스들 간에 할당되지 않는 특정 속성들 또는 특성들을 갖는다. 이러한 속성의 예들로는 메모리 레이턴시 및 전체 프로세스 레이턴시를 포함한다. 이러한 속성들은 또한 본원에 추가 설명된 제어 방식의 SLO, 어스퍼레이셔널 목표, 또는 설정값일 수 있다.
특정 예로서, 본 명세서에 설명된 기술들은 NLS 프로세스들에 의한 메모리 대역폭 사용을 제어한다. 이는 허용 가능한 시스템 메모리 레이턴시를 초래하고, 이는 LS 프로세스가 적어도 그들 각자의 메모리 대역폭 하한들을 요구할 때 각각의 LS 프로세스가 각자의 원하는 메모리 대역폭 하한을 달성하게 한다. 요약하면, LS 프로세스들이 각자의 SLO 메모리 대역폭 사용을 얻는 목표를 달성하기 위해 시스템은 두 번째 변수(모든 프로세스들에 영향을 미치는 시스템 메모리 레이턴시)에 영향을 미치도록 하나의 변수(NLS 메모리 대역폭 사용)를 제어한다.
시스템 메모리 레이턴시가 너무 높으면, 레이턴시가 낮은 경우 LS 프로세스가 메모리 대역폭 할당(LR 하한)을 소모할지를 알 수 없다. 즉, 하드웨어 시스템에서 LS 프로세스가 얻은 것보다 더 많은 메모리 대역폭 사용을 "요청"하고 있는지를 결정할 방법이 없다. 그래서, 시스템은 필요한 경우 총 시스템 메모리 대역폭을 낮추기 위해 본원에 설명된 제한(limit), 상한(cap)또는 스로틀링(throttling)을 적용하도록 설정값을 사용하여 NLS 프로세스들을 관리한다. 메모리 레이턴시가 LS 프로세스들이 대역폭 할당을 소모할 수 있는 지점으로 낮추는 경우, 반드시 레이턴시를 “계약” 레이턴시로 낮추지 않고도 NLS 프로세스들이 더 이상 제한되지 않으며, 이에 따라 앞서 이전 계획에서 가능했던 것보다 더 유용한 작업을 시스템에서 수행할 수 있다.
시스템이 가능한 최소 메모리 레이턴시가 아닌, 계약된 레이턴시를 달성할 때까지 시스템이 NLS 프로세스들을 다시 스로틀링하는 경우, 시스템은 NLS 프로세스들을 스로틀링한다. 즉, 시스템은 시스템이 LR 하한 메모리 대역폭 사용 또는 공칭 레이턴시(계약 레이턴시)를 제공함을 보장하며, 이에 따라 시스템이 LS 프로세스들에 더 많은 메모리 대역폭을 확보하기 위해 약간의 최소 레이턴시에 도달하기 위한 노력을 일환으로 NLS 프로세스들의 동작을 완전히 중지하여 NLS 프로세스들에 과도하게 불이익을 주지 않도록 최적화된다. 시스템은 NLS 프로세스들이 더 많은 메모리 대역폭을 사용하도록 하고, LS 프로세스들이 LR 하한을 충족하지 못할 정도로 레이턴시가 높지 않은 한 계약 레이턴시를 초과하여 시스템 레이턴시를 구동하도록 한다. 일부 실시예들에 따르면, 이러한 시스템에서의 성공은 계약 시스템 레이턴시가 달성되거나 LS 프로세스들에 대한 대역폭 하한이 실질적으로 항상 충족되도록 NLS 메모리 대역폭 사용을 관리하는 것이다. 다른 실시예들에서, 이러한 조건들 둘 다가 실질적으로 항상 충족된다.
도 1은 일부 실시예들에 따른 제한된 리소스(예: 메모리 대역폭 사용량)의 SLO를 충족시키기 위한 복수의 프로세싱 코어들 및 스케줄러를 갖는 프로세싱 시스템(100)을 예시하는 블록도이다. 단순화를 위해, 단일 제한된 리소스가 설명된다. 본원에 설명된 바와 같은 동일하거나 유사한 기술들은 복수의 제한된 리소스들이 시스템에서 동작하는 모든 프로세스들에 의해 보다 완전히 이용되도록 각 프로세스에 대해 컴퓨팅 시스템에서 복수의 리소스들에 대응되는 복수의 SLO들을 동시에 충족시키도록 구현될 수 있다. 일부 실시예들에서, 프로세싱 시스템(100)은 서버, 데스크탑 또는 랩탑 컴퓨터, 스마트폰, 태블릿, 게임 콘솔 등을 포함한, 임의 개수의 전자 장치들에 통합된다. 프로세싱 시스템(100)은 시스템 메모리(102)와 멀티-코어 프로세서(103) 및 본원에 더 설명된 것과 동일한 설정들을 포함하는 컴퓨팅 디바이스(101)를 포함한다.
시스템 메모리(103)는 읽기 전용 메모리(ROM) 및 랜덤 액세스 메모리(RAM) 중 하나 이상을 사용한다. 시스템 메모리(103)는 운영 체제(OS)(120)를 저장한다. 일부 실시예들에 따르면, OS(120)는 본원에 더 설명된 컴포넌트들을 구성하기 위한 SLO 스케줄러 API(108)를 사용할 수 있도록 한다. OS(120)는 시스템 메모리(103)의 어플리케이션(121)과 같은 어플리케이션들의 실행을 관리한다. 어플리케이션들(121)의 일부, 및 이에 따라 프로세서(102)에서 동작하는 프로세스들의 적어도 일부는 어플리케이션(121)과 연관된다. 프로세서(102)에서 동작하는 프로세스들은 레이턴시 민감(LS) 또는 비-레이턴시 민감(NLS)으로 지정된다. NLS 프로세스들은 또한 LR 사용의 어스피레이셔널 목표를 충족시키기 위해 "최선형(best effort)" 방식으로 실행될 수 있는 프로세스들로 알려져 있다. 목표 충족의 성공은 시간 단위, 제어 주기 단위, 위반 없는 누적 시간량 등으로 측정될 수 있다.
본원에 설명된 바와 같은 레이턴시는 달리 지시되지 않는 한 LS 및 NLS 프로세스들과 관련된다. 레이턴시 유형과 관련되는 LR의 예로는 메모리 레이턴시가 있으며, 이는 일부 실시예들에 따르면, 메모리 시스템이 일부 데이터를 판독하기 위해 요청되는 프로세서(예: 프로세서(102), CPU 또는 GPU)에 응답하는데 걸리는 시간을 말한다. 많은 컴퓨팅 시스템들에서, 메모리 레이턴시는 메모리 대역폭 사용량과 적어도 부분적으로 상관된다. 예를 들어, 더 높은 대역폭 사용량은 다소 높은 메모리 레이턴시에 대응된다. 상관관계는 프로세싱 시스템(100)과 같은 특정 컴퓨팅 시스템에서의 다른 조건들에 따라 강하거나 약할 수 있다. 일부 실시예들에 따르면, 총 메모리 대역폭 요구가 증가하면 시스템 레이턴시가 증가한다. 그러나, 시스템 레이턴시가 특정 시간에서 더 짧은 경우 소정의 개별 프로세스는 일반적으로 더 많은 대역폭을 소모한다. 즉, 프로세스의 경우, 소모된 대역폭은 어느 정도까지는 시스템 레이턴시의 함수이지만, 프로세싱 시스템(100)과 같은 시스템이 동작하는 방식은 레이턴시가 어느 정도까지는 대역폭 요구의 함수이다.
일부 실시예들에 따르면, 각 어플리케이션(121)은 LS 또는 NLS 지정을 함께 사용하기 위한 하나 이상의 프로세스 스케줄 파라미터들(122)을 포함하거나 이와 관련이 있다. 프로세스 스케줄 파라미터들(122)은 하기에 더 설명된 바와 같은 LS 태스크, LS 작업, LS 프로세스 및 LS 스레드(thread)와 다르게 LS 태스크, LS 작업, LS 프로세스 및 LS 스레드를 동작시키도록 컴퓨팅 디바이스(101)를 구성한다.
프로세서(102)는 제한하는 것은 아니나, 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 프로세서(DSP) 또는 이들의 임의의 조합을 포함한다. 일부 실시예들에 따르면, 프로세서(102)는 컴퓨팅 디바이스(101)에서 제1 코어(105) 내지 N개의 코어들 중 마지막을 나타내는 제N 코어(106)와 같은 복수의 코어들을 포함한다. 멀티-코어 프로세서에서, 복수의 프로세서 코어들 또는 "코어들"은 컴퓨팅 디바이스(101)의 단일 집적 회로 다이(123)에 포함되거나 복수의 집적 회로 다이들에 포함될 수 있다. 복수의 회로 다이들은 단일 칩 패키지로 배열될 수 있다. 프로세서(102)는 향상된 성능 및 컴퓨팅 디바이스(101)에서 동작하는 복수의 태스크들 및 프로세스 스레드들의 효율적인 처리를 위해 인터페이싱되는 둘 이상의 코어들(105, 106)을 갖는다. 일부 실시예들에 따르면, 프로세스 스레드들은 레이턴시, 캐시 사용량, 로드 밸런싱 등에 기초하여 멀티-코어 프로세서들의 하나 이상의 코어들에 대한 실행을 위해 OS(120)에 의해 할당된다. 일부 실시예들에 따르면, 프로세서(102)는 도 1에 메모리 캐시(107)에 의해 표현되는, 예를 들어, 레벨 1 캐시, 레벨 2 캐시 및 레벨 3 개시를 포함하는 캐시 계층을 포함한다. 프로세서(102)는 또한 레지스터(110) 세트, SLO 스케줄러(111) 및 메모리 컨트롤러(112)를 포함한다.
메모리 컨트롤러(112)는 메모리 버스와 같은 인터커넥트(113)를 통해 프로세서(102)의 다양한 컴포넌트들의 동작을 다른 컴포넌트들과 결합하고 조정한다. 메모리 컨트롤러(112)는 제1 어플리케이션(121)과 같은 하나 이상의 어플리케이션들의 하나 이상의 프로세스들의 동작을 가능하게 하기 위해 SLO 스케줄러(111)와 통신하고 그 동작을 조정한다. 스레드 형태의 프로세스들은 프로세서(102)에서 활성화된다. 일부 실시예들에 따르면, SLO 스케줄러(111) 및 메모리 컨트롤러(112)는 프로세스 실행 시 프로세서(102)의 코어들(105, 106) 및 다른 컴포넌트들의 단계들 및 실행들을 카운팅하는 그들 자신의 메모리 레지스터를 갖는다. 다른 실시예들에서, SLO 스케줄러(111) 및 메모리 컨트롤러(112)는 프로세서(102)의 그들 각각의 동작들(코어들(105, 106) 및 다른 컴포넌트들의 단계들 및 실행들)에 대해 프로세서(102)에 지정된 특정 메모리 레지스터들(110)에 액세스한다. 하나 이상의 프로세스 스케줄 파라미터들(122)은 LS 어플리케이션으로 지정된 어플리케이션 또는 LS 프로세스로 지정된 어플리케이션의 임의의 프로세스에 LR의 LR 하한(125)을 제공한다. 일부 실시예들에 따르면, LS 지정은 어플리케이션(121)이 OS(120)에서 런칭될 때 어플리케이션(121)에 대해 생성된 프로세스의 프로세스 ID(124)에 기초하여 제공된다. 프로세스 스케줄 파라미터들(122)은 SLO 스케줄러(111)에 의해 사용하기 위해 레지스터들(110)에 제공된다.
일부 실시예들에 따르면, 프로세싱 시스템(100)은 적어도 하나의 LS 프로세스에 대한 적어도 하나의 LR 하한(125), 시스템 메모리 레이턴시 임계값(126)으로 구성되며, 적어도 하나의 프로세스에 대해 대응되는 리소스에 대한 하나 이상의 프로세스 제한들(127) 또는 최대값을 포함할 수 있다 LR 하한(125)은 개별 프로세스 바이어스에 제공될 수 있거나, 또는 LR 하한(125)은 LR 하한(125)에 관여하도록 지정된 일부 또는 모든 LS 프로세스에 대해 공유될 수 있다. 이러한 요소들은 레지스터들(110) 또는 SLO 스케줄러(111)에 포함된다. 프로세스 제한들(127)은 LS 제한(이는 LS 프로세스와 연관된 LR 제한임) 또는 NLS 제한(이는 NLS 프로세스와 연관된 LR 제한임)이다. 다른 실시예들에서에 따르면, SLO 스케줄러(111)는 SLO 스케줄러(111)에 관여하는 각 LS 프로세스에 의해 해당 LR의 사용량에 대한 하한 및/또는 각 LS나 NLS에 의해 해당 LR의 사용량에 대한 제한 둘 다를 포함하는 각 프로세스에 대한 LR의 할당이 제공된다. 일부 실시예들에 따르며, 프로세스에 대한 설정값이 제공될 수 있다. 본원에 사용된 바와 같이 그리고 일부 실시예들에 따르면, 설정점은 일부 다른 시스템 속성을 제어해 보기 위해 동적으로 설정되는 리소스의 현재 할당이다. 예를 들어, 현재 설정점은 특정 SLO(예를 들어, 시스템 레이턴시, LS 프로세스에 이용할 수 있는 대역폭)를 충족시키기 위한 노력으로 SLO 스케줄러에 의해 프로세스가 선택되었던 해당 특정 프로세스에 대해 메모리 대역폭 사용량에 대한 목표 값에 대응되는 프로세스에 대해 제공된다. 설정점은 이에 의해 특정 제어 사이클에서 소모하기 위한 프로세스에 대한 목표량이다.
SLO 스케줄러(111)는 메모리 컨트롤러(112)와 상호작용하여 프로세서(102)에 대한 제어 방식을 생성하고 구현한다. 레지스터들(110)은 LS 프로세스들 및 NLS 프로세스들에 의한 LR의 현재 사용량과 같은 하나 이상의 현재 사용 값들(128), 하나 이상의 프로세스 설정값들(129) 및 하나 이상의 관계들(130)에 대한 레지스터들을 포함한다. 하나 이상의 관계들(130)은 다양한 형태들을 취한다. 일부 실시예들에서, 관계들(130)은 하나의 변수와 다른 변수 사이의 포인터 또는 적접 대응과 같이 단순하다. 다른 실시예들에서, 관계들은 복잡하며, 컴퓨팅 시스템에서 적어도 하나의 LS 프로세스, 적어도 하나의 NLR 프로세스 및 적어도 하나의 제한된 리소스 사이의 선형 프로세스 제어 모델 및 비선형 프로세스 제어 모델의 형태를 취한다. 예로서, LR은 메모리 대역폭 사용량이다. 일부 실시예들에 따르면, 하나 이상의 관계들(130)은 시스템 레이턴시 임계값(126), 하나 이상의 (LS) 하한들(125) 및 하나 이상의 (NLS) 프로세스 제한들(127) 사이의 관계를 포함한다.
프로세서(102)가 동작중에 있을 때, SLO 스케줄러(111)는 각 LS 지정 프로세스가 각 프로세싱 시간 단위 또는 제어 사이클에 대해 최소한 LR의 가용량의 하한(125)이 제공되는 것을 보장하도록 동작한다. 컴퓨팅 디바이스(101)에서, 인터커넥트(113)는 시스템 메모리(103) 및 적어도 하나의 버스/인터페이스 서브 컨트롤러(114)와 통신한다. 컴퓨팅 디바이스(101)가 동작중에 있을 때, 버스/인터페이스 서브 컨트롤러(114)는 네트워크 컨트롤러(118) 및 필요시 다양한 컴포넌트들과 상호작용하기 위한 하나 이상의 인터페이스 버스들(115)과 통신한다.
인터페이스 버스(115)는 솔리드-스테이트 드라이브(SSD), 통상의 하드 드라이브(HD) 또는 광 매체 장치와 같은 다른 영구 저장 장치와 같은 하나 이상의 저장 장치들(116)과 통신한다. 시작 또는 부팅 프로세스 동안, OS(120)가 저장 장치(116)로부터 시스템 메모리(103)로 로딩된다. 일부 실시예들에 따르면, SLO 스케줄러(111)의 시작 상태와 초기 구성이 OS(120)의 부팅 로더에 의해 제공된다. 이후, 각 LS 어플리케이션이 OS(120)에 의해 런칭될 때, SLO 스케줄러(111)는 LS 어플리케이션에 최소한 LR의 하한(125)을 제공하도록 동작된다.
인터페이스 버스(115)는 또한 그래픽 처리 유닛(GPU)(104)과 같은 하나 이상의 출력 장치들(117)과 통신한다. 일부 실시예들에 따르면, GPU(104)는 그 자신의 메모리 레지스터들, 캐시들, SLO스케줄러 및 메모리 컨트롤러를 가지며, GPU(104)는 GPU(104)에서 동작하는 프로세스들 및 스레드들을 제어하기 위해 자신의 SLO 스케줄러로 동작하도록 프로세서(102)와 유사한 방식으로 구성된다. 명시적으로 달리 지시되지 않는 한, GPU(104) 및 그 자신의 SLO 스케줄러는 프로세스(102) 및 그 SLO 스케줄러(111)와 유사한 방식으로 구성된다. 네트워크 컨트롤러(118)는 컴퓨팅 디바이스(101)와 네트워크(예시되지 않음)에 걸쳐 컴퓨팅 디바이스(101)에 결합된 장치들과 같은 다른 장치(119) 사이의 통신 및 정보 처리 상호 운용(interoperability)을 용이하게 한다.
도 2는 일부 실시예들에 따른 SLO 스케줄러를 갖는 시스템을 운용하기 위한 방법을 예시하는 흐름도이다. 방법(200)은 (1) LR을 관리하고, 특히 LS 프로세스들이 NLS 프로세스들에 비해 상대적으로 아이들 상태에 있을 경우 LR의 전체 소모량을 증가시키고, (2) 글로벌 목표가 LR의 기능에 따라 달라지거나 그 기능일 경우 시스템의 모든 프로세스들에 대한 글로벌 목표를 충족시키도록, 도 1의 장치(101)와 같은 시스템 또는 장치에서 동작한다. 예로서, LR은 메모리 대역폭 사용량이며, 글로벌 목표는 모든 프로세스들에 의한 메모리 레이턴시이다.
블록(201)에서, 장치의 프로세서에서 동작하는 모든 프로세스들에 의한 LR의 사용량이 측정된다. 블록(202)에서, 모든 프로세스들에 대한 전체 목표가 측정된다. 블록(203)에서, 모든 LS 프로세스들이 그들 각자의 LR 하한 할당들을 소모하고 있는지가 결정된다. 예를 들어, 각 LS 프로세스에 대한 계수 값(counted value)은 정적 지정 LR 하한 값(static designated LR floor value)과 비교된다. 모든 LS 프로세스들이 현재 그들 각자의 LR 하한들을 소모하고 있는 경우, 블록(204)에서, LS 프로세스들 및/또는 NLS 프로세스들에 적용되고 있는 임의의 스로틀링(throttling)은 LS 프로세스들 및/또는 NLS 프로세스들이 후속 제어 사이클에서 더 많은 LR을 소모할 수 있도록 감소된다. 블록(205)에서, 글로벌 리소스 사용량이 글로벌 계약 목표를 충족하고 있는지가 결정된다. 일부 실시예들에서, 블록(205)에서의 이 결정은 특정 글로벌 리소스에 대해 계수 또는 누적 값을 정적 지정 계약 목표 값과 비교하는 것을 포함한다. 예로서, 모든 프로세스들에 대한 메모리 레이턴시(ML)이 최대 계약(ML) 미만인 경우, 특정 제어 사이클에서 계약(ML) 위반이 명백하지 않다. LS 프로세스들이 그들 각자의 LR 하한들 미만을 소모하고 있는 경우, LS 프로세스들이 LR을 적극적으로 소모하지 않고 LS 프로세스들이 메모리 대역폭을 제한하지 않기 때문에 시스템은 안정적이며, 방법(200)은 글로벌 목표를 계속 평가한다.
블록(206)에서, 모든 NLS 프로세스들이 각자의 최대 스로틀링 값에 종속되는지가 결정된다. 그렇지 않은 경우, SLO 스케줄러는 여전히 NLS 프로세스들에서 어느 정도 제어 자유가 있으므로 블록(207)에서 하나 이상의 NLS 프로세스들에 대한 스로틀링을 증가시키는 것과 같은 추가 조취를 취한다. 모든 NLS 프로세스들이 블록(206)에서 최대 스로틀링된 경우, 블록(208)에서 SLO 스케줄러는 그 LR 하한보다 임계값 이상을 소모하는 임의의 LS 프로세스가 있는지를 결정한다. 그런 경우, 블록(209)에서, SLO 스케줄러는 그들 각자의 보장된 하한들보다 상당한 양의 LR을 소모하고 있는 이러한 LS 프로세스들 중 임의의 하나 이상에 대한 스로틀링을 증가시킨다. 방법(200)은 프로세스들 및 NLS 프로세스들을 스로틀링하여 글로벌 계약 목표를 충족시키고, LS 프로세스들이 최소한 LR의 그 하한들을 소모하고 있음을 보장하고, NLS 프로세스들이 남아 있는 LR의 많은 부분을 소모할 수 있도록 하는 시스템의 일 실시예이다.
도 3은 일부 실시예들에 따른 SLO 스케줄러를 갖는 시스템을 운용하기 위한 방법을 예시하는 흐름도이다. 도 3에서, 방법(300)은 블록(301)에서 모든 프로세스들에 의한 메모리 대역폭 사용(MBU)을 측정하는 단계를 포함한다. 블록(302)에서, 모든 프로세스들에 대해 메모리 레이턴시(ML)가 측정된다. 블록(303)에서, 모든 LS 프로세스들이 그들 각자의 MBU 하한들을 소모하고 있는지가 결정된다. 그런 경우, 이는 LS 프로세스들 중 하나 이상이 상당한 양의 메모리 대역폭을 사용하고 있음을 나타낸다. 블록(304)에서, 임의의 LS 프로세스들이 그 MBU 하한보다 상당한 양을 소모하고 있는지가 결정된다. 본원에 사용된 상당한 양은 다양한 의미들 중 하나를 말한다. 예를 들어, 일부 실시예들에서, 상당한 양은 현재 값이 각자의 MBU 하한을 넘어 임계값 이상인지를 평가함으로써 결정된다. 그렇지 않은 경우(블록(304)에서), LS 프로세스들이 메모리 대역폭이 제한되지 않기 때문에 제어 사이클에서 추가 조치가 수행되지 않는다. 임의의 LS 프로세스들이 블록(304)에서 그 MBU 하한보다 상당한 양을 소모하고 있는 경우, 블록(308)에서 SLO 스케줄러는 당업자에게 알려진 바와 같은 특정 LS 프로세스들 및/또는 NLS 프로세스들에 대한 스로틀링을 감소시킨다. 예를 들어, 그 MBU 하한보다 상당한 양을 소모하는 LS 프로세스들 중 하나 이상은 후속 제어 사이클에서 메모리 대역폭 사용량을 공평하게 공유하기 위해 그 MBU 하한 쪽으로 다시 스로틀링된다.
블록(303)에서, 그들 각자의 MBU 하한들을 소모하고 있는 LS 프로세스들이 없는 경우(블록(303_을 떠나는 "아니오(no)"), LS 프로세스들은 MBU에 대해 충분히 활성화되지 않는다. 블록(305)에서, 시스템은 임의의 LS 프로세스가 스로틀링되는지를 결정한다. 그런 경우, 308에서의 시스템은 스로틀링된 LDS 프로세스들에 대한 스로틀링을 줄이거나 제거한다. 블록(306)에서, 시스템은 시스템 ML이 계약 레이턴시 이하인지를 결정한다. 시스템 ML은 글로벌 목표의 예이다. 그런 경우, 블록(307)에서, 시스템은 시스템 ML이 실질적으로 계약 레이턴시 미만인지를 결정한다. 그런 경우, 시스템은 소모를 위해 이용 가능한 ML을 가지며, 블록(308)에서, 시스템은 낮은 시스템 ML을 이용하기 위해 LS 프로세스들 및/또는 NLS 프로세스들에 대한 스로틀링을 줄인다. 시스템 ML이 계약 레이턴시 이하가 아닌 경우, 블록(309)에서 시작하여 시스템은 추가 단계들을 수행한다.
블록(309)에서, 시스템은 모든 NLS 프로세스가 최대 스로틀 값(최대한으로 스로틀링됨)에 있는지를 결정한다. 그렇지 않을 경우, 블록(311)에서, SLO 스케줄러는 이미 최대한으로 스로틀링되지 않는 하나 이상의 NLS 프로세스들에 대한 스로틀링을 증가시킨다. 스로틀링에 이용 가능한 NLS 프로세스가 없는 경우, 블록(310)에서, 시스템은 임의의 LS 프로세스가 그 MBU 하한보다 상당히 소모되고 있는지를 결정한다. 그런 경우, 임의의 이러한 LS 프로세스는 스로틀링하기 위한 좋은 후보이다. 블록(312)에서, SLO 스케줄러는 그 각자의 MBU 하한 이상으로 소모하고 있는 하나 이상의 LS 프로세스들에 대한 스로틀링을 증가시킨다. 블록(310)에서의 모든 LS 프로세스들이 그 MBU 이하인 경우, SLO 스케줄러는 LS 프로세스들이 그들 각자의 MBU 하한들 이하를 소모하도록 구성되기 때문에 이용 가능한 추가 스로틀링이 없다.
도 4는 일부 실시예들에 따른 SLO 스케줄러를 갖는 시스템을 운용하기 위한 방법을 예시하는 흐름도이다. 방법(400)은 SLO 스케줄러에 의해, 프로세서의 각 시간 단위 또는 제어 사이클 동안 제한 리소스(LR)를 관리하기 위한 시스템 또는 도 1의 장치(101)와 같은 장치에서 동작한다. 특정 예로서, 도 4에서, LR은 메모리 대역폭 사용량(MBU)이다. 일부 실시예들에서, 제어 사이클은 특정 횟수의 프로그램 카운터 사이클 또는 CPU 상에서 실행되는 인스트럭션들의 특정 횟수 명령 실행 단계, 또는 제어 사이클에 할당된 특정 시간의 양이다. 제어 사이클은 NLS-지정 프로세스들에 NSF 스로틀링의 적용에 의한 제어 목적을 충족시키기 위해 요구될 때 하나 이상의 프로세서들, 및 단일 프로세스의 하나 또는 복수의 스레드들에 적용되는 스로틀링을 포함한다. 방법(400)은 첫째 LR의 사용을 관리하고, 둘째 프로세서에서 동작하는 LS 및 NLS 프로세스들과 연관된 레이턴시를 관리하도록 동작한다. 방법(400)은 현재 제어 사이클 또는 추후의 제어 사이클에서의 사용을 제어한다. 단일 LR은 도 4와 관련하여 참조되지만, 당업자들이 이해하는 바와 같이, 복수의 LR들은 SLO 스케줄러에 의해 관리 가능하다.
블록(401)에서, 도 1의 SLO 스케줄러(111)와 같은 SLO 스케줄러는 각각의 NLS 프로세스들에 의한 LR의 현재 사용을 결정한다. 도 4의 블록(402)에서, SLO 스케줄러는 각각의 LS 프로세스들에 의한 LR의 현재 사용을 결정한다. 일부 실시예들에서, 특정 프로세스에 의한 현재 사용은 프로세서의 모든 코어들에 걸쳐 동작하는 하나 이상의 특정 프로세스들의 스레드들에 의한 LR의 총 사용이다. 다른 실시예들에서, LR의 사용은 특정 프로세스의 단일 코어를 위한 것이며, LR은 LS 프로세스가 단일 코어에서 동작하는 단일 코어와 관련된다. 일부 실시예들에서, 현재 사용을 결정하는 단계는 값이 도 1의 프로세서(102)에서와 같은 프로세서에서 동작하는 프로세스들에 의한 LR의 현재 사용과 관련되는 시간프레임(제어 사이클)에 걸쳐 카운팅되었던 레지스터의 값에 액세스하는 단계를 포함한다. 다른 실시예들에서, 현재 사용을 결정하는 단계는 복수의 클록 사이클들, 프로그램 카운터 사이클들 또는 제어 사이클들과 같은 시간 경과에 따른 값을 측정하는 단계를 포함한다. 일부 실시예들에 따르면, 특정 시간 사이클 동안 현재 사용은 도 1의 프로세서(102)의 레지스터들(110) 중 하나와 같은 SLO 스케줄러(111)에 이용 가능한 레지스터에서 이용 가능하다.
도 4의 블록(403)에서, SLO 스케줄러는 각 LS 프로세스에 의한 현재 사용이 적어도 그 LR 하한을 시스템에 요청하고, 실제로는 적어도 그 하한을 사용하지 않는지를 결정한다. 블록(403)에서 결정하지 못한 LS 프로세스가 없는 경우, 블록들(404 및 405)에서 NLS 프로세스들을 포함하는 추가 단계들이 수행된다. 블록(404)에서, SLO 스케줄러는 NLS 프로세스들에 대한 NLS 할당들을 결정한다. 블록(405)에서, SLO 스케줄러는 각각의 NLS 프로세스들에 NLS 할당들을 적용한다. 한 시나리오에 따르면, 한 할당 세트는 각각의 NLS 프로세스들에 대한 NLS-특정 제한들을 제거하는 것을 포함한다. 다른 시나리오에서, 하기에 더 설명된 바와 같이, NLS 할당들은 LS 프로세스들, LR의 현재 소모 및 요구, 및 프로세서의 현재 상태와 관련된 요인들을 포함한 기타 요인들에 기초하여 결정된다.
블록(406)에서, 하나 이상의 LS 프로세스들이 적어도 LR의 그들 각자의 LR 하한들을 요청할 때, SLO 스케줄러는 전체 NLS 스로틀링을 결정한다. NLS 스로틀링은 NLS 프로세스들에 걸쳐 공유되어야 하는 LR의 전체 값(메모리 대역폭 사용량)을 포함한다. 블록(407)에서, 전체 NLS 스로틀링을 사용하여, SLO 스케줄러는 NLS 프로세스들에 대한 NLS 스로틀링 방식을 결정한다. 일부 실시예들에 따르면, NLS 스로틀링 방식은 각각의 NLS 프로세스들에 의한 LR의 사용에 대한 제한을 설정하는 것을 포함한다. NLS 스로틀링 방식은 각 제어 사이클 또는 복수의 제어 사이클들에 걸쳐 카운팅되는 사용 카운트 또는 사용 값인 NLS 스로틀링 값을 포함한다. 일부 실시예들에 따르면, 스로틀링 방식은 각 NLS 프로세스가 프로세서에서 한번에 비행할 수 있도록 하는 트랜잭션 수를 제한하는 것을 포함한다. 다른 실시예들에서에 따르면, 특정 NLS 스로틀링 방식은 현재 동작하는 LS 프로세스들, 현재 동작하는 NLS 프로세스들, LR의 현재 소모 및 요구, 및 프로세서의 현재 상태와 관련된 하나 이상의 요인들과 관련된다. 일반적으로, NLS 스로틀링 방식은, 처리량(식간 단위당 완료된 총 작업량)을 최대화하는 단계, 응답 시간(작업으로부터 프로세스, 작업 또는 스레드가 리소스에 대한 실행을 시작할 때까지 인에이블되는 시간)을 최소화하는 단계, 레이턴시(인에이블되는 작업과 그 이후 완료 사이의 시간)를 최소화하는 단계, 및 공정성(각 프로세스에 동일한 양의 프로세서 시간 또는 각 프로세스의 우선 순위 및 작업량에 따라 일반적으로 적절한 다른 상대적 시간의 양을 제공)을 최대화하는 단계 중 하나 이상을 포함한다. 실제로, 이러한 목적은 종종 충돌(예를 들어, 처리량 대 레이턴시)되므로, SLO 스케줄러는 적절한 절충안을 구현한다. 블록(408)에서, SLO 스케줄러는 결정된 NLS 스로틀링 방식을 적용한다. 일부 실시예들에서, NLS 스로틀링 방식의 적용은 현재 제어 시간 사이클에 있거나 근접한(다음) 제어 시간 사이클에 있다.
블록(409)에서, SLO 스케줄러는 각 LS 프로세스 요청이 그 LR 하한 이상에서 LR을 소모하고 있는지를 결정한다. 그런 경우, SLO 스케줄러는 적어도 하나의 LS 프로세스가 적어도 그 LR 하한을 요청하고 있음을 고려하여 블록들(404 및 405)에서 앞서 설명된 기능들을 수행한다. 그렇지 않은 경우, 블록(410)에서, SLO 스케줄러는 프로세서에서 동작하는 LS 프로세스들을 적용할 전체 LS 스로틀링의 양을 결정한다. 블록(411)에서, SLO 스케줄은 LS 스로틀링 방식을 결정한다. 일부 실시예들에 따르면, LS 스로틀링 방식은 각각의 LS 프로세스들에 의해 LR의 사용에 대한 제한을 설정하는 것을 포함한다. 하나의 예시적인 방식에 따르면, 블록(411)에서, LS 스로틀링 방식은 현재 동작하는 LS 프로세스들에 걸친 메모리 대역폭 사용량의 소모를 밸런싱한다. 다른 예시적인 방식에 따르면, LS 스로틀링 방식은 LS 프로세스들 각각에 의한 소모를 SLO 스케줄러의 적어도 하나의 제어 사이클에 대해 동일한 백분율로 낮춘다. 블록(412)에서, SLO 스케줄러는 현재 동작하는 LS 프로세스들에 LS 스로틀링 방식을 적용한다.
블록(413)에서, LR의 소모를 제어하기 위해 스로틀링 방식을 적용한 후, SLO 스케줄러는 모든 LS 프로세스들이 제2 제어 변수로서 각자의 시간 레이턴시 목표들 내에서 동작되고 있는지를 결정한다. 그렇지 않은 경우, 블록(414)에서, SLO 스케줄러는 NLS 프로세스들에 대한 스로틀링을 구현한다. 예를 들어, 블록(414)에서, NLS 프로세스들만이 레이턴시 스로틀링에 의해 영향을 받는다. 블록(414)에서, LS 프로세스들은 SLO 스케줄러에서 1, 2, 3 또는 기타 지정된 수의 제어 사이클들 내에서 시스템에 대한 레이턴시 목표를 달성할 수 있도록 LS 프로세스들에 대한 기회를 제공하기 위해 스로틀링되지 않는다. 대안으로, 블록(415)에서, 모든 LS 프로세스들이 시스템에서 동작하는 동안 레이턴시 목표 또는 그들 각자의 레이턴시 목표들 내에서 동작하지 않는 경우, SLO 스케줄러는 모든 프로세스들에 대한 레이턴시 스로틀링을 구현한다. 예를 들어, 블록(415)에서, 프로세서에서 동작하는 모든 프로세스들은 프로세서에서 동작하는 하나 이상의 LS 프로세스들이 레이턴시 목표 또는 그들 각자의 레이턴시 목표들 내에서 동작하지 않을 때 동일한 감소를 공유한다. 적어도 하나의 실시예에 따르면, 각 LS 프로세스 및 각 NLS 프로세스를 포함한 각 프로세스는 그 자신의 레이턴시 목표를 가질 수 있다. 다른 실시예들에 따르면, 프로세서와 그 NLS 프로세스들 및 LS 프로세스들은 전체 프로세서 레이턴시 목표가 제공된다. 다른 실시예들에 따르면, 하나 이상의 LS 프로세스들만이 레이턴시 목표들을 가지며, 프로세서에서 동작하는 다른 프로세스들은 자체적인 개별 프로세스 목표 또는 시스템 전체 프로세스 목표가 제공되지 않는다.
도 5는 일부 실시예들에 따른 시스템을 운용하기 위한 방법을 예시하는 흐름도이다. 방법(500)은 LR(예: 메모리 대역폭 사용량)을 관리하기 위해 도 1의 장치(101)와 같은 시스템 또는 장치에서 동작한다. 방법(500)은 첫째 프로세서에서 동작하는 LS 프로세스들 및 NLS 프로세스들과 연관된 레이턴시를 관리하도록 동작하고, 둘째 LR의 사용을 관리하도록 동작한다.
블록(501)에서, SLO 스케줄러는 프로세스에서 동작하는 모든 프로세스들에 의한 현재 레이턴시를 결정한다. 블록(502)에서, SLO 스케줄러는 임의의 LS 프로세스가 레이턴시 제한을 벗어나는지를 결정한다. 일부 실시예들에 따르면, 레이턴시 제한은 모든 프로세스들에 대해 동일한 레이턴시 제한이다. 대안으로, 다른 실시예들에 따르면, 각 LS 프로세스는 자신의 개별 레이턴시 제한을 갖거나 모든 NLS 프로세스들에 대한 개별 레이턴시 제한이 있는 모든 LS 프로세스들에 대한 레이턴시 제한을 공유한다. 임의의 LS 프로세스가 레이턴시 제한을 벗어나면, 블록들(520, 519 및 518)에서, 추가 프로세싱이 발생한다. 블록(520)에서, SLO 스케줄러는 레이턴시와 관련되는 하나 이상의 NLS 프로세스 리소스들을 식별한다. 블록(519)에서, SLO 스케줄러는 NLS 프로세스들에 대해 식별된 레이턴시 리소스들의 하나 이상의 NLS 할당들을 결정한다. 블록(518)에서, SLO 스케줄러는 이전에 결정된 NLS 할당을 NLS 프로세스들에 적용한다. 블록(518) 이후, 후속 SLO 제어 사이클들이 수행된다.
블록(503)에서 모든 LS 프로세스들이 레이턴시 제한 내에 있으면(LS 프로세스가 레이턴시 제한을 벗어나지 않으면), 블록(503)에서, SLO 스케줄러는 각 NLS 프로세스가 레이턴시 제한 내에 있는지를 결정한다. 그런 경우, 추가 프로세싱이 발생한다. 그렇지 않은 경우, 블록(504)에서, SLO 스케줄러는 각 NLS 프로세스가 프로세서 및 시스템에 허용 가능한 레이턴시의 상한 범위 내에 있는지를 결정한다. 일부 실시예들에 따르면, 프로세서에서 동작하는 각각 각자의 NLS 프로세스에 대한 개별 NLS 상한이 존재한다. 각 NLS 프로세스가 허용 가능한 레이턴시의 상위 범위 내에 있으면, 추가 프로세싱이 발생한다. 그렇지 않은 경우, 블록(505)에서, SLO 스케줄러는 각 NLS 프로세스가 허용 가능한 레이턴시의 상한 범위를 벗어난 것으로 플래그한다. 블록(505)에서, 후속 프로세싱은 프로세서에서 동작하는 프로세스들에 의한 LR 사용을 포함한다.
블록(506)에서, SLO 스케줄러는 모든 프로세스들에 의한 현재 LR 사용을 결정한다. 블록(507)에서, SLO 스케줄러는 LS 프로세스들 각각에 의한 현재 LR 사용을 결정하는 것과 같이 LS 프로세스들에 의한 현재 LR 사용을 결정한다. 도 5를 참조하면, 일부 실시예들에서, 특정 프로세스에 의한 현재 사용은 프로세서의 모든 코어들에 걸쳐 동작하는 특정 프로세스의 스레드들에 의한 LR의 총 사용이다. 다른 실시예들에서, 사용은 단일 코어용이고, LR은 단일 코어용이다. 일부 실시예들에서, 현재 사용을 결정하는 단계는 값이 도 1의 프로세서(102)에서와 같은 프로세서에서 동작하는 프로세스들에 의한 LR의 현재 사용과 관련되는 시간프레임 또는 제어 사이클에 걸쳐 카운팅되었던 레지스터의 값에 액세스하는 단계를 포함한다. 다른 실시예들에서, 프로세스에 대한 현재 사용을 결정하는 단계는 특정 프로세스에 대해 시간이 지남에 따른 값을 측정하는 단계를 포함한다.
블록(508)에서, SLO 스케줄러는 임의의 LS 프로세스에 의한 현재 사용이 적어도 LR 하한을 시스템에 요청되는지를 결정한다. 프로세서에서 동작하는 LS 프로세스가 LR 하한을 요청하지 않으면, NLS 프로세스들을 포함하는 추가 단계들이 수행된다. 블록(516)에서, SLO 스케줄러는 NLS 프로세스들에 대한 NLS 할당들을 결정한다. 블록(517)에서, SLO 스케줄러는 각각의 NLS 프로세스들에 NLS 할당들을 적용한다. 한 시나리오에 따르면, 한 할당 세트는 각각의 NLS 프로세스들에 대한 NLS-특정 제한들을 제거하는 것을 포함한다. 다른 시나리오에서, 하기에 더 설명된 바와 같이, NLS 할당들은 LS 프로세스들, LR의 현재 소모 및 요구, 및 프로세서의 현재 상태와 관련된 요인들을 포함한 기타 요인들에 기초하여 결정된다. 블록(517) 이후, SLO 스케줄러에 의한 추가 제어 사이클들이 수행된다.
블록(508)에서, SLO 스케줄러가 하나 이상의 LS 프로세스가 적어도 LR 하한을 요청하고 있다고 결정할 경우, 블록(509)에서, SLO 스케줄러는 전체 NLS 스로틀링을 결정한다. NLS 스로틀링은 NLS 프로세스들에 걸쳐 공유되어야 하는 전체 값을 포함한다. 블록(510)에서, 전체 NLS 스로틀링을 사용하여, SLO 스케줄러는 NLS 스로틀링 방식을 결정한다. 특정 NLS 스로틀링 방식은 현재 동작하는 LS 프로세스들, 현재 동작하는 NLS 프로세스들, LR의 현재 소모 및 요구, 및 프로세서의 현재 상태와 관련된 하나 이상의 요인들과 관련된다. 블록(511)에서, SLO 스케줄러는 결정된 NLS 스로틀링 방식을 적용한다.
블록(512)에서, SLO 스케줄러는 각 LS 프로세스 요청이 그 LR 하한 이상에서 LR을 소모하고 있는지를 결정한다. 그런 경우, SLO 스케줄러는 블록들 (516 및 517)에서 앞서 설명된 기능들을 수행한다. 그렇지 않은 경우, 블록(513)에서, SLO 스케줄러는 프로세서에서 동작하는 LS 프로세스들을 적용할 전체 LS 스로틀링의 양을 결정한다. 블록(514)에서, SLO 스케줄은 LS 스로틀링 방식을 결정한다. 한 예시적인 LS 스로틀링 방식에 따르면, 블록(514)에서, LR의 소모는 하나 이상의 LS 프로세스들이 적어도 LR에 대한 LR 하한을 소모하지 않는 대신 현재 동작하는 LS 프로세스들에 걸쳐 균형을 이룬다. 다른 예시적인 방식에 따르면, LS 스로틀링 방식은 SLO 스케줄러의 적어도 하나의 제어 사이클에 대해 LS 프로세스의 모든 소모를 동일한 백분율로 낮춘다. 블록(515)에서, SLO 스케줄러는 현재 동작하는 LS 프로세스들에 LS 스로틀링 방식을 적용한다.
도 6은 일부 실시예들에 따른 시스템을 운용하기 위한 방법을 예시하는 흐름도이다. 방법(600)은 제1 LR 및 제2 LR의 제어를 포함한다. 일부 실시예들에 따르면, 제어 방식은 제1 LR 대신 프로세스 레이턴시를 프로세스-특정 제약 또는 목표로 제어하고, 시스템 또는 장치의 최대 용량을 제 2 LR로 제어한다. 예를 들어, 방법(600)의 대상이 되는 시스템은 도 1의 프로세싱 시스템(100)이다. 다른 실시예들에 따르면, 제1 LR은 도 1의 프로세싱 시스템(100)과 같은 시스템 또는 장치의 제1 최대 용량이고, 제2 LR은 도 1의 프로세싱 시스템(100)과 같은 시스템 또는 장치의 제2 최대 용량이다.
블록(601)에서, SLO 스케줄러는 시스템 또는 장치의 프로세서에서 동작하는 NLS 프로세스들에 의한 제1 LR의 현재 사용을 결정한다. 블록(602)에서, SLO 스케줄러는 시스템 또는 장치의 프로세서에서 동작하는 LS 프로세스들에 의한 제1 LR의 현재 사용을 결정한다. 블록(603)에서, SLO 스케줄러는 임의의 LS 프로세스가 적어도 제1 LR의 LR 하한을 요청하는지를 결정한다. 그렇지 않은 경우, 블록(604)에서, 적절한 제어 방식이 SLO 스케줄러에 의해 적용된다. 그런 경우, 블록(605)에서, SLO 스케줄러는 NLS 프로세스들 및 LS 프로세스들에 의한 제1 LR의 현재 사용에 기초하여 프로세스들에 대한 제1 제어 방식을 결정한다. 블록(606)에 계속해서, SLO 스케줄러는 시스템 또는 장치의 프로세서에서 동작하는 NLS 프로세스들에 의한 제2 LR의 현재 사용을 결정한다. 블록(607)에서, SLO 스케줄러는 시스템 또는 장치의 프로세서에서 동작하는 LS 프로세스들에 의한 제2 LR의 현재 사용을 결정한다. 블록(608)에서, SLO 스케줄러는 임의의 LS 프로세스가 적어도 제2 LR의 LR 하한을 요청하는지를 결정한다. 그렇지 않은 경우, 블록(604)에서, 적절한 제어 방식이 SLO 스케줄러에 의해 적용된다. 그런 경우, 블록(609)에서, SLO 스케줄러는 NLS 프로세스들 및 LS 프로세스들에 의한 제2 LR의 현재 사용에 기초하여 프로세스들에 대한 제2 제어 방식을 결정한다. 블록(610)에서, SLO 스케줄러는 프로세서에서 동작하는 프로세스들에 대한 제1 및 제2 하한 제어 방식들을 결합한다. SLO 스케줄러는 LS 프로세스들 및 NLS 프로세스들이 프로세서에서 동작하는 한 도 6의 동작 시퀀스를 동작시킨다.
도 7 내지 11은 일부 실시예들에 따른 다양한 시간들에서의 시스템의 레이턴시 감지 하한들 및 비-레이턴시 감지 설정값들을 예시하는 표들이다. 예를 들어, 시스템은 도 1의 프로세싱 시스템(100)이다. 일부 실시예들에서, 도 7 내지 11의 표들 중 하나 또는 그와 유사한 메모리 구조들은 도 1의 프로세서 다이(123)과 같은 프로세스 다이의 구성 가능한 레지스터(110) 세트로 직접 생성된다. 레지스터들의 값들은 프로세스 변수들이 결정되고 업데이트됨에 따라 시간이 지남에 따라 변경된다. 표들이 도 7 내지 11에 설명되고 예시되어 있지만, 당업자에 의해 쉽게 이해될 수 있는 본원에 설명된 기술들과 함께 다른 유형의 다른 유형의 컴퓨팅 및 메모리 구조들이 사용 가능하다. 예를 들어, 다른 컴퓨팅 및 메모리 구조들은 하나 이상의 어레이들, 도 1의 레지스터들(110)과 같은 하나 이상의 레지스터들, 및 도 1의 캐시들(107)에서 동작하는 하나 이상의 버퍼들을 포함한다.
도 7 내지 11의 경우, LS 프로세스들에 대한 임의의 수의 리소스들 및 임의의 수의 관련 SLO들이 추적되고 제어 방식에 병합되며 표들에 도시되고, SLO 스케줄러에 의해 구현되며, 단순화하기 위해, 제1 리소스(예: 메모리 대역폭 사용량)의 활동과 소모 및 프로세스 레이턴시만이 도 1 내지 11의 표들을 참조하여 설명된다. 일부 실시예들에 따르면, 프로세스 레이턴시는 전체 현재 시스템 프로세스 레이턴시, LS 프로세스들의 LS 프로세스 레이턴시, 또는 NLS 프로세스들의 NLS 프로세스 레이턴시이다. 일부 실시예들에 따르면, LS 프로세스 레이턴시는 SLO인 반면, NLS 프로세스 레이턴시는 이 제어 변수를 프로세스 레이턴시 임계값 내에 가져오기 위한 제어 방식을 필요로 하거나 필요로 하지 않는 대상이다.
또한, 도 7 내지 11에 도시된 활동, 값들 및 변수들은 도 7 내지 11에 걸쳐 하나의 표에서 다른 표로 이동하는 시간에 따라 변하는 값 및 변수 세트를 갖는 하나의 테이블을 참조하여 하기에 간략하게 설명되며, 여기서 도면들 각각은 능동 프로세싱 시스템에 대한 타임라인에 따르는 하나의 시점 또는 스냅샷을 나타낸다. 도 7 내지 11의 값들 및 변수들 사이의 관계들 도 12에 예시된 그래프와 관련하여 쉽게 이해된다. 단순화하기 위해, 프로세스들에 대한 시스템 레이턴시는 도 7 내지 11에 예시되지 않았지만, 도 12에 도시되며 그와 관련하여 설명된다.
도 7은 능동 프로세싱 시스템에 대한 타임라인을 따라 제1 시간에서 시스템의 하한들 및 설정값들을 예시하는 표(700)이다. 레이턴시 감지(LS) 하한들은 표(700)의 제1 부분(701)에 도시된다. 제1 부분(701)은 LS 프로세스들(702), 제1 리소스(예: 메모리 대역폭 사용량)의 각 LS 프로세스에 대한 제1 실제 리소스 사용(703), 제1 리소스에 대한 각 LS 프로세스에 대한 제1 SLO(704), 제2 리소스의 각 LS 프로세스에 대한 제2 실제 리소스 사용(705), 및 제2 리소스에 대한 각 LS 프로세스에 대한 제2 SLO(706)를 포함한다. 제1 실제 리소스 사용(703) 및 제2 실제 리소스 사용(705)은 시간의 함수이며, 따라서 도 7에 도시된 값들은 LS 프로세스들(702)이 프로세서에서 실행될 때, 시간이 지남에 따라 빠르고 가변적으로 변경된다. 마찬가지로, SLO들(704, 706)은 예컨대 사용자 또는 프로그램 구성 조정에 의해 시간이 지남에 따라 변경 가능하다. SLO들(704, 706)은 제1 실제 리소스 사용(703) 및 제2 실제 리소스 사용(705)에 비해 상대적으로 드물게 변경된다. 예를 들어, SLO들(704, 706)은 분(minutes), 시간(hours), 일(days) 및 주(weeks)의 순서로 변경되며, 실제 리소스 사용들(703, 705)은 마이크로초 및 밀리초 정도로 변경된다.
표(700) 및 도 8 내지 10과 관련하여 후속 설명의 경우, 제1 리소스의 최대 가용량은 10 단위이다. 예시를 위해, 제1 리소스는 초당 기가 바이트(GB/s) 단위로 측정된 메모리 대역폭 사용량이다. 703에서 제1 시간에서, 제1 LS 프로세스는 0.1GB/s의 실제 리소스 사용 값으로 제1 리소스를 소모하고 있으며, 제2 LS 프로세스는 1.1GB/s의 실제 리소스 사용 값으로 제1 리소스를 소모하고 있다. 703에서 제1 LS 프로세스 값과 제2 LS 프로세스 값 둘 다 각각 704에서의 그들 각자의 SLO들 미만이며, 그 총 사용은 제1 시간에서 4.0 GB/S의 값을 갖는 제1 리소스에 대한 총 SLO 미만이다.
705 및 706에서의 LS 프로세스들에 의한 제2 리소스의 소모와 연관된 값들 및 값들의 총계는 논의되지 않지만, 제1 리소스와 연관된 값들 및 총계와 유사하게 취급되고 유사한 관계를 갖는다. 705에서 LS 프로세스들에 의한 실제 사용에 대한 값들이 도시되며, 706에서 이러한 값들에 대한 각자의 SLO들에 대해 변수명 플레이스홀더들 "SLO_2_1" 및 "SLO_2_2"이 도시된다. 총 플레이스홀더 “LT_A_2” 및 “SLO_T_2”가 705 및 706에서 각각 도시된다. 당해 기술 분야의 사람들에 의해 이해되는 바와 같이, 이러한 플레이스홀더들은 운영 체제에서 값들을 갖는다.
표(700)의 제2 부분(711)은 NLS 프로세스들(712), 제1 리소스에 대한 각 NLS 프로세스에 대한 제3 실제 리소스 사용(713), 제1 리소스에 대한 각 NLS 프로세스에 대한 제1 설정값(714), 제2 리소스에 대한 각 NLS에 대한 제4 실제 리소스 사용(715), 및 제2 리소스에 대한 각 NLS 프로세스에 대한 설정값(716)을 포함한다. NLS 프로세스들에 대한 임의의 수의 리소스 사용들 및 대응되는 설정값들이 추적되고 제2 부분(711)에 의해 예시된 제어 방식에 통합된다. 713에서 제1 시간에서, 제1, 제2 및 제3 NLS 프로세스들은 각각 1.1GB/s, 2.2GB/s 및 3.3GB/s의 실제 리소스 사용 값들로 제1 리소스를 소모하고 있으며, 714에서 각 현재 사용 값은 1.0GB/s, 2.0GB/s 및 3.0GB/s의 그 각자의 설정값보다 높다.
715 및 716에서의 NLS 프로세스들에 의한 제2 리소스의 소모와 연관된 값들 및 값들의 총계는 본원에서 논의되지 않지만, NLS 프로세스들에 대한 제1 리소스와 연관된 값들 및 총계와 유사하게 취급되고 유사한 관계를 갖는다. 715에서 NLS 프로세스들에 의한 실제 사용에 대한 값들이 도시되며, 716에서 이러한 NLS 프로세스에 대한 각자의 설정값들에 대한 변수명 플레이스홀더 "STPT_2_1", "STPT_2_2" 및 "STPT_2_3"이 도시된다. 총 플레이스홀더 “NT_A_2” 및 “T_T_2”가 715 및 716에서 각각 도시된다. 당해 기술 분야의 사람들에 의해 이해되는 바와 같이, 이러한 플레이스홀더들은 운영 체제에서 값들을 갖는다.
도 7에서, 제1 시간에서, 703에서 제1 리소스의 제1 및 제2 LS 프로세스 소모에 대한 값들은 LS 프로세스들이 LS 프로세스들 각각에 대해 704에서 2.0 단위(GB/s)의 가용 하한 미만의 제1 리소스를 소모하고 있음을 나타내는 704에서의 그들 각자의 제1 리소스 SLO들 미만이다. 713에서 제1 리소스의 제1, 제2 및 제3 NLS 프로세스 소모에 대한 값들은 임의의 NLS 프로세스들에 제한 또는 캡이 적용되지 않았음을 나타내는 714에서의 그들 각자의 프로세스 설정값들을 초과한다. 제한은 제약, 스로틀링 또는 제어로 지칭될 수 있다. 제어 방식은 하나 이상의 제어 사이클들에 대한 제한으로서의 역할을 하는 설정값 세트를 포함한다. 제1 시간에서, NLS 프로세스들은 LS 프로세스들에 대해 예약된 총량 4.0 단위(GB/s)가 NLS 프로세스들에 의해 총 허용 가능한 소모를 6.0 단위(GB/s)로 제한되는 통상의 제한 제어 방식 하에서 보다 높은 비율로 제1 LR을 소모할 수 있게 한다. 또한, 제1 시간에서, NLS 프로세스들은 각각 714에 표시된 바와 같이 각 NLS 프로세스들에 대해 지정될 통상의 상한(cap)을 넘어 제1 리소스를 소모할 수 있게 한다. 제1 리소스의 최대 가용량은 10 유닛(GB/s)이므로, 703에서의 LS 프로세스들 및 713의 NLS 프로세스들에 의한 제1 리소스의 총 소모는 최대 가용량 이하여야 한다. 제1 시간에서, LS 프로세스들에 의한 소모가 NLS 프로세스들의 소모와 결합되는 경우, 제1 리소스에 대한 총계는 7.8 단위(GB/s)이며, 이는 최대 10 단위(GB/s) 미만이다. 따라서, 제1 시간에서, 리소스 공유 방식이 필요하지 않다.
도 8은 능동 프로세싱 시스템에 대한 타임라인을 따라 시스템의 하한들 및 설정값들을 예시하는 표(800)이다. 하한들은 표(800)의 제1 부분으로서 LS 하한 표(801)에 있고, 설정값들은 표(800)의 제2 부분으로서 NLS 설정값 표(811)에 있다. 표(800)는 도 7의 표(700)와 유사하지만, 적어도 3가지 측면들에서 다르다. 첫째, 표(800)는 LS 하한 표(801)의 803에서 제1 실제 사용 값들만을 가지며, 제1 리소스의 제어만이 본원에서 설명되므로 806에서의 제1 리소스에 대해서는 804에서의 대응되는 SLO들을 갖지만 제2 리소스에 대해서는 그렇지 않다. 도 7의 값과 비교하면, 제1 LS 프로세스에 대한 값은 703에서의 0.1 GB/s에서 803에서의 2.1 GB/s로 변경되었다. 제2 시간에서, 803에서의 제1 리소스의 제2 LS 프로세스 소모에 대한 값들은 타임라인의 제2 시간에서의 LS 프로세스가 제2 LS 프로세스들에 대해 804에서의 가용 하한 2.0 미만의 제1 리소스를 소모하고 있음을 나타내는 804에서의 제1 리소스 SLO 미만이다.
둘째, 표(800)는 LS 프로세스들 각각에 대한 805에서의 SL 설정값과 같은 제1 설정값을 포함한다. 805에서, SL 설정값은 제1 LS 프로세스와 제2 LS 프로세스 둘 다에 대해 2.0 값이다. SL 설정값은 시스템(예: 표(800), 레지스터(110), 프로세스 스케줄 파라미터들(122))의 값이며, 이는 SLO 스케줄러에 의해 판독되거나 제공되며, 803에서의 실제 사용 값들로 변경하기 위해 802에 표시된 제1 LS 프로세스 및 제2 LS 프로세스와 관련하여 SLO 스케줄러에 의해 작동된다. 일부 실시예들에 따르면, SLO 스케줄러는 제어 방식의 제어 변수들 간 결정된 관계를 사용한다. 결정된 관계는 SLO 스케줄러에 저장되거나 SLO 스케줄러에 제공되는 미리 결정된 모델의 형태를 취할 수 있거나, 컴퓨팅 장치가 동작함에 따라 SLO 스케줄러에 의한 이력 관찰에 의해 결정될 수 있다. 이상적인 시스템에서, SLO 스케줄러는 805에서 SL 설정 값들을 사용하여 시스템을 구동하고 시스템의 다른 제약들을 위반하지 않고 804에서의 SLO 값들을 향한 프로세스들에 의해 803에서의 실제 사용 값들을 변경한다. 일부 실시예들에 따르면, 설정값은 현재 제어 사이클 또는 추후 제어 사이클에서 LS 프로세스들(802) 중 하나 이상에 의한 803, 804에서의 제1 리소스의 사용을 추정하는 것에 기초하여 제공된다.
셋째, 표(800)는 812에 표시된 프로세스들 각각에 대해 815에서의 NLS 제한("NLS_1_제한"으로 라벨링됨)을 포함한다. 815에서, 일부 실시예들에 다르면, NLS 제한은 각자의 NLS 프로세스들(812)에 의해 제1 리소스의 소모를 스로틀링하기 위해 SLO 스케줄러에 의해 조정되는 최대 값이다. 814에서 설정값들을 갖는 NLS 프로세스들이 최대량의 특정 리소스를 소모하면, 프로세스들은 설정값에 대응되는 다음 제어 사이클 또는 관련 기간까지 프로세서에서 아이들(idled) 상태가 된다. 도 8에 나타낸 제2 시간에서, NLS 프로세스들(812)의 실제 소모 값들(813)은 814에서 각각 1.0 GB/s, 2.0 GB/s 및 3.0 GB/s의 제1 리소스 설정값보다 높으며, NLS 프로세스들에 대한 리소스 공유 방식은 필요하지 않다. NLS 프로세스들 중 어느 것도 시스템에서 사용 가능한 10 단위(GB/s)보다 작은 3.2GB/s 및 6.6GB/s의 합으로 표시되는 시스템의 제1 리소스의 초과 가용성으로 인해 스로틀링되지 않는다. NLS 프로세스들의 총 소모는 6.6 GB/s이며, 이는 814에서의 설정값 총계 6.0GB/s보다 높다. 이러한 소모는 802에서의 LS 프로세스들에 대해 항상 4.0 GB/s를 예비하는 기존 시스템을 고려할 때 NLS 프로세스들에 의한 활용도가 0.6G B/s 더 높다. 종래 시스템들은 6.0 GB/s에서 812의 NLS 프로세스들에 의해 제1 리소스의 가용 소모를 제한했을 것이다. 필요한 경우, 815에서의 NLS 제한들은 802에서의 LS 프로세스들과 812에서의 NLS 프로세스들 사이의 제1 리소스의 바람직한 소모 밸런스에 도달하기 위해 814에서의 각자의 제1 설정값을 초과하거나 그 만으로 설정된다. 또한, 815에서의 NLS 제한들은 제1 리소스의 소모가 시스템의 다른 리소스의 소모에 영향을 미치거나 제한하는 NLS 프로세스들에 의해 제1 리소스의 소모를 줄이도록 설정될 수 있다. 예를 들어, 제1 리소스가 비행중인 총 메모리 요청 수인 경우, 815에서의 NLS 제한들은 시스템의 또 다른 리소스 또는 제어 변수인 메모리 대역폭 제한 또는 최대값에 맞도록 812의 NLS 프로세스들에 두었다. 또한, 812에 표시된 NLS 프로세스들의 실행은 시스템의 다른 상호 관련 변수들에 기초하여 스로틀링될 수도 있다.
도 9는 능동 프로세싱 시스템에 대한 타임라인을 따라 시스템의 하한들 및 설정값들을 예시하는 표(900)이다. 하한들은 표(900)의 제1 부분으로서 LS 하한 표(901)에 있고, 설정값들은 표(900)의 제2 부분으로서 NLS 설정값 표(911)에 있다. 표(900)는 도 8의 표(800)와 유사하지만, 적어도 2가지 측면들에서 다르다. 첫째, LS 프로세스들 및 NLS 프로세스들에 의한 제1 리소스(메모리 대역폭 사용량)의 실제 소모의 특정 값들은 표(800)에 비해 변경되었다. 902에서의 LS 프로세스들 각각에 의한 실제 소모는 1.8 GB/s로 변경되었다 - 제1 LS 프로세스 소모는 2.1GB/s 내지 1.8 GB/s로 감소했으며, 제2 LS 프로세스 소모는 1.1 GB/s 내지 1.8 GB/s로 증가했다. 903에서의 LS 프로세스들에 의한 3.6 GB/s의 총 소모는 여전히 904에서의 각자의 SLO들의 총계인 총 4.0 GB/s 미만이다. LS 프로세스들 각각에 대해 905에서의 SL 설정값들은 2.0 값으로 유지된다. 또한, NLS 프로세스 소모 값들 중 하나는 3.3 GB/s 내지 3.1 GB/s로 변경했다.
둘째, SLO 스케줄러는 제3 시간에서의 제3 NLS 프로세스에 상한값 또는 최대값을 두었다. 이 제한("NLS_1_제한"으로 라벨링됨)은 SLO 913에서 3.1 GB/s로 표시되는 것처럼 제3 NLS 프로세스에 의한 제1 리소스의 소모를 스로틀링하는데 있어 활성 상태임을 나타내는 915에서 라벨 "예(YES)"로 표시되며, 여기서 제3 NLS 프로세스는 914에서 3.0 설정값에 속한다. 914에서 다른 설정값들은 처음 두 NLS 프로세스들에 대해 동일하게 유지된다. 913에서 NLS 프로세스들에 의한 총 소모가 6.4 GB/s로 감소했으며, 특권 LS 프로세스들(902)에 의한 소모로 인해 제3 시간에서 허용된 최대값은 913에 표시된 바와 같이 모든 NLS 프로세스들(912) 사이에 분리되어야 하는 6.4 GB/s부터 출발하여 총 3.6 GB/s의 제1 리소스를 소모한다. 903에서의 LS 프로세스들 및 913에서의 NLS 프로세스들에 의한 제1 리소스의 소모의 합은 제1 리소스의 최대 가용량으로서 10.0 GB/s이다. 도 9는 컨트롤러 또는 도 1의 SLO 스케줄러(111)와 같은 스케줄러가 총 NLS 소모가 스로틀링되어야 할 때 가장 적은 수의 NLS 프로세스들에 의해 제1 리소스의 소모를 감소시키도록 프로그래밍됨으로써 제1 리소스를 공유하기 위한 제1 제어 방식을 예시한다. 다른 실시예들에서, SLO 스케줄러는 이 예에서 최대 6.4 GB/s의 최대 NLS 소모를 수용하기 위해 913에서의 실제 소모를 동일한 백분율로 낮춤으로써 일부 또는 모든 NLS 프로세스들(912)을 동일한 백분율로 조정하도록 구성된다. 제3 시간에서, LS 프로세스들(902)의 스로틀링은 필요하지 않거나 요구되지 않는다.
도 10은 능동 프로세싱 시스템에 대한 타임라인을 따라 제4 시간에서 시스템의 하한들 및 설정값들을 예시하는 표(1000)이다. 하한들은 표(1000)의 제1 부분으로서 LS 하한 표(1001)에 있고, 설정값들은 표(1000)의 제2 부분으로서 NLS 설정값 표(1011)에 있다. 표(1000)는 도 9의 표(900)와 유사하지만, 적어도 2가지 측면들에서 다르다. 첫째, LS 프로세스들 및 NLS 프로세스들에 의한 제1 리소스(메모리 대역폭 사용량)의 실제 소모의 특정 값들은 표(900)에 비해 변경되었다. 1003에서 제1 LS 프로세스에 의한 실제 소모는 903에서의 1.8 GB/s 내지 1003에서의 2.0 GB/s로 증가했다. LS 프로세스들에 의한 총 소모는 1003에서 3.8 GB/s로 상승했으며, 이는 1004의 각자의 SLO들의 총계 미만이다. LS 프로세스들 각각에 대해 1005에서의 SL 설정값들은 2.0 값으로 유지된다. 제4 시간에서, 1002의 LS 프로세스들은 1004에 표시된 대로 각각 2.0 GB/s의 보증된 최소값 또는 SL 보증을 요구하고 있다. 1013에서, NLS 프로세스들 각각은 각 NLS 프로세스가 도 9에서보다 덜 소모하도록 도 9의 값에 비해 하향 스로틀링된다. NLS 프로세스들은 표(1000)의 제2 부분(1011)에서 모든 NLS 프로세스들에 의해 소모할 수 있는 총계인 총 6.0 GB/s에 대해 1013에서 각각 1.0 GB/s, 2.0 GB/s 및 3.0 GB/s를 소모하고 있다.
둘째, SLO 스케줄러는 SLO 스케줄러가 모든 NLS 프로세스들에 의해 제1 리소스의 소모를 스로틀링하는 데 활성화되어 있음을 나타내는 1015에서 레벨 "예(YES)"로 표시된 바와 같이 제4 시간에서 NLS 프로세스들 각각에 대한 제한을 두었다. 1013에서 NLS 프로세스들 각각의 소모는 감소되었다. 1003에서의 LS 프로세스들 및 1013에서의 NLS 프로세스들에 의한 제1 리소스의 소모의 합은 제1 리소스의 최대 가용량으로서 10.0 GB/s이다. 도 10은 컨트롤러 또는 도 1의 SLO 스케줄러(111)와 같은 스케줄러가 총 NLS 소모가 스로틀링되어야 할 때 둘 이상의 NLS 프로세스들에 의해 제1 리소스의 소모를 감소시키도록 프로그래밍되는 제1 제어 방식의 또 다른 상태를 예시한다. 복수의 유형의 스로틀링 알고리즘들 중 하나가 각각 각자의 NLS 프로세스에 적용될 수 있다. 적용된 스로틀링 알고리즘의 유형은 특정 NLS 프로세스에 의한 제1 (또는 다른) 리소스의 소모 이력, 모든 NLS 프로세스들에 의한 제1 (또는 다른) 리소스의 소모 이력, LS 프로세스들 중 하나에 의한 제1 (또는 다른) 리소스의 소모 이력, 모든 LS 프로세스들에 의한 제1 (또는 다른) 리소스의 소모 이력, 또는 이들의 조합은 하나 이상의 다른 변수들에 기초하여 선택될 수 있다. 1012에서의 NLS 프로세스들 각각은 도 8의 표(800)의 813에서의 소모 값들과 비교할 때 1013에서의 실제 값에서 10 %의 동일한 고정 백분율만큼 감소되었다. 1.1 GB/s의 값이 1.0 GB/s로 감소되었고, 2.2 GB/s의 값이 2.0으로 감소되었으며, 3.0의 값이 3.0으로 감소되었다. 도 10에 도시된 바와 같이, SLO 스케줄러는 하나 이상의 제어 사이클 동안 1013에서의 NLS 프로세스들 각각에 의한 소모를 1014의 설정값까지 유지하고 있다. 추가 제한 또는 스로틀링이 필요한 경우, 1014에서의 설정값들 중 하나 이상은 다른 제어 사이클에서 감소되며, 1012에 표시된 각자의 NLS 프로세스에 대한 설정값들(1014)을 충족시키기 위해 실제 소모 값들(1013) 중 하나 이상은 응답하여 낮아질 것이다. 제4 시간에서, LS 프로세스들(1002)의 스로틀링은 필요하지 않거나 요구되지 않는다. 도 10에 도시된 바와 같이, 1002의 LS 프로세스들은 1004에 도시된 보증되거나 계약된 SLO 값들을 1003에서 소모한다. SLO 스케줄러에 대한 정책은 1004의 SLO 값들 및 설절값들(1014)로 설정된다.
도 11은 능동 프로세싱 시스템에 대한 타임라인을 따라 제5 시간에서 시스템의 하한들 및 설정값들을 예시하는 표(1100)이다. 표(1100)는 도 10의 표(1000)와 유사하지만, 적어도 2가지 측면들에서 다르다. 첫째, NLS 프로세스들에 의한 제1 리소스(메모리 대역폭 사용량)의 실제 소모의 특정 값들은 표(1000)에 비해 변경되었다. 1112에 도시된 NLS 프로세스 각각에 의한 실제 소모는 감소했다. 1113에서, NLS 프로세스들 각각은 각 NLS 프로세스가 표(1000)에서 보다 덜 소모되도록 하향 스로틀링되었다. NLS 프로세스들은 표(1100)의 제2 부분(1111)에서 모든 NLS 프로세스들에 의해 소모할 수 있는 총계보다 작은 총 5.0 GB/s에 대해 1013에서 각각 0.8 GB/s, 1.6 GB/s 및 2.6 GB/s를 소모하고 있다. SLO 스케줄러는 도 12와 관련하여 아래에 더 설명되는 바와 같이 글로벌 레이턴시 요건을 충족시키기 위해 NLS 프로세스들에 의한 소모를 감소시켰다. SLO 스케줄러는 글로벌 프로세스 레이턴시 목표를 달성하기 위해 NLS 프로세스들에 의한 제1 리소스의 소모를 먼저 줄이도록 구성되었다. NLS 프로세스들에 의한 시스템 리소스의 소모를 스로틀링하거나 감소시켜 글로벌 레이턴시 목표의 감소가 달성될 수 없는 경우, SLO 스케줄러는 1104에서 SLO를 낮춤으로써 제1 리소스의 소모를 또한 줄이도록 구성된다. 표(1100)에서, LS 프로세스들에 의한 총 소모는 제2 프로세스(LS-프로세스_2)에 의한 소모가 1.8 내지 2.0 단위로 상승하게 함으로써 1103에서 4.0 GB/s로 증가했으며, 여기서 4.0 단위는 1104의 각자의 SLO들의 총계와 같다. LS 프로세스들 각각에 대해 1105에서의 SL 설정값들은 2.0 값으로 유지된다. 제5 시간에서, 1102에서의 LS 프로세스들은 보장된 최소값들을 요구하고 있으며, 각 2.0 GB/s 및 LS 프로세스들은 제1 리소스의 실제 소모의 그들 각자의 하한들을 소모하지 않는 것에 위반되지 않는다.
둘째, 1112에 표시된 NLS 프로세스들은 모든 NLS 프로세스들에 사용할 수 있는 6.0 GB/s 미만으로 스로틀링된다. 1113에서, NLS 프로세스들에 의한 실제 총 소모량은 5.0 GB/s이다. 표(1100)의 제2 부분(1111)에서, SLO 스케줄러는 1115에서 라벨 "예(YES)"로 표시된 대로 제5 시간에서 NLS 프로세스들 각각에 대한 설정값 또는 제한을 두었다. SLO 스케줄러는 시스템 전체 목적을 달성하는 데 필요한 제1 리소스의 가용량 미만의 NLS 프로세스들에 의해 제1 리소스의 소모를 능동적으로 스로틀링하는 것을 포함하는 다양한 조치들을 취하도록 구성된다. 목적은 시스템 전체 목표, 정책, 계약, 최소 및 SLO이라고 할 수 있다. 1013에서의 값들과 비교하면, 1113에서의 NLS 프로세스들 각각에 의한 제1 리소스의 소모가 감소되었다. 1103에서의 LS 프로세스들 및 1113에서의 NLS 프로세스들에 의한 제1 리소스의 소모의 합은 10.0 GB/s의 제1 제한된 리소스에 대한 시스템 최대 값보다 낮다. 도 11은 컨트롤러 또는 도 1의 SLO 스케줄러(111)와 같은 스케줄러가 총 NLS 소모가 제1 리소스의 가용량 미만으로 스로틀링되어야 할 때 둘 이상의 NLS 프로세스들에 의한 제1 리소스의 소모를 감소시키도록 프로그래밍되는 제어 방식의 또 다른 상태를 예시한다. SLO 스케줄러는 제2 리소스 및 NLS 프로세스가 소모되거나 영향을 미치는 임의의 기타 리소스에 대해 동일한 NLS 프로세스들을 스로틀링하도록 구성된다.
표(1100)는 시스템의 제1 리소스(메모리 대역폭 사용량)의 총 가용량(6.0 GB/s)이 1112에 도시된 NLS 프로세스 세트에 할당된 5.0 GB/s 값을 초과할 때 1113의 실제 소모 값들이 1114에서 NLS 프로세스들에 대한 설정값들을 충족하기 때문에 NLS 프로세스들의 행동이 여전히 SLO 스케줄러 내에 있음을 예시한다. 추가 제한 또는 스로틀링이 필요한 경우, 1114에서의 설정값들 중 하나 이상은 추가 감소되며, 실제 소모 값들(1113) 중 하나 이상은 1112에 표시된 각자의 NLS 프로세스에 대한 설정값으로 제공되는 설정값(1114)을 충족시키기 위해 낮아질 것이다. 표(1100)에 도시되지 않았지만, NLS 대 LS(NVL) 스로틀링 비율이 제공됨으로써 총 NLS 프로세스 소모가 시간이 지넘에 따라 NVL 스로틀링 비율로 감소한 다음, 추가 프로세스 스로틀링이 필요한 경우 제1 리소스의 소모의 감소가 LS 프로세스들 및 NLS 프로세스들 둘 다에 걸쳐 확산된다. 이러한 방식으로, 1112에서의 NLS 프로세스들은 1103에서 과도하게 활동적인 LS 프로세스들의 희생에 1113에서 모두 0으로 내려 가지 않는다. 일반적으로, 제5 시간에서, 1103에서의 LS 프로세스 사용의 스로틀링은 필요하지 않거나 요구되지 않는다. 표(1100)의 제1 부분(1101)에 도시된 바와 같이, 1102에서 LS 프로세스들은 특정 양의 1103에서의 제1 리소스 1104에 도시된 보장되거나 계약된 SLO 값들을 소모하고 있다.
도 12는 일부 실시예들에 따른 컴퓨팅 시스템에 대한 시간이 지남에 따른 리소스 소모 및 메모리 레이턴시를 예시하는 그래프이다. 그래프(1200)는 마이크로초 단위로 메모리 레이턴시의 값들을 나타내는 제1 트레이스(1201)를 도시한다. 제1 트레이스(1201)는 시스템의 모든 LS 및 NLS 프로세스들에 의해 경험되고 도 7 내지 11에 예시된 바와 같은 메모리 레이턴시를 나타낸다. 그래프(1200)는 또한 도 7 내지 11에 예시된 총 제1 리소스(메모리 대역폭 사용량)의 실제 소모 값들을 나타내는 제2 트레이스(1202)를 도시한다. 그래프(1200)의 총 소모량은 10 단위(GB/s)이다. 시스템 레이턴시의 세분화는 그래프(1200)의 제1 수직 축(1204)을 따라 도시된다. 총 소모량의 세분화는 그래프(1200)의 제2 수직 축(1205)을 따라 도시된다.
시간은 그래프(1200)의 수평 축(1203)을 따라 그려진다. 시간은 프로세스의 제어 사이클들의 단위이다. 수평 축(1203)은 T1 내지 T5로 라벨링된 5개의 섹션들로 세분화된다. 각각의 섹션들은 표들(700, 800, 900, 1000 및 1100) 중 하나에 대응되는데, 여기서 T1은 표(700)에 대응되고, T2는 표(800)에 대응되고, T3은 표(900)에 대응되고, T4는 표(1000)에 대응되고, T5는 표(1100)에 대응된다.
메모리 레이턴시(1201)는 처음 3개의 섹션들(T1 내지 T3)에 대한 시스템 레이턴시 임계값(1206) 미만이다. 레이턴시 임계값(1206)은 아이들-시스템 레이턴시에 기초한 미리 결정된 임계값이다. 예를 들어, 레이턴시 임계값(1206)은, 아이들-시스템 레이턴시보다 최대 1%, 2%, 2.5%, 3%, 5%, 7%, 10%, 12%, 15%, 20%, 25%, 30%, 35%, 40%, 45% 및 50% 중 하나보다 높다. 제4 섹션(T4)에서, 실제 메모리 레이턴시(1201)는 영역(1207)에서 레이턴시 임계값(1206) 위로 급증한다. 시스템은 메모리 레이턴시(1201)을 제어하도록 구성된다. 시스템은 SLO 스케줄러를 활성화함으로써, 프로그래밍적으로 제5 섹션(T5)(제4 섹션(T4)에 비해)에서 메모리 레이턴시(1201)를 레이턴시 임계값(1206) 이하로 낮출 수 있다. 제5 섹션(T5)에 도시된 바와 같이, 메모리 레이턴시(1201)는 일부 조건들에서 제2 트레이스(1202)의 값들의 변화에 따라 적어도 어느 정도 달라진다. 예시된 조건들은 NLS 프로세스들에 의한 제1 리소스의 소모를 감소시킴으로써 제1 리소스의 전체 소모를 최대 10 GB/s 미만으로 감소시키는 것이다. 표(1100)를 참조하면, 메모리 레이턴시(1201)는 912에서의 NLS 프로세스들에 의한 제1 리소스의 전체 소모의 감소에 따라 달라진다. 구체적으로, 그래프(1200)의 섹션(T5)에 도시된 바와 같이, SLO 스케줄러는 3개의 NLS 프로세스들 각각에 의한 제1 리소스의 소모를 줄였다. 그래프(1200)에 도시된 특정 시스템 구성 및 제어 방식은 제1 리소스의 최대 사용을 허용하는 비용을 들이더라도 메모리 레이턴시(1201)가 레이턴시 임계값(1206) 미만으로 유지되는 것을 보장하는 것을 포함한다.
또한, 표(700), 표(800) 및 표(900)에서 명백한 것처럼, 그리고 그래프(1200)에서 명백한 것처럼, 시스템의 SLO 스케줄러는 시스템 및 프로세서의 2개의 종속 변수들을 원하는 범위 내에 유지하도록 구성된다. 특히, SLO 스케줄러는 각 LS 프로세스가 하한 2.0 GB/s과 같은 각자의 하한에서 제1 리소스를 소모하게 할 수 있으며, 그래프(1200)에 도시된 바와 같이 NLS 프로세스의 활동을 조절하여 전체 메모리 레이턴시를 레이턴시 임계값(1206) 미만으로 유지하도록 할 수 있다. 일부 실시예들에 따르면, SLO 스케줄러가 레이턴시 임계값(1206) 미만으로 메모리 레이턴시(1201)를 제어하기 위해 사용하는 하나의 변수는 프로세서 또는 프로세서의 각 코어에 대한 메모리 프리페치(prefetching)의 양이다.
도 7 내지 12를 참조하여 설명된 예에서, 하한 제어 변수는 적어도 그래프(1200)의 제4 섹션(T4)에 의해 표현되는 특정 시간 기간 동안 프로세스 레이턴시 변수보다 우선 순위를 갖는다. 섹션들(T1, T2 및 T3)에서, 시스템은 NLS 프로세스들이 LS 프로세스들에 투입되지 않은 초과 대역폭을 사용할 수 있도록 했다. 윈도우(T4)에서, 시스템은 레이턴시가 계약 레이턴시를 초과하고 프로세스(LS2)는 도 10의 1003에서 명백한 것처럼 그 하한을 충족시키지 못함을 인식한다. NLS 프로세스들에 대한 상한 또는 제한을 동적으로 둠으로써, 시스템은 실질적으로 항상 또는 시간 단위 또는 제어 시간 단위의 상당 부분 이상에 걸쳐 제5 섹션(T5)의 시스템 레이턴시를 줄여 LS2를 할당된 대역폭으로 되돌릴 수 있다.
다른 실시예들에 따르면, 관련 기술 분야의 당업자에게 명백한 바와 같이, 본원에 설명된 바와 같은 프로세서 및 SLO 스케줄러는 리소스에 대한 보장된 하한을 갖는 LS 프로세스를 제공할 뿐만 아니라 실질적인 시간 범위(예를 들어, 분, 시간, 일, 개월)에 걸쳐 실질적으로 모든 시간에서 프로세스 및 시스템 행동을 원하는 상태들로 형성하기 위해 계약된 한도를 제공한다.
도 13은 일부 실시예들에 따른 컴퓨팅 시스템에서 동작하는 단일 LS 프로세스에 대한 메모리 대역폭 사용 대 프로세스 메모리 레이턴시를 예시하는 그래프(1300)이다. 도 13은 프로세서의 동작 및 특정 프로세스에 대해 SLO 스케줄러에 의해 취해진 조치 결과를 예시한다. 제1 상관관계(1301) 및 제2 상관관계(1302)는 두 세트의 컴퓨팅 시스템 조건들 하에서 프로세서에 의한 프로세스의 인스트럭션들의 실행과 관련된 메모리 레이턴시(1303)와 메모리 대역폭 사용(1304) 사이의 관계들을 예시한다. 2개의 상관관계들(1301, 1302)은 시스템의 특정 프로세스에 대한 복수의 가능한 상관관계들 중 2개이다. 2개의 상관관계들(1301, 1302)을 포함하는 컴퓨팅 시스템에서의 프로세스의 상관관계들은 비선형적이며 다중 관계형이다: 시스템 내의 복수의 변수들은 메모리 레이턴시(1303) 및 메모리 대역폭 사용(1304)를 포함하는 프로세스의 행동에 영향을 미친다. 예시를 위해, 상관관계들(1301 및 1302)은 각각 밀리초 또는 초 동안 지속되는 반면, 제어 루프는 마이크로초 정도와 같은 더 작은 타임 스케일로 평가된다.
SLO 스케줄러는 계약된 프로세스 레이턴시(1305)인, 최대 허용 가능 프로세스 레이턴시와 같은 특정 제한들 내에서 프로세스의 동작을 가져오는 작업을 수행하며, 여기서 프로세스 동작은 가능한 경우 실질적으로 모든 시간에 계약된 프로세스 레이턴시(1305)에서 또는 하에서 유지되도록 한다. 계약된 프로세스 레이턴시(1305)는 시스템 리소스에 대해 경쟁하는 어떠한 다른 프로세스 없이도 컴퓨팅 시스템에서 동작할 수 있는 프로세스가 없고 아무리 간단하더라도 물리적 컴퓨터의 최소 메모리 레이턴시 시간(1312)보다 적은 합리적인 값이다. 본원에 설명된 계약된 프로세스 레이턴시(1305)는 하드웨어 컴포넌트 또는 시스템을 사용하는 인간 운영자와 고객 사이의 계약이 아니라, 하드웨어 컴포넌트 또는 시스템과 인간 운영자 사이의 계약이다. 계약은 특정 컴퓨팅 시스템이 계약된 프로세스 레이턴시(1305) 또는 SLO 스케줄러에 제공된 임의의 다른 제약을 충족시킬 수 있다는 이해에 의해 SLO 스케줄러 구성 동안 설정되거나 식별된다.
도 13에서, SLO 스케줄러는 또한 프로세스가 적어도 그 메모리 대역폭 하한(1306)을 사용할 것이 요청될 때 프로세스 행동을 프로세스에 대한 메모리 대역폭 하한(1306)으로 가져오는 작업이 수행된다. 요약하면, SLO 스케줄러는 특정 프로세스의 적어도 2개의 종속 변수들 또는 행동들(1303, 1304)을 제어하기 위해 컴퓨팅 시스템에서 특정 변수들을 제어한다. 프로세스가 적어도 메모리 대역폭 하한(1306)을 요청하지 않는 경우, SLO 스케줄러는 프로세스가 보장된 메모리 대역폭 하한(1306)보다 적게 소모하도록 할 수 있다. 일부 실시예들에 따르면, 프로세스가 적어도 그 메모리 대역폭 하한(1306)을 요청하는 경우, 2개의 행동들인, 메모리 레이턴시(1303) 및 메모리 대역폭 사용(1304)에 대한 프로세스의 원하는 행동은 제2 상관관계(1302)에 따라 제3 지점(1311)에 도시된 바와 같은 계약된 프로세스 레이턴시(1305)를 포함하는 두 가지 조건을 모두 만족시킨다. 다른 실시예들에 따르면, SLO 스케줄러는 두 조건들 중 하나를 만족시키며, 이는 도 13의 상관관계들(1301, 1302)을 따라 특정 지점들에 예시된다.
제1 상관관계(1301)는 시스템이 특정 레벨의 프로세서 로딩을 포함하는 제1 시스템 조건 세트 하에 있을 때의 프로세스 행동을 설명한다. 예를 들어, 제1 시스템 조건 세트는 프로세서에서 동작하는 제1 활성 LS 및 NLS 프로세스 세트의 중부하(heavy load) 및 프로세스에 의한 메모리 대역폭 사용에 대한 적당한 양의 경쟁을 포함한다. 제1 시간(T1)에서, 프로세스 행동은 프로세스에 대한 계약된 프로세스 레이턴시(1305)를 초과한 메모리 레이턴시 및 메모리 대역폭 하한(1306) 미만의 메모리 대역폭 사용에 대응되는 상관관계(1301)를 따라 제1 지점(1307)에 있다. 예시를 위해, T1을 포함하는 모든 시간에서의 프로세스는 적어도 그 메모리 대역폭 하한(1306)을 요청하고 있다. 따라서, T1에서, SLO 스케줄러는 SLO 스케줄러에 대한 제약 조건인 적어도 그 메모리 대역폭 하한(1306)에서 프로세스를 제공하도록 컴퓨팅 시스템을 제어하는 위반에 있다.
제1 시간(T1) 이후 때때로, 제2 시간(T2)에서, SLO 스케줄러는 시스템의 NLS 프로세스들에 상한을 두어 시스템 레이턴시를 줄였다. 이는 프로세스의 행동이 제1 상관관계(1301)를 따라 제2 지점(1308)에 있게 한다. 일부 실시예들에 따르면, 제2 시간(T2)은 T1 이후의 복수의 SLO 스케줄러 제어 사이클들이다. 도시된 바와 같이, 프로세스 행동은 제2 지점(1308)에서 T2에서 다음의 두 개의 조건들 중 하나만을 만족시킨다: (1) 메모리 레이턴시를 계약된 프로세스 레이턴시(1305) 이하로 감소시키지만, (2) 적어도 프로세스가 요청하는 메모리 대역폭 하한(1306)을 제공하지는 않는다. 결과적으로, 상관관계(1301)에 의해 표시된 바와 같이, SLO 스케줄러는 메모리 대역폭 하한(1306)을 충족시키지는 것을 위반할 것이다. 그러나, 제2 지점(1308)에서의 이러한 조건 세트는 SLO 스케줄러가 제1 상관관계(1301)를 따라 제공할 수 있는 최선이다. 따라서, SLO 스케줄러는 시스템 레이턴시에 대한 계약 의무를 충족했으며, LS 프로세스는 메모리 대역폭 하한 할당을 요구하지 않아야 하고, SLO 스케줄러 부분에서 추가 조치가 필요하지 않다. NLS 프로세스들에 의해 소모되는 메모리 대역폭에 대한 상한은 임의의 적절한 수단에 의해 달성될 수 있다. 일 실시예에 따르면, 방법은 소정의 NLS 프로세스에 대해 주어진 시간에 처리중인 동시 메모리 요청의 수에 대응되는 가용 토큰 풀(pool)의 가용 토큰 수를 감소시키는 단계를 포함한다. 따라서, 특정 프로세스는 메모리 대역폭을 소모하기 위한 다음 제어 사이클 또는 사이클들 동안 경쟁이 덜하다. 이러한 메모리 대역폭에 대한 총 수요의 감소는 시스템의 모든 프로세스들에 의해 겪는 메모리 레이턴시를 줄인다.
제2 상관관계(1302)는 컴퓨팅 시스템 내의 특정 프로세스에 대한 복수의 대안적인 상관관계들 중 하나이다. SLO 스케줄러가 제2 상관관계(1302)가 발효되도록 시스템 조건들을 변경했거나, 컴퓨팅 시스템이 제2 상관관계(1302)가 발효되도록 다른 상태로 진행했으면, 특정 프로세스의 행동들은 제1 지점(1309)으로부터 SLO 스케줄러의 제어 하의 제2 상관관계(1302)에 따른 제2 지점으로 변경될 것이다. 예를 들어, 프로세스의 행동들은 제2 지점(1310)으로 변경되거나 제3 지점(1311)으로 변경될 수 있다. 제1 포인트(1309)는 프로세스에 대해 계약된 프로세스 레이턴시(1305)를 초과한 메모리 레이턴시 및 메모리 대역폭 하한(1306) 미만의 메모리 대역폭 사용에 대응된다. 프로세스는 시간(T1)에서 메모리 대역폭 하한(1306) 이상으로 메모리 대역폭 사용(1304)이 소모되도록 요청했다. 지점(1309)은 특정 프로세스에 대한 두 조건들의 위반에 대응된다.
제2 상관관계(1302)는 다른 시간에서 발생할 수 있는 컴퓨팅 시스템 내의 특정 프로세스에 대한 복수의 대안적인 상관관계들 중 하나이다 제2 상관관계(1302)가 유효하면, 특정 프로세스의 행동들은 SLO 스케줄러의 제어 하에 제2 상관관계(1302)를 따라 제1 지점(1309)에서 다른 지점으로 변경될 것이다. 예를 들어, LS 프로세스는 대역폭 할당을 소모하지 않으며 시스템 레이턴시는 계약 레이턴시를 초과하므로, SLO 스케줄러는 LS 프로세스의 동작 지점을 이동해야 한다. 시스템에서 NLS 프로세스들의 대역폭 활용을 제한함으로써, SLO 스케줄러는 시스템의 총 메모리 대역폭 요구를 줄인다. 이러한 방식으로, LS 프로세스의 동작 지점은 상관 곡선(1302)을 따라 제2 지점으로 변경된다.
제1 시간(T1) 후 때때로, 제2 시간(T2)에서, SLO 스케줄러는 다른 프로세스들(예: LS 프로세스들, NLS 프로세스들, LS 프로세스들 및 NLS 프로세스들 둘 모두)이 프로세스 리소스들이 덜 소모되도록 시스템 조건들을 조정하여 프로세스의 행동이 제2 지점(1310) 또는 제3 지점(1311)에 있도록 했다. 도 13에 도시된 바와 같이, 프로세스가 이 하한 이상을 요청하는 상태에 있을 때, 제2 지점(1310)에서 특정 프로세스에 대한 프로세스 행동은 메모리 대역폭 하한(1306) 이상에서 메모리 대역폭 사용을 만족시키는 것이다. 제3 지점(1311)에서, 프로세스 행동은 또한 제2 상관관계(1302)를 따라 T2에서 두 조건들을 충족시키고 있다: (1) 프로세스 메모리 레이턴시는 계약된 프로세스 레이턴시(1305)보다 작고, (2) 프로세스가 이 하한 이상을 요청하는 상태에 있을 때 메모리 대역폭 사용은 메모리 대역폭 하한(1306) 이상이다. 따라서, 적어도 제2 시간(T2)에서 한 제어 사이클 동안, SLO 스케줄러는 독립적인 제어 변수들에 의해 특정 프로세스의 행동에 적용되는 제2 상관관계(1302)에 대응되는 것으로부터 시스템 조건들을 더 이상 변경할 필요가 없다. 실제로, 제3 지점(1311)에서, SLO 스케줄러는 도 3에 도시된 것과 같은 방법에 따라 LS 프로세스들 및 NLS 프로세스들에 대한 스로틀링을 점차 감소시킬 수 있다. 이는 일차 제약들을 충족하면서 전체 시스템 처리량이 최대화되도록 가능한 한 적은 스로틀링을 적용하기 위한 제3 조건의 최적화로 간주될 수 있다.
요약하면, 도 13을 참조하며, 주어진 시간 간격에 걸친 프로세스 특성들이 제1 상관관계(1301)에 의해 설명될 때, SLO 스케줄러는 프로세스 행동을 제1 상관관계(1301)와 계약된 프로세스 레이턴시1305)의 교차점으로 구동하도록 구성된다. 그러나, LS 프로세스 특정들이 변하고 프로세스가 제2 상관관계(1302)에 의해 설명될 때, SLO 스케줄러는 제1 실시예에 따르면 프로세스 행동을 제1 상관관계(1302)와 메모리 대역폭 하한(1306)의 교차점으로 구동하도록 구성된다. 제2 실시예에 따르면, SLO 스케줄러는 프로세스 행동을 제2 상관 관계(1302)와 계약된 프로세스 레이턴시(1305)의 교차점으로 구동하도록 구성된다. 일반적으로, 프로세스가 메모리 일부 동작 단계 동안 소모하는 메모리 대역폭(1304)의 레이턴시(1303) 사이의 관계는 특정 컴퓨팅 시스템에서 동작하는 해당 소프트웨어 어플리케이션의 프로세스의 함수이다. 컴퓨팅 시스템은 제1 상관관계(1301)에 따라 일정 기간 동안 동작하고 제2 상관 관계(1302)에 따라 다른 시간 기간 동안 동작하는 프로세스를 수용하도록 적응되는데, 여기서 프로세스는 제어 루프 반복 시간보다 실질적으로 더 긴 시간 동안 이들 상관관계들(1301, 1302) 중 하나에 머무른다. 즉, SLO 스케줄러를 통한 시스템은 프로세스 상관관계가 변경되기 전에 프로세스의 행동을 제어하기 위한 여러 조정 기간들을 갖는다.
도 13에 예시된 예는 본원에 설명된 SLO 스케줄러의 실시예에 의해 제어되는 다른 프로세스들의 다른 시스템 전체 조건들 및 행동들에 적용 가능하다. 일부 실시예들에서, 프로세스 행동들의 측정 또는 카운트, 시스템 레이턴시 임계값, LS 하한들 및 NLS 설정값과 같은 SLO 스케줄러의 컴포넌트들 및 다른 컴포넌트들은 도 1의 프로세서(102)의 레지스터(110) 세트와 같은 데이터 구조에 저장된다. 또한, 데이터 구조들에 대한 값들은 도 1의 시스템 메모리(103)와 같은 시스템 메모리의 프로세스 스케쥴 파라미터들(122)로부터 비롯될 수 있다. 일부 실시예들에 따르면, 필요한 경우, 시스템 레이턴시 임계값, LS 하한들, NLS 설정값들 및 다른 컴포넌트들은 각각 도 1의 SLO 스케줄러 API(108) 및 OS(120)을 통한 것과 같이 운영 체제에 의해 제공된 SLO 스케줄러 API를 통해, 도 1의 SLO 스케줄러(111)와 같은 SLO 스케줄러에 제공된다. 일부 실시예들에 따르면, SLO 스케줄러는 운영 체제 내에서 어플리케이션을 실행하거나 런칭하여 어플리케이션이 서비스될 때 특정 프로세스를 위해 구성된다. 예를 들어, 특정 프로세스에 대한 시스템 레이턴시, LS 하한들 및 NLS 설정값들은 어플리케이션(121)이 제1 시간 동안 실행될 때 또는 어플리케이션(121)의 사본이 다른 프로세스들에 의해 스폰될 때 도 1의 SLO 스케줄러(111)를 위한 레지스터들(110)에 제공된다. 도 1의 프로세스 스케줄 파라미터들(122), 도 13의 상관관계들(1301, 1302)과 같은 프로세스 상관관계들은 도 1의 SLO 스케줄러(111)와 같은 SLO 스케줄러를 동작시키기 위해 적용된다.
일부 실시예들에서, 상술된 장치 및 기술들은 도 1을 참조하여 상술한 처리 프로세서(102)와 같은, 하나 이상의 집적 회로(IC) 장치들(집적 회로 패키지 또는 마이크로칩이라고도 함)을 포함하는 시스템에서 구현된다. EDA(electronic design automation) 및 CAD(computer aided design) 소프트웨어 툴은 이러한 IC 장치들의 설계 및 제작에 사용될 수 있다. 이러한 설계 툴은 일반적으로 하나 이상의 소프트웨어 프로그램들로 표현된다. 하나 이상의 소프트웨어 프로그램들은 회로를 제조하는 제조 시스템을 설계 또는 적응시키기 위한 프로세스의 적어도 일부를 수행하기 위해 하나 이상의 IC 장치들의 회로를 나타내는 코드 상에서 동작하도록 컴퓨터 시스템을 조작하기 위해 컴퓨터 시스템에 의해 실행 가능한 코드를 포함한다. 이 코드는 명령들, 데이터 또는 명령들 및 데이터의 조합을 포함할 수 있다. 설계 툴 또는 제작 툴을 나타내는 소프트웨어 명령들은 일반적으로 컴퓨팅 시스템에 액세스 가능한 컴퓨터 판독 가능 저장 매체에 저장된다. 마찬가지로, IC 장치의 설계 또는 제조의 하나 이상의 단계들을 나타내는 코드는 동일한 컴퓨터 판독 가능 저장 매체 또는 다른 컴퓨터 판독 가능 저장 매체에 저장되고 그로부터 액세스될 수 있다.
제1 측면에서, 시스템 메모리 및 운영 체제와 통신하기 위한 프로세서로서, 상기 프로세서는 제1 프로세스 및 제2 프로세스를 실행하기 위한 복수의 프로세서 코어들 및 제1 설정값이 제1 프로세스에 대한 레이턴시 감지(LS) 하한 이하일 때, 또는 제1 설정값이 LS 하한을 초과할 경우 제1 프로세스에 의한 제어 사이클에서 현재 사용이 LS 하한을 초과할 때, 제1 프로세스에 의한 제어 사이클에서 현재 사용이 메모리 대역폭의 사용에 대응되는 제1 설정값을 충족할 때까지 제2 프로세스에 의한 메모리 대역폭의 사용을 스케줄링하도록 구성된 스케줄러를 포함한다.
제1 측면의 일 실시예에서, 스케줄러는 추후 제어 사이클에서 제1 프로세스에 의한 메모리 대역폭의 사용을 추정하여 제1 설정값을 결정하도록 더 구성된다. 다른 실시예에서, LS 하한은 프로세서의 제1 코어에 의한 메모리 대역폭의 사용의 제한에 대응되고, 제1 프로세스에 대한 제1 설정값은 제1 코어와 연관되며, 제1 프로세스에 의한 현재 사용은 제1 코어에 의한 메모리 대역폭의 사용이다. 추가 실시예에서, 스케줄러는 시스템 레이턴시 임계값을 저장하고, 시스템 레이턴시 임계값을 현재 시스템 프로세스 레이턴시와 비교하여 시스템 레이턴시 임계값의 시스템 프로세스 레이턴시 위반을 결정하며, 시스템 프로세스 레이턴시 위반이 해결될 때까지 제2 프로세스의 실행을 제어하도록 더 구성된다. 특정 실시예에서, 스케줄러는 시스템 프로세스 레이턴시 위반이 해결될 때까지 제1 프로세스의 실행을 스로틀링하도록 더 구성된다.
제1 측면의 추가 실시예에서, 스케줄러는 시스템 레이턴시 임계값을 저장하고, 시스템 레이턴시 임계값을 현재 시스템 프로세스 레이턴시와 비교하여 시스템 레이턴시 임계값의 시스템 프로세스 레이턴시 위반을 결정하도록 더 구성된다 스케줄러는 또한 현재 제어 사이클에서 제2 프로세스에 의한 적어도 메모리 대역폭의 사용의 제한에 기초하여 제1 프로세스 및 제2 프로세스에 대한 제어 방식을 생성하고, 현재 제어 사이클 이후 후속 제어 사이클에서 제한을 낮춤으로써 현재 시스템 프로세스 레이턴시가 더 이상 시스템 레이턴시 임계값을 위반하지 않을 때까지 제어 방식을 적용하도록 구성된다. 보다 특정한 실시예에서, 프로세서는 시스템 레이턴시 임계값을 위한 레지스터를 더 포함하며, 상기 레지스터는 운영 체제에서 제1 프로세스의 런칭 시 운영 체제의 어플리케이션 프로그램 인터페이스(API)를 통해 액세스 가능하다.
제1 측면의 추가 실시예에서, LS 하한을 위한 레지스터로서, 상기 레지스터는 운영 체제에서 제1 프로세스의 런칭 시 운영 체제의 어플리케이션 프로그램 인터페이스(API)를 통해 액세스 가능하다.
제2 측면에서, 방법은 장치의 프로세서의 스케줄러에 의해, 장치의 프로세서에서 실행되는 비-레이턴시 감지(NLS) 프로세스들에 의한 장치의 메모리 대역폭의 현재 사용을 결정하는 단계, 스케줄러에 의해, 프로세서에서 실행되는 레이턴시 감지(LS) 프로세스에 의한 메모리 대역폭의 현재 사용을 결정하는 단계, 스케줄러에 의해, LS 프로세스가 적어도 메모리 대역폭의 LS 하한을 사용하도록 요청할 경우 현재 사용은 LS 프로세스가 적어도 메모리 대역폭의 LS 하한 양을 사용하지 않음을 나타낼 때 전체 NLS 스로틀링 값을 결정하는 단계, 스케줄러에 의해, 전체 NLS 스로틀링 값에 기초하여 NLS 프로세스들에 대한 스로틀링 방식을 결정하는 단계, 및 프로세서에 의해, 스로틀링 방식에 기초하여 NLS 프로세스들 중 제1 NLS 프로세스에 제1 스로틀링을 적용하는 단계로서, 제1 스로틀링은 메모리 대역폭의 소모의 감소를 포함하는, 상기 적용하는 단계를 포함한다.
제2 측면의 일 실시예에서, 방법은 스케줄러에 의해, LS 프로세스가 적어도 LS 하한 사용 양을 사용하지 않을 때 그리고 LS 프로세스가 적어도 메모리 대역폭의 LS 하한을 사용하도록 요청할 때 LS 프로세스에 대한 제2 스로틀링 양을 결정하는 단계, 및 프로세서에 의해 적어도 하나의 제어 사이클 동안 LS 프로세스에 제2 스로틀링을 적용하는 단계를 포함한다. 다른 실시예에서, 프로세서는 제1 코어 및 제2 코어를 포함하는 멀티-코어 프로세서이며, LS 프로세스는 제어 사이클에서 제1 코어에서 실행되고, 제1 스로틀링은 제어 사이클에서 제2 코어에 의한 메모리 대역폭의 소모의 감소를 적용한다. 또 다른 실시예에서, 프로세서는 복수의 코어들을 포함하는 멀티-코어 프로세서이며, 제1 스로틀링은 동일한 제어 사이클에서 제1 NLS 프로세스의 복수의 스레드들에 적용된다.
제2 측면의 추가 실시예에서, 방법은 제1 NLS 프로세스, 제2 NLS 프로세스 또는 LS 프로세스 중 하나가 장치의 레이턴시 목표을 벗어나 실행될 때, 스케줄러에 의한 NLS 프로세스들의 제1 NLS 프로세스 또는 제2 NLS 프로세스에 레이턴시 스로틀링을 구현하는 단계를 포함한다. 추가 실시예에서, LS 하한은 LS 프로세스에 대한 인바운스 네트워크 대역폭 하한이다.
제3 측면에서, 컴퓨팅 프로세서는 컴퓨팅 프로세서에 실행되는 비-레이턴시 감지(NLS) 프로세스들에 의한 장치의 메모리 대역폭의 현재 사용을 저장하기 위한 제1 레지스터 세트, 컴퓨팅 프로세서에서 실행되는 레이턴시 감지(LS) 프로세스들에 의한 메모리 대역폭의 현재 사용을 저장하기 위한 제2 레지스터 세트, LS 프로세스들에 대한 LS 하한을 저장하기 위한 제3 레지스터 세트, NLS 플세스들에 대한 전체 NLS 스로틀링 값을 저장하기 위한 제4 레지스터 세트, 및 스케줄러를 포함하며, 스케줄러는 하나 이상의 LS 프로세스들이 적어도 메모리 대역폭의 LS 하한을 사용하도록 요청한 후 LS 프로세스들 중 하나 이상이 적어도 메모리 대역폭의 각자의 LS 하한 양을 사용하지 않을 때를 결정하고, 전체 NLS 스로틀링 값에 기초하여 NLS 프로세스들에 대한 스로틀링 값 세트를 결정하고, 스로틀링 값 세트에 기초하여 NLS 프로세스들 중 하나 이상에 의한 메모리 대역폭의 사용을 스로틀링하도록 한다.
제3 측면의 일 실시예에서, 컴퓨팅 프로세서는 LS 프로세스들에 대한 LS 스로틀링 값을 저장하기 위한 제5 레지스터 세트 및 스케줄러를 포함하며, 상기 스케줄러는 LS 프로세스들이 적어도 메모리 대역폭의 각자의 LS 하한을 사용하도록 요청할 경우 LS 프로세스들 중 하나 이상이 적어도 메모리 대역폭의 LS 하한 양을 사용하지 않을 때 LS 프로세스들에 대한 LS 스로틀링의 양을 결정하고, 적어도 하나의 제어 사이클 동안 결정된 LS 스로틀링의 양에 기초하여 LS 프로세스들 중 하나 이상을 스로틀링하도록 더 구성된다. 다른 실시예에서, 컴퓨팅 프로세서는 제1 코어 및 제2 코어를 포함하는 멀티-코어 프로세서이며, NLS 프로세스들은 제어 사이클에서 제1 코어에서 실행되고, 스로틀링은 제어 사이클에서 제1 코어에 의한 메모리 대역폭의 소모의 감소를 적용한다.
제3 측면의 추가 실시예에서, NLS 프로세스들은 제1 NLS 프로세스를 포함한다; 컴퓨팅 프로세서는 복수의 코어들을 포함하고, 스로틀링은 컴퓨팅 프로세서에서 동일한 제어 사이클에서 실행되는 제1 NLS 프로세스의 복수의 스레드들에 적용된다. 또 다른 실시예에서, NLS 프로세스들은 제1 NLS 프로세스를 포함하고, 스케줄러는 LS 프로세스가 장치에 대한 레이턴시 제한을 벗어나 실행될 때 제1 NLS 프로세스에 레이턴시 스로틀링을 적용하도록 더 구성된다. 또 다른 실시례에서, LS 프로세스들은 제1 LS 프로세스를 포함하고, 스케줄러는 임의의 LS 프로세스가 장치에 대한 레이턴시 제한을 벗어나 실행될 대 제1 LS 프로세스에 레이턴시 스로틀링을 적용하도록 더 구성된다.
컴퓨터 판독 가능 저장 매체는 컴퓨터 시스템에 명령들 및/또는 데이터를 제공하기 위해 사용하는 동안 컴퓨터 시스템에 의해 액세스 가능한 임의의 비-일시적 저장 매체, 또는 비-일시적 저장 매체들의 조합을 포함할 수 있다. 이러한 저장 매체들은, 제한하는 것은 아니나, 광학 매체(예: 콤팩트 디스크(CD), 디지털 다목적 디스크(DVD), 블루 레이 디스크), 자기 매체(예: 플로피 디스크, 자기 테이프 또는 자기 하드 드라이브), 휘발성 메모리(예: RAM), 비-휘발성 메모리(예: ROM 또는 플래시 메모리), 또는 마이크로 전자 기계 시스템(MEMS) 기반 저장 매체를 포함할 수 있다. 컴퓨터 판독 가능 저장 매체는 컴퓨팅 시스템(예: 시스템 RAM 또는 ROM)에 내장되거나, 컴퓨팅 시스템(예: 자기 하드 드라이브)에 고정 부착되거나, 컴퓨팅 시스템(예: 광 디스크 또는 범용 직렬 버스(USB)-기반 플래시 메모리)에 제거 가능하게 부착되거나, 또는 유선 또는 무선 네트워크(예: NAS(network access storage))를 통해 컴퓨터 시스템에 결합될 수 있다.
일부 실시예들에서, 상술된 기술들의 특정 측면들은 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서들에 의해 구현될 수 있다. 소프트웨어는 비-일시적 컴퓨터 판독 가능 저장 매체에 저장되거나 아니면 유형적으로(tangibly) 구현된 하나 이상의 실행 가능 명령 세트들을 포함한다. 소프트웨어는 하나 이상의 프로세서들에 의해 실행 시 상술한 기술들 중 하나 이상의 측면들을 수행하도록 하나 이상의 프로세서를 조작하는 명령들 및 특정 데이터를 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체는 예를 들어, 자기 또는 광 디스크 저장 장치, 플래시 메모리와 같은 솔리드 스테이트 저장 장치, 캐시, 랜덤 액세스 메모리(RAM) 또는 기타 비-휘발성 메모리 장치 또는 장치들 등을 포함할 수 있다. 비-일시적 컴퓨터 판독 가능 저장 매체에 저장된 실행 가능 명령들은 소스 코드, 어셈블리어 코드, 객체 코드, 또는 하나 이상의 프로세서들에 의해 해석되거나 아니면 실행 가능한 기타 명령 포맷일 수 있다.
일반적인 설명에서 상술한 모든 활동들 또는 요소들이 필요한 것은 아니며, 특정 활동 또는 장치의 일부가 필요하지 않을 수 있으며, 설명된 것들 외에 하나 이상의 추가 활동들이 수행될 수 있거나, 또는 요소들이 포함될 수 있음에 유의한다. 또한, 활동들이 나열되는 순서가 반드시 수행되는 순서는 아니다. 또한, 개념들은 특정 실시예들을 참조하여 설명되었다. 그러나, 당업자는 이하의 청구 범위에 기재된 본 개시의 범위를 벗어나지 않고 다양한 수정들 및 변경들이 이루어질 수 있음을 이해한다. 따라서, 명세서 및 도면들은 제한적인 의미라기 보다는 예시적인 것으로 간주되어야 하며, 이러한 모든 수정들은 본 개시의 범위 내에 포함되는 것으로 의도된다.
이점들, 다른 장점들 및 문제들에 대한 해결책들이 특정 실시예들과 관련하여 상기에 설명되었다. 그러나, 이점들, 장점들, 문제에 대한 솔루션들 및 이점, 장점 또는 솔루션을 발생시키거나 더 두드러지게 만들 수 있는 임의의 특징(들)은 일부 또는 모든 청구항들의 중요하거나, 요구되거나 또는 필수 특징으로 해석되어서는 안된다. 게다가, 개시된 주제는 본원의 교시의 이점을 갖는 당업자에게 명백하게 다르지만 동등한 방식으로 수정 및 실시될 수 있으므로, 위에 개시된 특정 실시예들은 단지 예시일 뿐이다. 이하의 청구 범위에 기재된 것 이외에, 본원에 도시된 구성 또는 설계의 세부 사항들에 대한 제한은 없다. 따라서, 상기 개시된 특정 실시예들은 변경되거나 수정될 수 있으며, 이러한 모든 변형들은 개시된 주제의 범위 내에서 고려된다는 것은 명백하다. 따라서, 본원에서 요구되는 보호는 아래의 청구 범위에 명시된 바와 같다.

Claims (20)

  1. 시스템 메모리 및 운영 체제와 통신하기 위한 프로세서에 있어서, 상기 프로세서는,
    제1 프로세스 및 제2 프로세스를 실행하기 위한 복수의 프로세서 코어들; 및
    스케줄러로서,
    제1 설정값이 상기 제1 프로세스에 대한 레이턴시 감지(LS) 하한 이하일 경우 상기 제1 프로세스에 의한 제어 사이클에서의 현재 사용이 메모리 대역폭의 사용에 대응되는 상기 제1 설정값을 충족할 때까지; 또는
    상기 제1 설정값이 상기 LS 하한을 초과할 경우 상기 제1 프로세스에 의한 상기 제어 사이클의 상기 현재 사용이 상기 LS 하한을 초과할 때까지
    상기 제2 프로세스에 의한 상기 메모리 대역폭의 사용을 스케줄링하록 구성된, 상기 스케줄러를 포함하는, 프로세서.
  2. 제1항에 있어서, 상기 스케줄러는,
    추후 제어 사이클에서 상기 제1 프로세스에 의한 상기 메모리 대역폭의 사용을 추정하여 상기 제1 설정값을 결정하도록 더 구성되는, 프로세서.
  3. 제1항에 있어서,
    상기 LS 하한은 상기 프로세서의 제1 코어에 의한 상기 메모리 대역폭의 사용의 제한에 대응되고;
    상기 제1 프로세스에 대한 상기 제1 설정값은 상기 제1 코어와 연관되고;
    상기 제1 프로세스에 의한 상기 현재 사용은 상기 제1 코어에 의한 상기 메모리 대역폭의 사용인, 프로세서.
  4. 제1항에 있어서, 상기 스케줄러는,
    시스템 레이턴시 임계값을 저장하고;
    상기 시스템 레이턴시 임계값을 현재 시스템 프로세스 레이턴시와 비교하여 상기 시스템 레이턴시 임계값의 시스템 프로세스 레이턴시 위반을 결정하고;
    상기 시스템 프로세스 레이턴시 위반이 해결될 때까지 상기 제2 프로세스의 실행을 제어하도록 더 구성되는, 프로세서.
  5. 제4항에 있어서, 상기 스케줄러는,
    상기 시스템 프로세스 레이턴시 위반이 해결될 때까지 상기 제1 프로세스의 실행을 스로틀링(throttle)하도록 더 구성되는, 프로세서.
  6. 제1항에 있어서, 상기 스케줄러는,
    시스템 레이턴시 임계값을 저장하고;
    상기 시스템 레이턴시 임계값을 현재 시스템 프로세스 레이턴시와 비교하여 상기 시스템 레이턴시 임계값의 시스템 프로세스 레이턴시 위반을 결정하고;
    현재 제어 사이클에서 상기 제2 프로세스에 의한 상기 메모리 대역폭의 사용의 제한에 적어도 기초하여 상기 제1 프로세스 및 상기 제2 프로세스에 대한 제어 방식을 생성하고;
    상기 현재 제어 사이클 이후 후속 제어 사이클에서 상기 제한을 낮춤으로써 상기 현재 시스템 프로세스 레이턴시가 더이상 상기 시스템 레이턴시 임계값을 위반하지 않을 때까지 상기 제어 방식을 적용하도록 더 구성되는, 프로세서.
  7. 제6항에 있어서,
    상기 시스템 레이턴시 임계값을 위한 레지스터를 더 포함하며, 상기 레시지터는 상기 운영 체제에서 상기 제1 프로세스의 런칭 시 상기 운영 체제의 어플리케이션 프로그램 인터페이스(API)를 통해 액세스 가능한, 프로세서.
  8. 제1항에 있어서,
    상기 LS 하한을 위한 레지스터를 더 포함하며, 상기 레지스터는 상기 운영 체제에서 상기 제1 프로세스의 런칭 시 상기 운영 체제의 어플리케이션 프로그램 인터페이스(API)를 통해 액세스 가능한, 프로세서.
  9. 방법에 있어서,
    장치의 프로세스의 스케줄러에 의해, 상기 장치의 상기 프로세서에서 실행되는 비-레이턴시 감지(NLS) 프로세스들에 의한 상기 장치의 메모리 대역폭의 현재 사용을 결정하는 단계;
    상기 스케줄러에 의해, 상기 프로세서 상에서 실행되는 레이턴시 감지(LS) 프로세스에 의한 상기 메모리 대역폭의 현재 사용을 결정하는 단계;
    상기 스케줄러에 의해, 상기 LS 프로세스가 적어도 상기 메모리 대역폭의 상기 LS 하한을 사용하도록 요청할 경우 상기 현재 사용이 상기 LS 프로세스가 적어도 상기 메모리 대역폭의 LS 하한을 사용하지 않음을 나타낼 때 전체 NLS 스로틀링 값을 결정하는 단계;
    상기 스케줄러에 의해, 상기 전체 NLS 스로틀링 값에 기초하여 상기 NLS 프로세스들에 대한 스로틀링 방식을 결정하는 단계; 및
    상기 프로세서에 의해, 상기 스로틀링 방식에 기초하여 상기 NLS 프로세스들의 제1 NLS 프로세스에 제1 스로틀링을 적용하는 단계로서, 상기 제1 스로틀링은 상기 메모리 대역폭의 소모의 감소를 포함하는, 상기 적용하는 단계를 포함하는, 방법.
  10. 제9항에 있어서,
    상기 스케줄러에 의해, 상기 LS 프로세스가 적어도 LS 하한 사용량을 사용하지 않을 경우 그리고 상기 LS 프로세스가 적어도 상기 메모리 대역폭의 상기 LS 하한을 사용하도록 요청할 경우 상기 LS 프로세스에 대한 제2 스로틀링 양을 결정하는 단계; 및
    상기 프로세서에 의해, 적어도 하나의 제어 사이클 동안 상기 LS 프로세스에 상기 제2 스로틀링을 적용하는 단계를 더 포함하는, 방법.
  11. 제9항에 있어서,
    상기 프로세서는 제1 코어 및 제2 코어를 포함하는 멀티-코어 프로세서이고;
    상기 LS 프로세스는 제어 사이클에서 상기 제1 코어에서 실행되고;
    상기 제1 스로틀링은 상기 제어 사이클에서 상기 제2 코어에 의한 상기 메모리 대역폭의 소모의 감소를 적용하는, 방법.
  12. 제9항에 있어서,
    상기 프로세서는 복수의 코어들을 포함하는 멀티-코어 프로세서이고;
    상기 제1 스로틀링은 동일한 제어 사이클에서 실행되는 상기 제1 NLS 프로세스의 복수의 스레드들에 적용되는, 방법.
  13. 제9항에 있어서,
    제1 NLS 프로세스, 제2 NLS 프로세스 또는 LS 프로세스 중 하나가 상기 장치의 레이턴시 목표를 벗어나 실행될 때, 상기 스케줄러에 의한 상기 NLS 프로세스들의 상기 제1 NLS 프로세스 또는 상기 제2 NLS 프로세스에 레이턴시 스로틀링을 구현하는 단계를 더 포함하는, 방법.
  14. 제9항에 있어서,
    상기 LS 하한은 상기 LS 프로세스에 대한 인바운드 네트워크 대역폭 하한인, 방법.
  15. 컴퓨팅 프로세서에 있어서,
    상기 컴퓨팅 프로세서에서 실행되는 비-레이턴시 감지(NLS) 프로세스들에 의한 장치의 메모리 대역폭의 현재 사용을 저장하기 위한 제1 레지스터 세트;
    상기 컴퓨팅 프로세서에서 실행되는 레이턴시 감지(LS) 프로세스들에 의한 상기 메모리 대역폭의 현재 사용을 저장하기 위한 제2 레지스터 세트;
    상기 LS 프로세스들에 대한 LS 하한을 저장하기 위한 제3 레지스터 세트;
    상기 NLS 프로세스들에 대한 전체 NLS 스로틀링 값을 저장하기 위한 제4 레지스터 세트; 및
    스케줄러를 포함하되, 상기 스케줄러는,
    하나 이상의 LS 프로세스들이 적어도 상기 메모리 대역폭의 상기 LS 하한을 사용하도록 요청한 후 상기 LS 프로세스들 중 하나 이상이 적어도 상기 메모리 대역폭의 각자의 LS 하한 양을 사용하지 않을 경우를 결정하고;
    상기 전체 NLS 스로틀링 값에 기초하여 상기 NLS 프로세스들에 대한 스로틀링 값 세트를 결정하고;
    상기 스로틀링 값 세트에 기초하여 상기 NLS 프로세스들 중 하나 이상에 의한 상기 메모리 대역폭의 사용을 스로틀링하는, 컴퓨팅 프로세서.
  16. 제15항에 있어서,
    상기 LS 프로세스들에 대한 LS 스로틀링 값을 저장하기 위한 제5 레지지터 세트; 및
    상기 스케줄러를 더 포함하며, 상기 스케줄러는 추가로,
    상기 LS 프로세스들이 적어도 상기 메모리 대역폭의 각자의 LS 하한을 사용하도록 요청할 경우 상기 LS 프로세스들 중 하나 이상이 적어도 상기 메모리 대역폭의 LS 하한 양을 사용하지 않을 경우 상기 LS 프로세스들에 대한 LS 스로틀링의 양을 결정하고;
    적어도 하나의 제어 사이클 동안 상기 결정된 LS 스로틀링의 양에 기초하여 상기 LS 프로세스들 중 하나 이상을 스로틀링하는, 컴퓨팅 프로세서.
  17. 제15항에 있어서,
    상기 컴퓨팅 프로세서는 제1 코어 및 제2 코어를 포함하는 멀티-코어 프로세서이고;
    상기 NLS 프로세스들은 제어 사이클에서 상기 제1 코어에서 실행되고;
    스로틀링은 상기 제어 사이클에서 상기 제1 코어에 의한 상기 메모리 대역폭의 소모의 감소를 적용하는, 컴퓨팅 프로세서.
  18. 제15항에 있어서,
    상기 NLS 프로세스들은 제1 NLS 프로세스를 포함하고;
    상기 컴퓨팅 프로세서는 복수의 코어들을 포함하고;
    스로틀링은 상기 컴퓨팅 프로세서에서 동일한 제어 사이클에서 실행되는 제1 NLS 프로세스의 복수의 스레드들에 적용되는, 컴퓨팅 프로세서.
  19. 제15항에 있어서,
    상기 NLS 프로세스들은 제1 NLS 프로세스를 포함하고;
    상기 스케줄러는 추가로,
    임의의 LS 프로세스가 상기 장치에 대한 레이턴시 제한을 벗어나 실행될 경우 상기 제1 NLS 프로세스에 레이턴시 스로틀링을 적용하는, 컴퓨팅 프로세서.
  20. 제15항에 있어서,
    상기 LS 프로세들은 제1 LS 프로세스를 포함하고;
    상기 스케줄러는 추가로,
    임의의 LS 프로세스가 상기 장치에 대한 레이턴시 제한을 벗어나 실행될 경우 상기 제1 LS 프로세스에 레이턴시 스로틀링을 적용하는, 컴퓨팅 프로세서.
KR1020207021114A 2017-12-20 2018-09-18 서비스 하한 품질에 기초한 메모리 대역폭 스케줄링 KR102430934B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/849,266 2017-12-20
US15/849,266 US10700954B2 (en) 2017-12-20 2017-12-20 Scheduling memory bandwidth based on quality of service floorbackground
PCT/US2018/051593 WO2019125557A1 (en) 2017-12-20 2018-09-18 Scheduling memory bandwidth based on quality of service floorbackground

Publications (2)

Publication Number Publication Date
KR20200090957A true KR20200090957A (ko) 2020-07-29
KR102430934B1 KR102430934B1 (ko) 2022-08-08

Family

ID=66816568

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207021114A KR102430934B1 (ko) 2017-12-20 2018-09-18 서비스 하한 품질에 기초한 메모리 대역폭 스케줄링

Country Status (6)

Country Link
US (1) US10700954B2 (ko)
EP (1) EP3729282A4 (ko)
JP (1) JP7109549B2 (ko)
KR (1) KR102430934B1 (ko)
CN (1) CN111512291A (ko)
WO (1) WO2019125557A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561834B2 (en) * 2019-01-16 2023-01-24 Rambus Inc. Methods and systems for adaptive memory-resource management
US11314558B2 (en) * 2019-07-23 2022-04-26 Netapp, Inc. Methods for dynamic throttling to satisfy minimum throughput service level objectives and devices thereof
US11169812B2 (en) * 2019-09-26 2021-11-09 Advanced Micro Devices, Inc. Throttling while managing upstream resources
CN111444012B (zh) * 2020-03-03 2023-05-30 中国科学院计算技术研究所 一种保证延迟敏感应用延迟slo的动态调控资源方法及系统
JP2021170241A (ja) * 2020-04-16 2021-10-28 富士通株式会社 情報処理装置及び制御プログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130042307A1 (en) * 2011-08-11 2013-02-14 Fujitsu Limited Communication method and information processing system
US20130128682A1 (en) * 2011-11-17 2013-05-23 International Business Machines Corporation Memory system with dynamic refreshing
US20130297906A1 (en) * 2012-05-07 2013-11-07 Gabriel H. Loh Method and apparatus for batching memory requests
US20140082625A1 (en) * 2012-09-14 2014-03-20 International Business Machines Corporation Management of resources within a computing environment
US20140082630A1 (en) * 2011-12-30 2014-03-20 Boris Ginzburg Providing an asymmetric multicore processor system transparently to an operating system
US20170286179A1 (en) * 2016-04-05 2017-10-05 Netapp, Inc. Methods and systems for managing service level objectives in a networked storage environment

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060004983A1 (en) * 2004-06-30 2006-01-05 Tsao Gary Y Method, system, and program for managing memory options for devices
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US8230069B2 (en) * 2008-03-04 2012-07-24 International Business Machines Corporation Server and storage-aware method for selecting virtual machine migration targets
WO2010095182A1 (ja) 2009-02-17 2010-08-26 パナソニック株式会社 マルチスレッドプロセッサ及びデジタルテレビシステム
US8819686B2 (en) * 2009-07-23 2014-08-26 Empire Technology Development Llc Scheduling threads on different processor cores based on memory temperature
US9116738B2 (en) 2012-11-13 2015-08-25 International Business Machines Corporation Method and apparatus for efficient execution of concurrent processes on a multithreaded message passing system
US9535860B2 (en) 2013-01-17 2017-01-03 Intel Corporation Arbitrating memory accesses via a shared memory fabric
US9483423B2 (en) 2013-05-17 2016-11-01 Nvidia Corporation Techniques for assigning priorities to memory copies
US9489321B2 (en) 2013-06-13 2016-11-08 Advanced Micro Devices, Inc. Scheduling memory accesses using an efficient row burst value
WO2015130291A1 (en) 2014-02-27 2015-09-03 Empire Technology Development, Llc Thread and data assignment in multi-core processors
US9424092B2 (en) * 2014-09-26 2016-08-23 Microsoft Technology Licensing, Llc Heterogeneous thread scheduling
US9921866B2 (en) * 2014-12-22 2018-03-20 Intel Corporation CPU overprovisioning and cloud compute workload scheduling mechanism
US9645935B2 (en) 2015-01-13 2017-05-09 International Business Machines Corporation Intelligent bandwidth shifting mechanism
US10503458B2 (en) * 2016-07-28 2019-12-10 Intelligent Waves Llc System, method and computer program product for generating remote views in a virtual mobile device platform using efficient macroblock comparison during display encoding, including efficient detection of unchanged macroblocks
US10185659B2 (en) * 2016-12-09 2019-01-22 Cray, Inc. Memory allocation system for multi-tier memory
US10776309B2 (en) * 2016-12-31 2020-09-15 Intel Corporation Method and apparatus to build a monolithic mesh interconnect with structurally heterogenous tiles

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130042307A1 (en) * 2011-08-11 2013-02-14 Fujitsu Limited Communication method and information processing system
US20130128682A1 (en) * 2011-11-17 2013-05-23 International Business Machines Corporation Memory system with dynamic refreshing
US20140082630A1 (en) * 2011-12-30 2014-03-20 Boris Ginzburg Providing an asymmetric multicore processor system transparently to an operating system
US20130297906A1 (en) * 2012-05-07 2013-11-07 Gabriel H. Loh Method and apparatus for batching memory requests
US20140082625A1 (en) * 2012-09-14 2014-03-20 International Business Machines Corporation Management of resources within a computing environment
US20170286179A1 (en) * 2016-04-05 2017-10-05 Netapp, Inc. Methods and systems for managing service level objectives in a networked storage environment

Also Published As

Publication number Publication date
WO2019125557A1 (en) 2019-06-27
JP7109549B2 (ja) 2022-07-29
KR102430934B1 (ko) 2022-08-08
JP2021508108A (ja) 2021-02-25
CN111512291A (zh) 2020-08-07
US10700954B2 (en) 2020-06-30
EP3729282A1 (en) 2020-10-28
EP3729282A4 (en) 2021-05-05
US20190190805A1 (en) 2019-06-20

Similar Documents

Publication Publication Date Title
KR102430934B1 (ko) 서비스 하한 품질에 기초한 메모리 대역폭 스케줄링
EP3447607B1 (en) Credit based command scheduling
Tavakkol et al. FLIN: Enabling fairness and enhancing performance in modern NVMe solid state drives
US10747451B2 (en) Auto allocation of storage system resources to heterogeneous categories of resource consumer
Jung et al. HIOS: A host interface I/O scheduler for solid state disks
US9104453B2 (en) Determining placement fitness for partitions under a hypervisor
US20150178116A1 (en) Providing service quality levels through cpu scheduling
US9411649B2 (en) Resource allocation method
US9201681B2 (en) Method and controller device for quality of service (QOS) caching in a virtualized environment
JP2011515776A (ja) 電力認識スレッドスケジューリングおよびプロセッサーの動的使用
US10908955B2 (en) Systems and methods for variable rate limiting of shared resource access
JP6895235B2 (ja) 環境的に調整されたスラックを割り当てるためのシステム及び方法
US20130223216A1 (en) QoS AWARE BALANCING IN DATA CENTERS
TWI533146B (zh) 虛擬資源調整裝置、方法及儲存其之電腦可讀取紀錄媒體
JP2012133630A (ja) ストレージリソース制御システムおよびストレージリソース制御プログラムならびにストレージリソース制御方法
CN103744808A (zh) 一种用于控制i/o请求的方法与设备
KR20100074920A (ko) 멀티코어 시스템에서의 로드 밸런싱 장치 및 방법
CN113342477A (zh) 一种容器组部署方法、装置、设备及存储介质
Zini et al. Analyzing arm's mpam from the perspective of time predictability
US10684964B1 (en) System and method for reducing read latency in storage devices
CN110795323A (zh) 负载统计方法、装置、存储介质及电子设备
KR101924467B1 (ko) 가상 머신의 cpu 및 블록 i/o 작업에 성능 보장을 위한 자원 할당 시스템 및 방법
US11321022B2 (en) Systems and methods for scheduling flash operations
KR20210007417A (ko) 멀티-코어 시스템 및 그 동작 제어 방법
US9389919B2 (en) Managing workload distribution among computer systems based on intersection of throughput and latency models

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant