Intel Core i7에 NUMA 활성화


22

Linux 커널에서 설명서 CONFIG_NUMA는 다음과 같습니다.

Enable NUMA (Non Uniform Memory Access) support. 

he kernel will try to allocate memory used by a CPU on the  
local memory controller of the CPU and add some more
NUMA awareness to the kernel.

For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.

Intel Core i7 프로세서가 있지만 AFAICT에는 하나의 NUMA 노드 만 있습니다.

$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7
node 0 size: 16063 MB
node 0 free: 15031 MB
node distances:
node   0 
  0:  10 

CONFIG_NUMA=yi7에 하나의 NUMA 노드 만있을 때 의 목적은 무엇 입니까?

답변:


13

나는이 그림이 충분히 설명한다고 생각합니다.

                  여기에 이미지 설명을 입력하십시오

  • 소켓 또는 numa 노드 는 메모리에 로컬로 액세스 할 수있는 코어 모음입니다. 각 소켓에는 하나 이상의 코어가 있습니다. 이것은 반드시 물리적 소켓을 의미하는 것이 아니라 칩 벤더에 따라 달라지는 머신의 메모리 아키텍처를 의미합니다.

  • 프로세서 코어 (cpu core, 논리 프로세서)는 계산을 수행 할 수있는 단일 처리 장치를 나타냅니다.

위의 내용은 NUMA 아키텍처를 활용하기 위해 머신에 여러 개의 프로세서가 필요하다는 것을 나타냅니다.

커널에서 NUMA 지원을 컴파일하여 단일 프로세서 시스템에서 실행할 수 있습니다. SMP 지원과 비슷합니다. 컴파일되어 있지만 커널은 시스템에 단일 프로세서가 있음을 감지하면 사용하지 않습니다 (비활성화). NUMA도 마찬가지입니다. dmesg커널 링 버퍼 또는 /var/log/dmesg파일에서 관련 메시지를 확인할 수 있습니다 .

NUMA-단일 프로세서 (또는 NUMA 비활성화) X 멀티 프로세서 :

No NUMA configuration found
NUMA: Allocated memnodemap from b000 - b440

SMP-단일 프로세서 X 멀티 프로세서 :

SMP: Allowing 1 CPUs, 0 hotplug CPUs
SMP: Allowing 32 CPUs, 0 hotplug CPUs

참고 문헌


2
@slm - I 활성화해야한다고 당신이 차종의 의미는 무슨 말을하지만, 왜 커널 문서 (내 질문에서 인용) 않습니다 CONFIG_NUMA위해 core i7?
user1968963

1
Haswell부터는 더 이상 NUMA가 '단일 프로세서'(단일 소켓) 기계에 사용되지 않는다는 사실이 더 이상 사실이 아닙니다. 특정 Haswell 제품은 인텔이 '클러스터 온 다이'모드를 의미합니다. 단일 소켓 프로세서에는 여러 개의 메모리 컨트롤러가 통합되어 있으므로 메모리에 대한 여러 경로가 있으며,이 기능을 사용하면 별개의 NUMA 영역으로 취급 될 수 있습니다.
Paul Caheny

16
For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.

첫째, 인텔 코어 i7 은 마케팅 명칭 일 뿐이며 인텔 코어 i7 (또는 그 이후 버전) 이라는 문구 는 매우 모호합니다. 무엇을 의미할까요?

Intel Core 7i를Kconfig 언급 한 다음 Intel Core i7수정 된 Linux 커널 도움말 텍스트 편집 은 2008 년 11 월에 수행되었습니다. 커밋 로그는 다음과 같습니다.

x86: update CONFIG_NUMA description
Impact: clarify/update CONFIG_NUMA text

CONFIG_NUMA description talk about a bit old thing.
So, following changes are better.

 o CONFIG_NUMA is no longer EXPERIMENTAL

 o Opteron is not the only processor of NUMA topology on x86_64 no longer,
   but also Intel Core7i has it.

해당 시점까지 사양에 따라 발표되거나 발표 된 Intel Core i7 CPU 만 합리적으로 언급 할 수 있습니다. 즉 것 블룸필드 에 기초 프로세서, 네 할렘 마이크로 아키텍처 (AMD는 옵테론 / AMD64와 함께 2003 년에했던)가 CPU에 노스 브릿지의 메모리 컨트롤러를 이동, 도입 퀵 패스 인터커넥트 / QPI (AMD의 하이퍼 트랜스 포트에 펜던트 등) CPU / CPU 및 CPU / IOH (IO 허브, ex-Northbridge) 상호 연결 용.

Bloomdale i7 CPU는 새로운 Core i {3,5,7} 이름 지정 체계 의 첫 번째 항목이었습니다 . 따라서 Linux 문서 텍스트가 작성되었을 때 i7 은 i5 (2009 년 1 월 1 일) 또는 i3 (2010 년 1 월 1 일)과 달리 Core i7을 구체적으로 언급하지 않았지만 새로운 Nehalem 마이크로 아키텍처를 사용할 가능성이 있습니다. 통합 메모리 컨트롤러 및 QPI

i7 (2008 년 11 월 11 일부터 Intel에서 가장 빠른 프로세서 출시) 에 Intel 보도 자료가 있습니다 . Core i7 프로세서는 이전 Intel "Extreme"플랫폼의 메모리 대역폭을 두 배 이상 늘 렸지만 NUMA는 언급하지 않았습니다. .

그 이유는 NUMA가 데스크톱 PC에는 중요하지 않으며 심지어 "최고의"PC에는 중요하지 않기 때문입니다.

NUMA는 하나의 메모리 컨트롤러가 아닌 전용 물리적 메모리 액세스 레인이있는 여러 개의 CPU 소켓 (하나의 소켓에 여러 개의 코어가 아닌)이있는 고가의 서버에 중요하므로 각 CPU에는 전용 로컬 메모리가 있습니다. 다른 CPU의 메모리보다. (8 개의 소켓, 64 개의 코어, 256GB RAM을 생각하십시오.) NUMA는 CPU가 자체 로컬 메모리 외에 원격 메모리 (다른 CPU의 로컬 메모리)에 더 많은 비용이 들지만 액세스 할 수 있음을 의미합니다. NUMA는 SMP와 같은 공유 메모리 아키텍처와 모든 코어에서 모든 메모리를 동일하게 사용할 수있는 MPP (Massively Parallel Processing)와 같은 분산 메모리 아키텍처를 통합하여 각 노드에 전용 메모리 블록을 제공합니다. MPP이지만 응용 프로그램의 SMP처럼 보입니다.

데스크탑 마더 보드에는 듀얼 소켓이 없으며 익스트림 i7 에디션을 포함한 인텔 데스크탑 CPU에는 듀얼 소켓 구성을위한 추가 QPI 링크가 없습니다.

체크 위키 백과 QPI의 QPI는 NUMA 관련이 방식을 볼 수 기사 :

단일 프로세서 마더 보드에서 가장 간단한 형태로 단일 QPI를 사용하여 프로세서를 IO Hub에 연결합니다 (예 : Intel Core i7을 X58에 연결). 보다 복잡한 아키텍처 인스턴스에서 별도의 QPI 링크 쌍은 마더 보드의 네트워크에서 하나 이상의 프로세서와 하나 이상의 IO 허브 또는 라우팅 허브를 연결하여 모든 구성 요소가 네트워크를 통해 다른 구성 요소에 액세스 할 수 있습니다. HyperTransport와 마찬가지로 QuickPath 아키텍처는 프로세서에 통합 메모리 컨트롤러가 있다고 가정하고 NUMA (Non-Uniform Memory Access) 아키텍처를 활성화합니다.

[…]

일부 고급 Core i7 프로세서는 QPI를 노출하지만 단일 소켓 보드 용으로 설계된 다른 "주류"Nehalem 데스크탑 및 모바일 프로세서 (예 : Lynnfield / Clarksfield 및 후속 제품군의 LGA 1156 Core i3, Core i5 및 기타 Core i7 프로세서) 이러한 프로세서는 다중 소켓 시스템에 참여하지 않기 때문에 QPI를 외부에 노출시키지 마십시오. 그러나 QPI는 이러한 칩에서 내부적으로 사용됩니다 […]

다중 소켓 서버 보드의 Intel Nehalem CPU가 로컬 메모리에 액세스하지 못하는 방식은 QPI를 통해 이루어집니다. 또한 NUMA기사에서 :

인텔은 2007 년 말 Nehalem 및 Tukwila CPU와의 x86 및 Itanium 서버에 대한 NUMA 호환성을 발표했습니다. 두 CPU 제품군 모두 공통 칩셋을 공유합니다. 상호 연결을 Intel QPI (Quick Path Interconnect)라고합니다. AMD는 HyperTransport를 사용하여 Opteron 프로세서 (2003)로 NUMA를 구현했습니다.

인텔이 i7에서 두 개의 QPI 링크 중 하나를 비활성화하여 NUMA가 적용되는 이중 소켓 구성을 비활성화 한 것을 확인하려면 2008 년 11 월 부터이 보고서를 확인하십시오 .

Nehalem의 첫 번째 하이 엔드 데스크탑 구현은 코드 명 블룸필드 (Bloomfield)이며, 결국 2 소켓 서버로 들어가야하는 실리콘과 본질적으로 동일합니다. 결과적으로, 블룸필드 칩에는 위의 다이 샷이 나타내는 것처럼 2 개의 QPI 링크가 내장되어 있습니다. 그러나 두 번째 QPI 링크는 사용되지 않습니다. 이 아키텍처를 기반으로하는 2P 서버에서 두 번째 상호 연결은 두 개의 소켓을 연결하고 그 위에 CPU는 캐시 일관성 메시지 (새 프로토콜을 사용)와 데이터 (메모리 하위 시스템이 NUMA이므로)를 공유합니다. 옵테론에게.

Google 연구 결과와 관련하여 귀하의 질문을 피하고 있습니다 ... 2008 년 말에 Linux 문서에서 왜이 기능을 켜야하는지 묻고 있습니까? 이 질문에 정답이 있는지 확실하지 않습니다… 문서 작성자에게 문의해야합니다. NUMA를 켜도 데스크톱 CPU 사용자에게는 도움이되지 않지만 멀티 소켓 사용자를 지원하면서 크게 해를 입히지는 않습니다. 이것은 이론적 근거 일 수 있습니다. Arch Linux 트래커에서 NUMA 비활성화에 대한 토론에 반영된 것으로 나타났습니다 ( FS # 31187-[linux]-구성 파일에서 NUMA 비활성화 ).

문서 작성자는 또한 문서 작성 당시 11/2008 Core i7 프로세서 (920, 940, 965)가 유일한 대표 인 Nehalem 아키텍처의 NUMA 잠재력에 대해 생각했을 것입니다. NUMA가 실제로 이해 한 최초의 Nehalem 칩은 아마도 Xeon E5520 과 같은 이중 QPI 링크가있는 2009 년 1 분기 Xeon 프로세서 일 것입니다 .


2

--show스위치 를 사용하면 더 의미가 있다고 생각합니다 .

$ numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 
cpubind: 0 
nodebind: 0 
membind: 0 

따라서 physcpubind의 사용을 다음과 같이 제어 할 수 있습니다.

$ numactl --physcpubind=+0-2 myapp

이것은 어플리케이션 myapp을 처음 2 개의 CPU 코어로 제한합니다 . 내 시스템은 코어가 4 개인 i5입니다.

참고 문헌


2

커널을 직접 빌드하면서 데스크탑 PC에 대해 동일한 것을 연구하고 있습니다. 많은 연구 끝에 NUMA를 사용 중지하기로 결정했습니다. 내 CPU는 Core i7 3820이며 HT가있는 8 개의 프로세서가 있습니다. 이 페이지는 내 결정에 도움이되었습니다.

구성 파일에서 NUMA 비활성화

요약하면 NUMA는 코어에 관계없이 둘 이상의 CPU 소켓이있는 경우에만 가치가 있습니다. 여러 코어가있는 경우에도 1 개의 CPU 소켓 시스템에서 처리 성능이 매우 적지 만, 거의 눈에 띄지 않으므로 대부분의 배포판은 소켓이 1 개 이상인 서버 및 시스템에 큰 이점을 제공하므로 활성화 된 상태로 두십시오.


1

최대 하나의 CPU가있는 PC에서 NUMA는 전혀 쓸모가 없습니다. 자신의 커널에서 자유롭게 비활성화하십시오.

taskset (1)으로 언제든지 CPU 본딩을 제어 할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.