KR20130100689A - 확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조 - Google Patents

확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조 Download PDF

Info

Publication number
KR20130100689A
KR20130100689A KR1020130014055A KR20130014055A KR20130100689A KR 20130100689 A KR20130100689 A KR 20130100689A KR 1020130014055 A KR1020130014055 A KR 1020130014055A KR 20130014055 A KR20130014055 A KR 20130014055A KR 20130100689 A KR20130100689 A KR 20130100689A
Authority
KR
South Korea
Prior art keywords
memory
physical memory
allocator
pager
physical
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
KR1020130014055A
Other languages
English (en)
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 KR20130100689A publication Critical patent/KR20130100689A/ko
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

멀티 코어 또는 매니 코어 프로세서 환경의 페이지 오류를 핸들링하는 물리 메모리 관리 구조가 개시된다. 복수의 메모리 할당기가 제공된다. 각각의 메모리 할당기는 맞춤형 할당 정책을 가질 수 있다. 복수의 페이저가 제공된다. 수행되는 개별 스레드는 페이저가 페이지 오류를 처리하도록 지정된다. 페이저는 또한 물리 메모리 할당기에 연결된다. 부하 균형 또한 제공되어 물리 메모리 자원을 할당기들 사이에서 분배한다. 할당기들은 불균일 메모리 액세스를 반영할 수 있다.

Description

확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조{SCALABLE, CUSTOMIZABLE, AND LOAD-BALANCING PHYSICAL MEMORY MANAGEMENT SCHEME}
멀티 코어 프로세서의 물리 메모리 할당을 개선하는 확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조와 관련된다.
물리 메모리는 대표적으로 메인보드에 장착되는 RAM 모듈과 같은 하드웨어의 저장 능력을 의미한다. 예컨대, 컴퓨터가 4개의 512MB 메모리 모듈을 장착하였다면, 총 2GB의 물리 메모리를 갖는다. 가상 메모리는 멀티태스킹 환경에서의 메모리 관리에 관한 운영시스템의 특징이다. 특히, 가상 어드레스는 메모리 내에서 물리 어드레스에 매핑될 수 있다. 가상 메모리는 동일한 시스템에서 수행되는 타 프로세스와 무관하게 물리 메모리 어드레스 영역을 이용하여 프로세스가 처리될 수 있도록 한다.
운영 시스템(OS: Operating System)을 포함하는 소프트웨어 애플리케이션이 컴퓨터에서 실행되면, 컴퓨터의 프로세서는 물리 메모리에 애플리케이션의 런타임 상태(데이터)를 저장한다. 서로 다른 애플리케이션들(프로세스들) 사이의 물리 메모리 사용의 충돌을 방지하기 위하여, 운영시스템은 물리 메모리를 효율적이고 효과적으로 관리(즉, 할당 및 회수(de-allocation))하여야 한다. 대표적으로, 단일 데이터 구조를 이용하여 메모리의 어떤 부분이 사용되고 어떤 부분이 사용되지 않는지에 관한 정보를 기록한다. "할당기(allocator)"라는 용어를 사용하여 데이터 구조 및 할당/회수 방법을 설명한다.
도 1은 가상 어드레스에 액세스하는 프로세서를 나타낸 도면이다. 페이지 테이블은 가상 어드레스와 물리 어드레스 사이의 매핑을 저장한다. 페이지 테이블 내에서 특정 가상 어드레스에 관한 물리 어드레스를 판단하기 위한 참조(lookup)가 수행된다. 페이지 오류 예외(page fault exception)는 가상 어드레스에 액세스를 하였으나 물리 메모리에 백업되지 않는 경우에 발생한다. 오류가 발생한 애플리케이션의 상태(state)가 저장되고, 페이지 오류 핸들러(page fault handler)가 호출된다. 주어진 가상 어드레스에 대하여, 페이지 오류 핸들러가 사용 가능한 물리 페이지를 탐색하고, 신규 매핑을 페이지 테이블에 삽입하면, 오류가 발생한 애플리케이션의 실행이 재개된다. 종래에는 페이지 오류 핸들러가 단일 물리 메모리 할당기의 클라이언트였다.
멀티 코어 프로세서(multi-core processor) 및 매니 코어 프로세서(many-core processor)와 함께, 물리 메모리 관리에 새로운 시도가 이루어져 왔다. 첫째로, 다양한 종래 물리 메모리 관리 기법은 확장성이 좋지 않았다. 멀티 코어 또는 매니 코어 프로세서의 관점에서, 여러 애플리케이션들이 서로 다른 코어 상에서 실행되는 경우 물리 메모리를 동시에 요청할 수 있다. 물리 메모리를 관리하는 데에 사용되는 데이터 구조는 배타적으로 액세스되어야 한다. 그 결과, 메모리 할당 및 회수 요청은 순차적으로 핸들링되어야 하게 되므로, 확장성 제한을 가져오게 된다(즉, 액세스가 직렬화된다). 둘째로, 현존하는 운영시스템은 메모리 관리 구조의 맞춤화(customization)를 허용하지 않는다. 현존하는 메모리 관리 기법들은 모든 애플리케이션에 대해서 언제나 최상의 성능을 발휘하는 것은 아니다. 서로 다른 소프트웨어 애플리케이션들이 서로 다른 프로세서 코어 상에서 실행될 때에 다양한 기법들이 공존하도록 하는 것은 중요하다. 덧붙여, 다수의 구조가 동시에 배치된 경우 물리 모듈들 사이에서 부하 균형을 이루는 것(과 이를 통하여 충돌을 줄이고 성능을 개선하는 것)에 주의를 기울여야 한다.
멀티 코어 프로세서의 물리 메모리 할당을 개선하는 확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조를 제공한다.
멀티 코어 또는 매니 코어 프로세싱 시스템의 물리 메모리 관리 구조는 1 또는 그 이상의 코어에 각각 지정되는 복수의 개별 메모리 할당기를 포함한다. 개별 할당기는 전체 물리 메모리 영역의 일부를 관리하며 페이지 오류에 관한 메모리 할당 요청을 처리한다. 일 실시예에서 메모리 할당은 하드웨어 구조에 기초하여 결정될 수 있으며, 불균일 메모리 액세스(NUMA)를 따를 수 있다. 애플리케이션 스레드가 어떤 물리 메모리를 요청하거나 반환할 때, 그 스레드가 속하는 코어에 지정된 "로컬(local)" 할당기가 요청을 처리하는 데에 사용됨으로써 확장성(scalability)을 개선할 수 있다.
일 실시예에서, 할당기는 담당하는 물리 메모리를 관리하기 위하여 서로 다른 데이터 구조들과 할당/회수 방법(예컨대 슬랩(slab), 버디(buddy), AVL 트리(AVL tree) 등)을 가질 수 있다. 일 실시예에서 애플리케이션은 페이지 오류 핸들러 및 메모리 관리 API를 통하여 할당기를 맞춤화(customize)할 수 있다.
일 실시예에서 각각의 할당기는 부하를 관찰하며, 할당기들은 협력적으로 작동함으로써 부하 균형을 달성할 수 있다. 특히, 낮은 부하의 할당기(할당된 쿼터(quota)의 관점에서)는 사용되지 않은 자신의 쿼터 메모리를 높은 부하의 할당기에 지원할 수 있다.
부하 균형화, 맞춤화, 비균일 메모리 액세스 대응성 및 확장성을 지원함으로써 멀티 코어 프로세서의 물리 메모리 할당을 개선하는 확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조를 구현할 수 있는 효과가 있다.
도 1은 종래 기술의 페이지 오류 핸들링을 나타낸 도면,
도 2a는 일 실시예에 따른 2 또는 그 이상의 메모리 할당기를 갖는 메모리 관리를 수행하는 멀티 코어 시스템 환경을 예시한 도면,
도 2b는 일 실시예에 따른 애플리케이션들과 페이저 세트 간의 연결 및 페이저들과 복수의 메모리 할당기 간의 연결을 나타낸 도면,
도 3은 일 실시예에 따른 부하 균형성, 맞춤화 능력, 불균일 메모리 액세스(NUMA)가능성을 나타낸 도면,
도 4는 페이저와 메모리 할당기를 구성하는 방법을 나타낸 도면,
도 5는 일 실시예에 따른 페이지 오류 핸들링을 나타낸 도면이다.
도 2a는 발명의 양상을 설명하기 위한 일반적인 시스템 환경을 나타낸 도면이다. 멀티 코어 프로세서 시스템은 링크(L)에 연결된 복수의 프로세서 코어(200)(A,B,C)를 포함한다. 멀티 코어 또는 매니 코어를 구현할 때에 프로세서 코어는 단일 칩 상에 구현될 수 있다. 그러나, 더욱 일반적으로는, 개별 코어는 하나 또는 그 이상의 서로 다른 칩 상에 배치될 수 있다. 또한 물리 메모리 컨트롤러(205)(MC)는 코어가 물리 메모리에 액세스할 수 있도록 한다. 총 물리 메모리 영역은 메모리 컨트롤러들에 연결된 서로 다른 물리 메모리들을 전부 포함한다.
구조에 하드웨어 토폴로지의 측면에서 메모리 액세스의 "비용(cost)"이 물리 메모리의 배치에 좌우되는 불균일 메모리 액세스(NUMA: Non-Uniform Memory Access) 구조가 더 포함될 수 있다. 또한, 서로 다른 유형의 물리 메모리(예컨대, 비휘발성, 저전력)가 사용될 수도 있다. 프로세서 시스템은 멀티스레드이며 가상 메모리 어드레싱 구조를 이용하여 물리 메모리에 액세스하고, 페이지 테이블(도면에 나타내지 않음)을 두며, 페이지 오류의 처리는 가용 페이지를 발견하는 것을 포함하는데, 이는 메모리 할당을 필요로 한다.
도 2b는 개별 애플리케이션이 어떻게 1 세트의 페이저들 내의 개별 페이저에 지정(연결)되는지를 나타낸다. 페이저(페이지 오류 핸들러)들은 페이지 오류를 처리한다. 즉 페이저는 프로세서가 애플리케이션에 할당할 메모리의 일부를 찾고자 할 때에 호출되는 서비스 루틴이다. 따라서 페이저들은 메모리 할당기들의 클라이언트이다. 결과적으로, 일 실시예에서 개별 페이저는 기본 메모리 할당기(default memory allocator)에 연결된다. 그러므로, 애플리케이션의 개별 스레드는 페이저와 연관성을 가지며, 이 페이저는 메모리 할당기와 연관성을 가짐으로써, 개별 스레드에 페이지 오류가 있을 때 그 스레드에는 페이저와 메모리 할당기가 지정되어 있도록 한다.
도 3은 스레드, 페이저, 메모리 할당기, 프로세서 코어 및 물리 메모리가 어떻게 상호작용하며 부하 균형의 가능성(해당하는 경우), 맞춤화 가능성(해당하는 경우) 및 불균일 메모리 액세스 동작(해당하는 경우)과 같은 서로 다른 양상을 지원하는 데에 사용될 수 있는지를 나타낸 하이 레벨의 도면이다. 외부 물리 메모리들(예컨대 메모리1-메모리4)과 연관된 총 물리 메모리 영역은 M개의 할당기들의 집합으로 나뉘며, N개의 코어에 대하여 M 대 N 매핑으로 이루어진다. 따라서 각각의 메모리 할당기는 1 또는 그 이상의 코어에 지정될 수 있는데, 실시예에서는 코어 당 하나의 메모리 할당기가 지정된다.
개별 할당기는 전체 가용 물리 메모리 영역의 일부를 관리한다. 이는 하드웨어 구조에 기초하여 결정되거나 소정의 미리 지정된 시스템 설정으로 정해진다. 애플리케이션 스레드가 물리 메모리의 일부를 요청하거나 반환할 때, 스레드가 속하는 코어에 지정된 "로컬" 할당기가 사용되어 그 요청을 처리한다. 이를 통하여 코어 간 통신이 수행되어야 할 필요성을 제거하여 확장성을 개선할 수 있다.
각각의 할당기는 상이한 데이터 구조 및 담당하는 물리 메모리를 관리하기 위한 상이한 할당/반환 방법(예컨대 슬랩 할당기, 버디 할당기 또는 AVL 트리 할당기 등 널리 알려진 할당 방법들)을 가질 수 있다. 또한, 개별 할당기에 의한 맞춤형 할당 방법도 사용될 수 있다. 애플리케이션은 페이지 오류 핸들러(애플리케이션을 위한 메모리의 일부를 탐색하기 위하여 호출되는 서비스 루틴) 또는 일종의 외부 메모리 관리 API를 통하여 할당기를 구성할 수 있다. 이에 따라 시스템이 특정 애플리케이션 요구를 충족할 수 있도록 맞춤화를 할 수 있는 유연성을 갖게 된다.
일 실시예에서 각각의 할당기는 부하를(즉, 얼마나 많은 메모리가 할당되었는지를) 지정된 쿼터(quota)/물리 영역의 측면에서 관찰한다. 할당기들은 협력적으로 작동함으로써 부하 균형을 달성할 수 있도록 배치된다. 특히, 낮은 부하의 할당기(할당된 쿼터의 관점에서)는 사용되지 않은 자신의 쿼터 메모리를 높은 부하의 할당기에 지원할 수 있다.
일 실시예에서 각각의 페이저는 마이크로커널(microkernel) 기반 페이지 오류 핸들러로 구현되는데, 마이크로커널은 사용자 영역으로의 리다이렉션(redirection)을 핸들링하는 페이지 오류를 위한 서비스를 제공하는 씬 계층 (thin layer)이다. 또한 마이크로커널은 시스템에서 실행되는 각각의 프로세스에 관한 페이지 테이블 데이터 구조를 포함한다. 마이크로커널 구조는 일반적으로 페이저가 사용자 영역에서 수행되게끔 한다. 또한, 할당기는 사용자 영역에 속한다. 그 자체로서 운영 시스템을 변경하지 않고 할당기의 맞춤화를 할 수 있다는 점에서 이는 장점이 된다. 특히, 프로세서가 애플리케이션 스레드의 페이지 오류를 감지하면, 이는 신규 물리 메모리 할당 요청이 처리되어야 함을 의미하는데, 페이지 오류 정보를 1 또는 그 이상의 할당기에 연결된 페이저에 전송한다. 예컨대 애플리케이션 스레드들 및 메모리 할당기에 연관된 프로토콜이 페이저를 통하여 구현될 수 있다.
물리 메모리 관리를 위한 단일 집중화 메모리 할당기 데이터 구조를 사용하지 않으므로 고도로 확장성이 있다. 즉, 코어의 개수가 증가함에 따라 메모리 할당기의 개수도 증가할 수 있다.
실시예들은 기저의 플랫폼이 가질 수 있는 불균일 메모리 액세스(NUMA: Non-Uniform Memory Access) 특성을 메모리 할당이 고려하도록 구현될 수 있다. 불균일 메모리 액세스를 고려하여 구현된 경우 시스템은 하드웨어 특성을 인식할 수 있으며 애플리케이션에 대하여 "최소 비용(least cost)"을 갖는(예컨대 최저 지연과 같은 수치에 따라) 메모리 뱅크로부터 메모리를 할당할 수 있다.
실시예들에서 애플리케이션에 특화한 할당 구조가(예컨대 페이저를 통하여) 가능하므로 맞춤화가 가능하다. 이에 따라 사용자들은 애플리케이션에 최적화된 메모리 할당 구조를 정의하거나 선택할 수 있다. 예컨대, 맞춤화는 서로 다른 데이터 구조를 이용하여 물리 메모리를 관리하거나 서로 다른 할당 알고리즘을 이용하는 것을 포함할 수 있다.
실시예들에서는 또한 부하 균형(load-balancing)을 지원할 수 있다. 이를 통하여 물리 메모리가 효율적으로 사용되어 더 좋은 결과를 얻을 수 있다. 부하 균형을 통하여 유휴 메모리가 높은 부하의 할당기에 제공될 수 있다. 주어진 코어-할당기 구조(per-core-allocator scheme)에 대하여, 높은 부하의 할당기는 인접 할당기들로부터 일부 메모리를 빌려올 수 있다.
메모리 할당기들과 페이저들을 구축하기 위한 단계들의 예시
도 4는 메모리 할당기들과 페이저들을 구축하기 위한 방법을 예시한 도면이다. 일 실시예에서 메모리 할당기들은 운영 시스템의 커널의 부팅이 이루어질 때에 구축된다(단계 405). 운영 시스템의 커널의 부팅이 이루어지면, 커널은 자동적으로 하드웨어 정보/토폴로지를 식별하고, 그 에 따라 할당기들을 초기화한다. 할당기 초기화를 구동하기 위하여 필요한 예시 정보는 메모리의 총 크기, 메모리 컨트롤러의 개수 및 불균일 메모리 액세스 특성을 포함한다. 이 정보에 기초하여, 메모리 할당기의 개수 및 각각의 할당기가 관리하는 메모리 공간이 결정될 수 있다. 이러한 할당기들은 초기화되고 서로 다른 코어에 지정됨으로써, 코어의 개수가 N이고 할당기의 개수가 M이라고 할 때에 M 대 N의 매핑이 이루어지게 된다.
또한, 한 세트의 페이저가 구축되어 개별 메모리 할당기들과 연결된다(단계 410). 페이저의 개수는 맞춤화될 수 있으나, 바람직하게는 코어마다 적어도 하나씩 있음으로써 우수한 확장성을 얻을 수 있도록 하는 것이 좋다. 따라서, 한 세트의 페이저가 생성될 필요가 있고, 메모리 할당기가 이들 각각에 지정된다. 확장성을 얻기 위해서는 각 코어마다 적어도 하나의 페이저를 생성하고, 이들 페이저를 동일한 코어에 지정된 할당기에 연결하는 것이 바람직하다. 더욱 일반적으로는 페이저들과 메모리 할당기들 간의 매핑은 M 대 N이 되도록 할 수 있다.
애플리케이션은 또한 페이저들과 연결된다(단계 415). 애플리케이션 스레드는 페이지 오류를 생성한다. 따라서, 각각의 스레드는 페이지 오류를 처리할 페이저를 특정할 필요가 있다. 단계 410과 유사하게, 동일한 코어 상에서 수행되는 경우, 하나의 페이저는 하나의 스레드에 연결된다.
단계 410 및 415 이후에, 애플리케이션 스레드는 어떤 종류의 할당을 페이저를 통하여 필요로 하는지에 대해서(즉, 내부 데이터 구조, 할당 방법 등) 할당기와 통신할 수 있다. 따라서, 한 세트의 프로토콜이 이러한 목적으로 미리 지정될 수 있다.
동작의 예시
먼저 보통의 요청을 처리하는 경우를 고려한다. 도 5를 참조하면, 페이지 오류 핸들링이 종래 기술과 다른 점은, 개별 페이저가 개별 애플리케이션에 연결되어 있다는 점이다. 또한, 각각의 페이저는 개별 메모리 할당기에 연결된다. 페이지 오류가 애플리케이션 스레드로부터 커널을 경유하여 페이저로 전송되면, 페이저는 올바른 할당기를 탐색한 후 애플리케이션에 관한 물리 메모리의 일부를 얻기 위한 할당 방법(allocation method)을 적용한다. 이와 유사하게, 스레드가 파손되었음을 커널이 페이저에게 통지하는 경우, 페이저는 각각의 할당기가 이전에 할당된 메모리를 반환하도록 하는 회수 방법(de-allocation method)을 적용한다.
특히 프로세서는 단계 501에서 가상 어드레스(virtual address)에 액세스한다. 페이지 테이블은 가상 어드레스와 물리 어드레스 간의 매핑을 저장한다. 단계 502에서는 페이지 테이블 내에서 참조가 수행되어 특정 가상 어드레스에 대한 물리 어드레스가 정해진다. 페이지 오류 예외(page fault exception)는 가상 어드레스에 액세스를 하였으나 물리 메모리에 백업되지 않는 경우에 발생한다. 단계 503에서는 오류가 발생한 애플리케이션의 상태(state)가 저장되고, 페이지 오류 핸들러(page fault handler)가 호출된다. 호출된 특정 페이저는 애플리케이션들과 페이저들 간의 관계에 기초한다. 주어진 가상 어드레스에 대하여, 선택된 페이저는 메모리 할당기에 할당을 요청하고, 가용 물리 페이지를 탐색한다. 단계 504에서는 신규 매핑이 리턴되어 페이지 테이블에 삽입되고, 단계 505에서는 오류가 발생한 애플리케이션의 실행이 재개된다.
앞서 설명한 바와 같이, 일 실시예에서 메모리 할당기는 맞춤화될 수 있다. 맞춤화 요청을 처리하는 경우를 고려하기로 한다. 보통의 할당/회수 요청을 처리하는 것과 별도로, 일 실시예에서는 각각의 할당기가 한 세트의 API도 제공하여, 페이저들이 내부 데이터 구조 및 할당/회수 방법을 구성할 수 있도록 한다. 서로 다른 알고리즘들이 사용될 수 있다. 애플리케이션들은 원하는 할당 알고리즘을 페이저를 통하여 또는 외부 API 호출을 통하여 전송할 수 있다.
마지막으로, 부하 균형화 요청을 처리하는 경우를 고려한다. 일 실시예에서 각각의 할당기는 부하 균형화 요청을 처리할 수 있다. 할당 요청을 처리한 후, 각각의 할당기는 가용 메모리의 크기를 임계값과 비교한다. 만약 크기가 너무 작다면, 타 메모리 할당기들에 추가 메모리를 구하는 요청을 수행한다. 낮은 부하를 가지면서 최대 가용 메모리를 갖는 할당기는 관리하는 메모리의 일부를 요청에 따라 제공할 수 있다. 얼마나 많은 메모리를 제공할 것인지를 판단하기 위하여 서로 다른 정책이 적용될 수 있다. 예컨대, 총 가용 메모리의 절반 또는 요청된 양의 2배가 제공되도록 할 수 있다. 제공된 메모리는 부하가 작아진 때에는 반환되어야 한다.
일 실시예가 부하 균형화, 맞춤화 및 비균일 메모리 액세스 대응성을 지원함을 주목하여야 한다. 또한, 확장성도 지원된다. 이러한 특성들은 각각이 매우 훌륭한 특성일 뿐만 아니라 함께 조합한 경우에 다양한 사용 시나리오에 대해서 특히 유용하다.
구성요소, 처리 단계 및/또는 데이터 구조는 다양한 유형의 운영 시스템, 프로그래밍 언어, 컴퓨팅 플랫폼, 컴퓨터 프로그램, 및/또는 범용 장비를 이용하여 구현될 수 있다. 또한, 이 기술분야의 보통의 기술자라면 덜 범용적인 장비, 예컨대 하드웨어에 내장된 장비, FPGA, 주문형 반도체(ASIC) 등도 여기에 개시된 발명 개념의 범위와 정신을 벗어남 없이 사용될 수 있음을 알 수 있다. 발명은 또한 메모리 장치와 같은 컴퓨터로 판독할 수 있는 매체 상에 저장된 컴퓨터 명령 세트로서 유형적으로 구현될 수 있다.
앞서 설명한 다양한 양상, 특징, 실시예 또는 구현은 독자적으로도 다양한 결합으로도 사용될 수 있다. 다양한 특징과 장점들이 발명의 상세한 설명의 기재를 통하여 명백하므로, 첨부한 특허청구범위는 그러한 모든 특징과 장점을 포괄하고자 의도된다. 나아가, 다양한 변형과 변경이 이 기술분야의 기술자에 의하여 가능하므로, 발명은 여기에서 묘사되고 설명된 구성과 동작만으로 제한되어서는 안된다. 따라서, 모든 적절한 변형물과 균등물은 발명의 범위에 속하는 것으로 해석되어야 한다.

Claims (19)

  1. 복수의 페이저로부터 스레드에 관한 페이저를 선택함으로써 상기 스레드에 대한 페이지 오류 예외를 핸들링하는 단계;
    선택된 상기 페이저에 연결된 할당기에 접속함으로써 복수의 물리 메모리 할당기들로부터 물리 메모리 할당기를 선택하는 단계; 및
    할당 요청에 응답하여 물리 메모리의 일부의 할당을 수신하여 상기 스레드에 대한 상기 페이지 오류 예외를 처리하는 단계;를 포함하는 멀티 스레드, 멀티 코어 프로세싱 시스템의 물리 메모리 관리 방법.
  2. 제1항에 있어서,
    상기 복수의 물리 메모리 할당기의 각각은 맞춤형인 멀티 스레드, 멀티 코어 프로세싱 시스템의 물리 메모리 관리 방법.
  3. 제1항에 있어서,
    적어도 하나의 물리 메모리 할당기가 각각의 프로세서 코어에 지정되는 멀티 스레드, 멀티 코어 프로세싱 시스템의 물리 메모리 관리 방법.
  4. 제1항에 있어서,
    상기 페이저에 연결된 상기 할당기가 아닌 할당기로부터의 물리 메모리 할당 요청을 전송함으로써 부하 균형을 제공하는 단계;를 더 포함하는 멀티 스레드, 멀티 코어 프로세싱 시스템의 물리 메모리 관리 방법.
  5. 제1항에 있어서,
    상기 멀티 코어 프로세서는 불균일 메모리 액세스 구조를 가지며,
    상기 방법은 애플리케이션에 관한 최소 비용 메모리 뱅크로부터 물리 메모리를 할당하는 적어도 하나의 물리 메모리 할당기를 더 포함하는 멀티 스레드, 멀티 코어 프로세싱 시스템의 물리 메모리 관리 방법.
  6. 제1항에 있어서,
    상기 애플리케이션은 페이저에 연결된 멀티 스레드, 멀티 코어 프로세싱 시스템의 물리 메모리 관리 방법.
  7. 제1항에 있어서,
    페이저는 물리 메모리 할당기에 연결된 멀티 스레드, 멀티 코어 프로세싱 시스템의 물리 메모리 관리 방법.
  8. 스레드에 관련된 애플리케이션에 연결된 페이저에 접속하여 복수의 페이저로부터 페이저를 선택함으로써 상기 스레드에 관한 페이지 오류 예외를 처리하는 단계; 및
    상기 페이지 오류 예외를 처리하기 위하여 할당 요청에 대응하여 물리 메모리의 일부의 할당을 수신하는 선택된 상기 페이저에 연결된 메모리 할당기에 접속함으로써 복수의 메모리 할당기들로부터 메모리 할당기를 선택하는 단계;를 포함하는 방법을 프로세서 상에서 실행함으로써 수행하는 비일시적인 컴퓨터로 판독 가능한 매체 상에 저장된 컴퓨터 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
  9. 제8항에 있어서,
    상기 복수의 메모리 할당기들의 각각은 맞춤형인 컴퓨터 프로그램 제품.
  10. 제8항에 있어서,
    적어도 하나의 메모리 할당기가 각각의 프로세서 코어에 지정되는 컴퓨터 프로그램 제품.
  11. 제8항에 있어서,
    상기 페이저에 연결된 상기 할당기가 아닌 할당기로부터의 물리 메모리 할당 요청을 전송함으로써 부하 균형을 제공하는 단계;를 더 포함하는 방법을 프로세서 상에서 실행함으로써 수행하는 비일시적인 컴퓨터로 판독 가능한 매체 상에 저장된 컴퓨터 프로그램 코드를 포함하는 컴퓨터 프로그램 제품.
  12. 제8항에 있어서,
    상기 멀티 코어 프로세서는 불균일 메모리 액세스 구조를 가지며, 적어도 하나의 물리 메모리 할당기가 애플리케이션에 관한 최소 비용 메모리 뱅크로부터 메모리를 할당하는 컴퓨터 프로그램 제품.
  13. 제8항에 있어서,
    애플리케이션은 페이저에 연결된 컴퓨터 프로그램 제품.
  14. 제1항에 있어서,
    페이저는 물리 메모리 할당기에 연결된 컴퓨터 프로그램 제품.
  15. 복수의 프로세서 코어;
    복수의 물리 메모리를 포함하는 물리 메모리 영역; 및
    복수의 페이저들로부터의 페이지 오류들에 관한 메모리 할당 요청을 처리하는 복수의 메모리 할당기;를 포함하며,
    스레드 간, 페이저 간, 메모리 할당기 간의 관계에 기초하여 메모리 할당기를 지정하는 시스템.
  16. 제15항에 있어서,
    상기 복수의 물리 메모리 할당기의 각각은 맞춤형인 시스템.
  17. 제15항에 있어서,
    적어도 하나의 물리 메모리 할당기가 각각의 프로세서 코어에 지정된 시스템.
  18. 제15항에 있어서,
    상기 페이저에 연결된 메모리 할당기가 아닌 메모리 할당기로부터 물리 메모리 할당 요청을 전송함으로써 부하 균형을 제공하는 시스템.
  19. 제15항에 있어서,
    상기 멀티 코어 프로세서는 불균일 메모리 액세스 구조를 가지며, 적어도 하나의 물리 메모리 할당기가 애플리케이션에 관한 최소 비용 메모리 뱅크로부터 메모리를 할당하는 시스템.
KR1020130014055A 2012-03-02 2013-02-07 확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조 Withdrawn KR20130100689A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/411,148 US20130232315A1 (en) 2012-03-02 2012-03-02 Scalable, customizable, and load-balancing physical memory management scheme
US13/411,148 2012-03-02

Publications (1)

Publication Number Publication Date
KR20130100689A true KR20130100689A (ko) 2013-09-11

Family

ID=49043509

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130014055A Withdrawn KR20130100689A (ko) 2012-03-02 2013-02-07 확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조

Country Status (2)

Country Link
US (1) US20130232315A1 (ko)
KR (1) KR20130100689A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230012670A (ko) * 2021-07-16 2023-01-26 성균관대학교산학협력단 Numa 시스템의 동작 방법

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9401869B1 (en) * 2012-06-04 2016-07-26 Google Inc. System and methods for sharing memory subsystem resources among datacenter applications
US10445243B2 (en) * 2013-03-14 2019-10-15 Nvidia Corporation Fault buffer for resolving page faults in unified virtual memory system
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
KR102376474B1 (ko) * 2015-03-20 2022-03-21 한국전자통신연구원 버디 할당자를 이용한 저장 공간 할당 방법
US9886313B2 (en) * 2015-06-19 2018-02-06 Sap Se NUMA-aware memory allocation
US10416890B2 (en) 2015-09-09 2019-09-17 Intel Corporation Application execution enclave memory page cache management method and apparatus
US10346306B2 (en) * 2016-04-02 2019-07-09 Intel Corporation Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions
US10380013B2 (en) * 2017-12-01 2019-08-13 International Business Machines Corporation Memory management
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11068310B2 (en) * 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
CN115421927B (zh) * 2022-10-31 2023-03-24 统信软件技术有限公司 一种负载均衡方法、计算设备及存储介质
CN117931452B (zh) * 2024-01-30 2025-07-25 深圳华大九天科技有限公司 一种基于arm平台的并行电路仿真线程的绑定方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8776050B2 (en) * 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US7383396B2 (en) * 2005-05-12 2008-06-03 International Business Machines Corporation Method and apparatus for monitoring processes in a non-uniform memory access (NUMA) computer system
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US8312230B2 (en) * 2008-06-06 2012-11-13 International Business Machines Corporation Dynamic control of partition memory affinity in a shared memory partition data processing system
US9164812B2 (en) * 2009-06-16 2015-10-20 International Business Machines Corporation Method and system to manage memory accesses from multithread programs on multiprocessor systems
US8806158B2 (en) * 2010-09-22 2014-08-12 International Business Machines Corporation Intelligent computer memory management
US9921967B2 (en) * 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230012670A (ko) * 2021-07-16 2023-01-26 성균관대학교산학협력단 Numa 시스템의 동작 방법

Also Published As

Publication number Publication date
US20130232315A1 (en) 2013-09-05

Similar Documents

Publication Publication Date Title
KR20130100689A (ko) 확장가능한 맞춤형 균형 부하 물리 메모리 관리 구조
US12073242B2 (en) Microservice scheduling
US10609129B2 (en) Method and system for multi-tenant resource distribution
JP5507660B2 (ja) 仮想マシン用非一様仮想メモリーアーキテクチャー
JP5507661B2 (ja) 仮想マシン用非一様仮想メモリーアーキテクチャー
US9223709B1 (en) Thread-aware cache memory management
US7222343B2 (en) Dynamic allocation of computer resources based on thread type
JP6355114B2 (ja) リソース処理方法、オペレーティング・システム、およびデバイス
US8762999B2 (en) Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement
US20040194098A1 (en) Application-based control of hardware resource allocation
US10691481B2 (en) System and method for detection of underprovisioning of memory in virtual machines
US20100229175A1 (en) Moving Resources In a Computing Environment Having Multiple Logically-Partitioned Computer Systems
US11144473B2 (en) Quality of service for input/output memory management unit
US20090307432A1 (en) Memory management arrangements
JP2016541072A5 (ko)
US8056084B2 (en) Method and system for dynamically reallocating a resource among operating systems without rebooting of the computer system
CN114546587A (zh) 一种在线图像识别服务的扩缩容方法及相关装置
Jacquet et al. Sweetspotvm: Oversubscribing CPU without sacrificing VM performance
US10412193B2 (en) Usage-aware standby service in a grid environment
CN121411958A (zh) 一种Linux环境下CXL内存的分配调度方法
EP4698995A1 (en) Mapping virtual processor cores to heterogeneous physical processor cores

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20130207

PG1501 Laying open of application
PC1203 Withdrawal of no request for examination
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid