KR20160055273A - 메모리 자원 최적화 방법 및 장치 - Google Patents

메모리 자원 최적화 방법 및 장치 Download PDF

Info

Publication number
KR20160055273A
KR20160055273A KR1020167009977A KR20167009977A KR20160055273A KR 20160055273 A KR20160055273 A KR 20160055273A KR 1020167009977 A KR1020167009977 A KR 1020167009977A KR 20167009977 A KR20167009977 A KR 20167009977A KR 20160055273 A KR20160055273 A KR 20160055273A
Authority
KR
South Korea
Prior art keywords
program
policy
llc
partitioning
coloring
Prior art date
Application number
KR1020167009977A
Other languages
English (en)
Other versions
KR101761301B1 (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 KR20160055273A publication Critical patent/KR20160055273A/ko
Application granted granted Critical
Publication of KR101761301B1 publication Critical patent/KR101761301B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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
    • 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/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • 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
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/653Page colouring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시예는 컴퓨터 분야에 관한 것으로서, 현존하는 멀티-레벨 메모리 자원이 상호 영향을 주는 문제를 해결하고, 현존하는 단일 분할 메커니즘을 최적화하는, 메모리 자원 최적화 방법 및 장치를 제공한다. 구체적인 해결수단은, 페이지 컬러링 기술을 사용하여 워킹 세트 안의 각 프로그램의 성능 데이터를 획득하고, 메모리 접근 빈도를 고려하여 각 프로그램의 카테고리를 획득하고, 각 프로그램의 상기 카테고리에 따라 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택하고, 운영 체제 커널에 페이지 컬러링-기반 분할 정책을 기록하여 컬러링-기반 분할 프로세싱을 완료한다. 본 발명은 워킹 세트의 특성을 고려하여 저장 자원 상의 프로세서 또는 쓰레이의 상호 간섭을 제거 또는 감소하기 위해 사용되어, 그로 인해 컴퓨터의 전반적인 성능을 개선한다.

Description

메모리 자원 최적화 방법 및 장치{MEMORY RESOURCE OPTIMIZATION METHOD AND APPARATUS}
본 발명은 컴퓨터 분야에 관한 것이고, 특히 메모리 자원 최적화 방법 및 장치에 관한 것이다.
최근 멀티코어 고성능 컴퓨터(Multi-core High Performance Computer)가 널리 응용되고 있다. 더욱이 프로세서 안의 연산 유닛(코어) 개수가 증가하면서, 다중 코어 간의 경쟁(contention) 현상이 문제를 더욱 복잡하게 하고 있다. 동시 실행(concurrent execution)의 임의의 시점에서 서로 다른 코어로부터의 메모리 접근 요청은 전반적인 저장 자원에 메모리 접근을 위해 경쟁할 수 있고, 추가로 MC(Memory Controller), 대역폭, DRAM 뱅크(dynamic random access memory bank) 같은 자원들 상의 충돌(conflict)을 유발할 수 있고, 결과적으로 자원의 이용이 영향을 받는다.
주메모리에 접근하는 것이 사례로 이용된다. 통상 하나의 트랜지스터가 저장 유닛으로 이용되고, N*M 저장 유닛이 하나의 저장 매트릭스를 형성하고, 몇몇 저장 매트릭스가 뱅크(Bank)를 이룬다. 각 뱅크는 행-버퍼(Row-Buffer)를 구비한다; 데이터가 접근될 때, 타겟 행의 데이터는 데이터가 행-버퍼로 이동되어야만 독출된다. 현대 DRAM 시스템은 통상 다중 뱅크를 사용하고, 각 메모리 접근 요청은 동시에 독립적으로 처리된다. 그러나 서로 다른 프로세스 또는 쓰레드(thread)로부터 온 2개의 메모리 접근 요청이 하나의 DRAM 뱅크의 서로 다른 행에 접근한다면, DRAM 뱅크 상의 충돌(또는 행-버퍼 충돌이라 칭함)이 발생하고, 메모리 접근 지연이 증가한다. 캐시(Cache)는 연산 유닛과 주 메모리 간의 차이를 완화하기 위해 사용된다. 캐시는 주메모리보다 연산 유닛에 더 근접하기 때문에 캐시는 연산 성능에 더 쉽게 영향을 준다. 현존하는 프로세서는 기본적으로 다중 코어 간에 LLC(Last Level Cache)를 공유하는 구조를 채용한다. 그러나 LLC도 다중 동시실행 프로그램 또는 쓰레드 간에 집중적인 경쟁이 존재한다. 적절한 관리 정책이 채용되지 않으면 심각한 성능 열화를 야기하기 쉽다.
종래 기술에서 LLC 또는 DRAM 뱅크가 페이지 컬러링(Page-Coloring)을 이용하여 분할되었다. 페이지 컬러링-기반 LLC 분할에 대해서는, 물리 주소의 캐시 세트(Cache Set)의 인덱스 비트 상에서 페이지 컬러링을 수행하는 방식으로 캐시 자원이 몇몇 독립된 부분으로 분할되고, 그 부분들은 서로 다른 쓰레드에 각각 할당된다. 그러므로 캐시를 공유함으로 인한 쓰레드 간 경쟁은 사라진다. LLC 분할과 유사하게 DRAM 뱅크의 인덱스 비트도 물리 주소에서 반영될 수 있고, DRAM 뱅크도 이러한 주소 비트에 의한 컬러링을 수행함을써 몇 개의 독립된 그룹으로 분할될 수 있다; 그러므로 DRAM 뱅크 상의 프로그램 간 경쟁은 사라진다. 어떤 워킹 세트(working set)에 대해서는 비교적 좋은 성능 개선 효과가 달성될 수 있다.
그러나, 전통적인 페이지 컬러링 기술이 하나의 레벨의 자원을 분할하는 데 사용될 때, 또 다른 레벨의 자원을 이용에 대해 부정적인 영향이 발생되었다. 예를 들어, LLC 분할과 관련된 작업은 DRAM 뱅크 자원의 성능 개선에 제약이 있다. 유사하게, DRAM 뱅크 분할과 관련된 작업은 LLC 자원의 성능에 영향을 미친다. 게다가, 현대의 컴퓨터 시스템의 운용은 다양한 워킹 세트를 요구하기 때문에, 하나의 레벨에서의 자원에 대한 기존의 하나의 페이지 컬러링-기반 분할 방법은 다른 워킹 세트의 특성과 조화되기 어렵다; 결과적으로 최적화된 분할 효과는 달성될 수 없고, 컴퓨터의 전반적인 성능 개선은 제한된다.
본 발명의 실시예는 메모리 자원 최적화 방법 및 장치를 제공하고, LLC와 DRAM 뱅크 간의 협력적 분할 정책을 제공하는데, 여기서 상기 정책은 워킹 세트의 특성과 결합하여, 저장 자원 상에서 프로세스 또는 쓰레드가 서로 영향을 주는 문제를 해결할 수 있어서, 컴퓨터의 전반적인 성능이 향상된다.
전술한 목적을 달성하기 위해, 본 발명의 실시예에서 하기 기술적 해결수단이 사용되었다.
제1 측면에 따르면, 메모리 자원 최적화 방법이 제공되고, 상기 방법은,
워킹 세트(working set) 안의 각 프로그램의 성능 데이터를 획득하는 단계; 상기 각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교함에 의해 각 프로그램을 분류하는 단계 - 상기 각 프로그램의 성능 데이터는 각 프로그램의 기설정된 성능 지표가, 할당된 LLC(last level cache) 자원의 용량에 따라 변화할 때 생성되는 변화량임 -;
상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책(page coloring-based partitioning policy)을 선택하는 단계 - 상기 페이지 컬러링-기반 분할 정책은, LLC 및 DRAM 뱅크(dynamic random access memory bank) 모두에 대해 페이지 컬러링-기반 분할을 수행하기 위한 페이지 컬러링-기반 협력적 분할 정책(page coloring-based collaborative partitioning policy)을 포함함 -; 및
상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 운영체계 커널(kernel)에 기록하는 단계 - 상기 운영체계 커널은 대응하는 페이지 컬러링-기반 분할 프로세싱을 수행함 -;를 포함한다.
제1 측면에 관하여, 제1 구현방식 중, 상기 워킹 세트 안의 각 프로그램의 성능 데이터를 획득하는 단계는,
상기 LLC 자원을 페이지 컬러링 기술을 이용하여 N개의 부분으로 분할하고, 상기 LLC 자원의 최대 용량의 1/N을 1 레벨로 하고, 처음에는 상기 LLC 자원의 최대 용량을 각 프로그램에 할당하고, 상기 용량이 상기 LLC 자원의 최대 용량의 1/N로 감소할 때까지 각 조정(adjustment)마다 1 레벨만큼 각 프로그램에 할당된 LLC 자원을 감소시키는 단계; 및
각 프로그램의 기설정된 성능 지표가 조정 프로세스에서 상기 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량을 모니터링하고, 상기 변화량을 상기 각 프로그램의 성능 데이터로 이용하는 단계를 포함하고 상기 기설정된 성능 지표는 각 프로그램의 가속비(speed-up ratio)이다.
제1 측면 또는 제1 측면의 제1 가능한 구현 방식에 대해서, 제2 가능한 구현 방식 중, 상기 각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교함에 의해 각 프로그램을 분류하는 단계는,
실행 프로세스의 기설정된 스테이지에서 각 프로그램이 주메모리에 접근하는 횟수를 세어, 각 프로그램의 메모리 접근 빈도를 획득하는 단계;
각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교하는 단계 - 상기 성능 데이터 문턱값은 제1 문턱값, 제2 문턱값 및 제3 문턱값을 포함하고, 제1 문턱값 및 제2 문턱값은 성능 데이터 문턱값이고, 제3 문턱값은 메모리 접근 빈도 문턱값임 -; 및
프로그램의 성능 데이터가 제1 문턱값보다 더 크면 상기 프로그램을 고수요 유형(high demand type)으로 분류하거나, 또는
프로그램의 성능 데이터가 제1 문턱값보다 더 작고 제2 문턱값보다 더 크면 상기 프로그램을 중수요 유형(medium demand type)으로 분류하거나, 또는
프로그램의 성능 데이터가 제2 문턱값보다 더 작고 상기 프로그램의 메모리 접근 빈도가 제3 문턱값보다 크면 상기 프로그램을 저수요 및 집중적 유형(low demand and intensive type)으로 분류하는 단계;를 포함한다.
제1 측면에 대해서, 제3 가능한 구현 방식 중, 상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택하는 단계는,
상기 기설정된 결정 정책은, 운영체계 커널 안에서의 분할 정책 결정 트리이고, 상기 분할 정책 결정 트리는 알고리즘 형태로 운영체계 안에서 구현되고,
워킹 세트 안에 각 프로그램의 분류를 운영체계 커널에 입력하고, 상기 워킹 세트 안의 각 프로그램의 분류를 고려하여 해당 노드에 대한 운영체계 커널 안에 있는 상기 분할 정책 결정 트리를 검색하여, 상기 워킹 세트에 대응하는 페이징 컬러링-기반 분할 정책을 결정하는 단계를 포함한다.
제1 측면의 제3 가능한 구현 방식에 대해서, 제4 가능한 구현 방식 중, 상기 페이지 컬러링-기반 분할 정책은 컬러링-기반 협력적 분할 정책(page coloring-based collaborative partitioning policy) 및 컬러링-기반 비협력적 분할 정책(page coloring-based non-collaborative partitioning policy)을 포함하고,
상기 페이지 컬러링-기반 협력적 분할 정책은 중첩된 인덱스 주소 비트(O-비트: overlapped index address bits)를 페이지 컬러링-기반 분할 인덱스 비트로 사용하는 분할 정책이고, O-비트는 물리적인 페이지 프레임에서 LLC의 인덱스 비트 및 DRAM 뱅크 인덱스 비트의 중첩된 주소 비트이고, 또한 LLC 및 DRAM 뱅크 모두에 대한 페이지 컬러링-기반 분할을 인덱스하기 위해 사용되며; 또한
상기 페이지 컬러링-기반 협력적 분할 정책은,
카테고리 A 다중레벨 메모리 협력적 분할정책(A-MMCP: category A multi-level memory collaborative partitioning policy) - O-비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 동일 수량의 등분(equal portion)으로 분할됨 -;
카테고리 B 다중레벨 메모리 협력적 분할정책(B-MMCP: category B multi-level memory collaborative partitioning policy) - O-비트 및 DRAM 뱅크의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 큼 -; 및
카테고리 C 다중레벨 메모리 협력적 분할정책(C-MMCP: category C multi-level memory collaborative partitioning policy) - O-비트 및 LLC의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 작음 -;을 포함하고,
상기 페이지 컬러링-기반 협력적 분할 정책은 O-비트가 사용되지 않는 분할 정책이며,
캐시-단독(Cache-Only) 정책 - 페이지 컬러링-기반 분할이 LLC의 인덱스 비트를 사용함으로써 LLC에 대해 수행되고, 컬러링-기반 분할이 DRAM 뱅크에 대해서는 수행되지 않음 -; 및
뱅크-단독(Bank-Only) 정책 - 컬러링-기반 분할이 DRAM 뱅크의 인덱스 비트를 사용함으로써 DRAM 뱅크에 대해 수행되고, 컬러링-기반 분할이 LLC에 대해서는 수행되지 않음 -; 을 포함한다.
제1 측면의 제3 가능한 구현 방식 또는 제1 측면의 제4 가능한 구현 방식에 대해서, 제5 가능한 구현 방식 중, 상기 워킹 세트 안의 각 프로그램의 분류를 고려하여 해당 노드에 대한 운영체계 커널 안에 있는 상기 분할 정책 결정 트리를 검색하여, 상기 워킹 세트에 대응하는 페이징 컬러링-기반 분할 정책을 결정하는 단계는,
상기 워킹 세트 안의 각 프로그램의 카테고리가 고수요 유형이면, 뱅크-단독 정책을 선택하는 단계; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 저수요 및 집중적 유형이 있으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 C-MMCP를 선택하는 단계 - N은 프로세서의 코어의 수량임 -; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 중수요 유형이 있고 저수요 및 집중적 유형이 없으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 B-MMCP를 선택하는 단계 - N은 프로세서의 코어의 수량임 -;를 포함한다.
제2 측면에 따르면, 메모리 자원 최적화 장치가 제공되고, 상기 장치는,
워킹 세트(working set) 안의 각 프로그램의 성능 데이터를 획득하고, 상기 각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교함에 의해 각 프로그램을 분류하는 - 상기 각 프로그램의 성능 데이터는 각 프로그램의 기설정된 성능 지표가, 할당된 LLC(last level cache) 자원의 용량에 따라 변화할 때 생성되는 변화량임 - 전단 유닛(front end unit);
상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택하도록 구성된 결정 유닛 - 상기 페이지 컬러링-기반 분할 정책은, LLC 및 DRAM 뱅크(dynamic random access memory bank) 모두에 대해 페이지 컬러링-기반 분할을 수행하기 위한 페이지 컬러링-기반 협력적 분할 정책을 포함함 -; 및
상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 운영체계 커널에 기록하도록 구성된 분할 유닛 - 상기 운영체계 커널은 페이지 컬러링-기반 분할 프로세싱을 수행함 -;을 포함한다.
제2 측면에 관하여, 제1 구현방식 중, 상기 전단 유닛은 데이터 수집 유닛을 포함하고, 상기 데이터 수집 유닛은 구체적으로,
상기 LLC 자원을 페이지 컬러링 기술을 이용하여 N개의 부분으로 분할하고, 상기 LLC 자원의 최대 용량의 1/N을 1 레벨로 하고, 처음에는 상기 LLC 자원의 최대 용량을 각 프로그램에 할당하고, 상기 용량이 상기 LLC 자원의 최대 용량의 1/N로 감소할 때까지 각 조정(adjustment)마다 1 레벨만큼 각 프로그램에 할당된 LLC 자원을 감소시키고; 및
각 프로그램의 기설정된 성능 지표가 조정 프로세스에서 상기 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량을 모니터링하고, 상기 변화량을 상기 각 프로그램의 성능 데이터로 이용하는 단계를 포함하고 상기 기설정된 성능 지표는 각 프로그램의 가속비(speed-up ratio)이다.
제2 측면 또는 제2 측면의 제1 가능한 구현 방식에 대해서, 제2 가능한 구현 방식 중, 상기 전단 유닛은 분류 유닛을 더 포함하고, 상기 분류 유닛은 구체적으로,
실행 프로세스의 기설정된 스테이지에서 각 프로그램이 주메모리에 접근하는 횟수를 세어, 각 프로그램의 메모리 접근 빈도를 획득하고;
각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교하고 - 상기 성능 데이터 문턱값은 제1 문턱값, 제2 문턱값 및 제3 문턱값을 포함하고, 제1 문턱값 및 제2 문턱값은 성능 데이터 문턱값이고, 제3 문턱값은 메모리 접근 빈도 문턱값임 -; 및
프로그램의 성능 데이터가 제1 문턱값보다 더 크면 상기 프로그램을 고수요 유형(high demand type)으로 분류하거나, 또는
프로그램의 성능 데이터가 제1 문턱값보다 더 작고 제2 문턱값보다 더 크면 상기 프로그램을 중수요 유형(medium demand type)으로 분류하거나, 또는
프로그램의 성능 데이터가 제2 문턱값보다 더 작고 상기 프로그램의 메모리 접근 빈도가 제3 문턱값보다 크면 상기 프로그램을 저수요 및 집중적 유형(low demand and intensive type)으로 분류한다.
제2 측면에 대해서, 제3 가능한 구현 방식 중, 상기 기설정된 결정 정책은, 운영체계 커널 안에서의 분할 정책 결정 트리이고, 상기 분할 정책 결정 트리는 알고리즘 형태로 운영체계 안에서 구현되고, 상기 결정 유닛은 구체적으로,
워킹 세트 안에 각 프로그램의 분류를 운영체계 커널에 입력하고, 상기 워킹 세트 안의 각 프로그램의 분류를 고려하여 해당 노드에 대한 운영체계 커널 안에 있는 상기 분할 정책 결정 트리를 검색하여, 상기 워킹 세트에 대응하는 페이징 컬러링-기반 분할 정책을 결정한다.
제2 측면의 제3 가능한 구현 방법에 대해서, 제4 가능한 구현 방식 중, 상기 페이지 컬러링-기반 분할 정책은 컬러링-기반 협력적 분할 정책 및 컬러링-기반 비협력적 분할 정책을 포함하고,
상기 페이지 컬러링-기반 협력적 분할 정책은 중첩된 인덱스 주소 비트(O-비트: overlapped index address bits)를 페이지 컬러링-기반 분할 인덱스 비트로 사용하는 분할 정책이고, O-비트는 물리적인 페이지 프레임에서 LLC의 인덱스 비트 및 DRAM 뱅크 인덱스 비트의 중첩된 주소 비트이고, 또한 LLC 및 DRAM 뱅크 모두에 대한 페이지 컬러링-기반 분할을 인덱스하기 위해 사용되며; 또한
상기 페이지 컬러링-기반 협력적 분할 정책은,
카테고리 A 다중레벨 메모리 협력적 분할정책(A-MMCP: category A multi-level memory collaborative partitioning policy) - O-비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 동일 수량의 등분(equal portion)으로 분할됨 -;
카테고리 B 다중레벨 메모리 협력적 분할정책(B-MMCP: category B multi-level memory collaborative partitioning policy) - O-비트 및 DRAM 뱅크의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 큼 -; 및
카테고리 C 다중레벨 메모리 협력적 분할정책(C-MMCP: category C multi-level memory collaborative partitioning policy) - O-비트 및 LLC의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 작음 -;을 포함하고,
상기 페이지 컬러링-기반 협력적 분할 정책은 O-비트가 사용되지 않는 분할 정책이며,
캐시-단독(Cache-Only) 정책 - 페이지 컬러링-기반 분할이 LLC의 인덱스 비트를 사용함으로써 LLC에 대해 수행되고, 컬러링-기반 분할이 DRAM 뱅크에 대해서는 수행되지 않음 -; 및
뱅크-단독(Bank-Only) 정책 - 컬러링-기반 분할이 DRAM 뱅크의 인덱스 비트를 사용함으로써 DRAM 뱅크에 대해 수행되고, 컬러링-기반 분할이 LLC에 대해서는 수행되지 않음 -; 을 포함한다.
제2 측면의 제3 가능한 구현 방법 또는 제2 측면의 제4 가능한 구현 방법에 대해서, 제5 가능한 구현 방법 중, 상기 결정 유닛은 더 구체적으로,
상기 워킹 세트 안의 각 프로그램의 카테고리가 고수요 유형이면, 뱅크-단독 정책을 선택하거나; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 저수요 및 집중적 유형이 있으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 C-MMCP를 선택하거나 - N은 프로세서의 코어의 수량임 -; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 중수요 유형이 있고 저수요 및 집중적 유형이 없으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 B-MMCP를 선택하고, N은 프로세서의 코어의 수량이다.
본 발명의 실시예에 제공된 메모리 자원 최적화 방법 및 장치에 따라, LLC 자원이 페이지 컬러링 기술에 의해 분할되고, 워킹 세트 안의 각 프로그램의 성능 데이터를 획득되고, 메모리 접근 빈도를 고려하여 각 프로그램의 카테고리가 획득되고, 상기 위킹 세트에 대응하는 페이지 컬러링-기반 분할 정책이 각 프로그램의 카테고리에 따라 선택되고, 페이지 컬러링-기반 분할 정책이 운영체제 커널에 기록되어, 대응하는 컬러링-기반 분할 프로세싱을 완료한다. 이런 방법으로 LLC 및 DRAM 뱅크 간의 협력적 분할 정책이 워킹 세트의 특성을 고려하여 구현되고, 저장 자원 상의 프로세스 또는 쓰레드의 상호간섭은 감소되고 제거될 수 있으며, 이로써 컴퓨터의 전반적인 성능을 개선한다.
본 발명의 실시예 안에 있거나 종래 기술 안에 있는 기술적 해결수단을 좀 더 명확하게 기술하기 위해, 하기 내용은 실시예 또는 종래기술을 기술하는 데 필요한 첨부된 도면을 간략하게 소개한다. 명백하게, 하기 발명의 상세한 설명에 첨부된 도면은 단지 본 발명의 몇몇 실시예를 도시할 뿐이고, 이 기술분야의 통상의 기술자는 창의적 노력 없이 이러한 첨부된 도면으로부터 다른 도면을 도출할 수 있다.
도 1은 본 발명의 일 실시예에 의한 메모리 자원 최적화 방법의 도식적인 흐름도이다.
도 2는 본 발명의 일 실시예에 의한 다른 메모리 자원 최적화 방법의 도식적인 흐름도이다.
도 3은 본 발명의 일 실시예에 의한 프로그램 분류 효과의 도식적 다이어그램이다.
도 4는 본 발명의 일 실시예에 의한 메모리 자원 최적화 장치의 도식적 구조 다이어그램 1이다.
도 5는 본 발명의 일 실시예에 의한 메모리 자원 최적화 장치의 도식적 구조도 2이다.
도 6은 본 발명의 일 실시예에 의한 메모리 자원 최적화 장치의 도식적 구조도 3이다.
하기 내용은 본 발명의 실시예의 첨부된 도면에 대하여 본 발명의 실시예 안에 있는 기술적 해결수단을 완전히 기술한다. 명백하게 기술된 실시예는 본 발명의 실시예의 몇몇이고 전부는 아니다. 본 발명의 실시예에 기반하여 창의적 노력 없이 이 기술분야의 통상의 기술자에 의해 획득될 수 있는 다른 모든 실시예들은 본 발명의 보호 범위 안에 포함되어야 한다.
본 발명의 실시예는 메모리 자원 최적화 방법을 제공한다. 도 1에 도시된 바와 같이, 상기 방법은 다음을 포함한다.
S101: 워킹 세트(working set) 안의 각 프로그램의 성능 데이터를 획득하는 단계; 상기 각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교함에 의해 각 프로그램을 분류한다 - 상기 각 프로그램의 성능 데이터는 각 프로그램의 기설정된 성능 지표가, 할당된 LLC(last level cache) 자원의 용량에 따라 변화할 때 생성되는 변화량임 -;
S102: 상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책(page coloring-based partitioning policy)을 선택한다 - 상기 페이지 컬러링-기반 분할 정책은, LLC 및 DRAM 뱅크(dynamic random access memory bank) 모두에 대해 페이지 컬러링-기반 분할을 수행하기 위한 페이지 컬러링-기반 협력적 분할 정책(page coloring-based collaborative partitioning policy)을 포함함 -.
S103: 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 운영체계 커널(kernel)에 기록한다 - 상기 운영체계 커널은 대응하는 페이지 컬러링-기반 분할 프로세싱을 수행함 -.
본 발명의 실시예에 제공된 메모리 자원 최적화 방법에 따라, 워킹 세트 안의 각 프로그램의 성능 데이터를 획득되고, 메모리 접근 빈도를 고려하여 각 프로그램의 카테고리가 획득되고, 상기 위킹 세트에 대응하는 페이지 컬러링-기반 분할 정책이 각 프로그램의 카테고리에 따라 선택되고, 페이지 컬러링-기반 분할 정책이 운영체제 커널에 기록되어, 대응하는 컬러링-기반 분할 프로세싱을 완료한다. 이런 방법으로 LLC 및 DRAM 뱅크 간의 협력적 분할 정책이 워킹 세트의 특성을 고려하여 구현되고, 저장 자원 상의 프로세스 또는 쓰레드의 상호간섭은 감소되고 제거될 수 있으며, 이로써 컴퓨터의 전반적인 성능을 개선한다.
이 기술분야의 통상의 기술자가 본 발명의 실시예에 의해 제공된 기술적 해결수단을 더욱 명확하게 이해하도록 하기 위해, 하기 내용은 본 발명의 실시예에 의해 제공된 다른 메모리 자원 최적화 방법을 구체적 사례를 이용하여 구체적으로 기술한다. 도 2에 도시된 바와 같이, 상기 방법은 다음을 포함한다.
S201: 워킹 세트(working set) 안의 각 프로그램의 성능 데이터를 획득한다.
구체적으로 LLC 자원은 페이지 컬러링 기술을 이용하여 분할되고, LLC 자원은 N개 부분으로 분할되고, LLC 자원의 최대 용량의 1/N이 하나의 레벨로 간주된다. 처음에는 LLC 자원의 최대 용량이 각 프로그램에 할당되고, 각 프로그램에 할당된 LLC 자원이 상기 LLC 자원의 최대 용량의 1/N로 감소할 때까지, 각 프로그램에 할당된 LLC 자원의 용량이 각 조정(adjustment)마다 1 레벨만큼 감소된다; 각 프로그램의 기설정된 성능 지표가 상기 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량이 조정 프로세스에서 모니터링되고, 상기 변화량이 상기 각 프로그램의 성능 데이터로 이용된다.
예를 들어, 쿼드-코어 프로세서(quad-core processor)에서는, N은 8일 수 있고, LLC 자원의 최대 용량의 1/8이 1 레벨로 되고, 워킹 세트의 각 프로그램에 할당된 LLC 자원의 용량이 조정되고, 각 프로그램에 할당된 LLC 자원이 LLC 자원의 최대 용량의 1/8로 감소할 때까지 각 조정(adjustment)마다 1 레벨만큼 각 프로그램에 할당된 LLC 자원이 감소된다; 각 프로그램의 기설정된 성능 지표가 조정 프로세스에서 상기 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량이 모니터링된다.
각 프로그램의 상기 기설정된 성능 지표는 각 프로그램의 정규화 가속비(speed-up ratio)이고, 각 프로그램의 정규화 가속비가 전체 조정 프로세스에서 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량이 획득되고, 상기 변화량은 각 프로그램의 성능 데이터로 사용된다.
S202: 통계 수집을 통해 획득된, 워킹 세트 안의 각 프로그램의 메모리 접근 빈도를 고려하여 각 프로그램이 속하는 카테고리를 결정한다.
구체적으로, 하드웨어 성능 카운터가 각 프로그램이 주메모리에 접근하는 횟수를 실행 프로세스의 기설정된 단계 또는 시간 주기 동안 카운트하여, 각 프로그램의 메모리 접근 빈도를 획득한다.
그 다음에 각 프로그램의 성능 데이터와 각 프로그램의 메모리 접근 빈도를 고려하고 기설정된 문턱값을 따라 각 프로그램이 속하는 카테고리가 결정된다.
상기 성능 데이터 문턱값은 제1 문턱값, 제2 문턱값 및 제3 문턱값을 포함하고, 제1 문턱값 및 제2 문턱값은 성능 데이터 문턱값이고, 제3 문턱값은 메모리 접근 빈도 문턱값이다.
예시적으로, 상기 성능 지표는 각 프로그램의 정규화 가속비가 각 프로그램에 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량이다.
각 프로그램에 할당된 LLC의 용량이, LLC의 최대 용량으로부터 LLC의 최대 용량의 1/N로 조정되고 감소하는 프로세스에서, N이 8인 쿼드-코어 컴퓨터를 예로 들면, 도 3에서 도시된 바와 같이, 각 프로그램의 정규화 가속비가 각 프로그램에 할당된 LLC 자원의 용량에 따라 변화하는 곡선이 획득된다. 그러므로 주된 분류 방식은 하기와 같다는 것을 알 수 있다:
프로그램의 정규화 속도비가 제1 문턱값보다 크다면, LLC 자원의 용량이 감소될 때 그러한 프로그램의 성능 열화가 매우 크다는 것을 알 수 있다. 즉, 그러한 프로그램의 성능은 할당된 LLC 자원의 용량에 의해 크게 영향을 받고, 그러한 프로그램은 고수요 유형 031로 분류된다. 또는,
프로그램의 정규화 속도비가 제1 문턱값보다 작고 제2 문턱값보다 크다면, LLC 자원의 용량이 감소될 때 그러한 프로그램의 성능 열화가 중간적이라는 것을 알 수 있다. 즉, 그러한 프로그램의 성능은 할당된 LLC 자원의 용량에 의해 중간적으로 영향을 받고, 그러한 프로그램은 중수요 유형 032로 분류된다. 또는,
프로그램의 정규화 속도비가 제2 문턱값보다 작고 메모리 접근 빈도가 제3 문턱값보다 크다면, LLC 자원의 용량이 감소되고 프로그램의 메모리 접근 빈도가 높은 때 그러한 프로그램의 성능 열화가 매우 적다는 것을 알 수 있다. 즉, 그러한 프로그램의 성능은 할당된 LLC 자원의 용량에 의해 비교적 경미하게 영향을 받고, 그러한 프로그램은 저수요 유형 033로 분류된다. 그러나, 그러한 프로그램의 성능이 주메모리의 용량에 의해 크게 영향받기 때문에, 상기 프로그램은 메모리 접근 집중적 유형이다; 그러므로 그러한 프로그램은 저수요 및 집중적 유형으로 분류된다.
예시적으로, 전술한 고수요 유형 031은 더 구체적으로 LLCF(LLC Fitting) 및 LLCFR (LLC Friendly)을 포함할 수 있고; 전술한 저수요 유형 032는 더 구체적으로 LLCS(LLC Swing)을 포함할 수 있고; 전술한 저수요 유형 033은 더 구체적으로 CCS(Core Cache Fitting) 및 LLCT(LLC Thrashing)를 포함할 수 있다.
S203: 워킹 세트 안의 각 프로그램이 속하는 카테고리에 따라 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택한다.
구체적으로, 워킹 세트 안의 각 프로그램이 속하는 카테고리가 운영 체제 커널에 기록되고, 그 다음에 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책이 기설정된 결정 정책에 따라 선택된다.
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리는 /proc 메커니즘을 사용하여 운영 체제 커널에 기록될 수 있다. 상기 기설정된 결정 정책은, 운영체계 커널 안에서의 분할 정책 결정 트리이고, 상기 분할 정책 결정 트리는 알고리즘 형태로 운영체계 안에서 구현된다.
구체적으로, 상기 워킹 세트 안의 각 프로그램의 분류가 운영체계 커널에 기록되고, 상기 워킹 세트에 대응하는 페이징 컬러링-기반 분할 정책을 결정하기 위해 상기 워킹 세트 안에 있는 각 프로그램의 분류를 고려하여 해당 노드에 대한 운영체계 커널 안에 있는 상기 분할 정책 결정 트리가 검색된다. 상기 페이지 컬러링-기반 분할 정책은 컬러링-기반 협력적 분할 정책(page coloring-based collaborative partitioning policy) 및 컬러링-기반 비협력적 분할 정책(page coloring-based non-collaborative partitioning policy)을 포함한다.
상기 페이지 컬러링-기반 협력적 분할 정책은 중첩된 인덱스 주소 비트(O-비트: overlapped index address bits)를 페이지 컬러링-기반 분할 인덱스 비트로 사용하는 분할 정책이고, O-비트는 물리적인 페이지 프레임에서 LLC의 인덱스 비트 및 DRAM 뱅크 인덱스 비트의 중첩된 주소 비트이고, 또한 LLC 및 DRAM 뱅크 모두에 대한 페이지 컬러링-기반 분할을 인덱스하기 위해 사용된다.
상기 페이지 컬러링-기반 협력적 분할 정책은,
카테고리 A 다중레벨 메모리 협력적 분할정책(A-MMCP: category A multi-level memory collaborative partitioning policy) - O-비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 동일 수량의 등분(equal portion)으로 분할됨 -;
카테고리 B 다중레벨 메모리 협력적 분할정책(B-MMCP: category B multi-level memory collaborative partitioning policy) - O-비트 및 DRAM 뱅크의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 큼 -; 및
카테고리 C 다중레벨 메모리 협력적 분할정책(C-MMCP: category C multi-level memory collaborative partitioning policy) - O-비트 및 LLC의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 작음 -;을 포함한다.
상기 페이지 컬러링-기반 협력적 분할 정책은 O-비트가 사용되지 않는 분할 정책이며,
캐시-단독(Cache-Only) 정책 - 페이지 컬러링-기반 분할이 LLC의 인덱스 비트를 사용함으로써 LLC에 대해 수행되고, 컬러링-기반 분할이 DRAM 뱅크에 대해서는 수행되지 않음 -; 및
뱅크-단독(Bank-Only) 정책 - 컬러링-기반 분할이 DRAM 뱅크의 인덱스 비트를 사용함으로써 DRAM 뱅크에 대해 수행되고, 컬러링-기반 분할이 LLC에 대해서는 수행되지 않음 -; 을 포함한다.
예시적으로, LLC 및 DRAM 뱅크의 O-비트는 물리 페이지 프레임의 제14 및 제15 비트일 수 있고, 4개의 색깔, 즉 00, 01, 10, 11이 2개의 인덱스 비트를 사용하여 분할에 의해 획득될 수 있다. 추가로, LLC의 인덱스 비트 {16, 17, 18} 및 DRAM 뱅크의 인덱스 비트 {21, 22}도 물리 페이지 프레임에 존재한다.
A-MMCP에서는, 컬러링-기반 분할이 O-비트, 즉 제14 및 제15 비트를 이용해서만이 실행되고, LLC가 4개의 등분으로 분할될 수 있으며, DRAM 뱅크가 4개의 등분으로 분할될 수 있다.
B-MMCP에서는, 컬러링-기반 분할이 O-비트 및 DRAM 뱅크의 인덱스 비트 중 하나, 즉 제14, 제15 및 제21 비트를 이용해서 실행되고, LLC가 4개의 등분으로 분할될 수 있으며, DRAM 뱅크가 8개의 등분으로 분할될 수 있다.
C-MMCP에서는, 컬러링-기반 분할이 O-비트 및 LLC의 인덱스 비트 중 하나, 즉 제14, 제15 및 제16 비트를 이용해서 실행되고, LLC가 8개의 등분으로 분할될 수 있으며, DRAM 뱅크가 4개의 등분으로 분할될 수 있다.
구체적으로, 분할 정책 결정 트리가 운영 체제 커널에서 알고리즘 형태로 구현된다는 것은 다음을 포함한다:
상기 워킹 세트 안의 각 프로그램의 카테고리가 고수요 유형 031이면, 뱅크-단독 정책이 선택되거나; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 저수요 및 집중적 유형이 있으면, 상기 워킹 세트 안의 프로그램의 수량이 추가로 결정되고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP가 선택되고, 그렇지 않으면 C-MMCP가 선택되거나 - N은 프로세서의 코어의 수량임 -; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 중수요 유형 032가 있고 저수요 및 집중적 유형이 없으면, 상기 워킹 세트 안의 프로그램의 수량이 추가로 결정되고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP이 선택되고, 그렇지 않으면 B-MMCP가 선택되고, N은 프로세서의 코어의 수량이다.
S204: 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 운영체계 커널에 기록하고, 상기 운영체계 커널은 페이지 컬러링-기반 분할 프로세싱을 수행한다.
상기 선택된 페이지 컬러링-기반 분할 정책은 /proc 메커니즘을 사용하여 운영 체제 커널에 기록될 수 있고, 운영 체계의 버디 시스템(Buddy System)은 메모리 할당 메커니즘을 조정하여, 컬러링-기반 분할 운영을 완료한다.
예시적으로, 버디 시스템의 관리 메커니즘 및 검색 메커니즘은 컬러링에 필요한 페이지에 대한 관리 및 검색을 완료할 수 있다; 상기 버디 시스템은 메모리 할당 메커니즘을 조정할 수 있어서, 메모리 할당 메커니즘이 다양한 분할 정책 간에 절환할 수 있도록 한다.
본 발명의 실시예에 제공된 메모리 자원 최적화 방법에 따라, LLC 자원이 페이지 컬러링 기술에 의해 분할되고, 워킹 세트 안의 각 프로그램의 성능 데이터를 획득되고, 메모리 접근 빈도를 고려하여 각 프로그램의 카테고리가 획득되고, 상기 위킹 세트에 대응하는 페이지 컬러링-기반 분할 정책이 각 프로그램의 카테고리에 따라 선택되고, 페이지 컬러링-기반 분할 정책이 운영체제 커널에 기록되어, 대응하는 컬러링-기반 분할 프로세싱을 완료한다. 이런 방법으로 LLC 및 DRAM 뱅크 간의 협력적 분할 정책이 워킹 세트의 특성을 고려하여 구현되고, 저장 자원 상의 프로세스 또는 쓰레드의 상호간섭은 감소되고 제거될 수 있으며, 이로써 컴퓨터의 전반적인 성능을 개선한다.
본 발명의 일 실시예는 메모리 자원 최적화 장치 00을 제공한다. 도 4에 도시된 것처럼, 상기 장치는,
워킹 세트(working set) 안의 각 프로그램의 성능 데이터를 획득하고, 상기 각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교함에 의해 각 프로그램을 분류하는 - 상기 각 프로그램의 성능 데이터는 각 프로그램의 기설정된 성능 지표가, 할당된 LLC(last level cache) 자원의 용량에 따라 변화할 때 생성되는 변화량임 - 전단 유닛(front end unit) 001;
상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택하도록 구성된 결정 유닛 002 - 상기 페이지 컬러링-기반 분할 정책은, LLC 및 DRAM 뱅크(dynamic random access memory bank) 모두에 대해 페이지 컬러링-기반 분할을 수행하기 위한 페이지 컬러링-기반 협력적 분할 정책을 포함함 -; 및
상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 운영체계 커널에 기록하도록 구성된 분할 유닛 003 - 상기 운영체계 커널은 페이지 컬러링-기반 분할 프로세싱을 수행함 -;을 포함한다.
도 5에 도시된 것처럼, 상기 전단 유닛 001은 데이터 수집 유닛 0011 및 분류 유닛 0012를 포함한다.
선택적으로, 상기 데이터 수집 유닛 0011은 상기 LLC 자원을 페이지 컬러링 기술을 이용하여 N개의 부분으로 분할하고, 상기 LLC 자원의 최대 용량의 1/N을 1 레벨로 하고, 처음에는 상기 LLC 자원의 최대 용량을 각 프로그램에 할당하고, 상기 용량이 상기 LLC 자원의 최대 용량의 1/N로 감소할 때까지 각 조정(adjustment)마다 1 레벨만큼 각 프로그램에 할당된 LLC 자원을 감소시키도록 구성되고, 또한
각 프로그램의 기설정된 성능 지표가 조정 프로세스에서 상기 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량을 모니터링하고, 상기 변화량을 상기 각 프로그램의 성능 데이터로 이용하는 단계를 포함하고 상기 기설정된 성능 지표는 각 프로그램의 가속비(speed-up ratio)이다.
선택적으로, 분류 유닛 0012는 실행 프로세스의 기설정된 스테이지에서 각 프로그램이 주메모리에 접근하는 횟수를 세어, 각 프로그램의 메모리 접근 빈도를 획득하고,
각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교하고 - 상기 성능 데이터 문턱값은 제1 문턱값, 제2 문턱값 및 제3 문턱값을 포함하고, 제1 문턱값 및 제2 문턱값은 성능 데이터 문턱값이고, 제3 문턱값은 메모리 접근 빈도 문턱값임 -; 및
프로그램의 성능 데이터가 제1 문턱값보다 더 크면 상기 프로그램을 고수요 유형(high demand type)으로 분류하거나, 또는
프로그램의 성능 데이터가 제1 문턱값보다 더 작고 제2 문턱값보다 더 크면 상기 프로그램을 중수요 유형(medium demand type)으로 분류하거나, 또는
프로그램의 성능 데이터가 제2 문턱값보다 더 작고 상기 프로그램의 메모리 접근 빈도가 제3 문턱값보다 크면 상기 프로그램을 저수요 및 집중적 유형(low demand and intensive type)으로 분류한다.
선택적으로, 상기 기설정된 결정 정책은, 운영체계 커널 안에서의 분할 정책 결정 트리이고, 상기 분할 정책 결정 트리는 알고리즘 형태로 운영체계 안에서 구현되고, 상기 결정 유닛 002는 구체적으로,
워킹 세트 안에 각 프로그램의 분류를 운영체계 커널에 기록하고, 상기 워킹 세트 안의 각 프로그램의 분류를 고려하여 해당 노드에 대한 운영체계 커널 안에 있는 상기 분할 정책 결정 트리를 검색하여, 상기 워킹 세트에 대응하는 페이징 컬러링-기반 분할 정책을 결정한다.
선택적으로, 상기 페이지 컬러링-기반 분할 정책은 컬러링-기반 협력적 분할 정책 및 컬러링-기반 비협력적 분할 정책을 포함하고, 구체적으로:
상기 페이지 컬러링-기반 협력적 분할 정책은 중첩된 인덱스 주소 비트(O-비트: overlapped index address bits)를 페이지 컬러링-기반 분할 인덱스 비트로 사용하는 분할 정책이고, O-비트는 물리적인 페이지 프레임에서 LLC의 인덱스 비트 및 DRAM 뱅크 인덱스 비트의 중첩된 주소 비트이고, 또한 LLC 및 DRAM 뱅크 모두에 대한 페이지 컬러링-기반 분할을 인덱스하기 위해 사용되며;
상기 페이지 컬러링-기반 협력적 분할 정책은,
카테고리 A 다중레벨 메모리 협력적 분할정책(A-MMCP: category A multi-level memory collaborative partitioning policy) - O-비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 동일 수량의 등분(equal portion)으로 분할됨 -;
카테고리 B 다중레벨 메모리 협력적 분할정책(B-MMCP: category B multi-level memory collaborative partitioning policy) - O-비트 및 DRAM 뱅크의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 큼 -; 및
카테고리 C 다중레벨 메모리 협력적 분할정책(C-MMCP: category C multi-level memory collaborative partitioning policy) - O-비트 및 LLC의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 작음 -;을 포함하고,
상기 페이지 컬러링-기반 협력적 분할 정책은 O-비트가 사용되지 않는 분할 정책이며,
캐시-단독(Cache-Only) 정책 - 페이지 컬러링-기반 분할이 LLC의 인덱스 비트를 사용함으로써 LLC에 대해 수행되고, 컬러링-기반 분할이 DRAM 뱅크에 대해서는 수행되지 않음 -; 및
뱅크-단독(Bank-Only) 정책 - 컬러링-기반 분할이 DRAM 뱅크의 인덱스 비트를 사용함으로써 DRAM 뱅크에 대해 수행되고, 컬러링-기반 분할이 LLC에 대해서는 수행되지 않음 -; 을 포함한다.
선택적으로, 상기 결정 유닛 002는 더 구체적으로
상기 워킹 세트 안의 각 프로그램의 카테고리가 고수요 유형이면, 뱅크-단독 정책을 선택하거나; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 저수요 및 집중적 유형이 있으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 C-MMCP를 선택하거나 - N은 프로세서의 코어의 수량임 -; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 중수요 유형이 있고 저수요 및 집중적 유형이 없으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 B-MMCP를 선택하고, N은 프로세서의 코어의 수량이다.
본 발명의 실시예에 제공된 메모리 자원 최적화 장치에 따라, LLC 자원이 페이지 컬러링 기술에 의해 분할되고, 워킹 세트 안의 각 프로그램의 성능 데이터를 획득되고, 메모리 접근 빈도를 고려하여 각 프로그램의 카테고리가 획득되고, 상기 위킹 세트에 대응하는 페이지 컬러링-기반 분할 정책이 각 프로그램의 카테고리에 따라 선택되고, 페이지 컬러링-기반 분할 정책이 운영체제 커널에 기록되어, 대응하는 컬러링-기반 분할 프로세싱을 완료한다. 이런 방법으로 LLC 및 DRAM 뱅크 간의 협력적 분할 정책이 워킹 세트의 특성을 고려하여 구현되고, 저장 자원 상의 프로세스 또는 쓰레드의 상호간섭은 감소되고 제거될 수 있으며, 이로써 컴퓨터의 전반적인 성능을 개선한다.
본 발명의 일 실시예는 메모리 자원 최적화 장치 01을 더 포함한다. 도 6에 도시된 것처럼, 메모리 자원 최적화 장치 01은,
버스 011, 프로세서 012, 메모리 013 및 버스 011에 연결된 인터페이스 014를 포함하고, 상기 인터페이스 015는 외부 장치와 통신하도록 구성되었다.
메모리 013은 명령어를 저장하도록 구성된다. 프로세서 012는 상기 명령어를 실행하도록 구성되고, 워킹 세트(working set) 안의 각 프로그램의 성능 데이터를 획득하고, 상기 각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교함에 의해 각 프로그램을 분류하도록 구성되고, 상기 각 프로그램의 성능 데이터는 각 프로그램의 기설정된 성능 지표가, 할당된 LLC(last level cache) 자원의 용량에 따라 변화할 때 생성되는 변화량이다.
프로세서 012는 상기 명령어를 실행하고, 상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택하도록 더 구성되고, 상기 페이지 컬러링-기반 분할 정책은, LLC 및 DRAM 뱅크(dynamic random access memory bank) 모두에 대해 페이지 컬러링-기반 분할을 수행하기 위한 페이지 컬러링-기반 협력적 분할 정책을 포함한다.
프로세서 012는 상기 명령어를 수행하고, 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 운영체계 커널에 기록하도록 더 구성되고, 상기 운영체계 커널은 페이지 컬러링-기반 분할 프로세싱을 수행한다.
선택적으로, 본 발명의 본 실시예에서, 프로세서 012는 상기 명령어를 수행하고, 구체적으로 상기 LLC 자원을 페이지 컬러링 기술을 이용하여 N개의 부분으로 분할하고, 상기 LLC 자원의 최대 용량의 1/N을 1 레벨로 하고, 처음에는 상기 LLC 자원의 최대 용량을 각 프로그램에 할당하고, 상기 용량이 상기 LLC 자원의 최대 용량의 1/N로 감소할 때까지 각 조정(adjustment)마다 1 레벨만큼 각 프로그램에 할당된 LLC 자원을 감소시키고; 및
각 프로그램의 기설정된 성능 지표가 조정 프로세스에서 상기 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량을 모니터링하고, 상기 변화량을 상기 각 프로그램의 성능 데이터로 이용하는 단계를 포함하도록 구성되고, 상기 기설정된 성능 지표는 각 프로그램의 가속비(speed-up ratio)이다.
선택적으로, 본 발명의 본 실시예에서, 프로세서 012는 상기 명령어를 수행하고, 구체적으로 실행 프로세스의 기설정된 스테이지에서 각 프로그램이 주메모리에 접근하는 횟수를 세어, 각 프로그램의 메모리 접근 빈도를 획득하고;
각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도를 기설정된 문턱값과 비교하고 - 상기 성능 데이터 문턱값은 제1 문턱값, 제2 문턱값 및 제3 문턱값을 포함하고, 제1 문턱값 및 제2 문턱값은 성능 데이터 문턱값이고, 제3 문턱값은 메모리 접근 빈도 문턱값임 -; 및
프로그램의 성능 데이터가 제1 문턱값보다 더 크면 상기 프로그램을 고수요 유형(high demand type)으로 분류하거나, 또는
프로그램의 성능 데이터가 제1 문턱값보다 더 작고 제2 문턱값보다 더 크면 상기 프로그램을 중수요 유형(medium demand type)으로 분류하거나, 또는
프로그램의 성능 데이터가 제2 문턱값보다 더 작고 상기 프로그램의 메모리 접근 빈도가 제3 문턱값보다 크면 상기 프로그램을 저수요 및 집중적 유형(low demand and intensive type)으로 분류한다.
선택적으로, 본 발명의 본 실시예에서, 상기 기설정된 결정 정책은, 운영체계 커널 안에서의 분할 정책 결정 트리이고, 상기 분할 정책 결정 트리는 알고리즘 형태로 운영체계 안에서 구현된다. 프로세서 012가 상기 명령어를 실행하고, 구체적으로,
워킹 세트 안에 각 프로그램의 분류를 운영체계 커널에 기록하고, 상기 워킹 세트 안의 각 프로그램의 분류를 고려하여 해당 노드에 대한 운영체계 커널 안에 있는 상기 분할 정책 결정 트리를 검색하여, 상기 워킹 세트에 대응하는 페이징 컬러링-기반 분할 정책을 결정하도록 구성된다.
선택적으로, 본 발명의 본 실시예에서, 상기 페이지 컬러링-기반 분할 정책은 컬러링-기반 협력적 분할 정책 및 컬러링-기반 비협력적 분할 정책을 포함하고, 구체적으로,
상기 페이지 컬러링-기반 협력적 분할 정책은 중첩된 인덱스 주소 비트(O-비트: overlapped index address bits)를 페이지 컬러링-기반 분할 인덱스 비트로 사용하는 분할 정책이고, O-비트는 물리적인 페이지 프레임에서 LLC의 인덱스 비트 및 DRAM 뱅크 인덱스 비트의 중첩된 주소 비트이고, 또한 LLC 및 DRAM 뱅크 모두에 대한 페이지 컬러링-기반 분할을 인덱스하기 위해 사용되며; 또한
상기 페이지 컬러링-기반 협력적 분할 정책은,
카테고리 A 다중레벨 메모리 협력적 분할정책(A-MMCP: category A multi-level memory collaborative partitioning policy) - O-비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 동일 수량의 등분(equal portion)으로 분할됨 -;
카테고리 B 다중레벨 메모리 협력적 분할정책(B-MMCP: category B multi-level memory collaborative partitioning policy) - O-비트 및 DRAM 뱅크의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 큼 -; 및
카테고리 C 다중레벨 메모리 협력적 분할정책(C-MMCP: category C multi-level memory collaborative partitioning policy) - O-비트 및 LLC의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 작음 -;을 포함하고,
상기 페이지 컬러링-기반 협력적 분할 정책은 O-비트가 사용되지 않는 분할 정책이며,
캐시-단독(Cache-Only) 정책 - 페이지 컬러링-기반 분할이 LLC의 인덱스 비트를 사용함으로써 LLC에 대해 수행되고, 컬러링-기반 분할이 DRAM 뱅크에 대해서는 수행되지 않음 -; 및
뱅크-단독(Bank-Only) 정책 - 컬러링-기반 분할이 DRAM 뱅크의 인덱스 비트를 사용함으로써 DRAM 뱅크에 대해 수행되고, 컬러링-기반 분할이 LLC에 대해서는 수행되지 않음 -; 을 포함한다.
선택적으로, 본 발명의 본 실시예에서, 프로세서 012는 상기 명령어를 수행하고, 구체적으로,
상기 워킹 세트 안의 각 프로그램의 카테고리가 고수요 유형이면, 뱅크-단독 정책을 선택하거나; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 저수요 및 집중적 유형이 있으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 C-MMCP를 선택하거나 - N은 프로세서의 코어의 수량임 -; 또는
상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 중수요 유형이 있고 저수요 및 집중적 유형이 없으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 B-MMCP를 선택하도록 구성되고, N은 프로세서의 코어의 수량이다.
본 발명의 실시예에 제공된 메모리 자원 최적화 장치에 따라, LLC 자원이 페이지 컬러링 기술에 의해 분할되고, 워킹 세트 안의 각 프로그램의 성능 데이터를 획득되고, 메모리 접근 빈도를 고려하여 각 프로그램의 카테고리가 획득되고, 상기 위킹 세트에 대응하는 페이지 컬러링-기반 분할 정책이 각 프로그램의 카테고리에 따라 선택되고, 페이지 컬러링-기반 분할 정책이 운영체제 커널에 기록되어, 대응하는 컬러링-기반 분할 프로세싱을 완료한다. 이런 방법으로 LLC 및 DRAM 뱅크 간의 협력적 분할 정책이 워킹 세트의 특성을 고려하여 구현되고, 저장 자원 상의 프로세스 또는 쓰레드의 상호간섭은 감소되고 제거될 수 있으며, 이로써 컴퓨터의 전반적인 성능을 개선한다.
본 발명 개시에 제공된 몇 실시예에서, 개시된 장치와 방법은 다른 방식으로 구현될 수 있음이 이해되어야 한다. 예를 들어, 기술된 장치 실시예는 단지 예시적인 것이다. 예를 들어, 모듈의 구분은 단지 논리 기능적 구분이고, 실제 구현에서는 다른 구분 방식이 있을 수 있다. 게다가 도시되거나 논의된 모듈 간의 연결은 어떤 인터페이스를 사용하여 구현될 수 있고, 전자적, 기계적 또는 다른 형태로 구현될 수 있다.
모듈은 물리적으로 분리될 수도 있고 분리되지 않을 수도 있으며, 물리적 유닛일 수도 있고 아닐 수도 있다. 실시예의 해결수단의 목적을 달성하기 위해 실제 요구사항에 따라 일부 또는 전부의 모듈이 선택될 수 있다.
게다가 본 발명의 실시예 안에 있는 기능적 모듈은 1개의 프로세싱 모듈에 집적될 수 있거나, 또는 각 모듈이 물리적으로 단독으로 존재할 수 있거나, 또는 2개 이상의 모듈이 한 모듈에 집적될 수 있다. 상기 집적된 모듈은 하드웨어의 형태로 구현될 수 있거나, 소프트웨어 기능 모듈에 부가된 하드웨어의 형태로 구현될 수 있다.
전술한 집적 모듈이 소프트웨어 기능 유닛의 형태로 구현될 때, 상기 집적 유닛은 컴퓨터로 판독 가능한 저장 매체에 저장될 수 있다. 상기 소프트웨어 기능 모듈은 저장 매체에 저장되고, 본 발명의 실시예에 기술된 방법의 몇몇 단계를 수행하기 위해 컴퓨터 장치(퍼스널 컴퓨터, 서버 또는 네트워크 장치일 수 있음)를 명령하기 위한 몇몇 명령어를 포함한다. 전술한 저장 매체는: USB 플래시 드라이브, 휴대용 하드 디스크, ROM(Read-Only Memory), RAM(Random Access Memory), 자성 디스크 또는 광학 디스크와 같은, 프로그램 코드를 저장할 수 있는 모든 매체를 포함한다.
전술한 설명은 단지 본 발명의 특정 구현 방식에 불과하고, 본 발명의 보호 범위를 제한하도록 의도되지 않았다. 본 발명에 개시된 기술적 범위 내에서 이 기술분야의 통상의 기술자가 쉽게 도출할 수 있는 변형이나 대체는 본 발명의 보호 범위 내에 포함된다. 그러므로 본 발명의 보호 범위는 청구범위의 보호 범위에 의해 정해져야 한다.

Claims (14)

  1. 메모리 자원 최적화 방법으로서,
    워킹 세트(working set) 안의 각 프로그램의 성능 데이터를 획득하는 단계;
    상기 각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도에 따라 각 프로그램을 분류하는 단계 - 상기 각 프로그램의 성능 데이터는 각 프로그램의 기설정된 성능 지표가, 할당된 LLC(last level cache) 자원의 용량에 따라 변화할 때 생성되는 변화량임 -;
    상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책(page coloring-based partitioning policy)을 선택하는 단계 - 상기 페이지 컬러링-기반 분할 정책은, 상기 LLC 및 상기 DRAM 뱅크(dynamic random access memory bank) 모두에 대해 페이지 컬러링-기반 분할을 수행하기 위한 페이지 컬러링-기반 협력적 분할 정책(page coloring-based collaborative partitioning policy)을 포함함 -; 및
    상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 운영체계 커널(kernel)에 기록하는 단계 - 상기 운영체계 커널은 대응하는 페이지 컬러링-기반 분할 프로세싱을 수행함 -;
    를 포함하는 메모리 자원 최적화 방법.
  2. 제1항에 있어서,
    상기 워킹 세트 안의 각 프로그램의 성능 데이터를 획득하는 단계는,
    상기 LLC 자원을 N개의 부분으로 분할하고, 상기 LLC 자원의 최대 용량의 1/N을 1 레벨로 하고, 처음에는 상기 LLC 자원의 최대 용량을 각 프로그램에 할당하고, 상기 용량이 상기 LLC 자원의 최대 용량의 1/N로 감소할 때까지 각 조정(adjustment)마다 1 레벨만큼 각 프로그램에 할당된 LLC 자원을 감소시키는 단계; 및
    각 프로그램의 기설정된 성능 지표가 조정 프로세스에서 상기 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량을 모니터링하고, 상기 변화량을 상기 각 프로그램의 성능 데이터로 이용하는 단계
    를 포함하고,
    상기 기설정된 성능 지표는 각 프로그램의 가속비(speed-up ratio)인, 메모리 자원 최적화 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 페이지 컬러링-기반 협력적 분할 정책은 중첩된 인덱스 주소 비트(O-비트: overlapped index address bits)를 페이지 컬러링-기반 분할 인덱스 비트로 사용하는 분할 정책이고, O-비트는 물리적인 페이지 프레임에서 LLC의 인덱스 비트 및 DRAM 뱅크 인덱스 비트의 중첩된 주소 비트이고, 또한 LLC 및 DRAM 뱅크 모두에 대한 페이지 컬러링-기반 분할을 인덱스하기 위해 사용되며; 또한
    상기 페이지 컬러링-기반 협력적 분할 정책은,
    카테고리 A 다중레벨 메모리 협력적 분할정책(A-MMCP: category A multi-level memory collaborative partitioning policy) - O-비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 동일 수량의 등분(equal portion)으로 분할됨 -;
    카테고리 B 다중레벨 메모리 협력적 분할정책(B-MMCP: category B multi-level memory collaborative partitioning policy) - O-비트 및 DRAM 뱅크의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 큼 -; 및
    카테고리 C 다중레벨 메모리 협력적 분할정책(C-MMCP: category C multi-level memory collaborative partitioning policy) - O-비트 및 LLC의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 작음 -;
    를 포함하는, 메모리 자원 최적화 방법.
  4. 제3항에 있어서,
    상기 각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도에 따라 각 프로그램을 분류하는 단계는,
    실행 프로세스의 기설정된 스테이지에서 각 프로그램이 주메모리에 접근하는 횟수를 세어, 각 프로그램의 메모리 접근 빈도를 획득하는 단계;
    각 프로그램의 성능 데이터를 기설정된 성능 데이터 문턱값과 비교하는 단계 - 상기 성능 데이터 문턱값은 제1 문턱값 및 제2 문턱값을 포함하고, 제1 문턱값은 제2 문턱값보다 더 큼 -; 및
    프로그램의 성능 데이터가 제1 문턱값보다 더 크면 상기 프로그램을 고수요 유형(high demand type)으로 분류하거나, 또는 프로그램의 성능 데이터가 제1 문턱값보다 더 작고 제2 문턱값보다 더 크면 상기 프로그램을 중수요 유형(medium demand type)으로 분류하거나, 또는 프로그램의 성능 데이터가 제2 문턱값보다 더 작고 상기 프로그램의 메모리 접근 빈도가 기설정된 메모리 접근 빈도 문턱값보다 크면 상기 프로그램을 저수요 및 집중적 유형(low demand and intensive type)으로 분류하는 단계;
    를 포함하는, 메모리 자원 최적화 방법.
  5. 제4항에 있어서,
    상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택하는 단계는,
    상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 저수요 및 집중적 유형이 있으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 C-MMCP를 선택하는 단계 - N은 프로세서의 코어의 수량임 -; 또는
    상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 중수요 유형이 있고 저수요 및 집중적 유형이 없으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 B-MMCP를 선택하는 단계 - N은 프로세서의 코어의 수량임 -;
    를 포함하는, 메모리 자원 최적화 방법.
  6. 제5항에 있어서,
    페이지 컬러링-기반 분할 정책은, 페이지 컬러링-기반 비-협력적 분할 정책(page coloring-based non-collaborative partitioning policy)을 더 포함하고, 상기 페이지 컬러링-기반 비-협력적 분할 정책은 O-비트가 사용되지 않는 분할 정책이며, 상기 페이지 컬러링-기반 비-협력적 분할 정책은,
    캐시-단독(Cache-Only) 정책 - 컬러링-기반 분할이 LLC의 인덱스 비트를 사용함으로써 LLC에 대해 수행되고, 컬러링-기반 분할이 DRAM 뱅크에 대해서는 수행되지 않음 -; 및
    뱅크-단독(Bank-Only) 정책 - 컬러링-기반 분할이 DRAM 뱅크의 인덱스 비트를 사용함으로써 DRAM 뱅크에 대해 수행되고, 컬러링-기반 분할이 LLC에 대해서는 수행되지 않음 -;
    을 포함하고,
    상기 상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택하는 단계는,
    상기 워킹 세트 안의 각 프로그램의 카테고리가 고수요 유형이면, 뱅크-단독 정책을 선택하는 단계를 포함하는, 메모리 자원 최적화 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 기설정된 결정 정책은, 운영체계 커널 안에서의 분할 정책 결정 트리이고, 상기 분할 정책 결정 트리는 알고리즘 형태로 운영체계 안에서 구현되고,
    상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택하는 단계는,
    워킹 세트 안에 각 프로그램의 분류를 운영체계 커널에 입력하고, 상기 워킹 세트 안의 각 프로그램의 분류를 고려하여 해당 노드에 대한 운영체계 커널 안에 있는 상기 분할 정책 결정 트리를 검색하여, 상기 워킹 세트에 대응하는 페이징 컬러링-기반 분할 정책을 결정하는 단계를 포함하는, 메모리 자원 최적화 방법.
  8. 메모리 자원 최적화 장치로서,
    워킹 세트(working set) 안의 각 프로그램의 성능 데이터를 획득하도록 구성된 데이터 수집 유닛;
    상기 각 프로그램의 성능 데이터 및 통계 수집에 의해 획득된 각 프로그램의 메모리 접근 빈도에 따라 각 프로그램을 분류하도록 구성된 분류 유닛 - 상기 각 프로그램의 성능 데이터는 각 프로그램의 기설정된 성능 지표가, 할당된 LLC(last level cache) 자원의 용량에 따라 변화할 때 생성되는 변화량임 -;
    상기 워킹 세트 안의 각 프로그램의 분류 및 기설정된 결정 정책을 고려하여 상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 선택하도록 구성된 결정 유닛 - 상기 페이지 컬러링-기반 분할 정책은, LLC 및 DRAM 뱅크(dynamic random access memory bank) 모두에 대해 페이지 컬러링-기반 분할을 수행하기 위한 페이지 컬러링-기반 협력적 분할 정책을 포함함 -; 및
    상기 워킹 세트에 대응하는 페이지 컬러링-기반 분할 정책을 운영체계 커널에 기록하도록 구성된 분할 유닛 - 상기 운영체계 커널은 페이지 컬러링-기반 분할 프로세싱을 수행함 -;
    을 포함하는 메모리 자원 최적화 장치.
  9. 제8항에 있어서,
    상기 데이터 수집 유닛은 구체적으로,
    상기 LLC 자원을 N개의 부분으로 분할하고, 상기 LLC 자원의 최대 용량의 1/N을 1 레벨로 하고, 처음에는 상기 LLC 자원의 최대 용량을 각 프로그램에 할당하고, 상기 용량이 상기 LLC 자원의 최대 용량의 1/N로 감소할 때까지 각 조정(adjustment)마다 1 레벨만큼 각 프로그램에 할당된 LLC 자원을 감소시키고;
    각 프로그램의 기설정된 성능 지표가 조정 프로세스에서 상기 할당된 LLC 자원의 용량에 따라 변화할 때 생성되는 변화량을 모니터링하고, 상기 변화량을 상기 각 프로그램의 성능 데이터로 이용하도록 구성되며,
    상기 기설정된 성능 지표는 각 프로그램의 가속비(speed-up ratio)인, 메모리 자원 최적화 장치.
  10. 제8항 또는 제9항에 있어서,
    상기 페이지 컬러링-기반 협력적 분할 정책은 중첩된 인덱스 주소 비트(O-비트: overlapped index address bits)를 페이지 컬러링-기반 분할 인덱스 비트로 사용하는 분할 정책이고, O-비트는 물리적인 페이지 프레임에서 LLC의 인덱스 비트 및 DRAM 뱅크 인덱스 비트의 중첩된 주소 비트이고, 또한 LLC 및 DRAM 뱅크 모두에 대한 페이지 컬러링-기반 분할을 인덱스하기 위해 사용되며; 또한
    상기 페이지 컬러링-기반 협력적 분할 정책은,
    카테고리 A 다중레벨 메모리 협력적 분할정책(A-MMCP: category A multi-level memory collaborative partitioning policy) - O-비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 동일 수량의 등분으로 분할됨 -;
    카테고리 B 다중레벨 메모리 협력적 분할정책(B-MMCP: category B multi-level memory collaborative partitioning policy) - O-비트 및 DRAM 뱅크의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량량보다 더 큼 -; 및
    카테고리 C 다중레벨 메모리 협력적 분할정책(C-MMCP: category C multi-level memory collaborative partitioning policy) - O-비트 및 LLC의 인덱스 비트가 분할 인덱스 비트로 사용되고, LLC와 DRAM 뱅크가 상이한 수량의 등분으로 분할되며, DRAM 뱅크의 등분의 분할된 수량이 LLC의 등분의 분할된 수량보다 더 작음 -;
    를 포함하는, 메모리 자원 최적화 장치.
  11. 제10항에 있어서,
    상기 분류 유닛은 구체적으로,
    실행 프로세스의 기설정된 스테이지에서 각 프로그램이 주메모리에 접근하는 횟수를 세어, 각 프로그램의 메모리 접근 빈도를 획득하고,
    각 프로그램의 성능 데이터를 기설정된 성능 데이터 문턱값과 비교하고 - 상기 성능 데이터 문턱값은 제1 문턱값 및 제2 문턱값을 포함하고, 제1 문턱값은 제2 문턱값보다 더 큼 -,
    프로그램의 성능 데이터가 제1 문턱값보다 더 크면 상기 프로그램을 고수요 유형으로 분류하거나, 프로그램의 성능 데이터가 제1 문턱값보다 더 작고 제2 문턱값보다 더 크면 상기 프로그램을 중수요 유형으로 분류하거나, 또는 프로그램의 성능 데이터가 제2 문턱값보다 더 작고 상기 프로그램의 메모리 접근 빈도가 기설정된 메모리 접근 빈도 문턱값보다 크면 상기 프로그램을 저수요 및 집중적 유형으로 분류하도록 구성된,
    메모리 자원 최적화 장치.
  12. 제11항에 있어서,
    상기 결정 유닛은 구체적으로,
    상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 저수요 및 집중적 유형이 있으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 C-MMCP를 선택하거나; 또는
    상기 워킹 세트 안의 각 프로그램이 속하는 카테고리 안에 중수요 유형이 있고 저수요 및 집중적 유형이 없으면, 상기 워킹 세트 안의 프로그램의 수량을 추가로 결정하고, 상기 프로그램의 수량이 N보다 작거나 같으면 A-MMCP를 선택하고, 그렇지 않으면 B-MMCP를 선택하도록 구성되고,
    여기서, N은 프로세서의 코어의 수량인, 메모리 자원 최적화 장치.
  13. 제12항에 있어서,
    페이지 컬러링-기반 분할 정책은, 페이지 컬러링-기반 비-협력적 분할 정책을 더 포함하고, 상기 페이지 컬러링-기반 비-협력적 분할 정책은 O-비트가 사용되지 않는 분할 정책이며, 상기 페이지 컬러링-기반 비-협력적 분할 정책은,
    캐시-단독(Cache-Only) 정책 - 컬러링-기반 분할이 LLC의 인덱스 비트를 사용함으로써 LLC에 대해 수행되고, 컬러링-기반 분할이 DRAM 뱅크에 대해서는 수행되지 않음 -; 및
    뱅크-단독(Bank-Only) 정책 - 컬러링-기반 분할이 DRAM 뱅크의 인덱스 비트를 사용함으로써 DRAM 뱅크에 대해 수행되고, 컬러링-기반 분할이 LLC에 대해서는 수행되지 않음 -;
    을 포함하고,
    상기 결정 유닛은 추가적으로, 상기 워킹 세트 안의 각 프로그램가 속하는 카테고리가 고수요 유형이면, 뱅크-단독 정책을 선택하도록 구성된, 메모리 자원 최적화 장치.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서,
    상기 기설정된 결정 정책은, 운영체계 커널 안에서의 분할 정책 결정 트리이고, 상기 분할 정책 결정 트리는 알고리즘 형태로 운영체계 안에서 구현되고,
    상기 결정 유닛은 구체적으로, 워킹 세트 안의 각 프로그램의 분류를 운영체계 커널에 입력하고, 상기 워킹 세트 안에 있는 각 프로그램의 분류를 고려하여 해당 노드에 대한 운영체계 커널 안에 있는 상기 분할 정책 결정 트리를 검색하여, 상기 워킹 세트에 대응하는 페이징 컬러링-기반 분할 정책을 결정하도록 구성된, 메모리 자원 최적화 장치.
KR1020167009977A 2013-10-23 2014-10-22 메모리 자원 최적화 방법 및 장치 KR101761301B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310503238.1 2013-10-23
CN201310503238.1A CN104572493A (zh) 2013-10-23 2013-10-23 一种存储器资源优化方法和装置
PCT/CN2014/089194 WO2015058695A1 (zh) 2013-10-23 2014-10-22 一种存储器资源优化方法和装置

Publications (2)

Publication Number Publication Date
KR20160055273A true KR20160055273A (ko) 2016-05-17
KR101761301B1 KR101761301B1 (ko) 2017-07-25

Family

ID=52992282

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167009977A KR101761301B1 (ko) 2013-10-23 2014-10-22 메모리 자원 최적화 방법 및 장치

Country Status (12)

Country Link
US (2) US9857980B2 (ko)
EP (2) EP3388947B1 (ko)
JP (1) JP6143277B2 (ko)
KR (1) KR101761301B1 (ko)
CN (3) CN104572493A (ko)
AU (1) AU2014339450B2 (ko)
BR (1) BR112016007492B8 (ko)
CA (1) CA2927372C (ko)
MX (1) MX356304B (ko)
RU (1) RU2631767C1 (ko)
SG (1) SG11201602325VA (ko)
WO (1) WO2015058695A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572493A (zh) * 2013-10-23 2015-04-29 华为技术有限公司 一种存储器资源优化方法和装置
CN105068940B (zh) * 2015-07-28 2018-07-31 北京工业大学 一种基于Bank划分的自适应页策略确定方法
CN106919516B (zh) * 2015-12-24 2020-06-16 辰芯科技有限公司 Ddr地址映射系统和方法
CN107797941B (zh) * 2016-09-06 2020-07-07 华为技术有限公司 针对查找树的缓存着色内存分配方法和装置
US10515017B2 (en) 2017-02-23 2019-12-24 Honeywell International Inc. Memory partitioning for a computing system with memory pools
US20190095329A1 (en) * 2017-09-27 2019-03-28 Intel Corporation Dynamic page allocation in memory
US10366007B2 (en) 2017-12-11 2019-07-30 Honeywell International Inc. Apparatuses and methods for determining efficient memory partitioning
US10679173B2 (en) 2018-02-19 2020-06-09 Rpmanetworks Holdings End to end logistic chain tracking and control of shipping containers
US10895985B1 (en) * 2018-05-29 2021-01-19 Amazon Technologies, Inc. Real-time estimation of working sets
KR102340444B1 (ko) 2019-12-24 2021-12-16 고려대학교 산학협력단 모놀리식 3D 집적 기술 기반 NoC 구조를 활용한 GPU 캐시 바이패스 방법 및 장치
JP2021170241A (ja) * 2020-04-16 2021-10-28 富士通株式会社 情報処理装置及び制御プログラム
CN112540934B (zh) * 2020-12-14 2022-07-29 山东师范大学 保证多个延迟关键程序共同执行时服务质量的方法及系统
CN112799809B (zh) * 2021-01-26 2023-12-26 南京大学 基于高速缓存着色的资源共享和隔离的混合关键实时系统
CN112799817A (zh) * 2021-02-02 2021-05-14 中国科学院计算技术研究所 一种微服务资源调度系统和方法
KR102558935B1 (ko) * 2021-08-09 2023-07-24 (주)에스유지 블록체인을 이용한 수산물 이력관리 및 통계분석 시스템

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000339220A (ja) * 1999-05-27 2000-12-08 Nippon Telegr & Teleph Corp <Ntt> キャッシュブロック予約方法およびキャッシュブロック予約機能付きコンピュータシステム
US6654859B2 (en) * 2001-07-26 2003-11-25 International Business Machines Corporation NUMA page selection using coloring
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US8914606B2 (en) * 2004-07-08 2014-12-16 Hewlett-Packard Development Company, L.P. System and method for soft partitioning a computer system
US7664796B2 (en) * 2004-10-13 2010-02-16 Microsoft Corporation Electronic labeling for offline management of storage devices
US20060259733A1 (en) 2005-05-13 2006-11-16 Sony Computer Entertainment Inc. Methods and apparatus for resource management in a logically partitioned processing environment
US20070143315A1 (en) * 2005-12-21 2007-06-21 Alan Stone Inter-partition communication in a virtualization environment
US9390031B2 (en) 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US7434002B1 (en) * 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
US7581064B1 (en) * 2006-04-24 2009-08-25 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
US7512768B2 (en) * 2006-07-21 2009-03-31 Intel Corporation Dynamically sharing a stack between different code segments
US7747820B2 (en) * 2007-06-15 2010-06-29 Microsoft Corporation Managing working set use of a cache via page coloring
WO2009075177A1 (ja) 2007-12-12 2009-06-18 Nec Corporation メモリ再配置システムおよびメモリ再配置方法
US8209493B2 (en) * 2008-03-26 2012-06-26 Intel Corporation Systems and methods for scheduling memory requests during memory throttling
US8274521B2 (en) 2009-05-08 2012-09-25 Oracle America, Inc. System available cache color map
US9063825B1 (en) * 2009-09-21 2015-06-23 Tilera Corporation Memory controller load balancing with configurable striping domains
US8880682B2 (en) * 2009-10-06 2014-11-04 Emc Corporation Integrated forensics platform for analyzing IT resources consumed to derive operational and architectural recommendations
CN101719105B (zh) * 2009-12-31 2012-01-04 中国科学院计算技术研究所 一种多核系统中对内存访问的优化方法和系统
US8327085B2 (en) * 2010-05-05 2012-12-04 International Business Machines Corporation Characterizing multiple resource utilization using a relationship model to optimize memory utilization in a virtual machine environment
CN101916230A (zh) * 2010-08-11 2010-12-15 中国科学技术大学苏州研究院 基于划分感知和线程感知的末级高速缓存的性能优化方法
US20120079501A1 (en) * 2010-09-27 2012-03-29 Mark Henrik Sandstrom Application Load Adaptive Processing Resource Allocation
US20120059983A1 (en) * 2010-09-03 2012-03-08 David Wilkins Nellans Predictor-based management of dram row-buffers
US8621649B1 (en) * 2011-03-31 2013-12-31 Emc Corporation Providing a security-sensitive environment
US8966171B2 (en) * 2012-04-16 2015-02-24 Renmin University Of China Access optimization method for main memory database based on page-coloring
CN102663115B (zh) * 2012-04-16 2015-01-14 中国人民大学 基于页面染色技术的内存数据库访问优化方法
CN103077128B (zh) * 2012-12-29 2015-09-23 华中科技大学 一种多核环境下的共享缓存动态划分方法
CN103136120B (zh) * 2012-12-31 2016-01-27 北京北大众志微系统科技有限责任公司 行缓冲管理策略确定方法和装置、bank划分方法和装置
CN104572493A (zh) * 2013-10-23 2015-04-29 华为技术有限公司 一种存储器资源优化方法和装置

Also Published As

Publication number Publication date
BR112016007492A8 (pt) 2020-03-03
EP3040868A4 (en) 2016-11-23
US20180011638A1 (en) 2018-01-11
CA2927372C (en) 2018-02-13
CA2927372A1 (en) 2015-04-30
BR112016007492B1 (pt) 2022-07-12
BR112016007492A2 (pt) 2017-08-01
US9857980B2 (en) 2018-01-02
SG11201602325VA (en) 2016-05-30
CN105359103A (zh) 2016-02-24
CN105359103B (zh) 2018-06-26
EP3388947B1 (en) 2020-01-15
KR101761301B1 (ko) 2017-07-25
EP3040868A1 (en) 2016-07-06
RU2631767C1 (ru) 2017-09-26
EP3388947A1 (en) 2018-10-17
CN104572493A (zh) 2015-04-29
US20160239213A1 (en) 2016-08-18
AU2014339450A1 (en) 2016-04-21
AU2014339450B2 (en) 2016-11-10
CN108845960B (zh) 2023-12-29
US9983793B2 (en) 2018-05-29
JP2016540290A (ja) 2016-12-22
MX2016005088A (es) 2016-08-03
JP6143277B2 (ja) 2017-06-07
WO2015058695A1 (zh) 2015-04-30
BR112016007492B8 (pt) 2022-07-26
EP3040868B1 (en) 2017-12-13
CN108845960A (zh) 2018-11-20
MX356304B (es) 2018-05-23

Similar Documents

Publication Publication Date Title
KR101761301B1 (ko) 메모리 자원 최적화 방법 및 장치
US9223712B2 (en) Data cache method, device, and system in a multi-node system
US10235290B2 (en) Hot page selection in multi-level memory hierarchies
JP2019506676A (ja) 拡張されたシステム性能のための適応可能な値範囲のプロファイリング
US9152325B2 (en) Logical and physical block addressing for efficiently storing data
EP2919120B1 (en) Memory monitoring method and related device
US9201806B2 (en) Anticipatorily loading a page of memory
US20130007370A1 (en) Method and apparatus for minimizing working memory contentions in computing systems
US9727465B2 (en) Self-disabling working set cache
Cheng et al. A study of main-memory hash joins on many-core processor: A case with intel knights landing architecture
WO2013101138A1 (en) Identifying and prioritizing critical instructions within processor circuitry
KR101587579B1 (ko) 가상화 시스템에서 메모리 조정방법
Bhimani et al. FIOS: Feature based I/O stream identification for improving endurance of multi-stream SSDs
CN115904212A (zh) 数据处理的方法、装置、处理器和混合内存系统
US11385983B1 (en) Hardware assisted memory profiling aggregator
US8793459B2 (en) Implementing feedback directed NUMA mitigation tuning
US11487582B2 (en) Information processing apparatus and computer-readable recording medium having stored therein process allocation determining program
Liu Optimizing Memory Systems for High Efficiency in Computing Clusters
TWI420311B (zh) 基於集合分模組之快取記憶體之分割方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant