KR101848418B1 - 불균일 기억 장치 접근(numa) 구조에서 메모리 정책기반 쓰레드 재배치 방법 - Google Patents

불균일 기억 장치 접근(numa) 구조에서 메모리 정책기반 쓰레드 재배치 방법 Download PDF

Info

Publication number
KR101848418B1
KR101848418B1 KR1020150190930A KR20150190930A KR101848418B1 KR 101848418 B1 KR101848418 B1 KR 101848418B1 KR 1020150190930 A KR1020150190930 A KR 1020150190930A KR 20150190930 A KR20150190930 A KR 20150190930A KR 101848418 B1 KR101848418 B1 KR 101848418B1
Authority
KR
South Korea
Prior art keywords
memory
allocation method
node
memory allocation
information
Prior art date
Application number
KR1020150190930A
Other languages
English (en)
Other versions
KR20170079899A (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 서강대학교산학협력단
Priority to KR1020150190930A priority Critical patent/KR101848418B1/ko
Publication of KR20170079899A publication Critical patent/KR20170079899A/ko
Application granted granted Critical
Publication of KR101848418B1 publication Critical patent/KR101848418B1/ko

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Memory System (AREA)

Abstract

본 발명은 불균일 기억 장치 접근(NUMA) 구조 제어방법에 관한 것으로서, 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 모니터링하는 단계, 및 메모리에 할당할 버퍼가 발생하면, 상기 모니터링하는 정보에 따라 메모리 배치 방법을 설정하는 단계를 포함하고, 상기 메모리 배치 방법은, 로컬 메모리 배치 방법 또는 인터리브 메모리 배치 방법인 것을 특징으로 함으로써, 현재 상황에 가장 적합한 메모리 정책을 정해줌으로써 시스템의 전체적인 로컬 엑세스를 늘리고, 로드밸런싱을 맞출 수 있으며, 페이지 별로 정해진 메모리 정책을 기반으로 한 주기적인 쓰레드 재배치를 통해 전체적인 성능을 향상시킬 수 있다.

Description

불균일 기억 장치 접근(NUMA) 구조에서 메모리 정책기반 쓰레드 재배치 방법{A Memory Policy Aware Thread Placement policy for NUMA-based Linux Servers}
본 발명은 불균일 기억 장치 접근 구조 제어방법에 관한 것으로서, 더욱 상세하게는 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 이용하여 메모리 배치 방법을 설정하고 쓰레드를 재배치하는 불균일 기억 장치 접근 구조 제어방법에 관한 것이다.
지난 35년간의 프로세서의 발전 경향은 단일 쓰레드의 성능은 2008년을 기점으로 정체되어있지만 코어의수를 증가시키는 기술발전은 증가하고 있다. 현재 사용되는 서버 급에서는 20,60코어 많게는 120코어까지 탑재된 제품이 출시되고 있다. 현재 서버에서는 기존의 SMP(Symmetric Parallel Processing)구조에 비해 추가적인 하드웨어의 확장이 용이하고, 노드 별로 개별 메모리를 갖는 NUMA구조를 사용하는 경향이다. NUMA 구조에서의 노드는 로컬 메모리와 여러 개의 코어로 구성되며, 각 노드는 QPI(Intel Quick Pass interconnect)와 같은 고속 상호 접속을 통해 다른 노드와 연결된다. 노드 내부에서 사용 가능한 모든 메모리 액세스는 동일한 특성을 갖는 반면, 다른 NUMA 노드에 위치한 리모트 메모리 액세스는 추가적인 지연을 유도한다. 그 결과, 실행 쓰레드는 쓰레드의 위치에 따른 성능 차이를 경험한다. 또한 접근하는 홉 수에 따라 추가되는 지연의 양이 달라진다. 이는 같은 리모트 메모리 엑세스라도 노드 간 거리의 차이에 비례하여 지연의 양 또한 늘어난다는 것을 의미한다.
예기치 못한 NUMA 메모리 지연을 피하기 위해 리눅스에서 쓰레드와 데이터 사이의 친화도를 최대화할 수 있도록 NUMAsched와 AutoNUMA는 쓰레드를 재배치한다. Numasched는 기본적으로 쓰레드가 생성되었을 때 해당 쓰레드가 생성된 노드에 할당되도록 하며, CPU와 메모리의 부하 정도를 이용하여 주기적으로 가장 적은 부하를 가진 노드로 이동 시켜준다. 쓰레드를 노드에 할당할 때, CPU 로드와 메모리 부하 정도의 두 가지 정보를 가지고, 스케쥴링을 하게 된다. AutoNUMA는 NUMA 구조 위에서 쓰레드와 사용 메모리의 위치를 같은 노드에 위치하게 하여 각 쓰레드들의 로컬 메모리의 사용을 증가시키게끔 메모리와 쓰레드를 이동해준다. AutoNUMA에서의 쓰레드 배치 기법은 NUMA Fault Statistics를 이용하여, 각 쓰레드의 노드별 메모리 참조 양이 가장 많은 노드로 이동시키는 것을 메인 아이디어로 한다.
한국공개특허공보 멀티-스레드 가상머신에서 메모리할당방법 및 그 장치 (특2000-0006565)
본 발명이 해결하고자 하는 첫 번째 과제는 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 이용하여 메모리 배치 방법을 설정하고 쓰레드를 재배치하는 불균일 기억 장치 접근 구조 제어방법을 제공하는 것이다.
본 발명이 해결하고자 하는 두 번째 과제는 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 이용하여 메모리 배치 방법을 설정하고 쓰레드를 재배치하는 불균일 기억 장치 접근 시스템을 제공하는 것이다.
본 발명은 상기 첫 번째 과제를 달성하기 위하여, 불균일 기억 장치 접근(NUMA) 구조 제어방법에 있어서, 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 모니터링하는 단계; 및 메모리에 할당할 버퍼가 발생하면, 상기 모니터링하는 정보에 따라 메모리 배치 방법을 설정하는 단계를 포함하고, 상기 메모리 배치 방법은, 로컬 메모리 배치 방법 또는 인터리브 메모리 배치 방법인 것을 특징으로 하는 방법을 제공한다.
본 발명의 실시예에 의하면, 상기 메모리 배치 방법을 설정하는 단계는, 상기 현재 노드의 메모리 정보에 따라 현재 노드의 메모리에 상기 버퍼를 할당할 공간이 부족한 경우, 상기 쓰레드의 입출력 수치 정보에 따라 상기 할당할 버퍼의 쓰레드의 입출력 수치의 전체 입출력 수치에 대한 비율이 제 1 임계치 이하인 경우, 또는 상기 전체 노드의 메모리 정보에 따라 전체 노드의 메모리의 빈 공간의 비율이 제 2 임계치 이하인 경우 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정하는 것을 특징으로 하는 방법일 수 있다.
본 발명의 실시예에 의하면, 상기 제 1 임계치 또는 제 2 임계치는 10 퍼센티지인 것을 특징으로 하는 방법일 수 있다.
본 발명의 실시예에 의하면, 상기 메모리 배치 방법을 설정하는 단계는, 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정하는 경우, 상기 버퍼를 할당할 노드를 현재 노드로부터 소정의 홉 수 내로 제한하는 것을 특징으로 하는 방법일 수 있다.
본 발명의 실시예에 의하면, 상기 버퍼를 할당할 노드를 현재 노드와 인접한 노드에 할당되도록 홉 수를 1로 제한하는 것을 특징으로 하는 방법일 수 있다.
본 발명의 실시예에 의하면, 상기 설정되는 메모리 배치 방법이 인터리브 메모리 배치 방법인 경우, 쓰레드가 접근하는 버퍼들이 할당된 메모리의 노드 정보를 이용하여, 해당 쓰레드가 버퍼들에 접근하는 홉 수가 최소가 되도록 쓰레드를 재배치하는 단계를 더 포함하는 것을 특징으로 하는 방법일 수 있다.
본 발명은 상기 두 번째 과제를 달성하기 위하여, 불균일 기억 장치 접근(NUMA) 시스템에 있어서, 쓰레드가 할당되는 복수의 노드; 상기 노드에 위치하는 메모리; 및 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 모니터링하고, 메모리에 할당할 버퍼가 발생하면, 상기 모니터링하는 정보에 따라 메모리 배치 방법을 설정하는 처리부를 포함하고, 상기 메모리 배치 방법은, 로컬 메모리 배치 방법 또는 인터리브 메모리 배치 방법인 것을 특징으로 하는 시스템을 제공한다.
본 발명의 실시예에 의하면, 상기 처리부는, 상기 현재 노드의 메모리 정보에 따라 현재 노드의 메모리에 상기 버퍼를 할당할 공간이 부족한 경우, 상기 쓰레드의 입출력 수치 정보에 따라 상기 할당할 버퍼의 쓰레드의 입출력 수치의 전체 입출력 수치에 대한 비율이 제 1 임계치 이하인 경우, 또는 상기 전체 노드의 메모리 정보에 따라 전체 노드의 메모리의 빈 공간의 비율이 제 2 임계치 이하인 경우 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정하는 것을 특징으로 하는 시스템일 수 있다.
본 발명의 실시예에 의하면, 상기 처리부는, 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정하는 경우, 상기 버퍼를 할당할 노드를 현재 노드로부터 소정의 홉 수 내로 제한하는 것을 특징으로 하는 시스템일 수 있다.
본 발명의 실시예에 의하면, 상기 처리부는, 상기 설정되는 메모리 배치 방법이 인터리브 메모리 배치 방법인 경우, 쓰레드가 접근하는 버퍼들이 할당된 메모리의 노드 정보를 이용하여, 해당 쓰레드가 버퍼들에 접근하는 홉 수가 최소가 되도록 쓰레드를 재배치하는 것을 특징으로 하는 시스템일 수 있다.
본 발명에 따르면, 현재 상황에 가장 적합한 메모리 정책을 정해줌으로써 시스템의 전체적인 로컬 엑세스를 늘리고, 로드밸런싱을 맞추어준다. 또한 페이지 별로 정해진 메모리 정책을 기반으로 한 주기적인 쓰레드 재배치를 통해 전체적인 성능을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 불균일 기억 장치 접근 시스템의 블록도이다.
도 2는 불균일 기억 장치 접근의 구조이다.
도 3은 각 노드별 latency의 측정 결과이다.
도 4 내지 6은 메모리 배치 방법에 따른 결과이다.
도 7은 본 발명의 일 실시예에 따른 불균일 기억 장치 접근(NUMA) 구조 제어방법의 흐름도이다.
도 8은 본 발명의 실시예에 따른 불균일 기억 장치 접근(NUMA) 구조 제어방법의 흐름도이다.
본 발명에 관한 구체적인 내용의 설명에 앞서 이해의 편의를 위해 본 발명이 해결하고자 하는 과제의 해결 방안의 개요 혹은 기술적 사상의 핵심을 우선 제시한다.
본 발명의 일 실시예에 따른 불균일 기억 장치 접근(NUMA) 구조 제어방법은 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 모니터링하는 단계, 및 메모리에 할당할 버퍼가 발생하면, 상기 모니터링하는 정보에 따라 메모리 배치 방법을 설정하는 단계를 포함하고, 상기 메모리 배치 방법은, 로컬 메모리 배치 방법 또는 인터리브 메모리 배치 방법인 것을 특징으로 한다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 실시 예를 상세히 설명한다. 그러나 이들 실시예는 본 발명을 보다 구체적으로 설명하기 위한 것으로, 본 발명의 범위가 이에 의하여 제한되지 않는다는 것은 당업계의 통상의 지식을 가진 자에게 자명할 것이다.
본 발명이 해결하고자 하는 과제의 해결 방안을 명확하게 하기 위한 발명의 구성을 본 발명의 바람직한 실시예에 근거하여 첨부 도면을 참조하여 상세히 설명하되, 도면의 구성요소들에 참조번호를 부여함에 있어서 동일 구성요소에 대해서는 비록 다른 도면상에 있더라도 동일 참조번호를 부여하였으며 당해 도면에 대한 설명시 필요한 경우 다른 도면의 구성요소를 인용할 수 있음을 미리 밝혀둔다. 아울러 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 본 발명과 관련된 공지 기능 혹은 구성에 대한 구체적인 설명 그리고 그 이외의 제반 사항이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그 상세한 설명을 생략한다.
도 1은 본 발명의 일 실시예에 따른 불균일 기억 장치 접근 시스템의 블록도이다.
본 발명의 일 실시예에 따른 불기장접 시스템(100)은 노드(110), 메모리(120), 및 처리부(130)로 구성된다.
노드(110)에는 쓰레드가 할당되며, 각 노드에는 메모리(120)가 위치한다.
처리부(130)는 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 모니터링하고, 메모리에 할당할 버퍼가 발생하면, 상기 모니터링하는 정보에 따라 메모리 배치 방법을 설정한다.
보다 구체적으로, 메모리에 할당될 버퍼가 발생하는 경우, 해당 노드의 메모리에 할당하는 것은 로컬 엑세스(local access)이고, 다른 노드의 메모리에 할당하는 것은 리모트 엑세스(remote access)이다. 로컬 엑세스보다 리모트 엑세스를 이용하는 것이 지연이 많아지며, 리모트 엑세스를 수행함에 있어서도 접근하는 홉수에 따라 지연 양의 차이가 많이 발생하는바, 새로운 버퍼를 어느 메모리에 배치하는지에 따라 전체 시스템의 효율이 달라진다. 이를 해결하기 위하여, 메모리 배치 방법은 결정하는 것이 중요하다.
처리부(130)는 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보에 따라 메모리 배치 방법을 로컬(local) 메모리 배치 방법 또는 인터리브(interleave) 메모리 배치 방법 중 적합한 메모리 배치 방법을 선택하여 설정한다. 로컬 메모리 배치 방법은 현재 노드 또는 인접한 노드의 메모리에 버퍼를 할당하는 방법이고, 인터리브 메모리 배치 방법은 모든 노드에 균등하게 버퍼를 할당하는 방법이다.
처리부(130)는 상기 현재 노드의 메모리 정보에 따라 현재 노드의 메모리에 상기 버퍼를 할당할 공간이 부족한 경우, 상기 쓰레드의 입출력 수치 정보에 따라 상기 할당할 버퍼의 쓰레드의 입출력 수치의 전체 입출력 수치에 대한 비율이 제 1 임계치 이하인 경우, 또는 상기 전체 노드의 메모리 정보에 따라 전체 노드의 메모리의 빈 공간의 비율이 제 2 임계치 이하인 경우 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정한다.
초기 메모리 배치 방법은 지연시간이 적은 로컬 메모리 배치 방법으로 설정할 수 있다. 로컬 메모리 배치 방법으로 수행하다, 일정한 조건에 해당하면 인터리브 메모리 배치 방법으로 설정을 변경한다.
메모리 배치 방법 변경을 결정하기 위하여, 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 모니터링한다. 모니터링 정보를 이용하여 상기 현재 노드의 메모리 정보에 따라 현재 노드의 메모리에 상기 버퍼를 할당할 공간이 부족한 경우, 상기 쓰레드의 입출력 수치 정보에 따라 상기 할당할 버퍼의 쓰레드의 입출력 수치의 전체 입출력 수치에 대한 비율이 제 1 임계치 이하인 경우, 또는 상기 전체 노드의 메모리 정보에 따라 전체 노드의 메모리의 빈 공간의 비율이 제 2 임계치 이하인 경우 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정한다.
첫 번째 조건으로, 현재 노드의 메모리 정보에 따라 현재 노드의 메모리에 상기 버퍼를 할당할 공간이 부족한 경우 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정할 수 있다. 현재 쓰레드의 버퍼가 각각의 노드에서 로컬 엑세스가 불가능할 경우로 로컬 메모리 배치 방법은 가장 가까운 노드를 찾을 때까지 각 노드의 빈 공간을 확인할 것이고, 최악의 경우 가장 먼 노드에 버퍼를 할당할 수 있다. 이는 성능하락에 주요 원인이 되기 때문에 인터리브 메모리 배치 방법으로 변경한다.
두 번째 조건으로, 상기 쓰레드의 입출력 수치 정보에 따라 상기 할당할 버퍼의 쓰레드의 입출력 수치의 전체 입출력 수치에 대한 비율이 제 1 임계치 이하인 경우 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정할 수 있다. 입출력(I/O) 개수가 상대적으로 적은 쓰레드인 경우 로컬과 리모트 엑세스의 영향이 비교적 적기 때문에 전체 입출력 개수 중 일정 비율 이하의 입출력 개수를 갖는 쓰레드는 인터리브 메모리 배치 방법을 통해 각 노드에 버퍼를 분배하여 I/O 개수가 많은 쓰레드들이 로컬 엑세스가 더 많이 일어날 수 있도록 한다. 상기 제 1 임계치는 10 퍼센티지(%)일 수 있다.
세 번째 조건으로, 상기 전체 노드의 메모리 정보에 따라 전체 노드의 메모리의 빈 공간의 비율이 제 2 임계치 이하인 경우 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정할 수 있다. 전체 노드의 빈 공간이 얼마 남지 않은 경우 모든 노드에서 로컬 엑세스가 불가능하다고 판단되는 경우 인터리브 메모리 배치 방법으로 변경한다. 상기 제 2 임계치는 10 퍼센티지(%)일 수 있다.
처리부(130)는 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정하는 경우, 상기 버퍼를 할당할 노드를 현재 노드로부터 소정의 홉 수 내로 제한할 수 있다. 앞서 설명한 바와 같이, 리모트 엑세스를 수행하는 경우, 같은 리모트 엑세스라도 접근하는 노드에 따른 홉 수에 따라 지연 시간에 차이가 많이 발생한다. 따라서, 이런 지연 시간을 효율적으로 제어하기 위하여, 상기 버퍼를 할당할 노드를 현재 노드로부터 소정의 홉 수 내로 제한할 수 있다. 상기 버퍼를 할당할 노드를 현재 노드와 인접한 노드에 할당되도록 홉 수를 1로 제한할 수 있다. 노드들이 일련의 형태로 연결되는 상태에서 버퍼가 인접한(좌측 및/또는 우측) 노드의 메모리에 배치되도록 홉 수를 1로 제한할 수 있다. 메모리의 공간에 따라 홉 수 제한은 변경될 수 있다.
처리부(130)는 상기 설정되는 메모리 배치 방법이 인터리브 메모리 배치 방법인 경우, 쓰레드가 접근하는 버퍼들이 할당된 메모리의 노드 정보를 이용하여, 해당 쓰레드가 버퍼들에 접근하는 홉 수가 최소가 되도록 쓰레드를 재배치할 수 있다. 쓰레드의 효율적인 배치를 위하여, 쓰레드를 재배치함에 있어서, 설정된 메모리 배치 방법을 고려한다. 메모리 배치 방법이 인터리브 메모리 배치 방법인 경우, 쓰레드가 접근하는 버퍼들이 할당된 메모리의 노드 정보를 이용하여, 해당 쓰레드가 버퍼들에 접근하는 홉 수가 최소가 되도록 쓰레드를 재배치함으로써 리모트 엑세스의 성능하락을 최소화할 수 있다.
불균일 기억 장치 접근(NUMA)의 구조의 구체적인 형태는 도 2와 같을 수 있다. 불균일 기억 장치 접근 구조에서의 노드는 로컬 메모리와 여러 개의 코어로 구성되며, 각 노드는 QPI(Intel Quick Pass interconnect)와 같은 고속 상호 접속을 통해 다른 노드와 연결된다. 노드 내부에서 사용 가능한 모든 메모리 액세스는 동일한 특성을 갖는 반면, 다른 불균일 기억 장치 접근 노드에 위치한 리모트 메모리 액세스는 추가적인 지연을 유도한다. 그 결과, 실행 쓰레드는 쓰레드의 위치에 따른 성능 차이를 경험한다. 또한, 도 2에서 0번 노드가 2번 노드에 접근할 때 추가되는 지연의 양은 1번과 3번 노드에 접근하는 지연의 양보다 더 크다.
도 3은 도 2의 서버환경에서 intel memory latency checker를 통해 측정한 지연시간으로 자신과 다른 노드에 접속했을 경우의 지연시간을 나타낸 것이다. 현재 서버의 구조는 4개의 노드로 이루어져 있고, 각 노드는 QPI로 연결되어있으며 도 3에서는 노란색의 양방향 화살표로 나타내었다. 단방향 화살표는 화살표가 시작된 노드에서 화살표가 가리키는 노드에 접근했을 때의 지연시간을 측정한 것으로, 대각선 방향의 접근(노드 0에서 3으로의 화살표)은 서로 간의 직접적인 QPI연결이 없기 때문에 바로 옆의 노드에 접근할 때보다 비교적 더 큰 지연시간이 걸리는 것을 확인할 수 있다.
리눅스 커널의 메모리 정책은 first touch로 이는 Tmpfs의 메모리 배치 정책인 local과 동일하며, 사용자가 따로 메모리 정책을 지정해주지 않는다면 Tmpfs 또한 리눅스 커널의 기본 정책인 first touch(local)정책을 사용하게 된다. 이 정책은 현재 쓰레드가 돌고 있는 노드에 버퍼를 할당하는 방식으로 현재 쓰레드의 로컬 메모리 엑세스를 높이기 위한 방법이다. 하지만, 해당 쓰레드가 다른 노드에 배치되었을 경우 리모트 메모리 엑세스가 일어나게 되고, 하나의 노드에 버퍼를 할당하게 되면 메모리 컨트롤러의 부하가 올라가게 된다. 예를 들어 여러 쓰레드에서 공유하는 버퍼가 하나의 노드에 할당되어 있을 때로 많은 쓰레드가 동시에 접근할 경우 해당 노드의 메모리 컨트롤러에 부하가 걸리게 된다. 또한, 현재 쓰레드가 돌고 있는 노드의 여유 공간이 없을 경우 노드에서 가장 가까운 거리에 있는 노드에 버퍼를 할당하게 된다. 하지만, 가까운 거리에 있는 노드의 여유 공간 또한 없을 경우 계속해서 지금보다 먼 거리의 노드로 정해지게 된다. 이로 인해 쓰레드가 필요로 하는 버퍼는 서로 먼 거리에 있는 노드로 나뉘어서 배치되게 되고, 쓰레드가 해당 버퍼에 접근하기 위해서 리모트 메모리 엑세스를 할 때 지연시간 또한 노드 간 거리에 따라 커지게 된다.
도 4는 Iozone 벤치마크로 도 2의 노드 3에만 버퍼를 할당했을 경우 4개의 노드에서의 읽기 성능을 구한 것으로 로컬 엑세스를 하는 노드 3이 가장 높은 값을 보이고, 노드 3과 가장 멀리 떨어진 노드 1이 가장 낮은 성능을 보인다. 이를 통해 리모트 엑세스는 거리 차이(hop 수)가 성능에 영향을 끼치는 것을 확인할 수 있다.
도 5와 도 6은 Tmpfs에서 코어 수를 1에서 40까지 늘리면서 읽기와 쓰기의 성능을 측정한 것으로 로컬과 인터리브는 리눅스 커널에서 제공하는 메모리 정책이다. 두 그래프 모두 40개의 쓰레드를 사용하였고, 각 쓰레드의 데이터 크기는 동일하다. 두 그래프 모두 20코어까지는 인터리브의 성능이 더 높고, 20코어 이후에는 local의 성능이 더 높은 것을 확인할 수 있다. 이는 로컬 엑세스가 가능한 정도의 차이로 20코어 이전에는 모든 쓰레드가 하나의 노드에서 로컬 엑세스를 하지 못하고, 다른 노드에 버퍼를 할당하기 때문에 원치 않는 리모트 엑세스가 일어나게 된다. 그로 인해 로컬 정책은 원하는 만큼의 성능을 얻지 못하고, 모든 노드에 버퍼를 균등하게 분배하는 인터리브정책보다 낮은 성능을 보이게 된다. 로컬정책에서 AutoNUMA를 통해 쓰레드를 재배치하더라도 2hop의 리모트 엑세스를 방지하진 못하기 때문에 최대성능을 내지는 못한다.
Tmpfs는 읽기, 쓰기 시에 페이지캐시와 스왑 영역을 검사 후 원하는 페이지가 없는 경우 페이지를 할당(shmem_alloc_page)하게 된다. 이때 메모리 배치 정책에 따라 페이지를 어느 노드에 할당할지를 결정하게 된다. 이 부분에서 로컬과 인터리브 중 어느 메모리 정책을 사용할지를 결정하도록 하여 성능하락의 원인들을 제거한다. 인터리브정책을 사용하기 위한 세가지 조건으로 세 조건 중 하나의 조건이라도 만족할 경우 로컬에서 인터리브로 쓰레드의 메모리 정책을 변경하도록 한다. 첫 번째 조건은 현재 쓰레드의 버퍼가 각각의 노드에서 로컬 엑세스가 불가능할 경우로 3장에서 설명했듯이 로컬 정책은 가장 가까운 노드를 찾을 때까지 각 노드의 빈 공간을 확인할 것이고, 최악의 경우 가장 먼 노드에 버퍼를 할당할 수 있다. 이는 성능하락에 주요 원인이 되기 때문에 인터리브로 정책을 바꾼다. 두 번째 조건은 I/O 개수가 상대적으로 적은 쓰레드인 경우 로컬과 리모트 엑세스의 영향이 비교적 적기 때문에 전체 I/O 개수 중 일정 비율 이하의 I/O 개수를 갖는 쓰레드는 인터리브 정책을 통해 각 노드에 버퍼를 분배하여 I/O 개수가 많은 쓰레들이 로컬 엑세스가 더 많이 일어날 수 있도록 도와준다. 세 번째 조건으로 전체 노드의 빈 공간이 얼마 남지 않은 경우 모든 노드에서 로컬 엑세스가 불가능하다고 판단되는 경우 인터리브로 정책을 바꾸어 준다. 인터리브 정책을 사용한 쓰레드들은 버퍼를 분배할 리스트들을 직접 정해주어 최소 hop수의 리모트 엑세스가 일어나도록 정해준다. 쓰레드 재배치기법인 NUMASched와 AutoNUMA는 메모리 정책을 고려하지 않고, 로컬 엑세스를 늘리기 위한 배치만을 실시한다. 하지만, 인터리브 정정책 사용할 때 분배할 노드를 직접 정해주고 이를 리스트화 시켜놓기 때문에 쓰레드를 재배치 할 때 해당 쓰레드가 인터리브 정책을 사용한다면 버퍼가 분배된 노드 리스트 중 가장 최소 hop만으로 모든 노드를 접근할 수 있는 노드로 배치를 할 수 있다. 쓰레드를 최소 hop으로 접근 가능한 노드로 배치함으로써 리모트 엑세스의 성능하락을 최소화할 수 있다.
도 7은 본 발명의 일 실시예에 따른 불균일 기억 장치 접근(NUMA) 구조 제어방법의 흐름도이이고, 도 8은 본 발명의 실시예에 따른 불균일 기억 장치 접근(NUMA) 구조 제어방법의 흐름도이다.
도 7 내지 8에 대한 상세한 설명은 도 1 내지 도 6의 불균일 기억 장치 접근 시스템에 대한 상세한 설명에 대응하는바, 이하 중복되는 설명은 생략하도록 한다.
710 단계는 현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 모니터링하는 단계이다.
720 단계는 메모리에 할당할 버퍼가 발생하면, 상기 모니터링하는 정보에 따라 메모리 배치 방법을 설정하는 단계이다.
보다 구체적으로, 710 단계에서 모니터링한 정보에 따라 메모리 배치 방법을 로컬 메모리 배치 방법 또는 인터리브 메모리 배치 방법으로 설정한다. 상기 현재 노드의 메모리 정보에 따라 현재 노드의 메모리에 상기 버퍼를 할당할 공간이 부족한 경우, 상기 쓰레드의 입출력 수치 정보에 따라 상기 할당할 버퍼의 쓰레드의 입출력 수치의 전체 입출력 수치에 대한 비율이 제 1 임계치 이하인 경우, 또는 상기 전체 노드의 메모리 정보에 따라 전체 노드의 메모리의 빈 공간의 비율이 제 2 임계치 이하인 경우 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정할 수 있다. 여기서, 상기 제 1 임계치 또는 제 2 임계치는 10 퍼센티지일 수 있다.
상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정하는 경우, 상기 버퍼를 할당할 노드를 현재 노드로부터 소정의 홉 수 내로 제한할 수 있다. 이때, 상기 버퍼를 할당할 노드를 현재 노드와 인접한 노드에 할당되도록 홉 수를 1로 제한할 수 있다.
810 단계는 상기 설정되는 메모리 배치 방법이 인터리브 메모리 배치 방법인 경우, 쓰레드가 접근하는 버퍼들이 할당된 메모리의 노드 정보를 이용하여, 해당 쓰레드가 버퍼들에 접근하는 홉 수가 최소가 되도록 쓰레드를 재배치하는 단계이다.
본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체 (magnetic media), CD-ROM, DVD와 같은 광기록 매체 (optical media), 플롭티컬 디스크 (floptical disk)와 같은 자기-광 매체 (magneto-optical media), 및 롬 (ROM), 램 (RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100: 불균일 기억 장치 접근 시스템
110: 노드
120: 메모리
130: 처리부

Claims (11)

  1. 불균일 기억 장치 접근(NUMA) 구조 제어방법에 있어서,
    현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 모니터링하는 단계; 및
    메모리에 할당할 버퍼가 발생하면, 상기 모니터링하는 정보에 따라 현재 노드 또는 인접한 노드의 메모리에 버퍼를 할당하는 로컬 메모리 배치 방법 또는 모든 노드에 균등하게 버퍼를 할당하는 인터리브 메모리 배치 방법 중 어느 하나를 선택함으로써 메모리 배치 방법을 설정하는 단계를 포함하고,
    상기 메모리 배치 방법을 설정하는 단계는,
    상기 로컬 메모리 배치 방법을 초기 메모리 배치 방법으로 설정하되,
    상기 현재 노드의 메모리 정보에 따라 현재 노드의 메모리에 상기 버퍼를 할당할 공간이 부족한 경우, 상기 쓰레드의 입출력 수치 정보에 따라 상기 할당할 버퍼의 쓰레드의 입출력 수치의 전체 입출력 수치에 대한 비율이 제 1 임계치 이하인 경우, 또는 상기 전체 노드의 메모리 정보에 따라 전체 노드의 메모리의 빈 공간의 비율이 제 2 임계치 이하인 경우 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 변경하여 설정하는 것을 특징으로 하는 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 제 1 임계치 또는 제 2 임계치는 10 퍼센티지인 것을 특징으로 하는 방법.
  4. 제 1 항에 있어서,
    상기 메모리 배치 방법을 설정하는 단계는,
    상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정하는 경우, 상기 버퍼를 할당할 노드를 현재 노드로부터 소정의 홉 수 내로 제한하는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서,
    상기 버퍼를 할당할 노드를 현재 노드와 인접한 노드에 할당되도록 홉 수를 1로 제한하는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 설정되는 메모리 배치 방법이 인터리브 메모리 배치 방법인 경우, 쓰레드가 접근하는 버퍼들이 할당된 메모리의 노드 정보를 이용하여, 해당 쓰레드가 버퍼들에 접근하는 홉 수가 최소가 되도록 쓰레드를 재배치하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제 1 항, 및 제 3 항 내지 제 6 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  8. 불균일 기억 장치 접근(NUMA) 시스템에 있어서,
    쓰레드가 할당되는 복수의 노드;
    상기 노드에 위치하는 메모리; 및
    현재 노드의 메모리 정보, 쓰레드의 입출력 수치 정보, 및 전체 노드의 메모리 정보를 모니터링하고, 메모리에 할당할 버퍼가 발생하면, 상기 모니터링하는 정보에 따라 현재 노드 또는 인접한 노드의 메모리에 버퍼를 할당하는 로컬 메모리 배치 방법 또는 모든 노드에 균등하게 버퍼를 할당하는 인터리브 메모리 배치 방법 중 어느 하나를 선택함으로써 메모리 배치 방법을 설정하는 처리부를 포함하고,
    상기 처리부는,
    상기 로컬 메모리 배치 방법을 초기 메모리 배치 방법으로 설정하되,
    상기 현재 노드의 메모리 정보에 따라 현재 노드의 메모리에 상기 버퍼를 할당할 공간이 부족한 경우, 상기 쓰레드의 입출력 수치 정보에 따라 상기 할당할 버퍼의 쓰레드의 입출력 수치의 전체 입출력 수치에 대한 비율이 제 1 임계치 이하인 경우, 또는 상기 전체 노드의 메모리 정보에 따라 전체 노드의 메모리의 빈 공간의 비율이 제 2 임계치 이하인 경우 상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 변경하여 설정하는 것을 특징으로 하는 시스템.
  9. 삭제
  10. 제 8 항에 있어서,
    상기 처리부는,
    상기 메모리 배치 방법을 인터리브 메모리 배치 방법으로 설정하는 경우, 상기 버퍼를 할당할 노드를 현재 노드로부터 소정의 홉 수 내로 제한하는 것을 특징으로 하는 시스템.
  11. 제 8 항에 있어서,
    상기 처리부는,
    상기 설정되는 메모리 배치 방법이 인터리브 메모리 배치 방법인 경우, 쓰레드가 접근하는 버퍼들이 할당된 메모리의 노드 정보를 이용하여, 해당 쓰레드가 버퍼들에 접근하는 홉 수가 최소가 되도록 쓰레드를 재배치하는 것을 특징으로 하는 시스템.

KR1020150190930A 2015-12-31 2015-12-31 불균일 기억 장치 접근(numa) 구조에서 메모리 정책기반 쓰레드 재배치 방법 KR101848418B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150190930A KR101848418B1 (ko) 2015-12-31 2015-12-31 불균일 기억 장치 접근(numa) 구조에서 메모리 정책기반 쓰레드 재배치 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150190930A KR101848418B1 (ko) 2015-12-31 2015-12-31 불균일 기억 장치 접근(numa) 구조에서 메모리 정책기반 쓰레드 재배치 방법

Publications (2)

Publication Number Publication Date
KR20170079899A KR20170079899A (ko) 2017-07-10
KR101848418B1 true KR101848418B1 (ko) 2018-04-12

Family

ID=59356261

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150190930A KR101848418B1 (ko) 2015-12-31 2015-12-31 불균일 기억 장치 접근(numa) 구조에서 메모리 정책기반 쓰레드 재배치 방법

Country Status (1)

Country Link
KR (1) KR101848418B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10789090B2 (en) 2017-11-09 2020-09-29 Electronics And Telecommunications Research Institute Method and apparatus for managing disaggregated memory
KR102035843B1 (ko) * 2018-02-13 2019-10-23 서강대학교 산학협력단 데이터 전송 시스템 및 방법
US10685722B1 (en) * 2019-01-24 2020-06-16 Western Digital Technologies, Inc. Method and system for improving performance of a storage device using asynchronous independent plane read functionality

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
임근식 외 1명. "UNAS: 메모리 활용과 성능 최적화를 위한 사용자 공간의 NUMA 인지 스케줄러". 한국통신학회 학술대회 논문집, 2014.1.

Also Published As

Publication number Publication date
KR20170079899A (ko) 2017-07-10

Similar Documents

Publication Publication Date Title
US8190795B2 (en) Memory buffer allocation device and computer readable medium having stored thereon memory buffer allocation program
Skourtis et al. Flash on rails: Consistent flash performance through redundancy
US10216414B2 (en) Frame choosing during storage constraint condition
US9342456B2 (en) Storage control program for hierarchy relocation control, storage system with hierarchy relocation control and hierarchy control apparatus thereof
US20130007370A1 (en) Method and apparatus for minimizing working memory contentions in computing systems
US11868652B2 (en) Utilization based dynamic shared buffer in data storage system
US10891150B2 (en) Storage control method and storage controller for user individual service environment
KR101848418B1 (ko) 불균일 기억 장치 접근(numa) 구조에서 메모리 정책기반 쓰레드 재배치 방법
CN114036078A (zh) 用于管理存储系统中的缓存设备的方法和系统
US9304946B2 (en) Hardware-base accelerator for managing copy-on-write of multi-level caches utilizing block copy-on-write differential update table
JP6339645B2 (ja) メモリデバイスおよび方法
US20180329756A1 (en) Distributed processing system, distributed processing method, and storage medium
KR102144011B1 (ko) 가상화 서비스에서 페이지 캐시 관리 방법 및 장치
US11487582B2 (en) Information processing apparatus and computer-readable recording medium having stored therein process allocation determining program
JP6364827B2 (ja) 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム
KR102334237B1 (ko) 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치
US11797183B1 (en) Host assisted application grouping for efficient utilization of device resources
KR102565873B1 (ko) Numa 시스템에서 메모리 버스에 연결하여 사용하는 저장장치의 할당 방법
US20240028202A1 (en) Optimizing Backend Workload Processing in a Storage System
Wu et al. NVSwap: Latency-Aware Paging using Non-Volatile Main Memory
Yan et al. R3S: rdma-based RDD remote storage for spark
Min et al. eZNS: Elastic Zoned Namespace for Enhanced Performance Isolation and Device Utilization
Li et al. PFA: Performance and Fairness-Aware LLC Partitioning Method
KR20240058663A (ko) 메모리 관리 시스템, 메모리 관리 방법 및 이 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체
CN116774926A (zh) 一种存储空间分配方法及存储设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant