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=y
그렇다면 NUMA 노드가 하나만 있을 때 i7을 갖는 목적은 무엇입니까?
답변1
For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.
먼저 주의사항인텔 코어 i7마케팅 이름, 문구만 있으면 됩니다.Intel Core i7(또는 그 이상)매우 모호합니다. 그렇다면 이것은 무엇을 의미합니까?
리눅스 커널Kconfig
도움말 텍스트 편집기 언급인텔 코어 7i, 그 다음에다음으로 수정됨인텔 코어 i7, 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만을 합법적으로 지칭할 수 있습니다. 그럴 것이다블룸필드프로세서 기반네할렘 마이크로아키텍처, 메모리 컨트롤러를 노스브리지에서 CPU로 옮겼으며(AMD는 2003년에 Opteron/AMD64를 사용하여 이 작업을 수행했습니다)QuickPath 인터커넥트/QPI(AMD HyperTransport로 사용 가능) CPU/CPU 및 CPU/IOH(IO 허브, 이전 Northbridge) 상호 연결용.
Bloomdale i7 CPU는 신제품 중 최초입니다.코어 i{3,5,7}명명 체계. 따라서 Linux 문서 텍스트가 끝나면i7i5(2009년 9월 최초) 또는 i3(2010년 1월 최초) 대신 Core i7에 대한 구체적인 언급은 없지만 메모리 컨트롤러와 QPI가 통합된 새로운 Nehalem 마이크로 아키텍처를 지칭할 가능성이 높습니다.
Intel은 2008년 11월 i7에 대한 보도 자료를 발표했습니다(인텔, 세계에서 가장 빠른 프로세서 출시)보여주다Core i7 프로세서는 이전 Intel "Extreme" 플랫폼보다 메모리 대역폭이 두 배 이상 높습니다., 그러나 NUMA는 전혀 언급되지 않습니다.
그 이유는 NUMA가 데스크톱 컴퓨터나 "극단적인" 컴퓨터에서는 중요하지 않기 때문이라고 생각합니다.
NUMA는 다중 CPU 소켓(단지 하나의 소켓에 다중 코어가 아님)과 전용 물리적 메모리 액세스 채널(단지 하나의 메모리 컨트롤러가 아님)이 있는 고가의 서버에 중요하므로 각 CPU에는 자체 로컬 메모리가 있어 비교 시 "더 가깝습니다". 다른 CPU의 메모리에. (소켓 8개, 코어 64개, RAM 256GB를 생각해 보세요.) NUMA는 CPU가 비용이 더 들더라도 자체 로컬 메모리 외에 원격 메모리(다른 CPU의 로컬 메모리)에 액세스할 수 있음을 의미합니다. NUMA는 SMP와 같은 공유 메모리 아키텍처와 MPP(대규모 병렬 처리)와 같은 분산 메모리 아키텍처의 조합으로, 모든 코어에서 모든 메모리를 사용할 수 있어 각 노드에 전용 메모리 블록을 제공합니다. MPP이지만 애플리케이션에서는 SMP처럼 보입니다.
데스크탑 보드에는 듀얼 소켓이 없으며 Intel 데스크탑 CPU(Extreme i7 버전 포함)에는 듀얼 소켓 구성을 위한 추가 QPI 링크가 없습니다.
조사하다위키피디아QPIQPI와 NUMA 간의 관계를 이해하기 위한 문서:
단일 프로세서 마더보드에서 가장 간단한 형태로 단일 QPI는 프로세서를 IO 허브(예: 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년 말 Intel은 Nehalem 및 Tukwila CPU가 x86 및 Itanium 서버와 NUMA 호환된다고 발표했습니다. 두 CPU 제품군은 공통 칩셋을 공유합니다. 이 상호 연결을 Intel의 QPI(QuickPath Interconnect)라고 합니다. AMD는 HyperTransport를 사용하여 Opteron 프로세서(2003)에 NUMA를 구현했습니다.
이것을 확인하세요2008년 11월 보고서Intel이 i7의 두 QPI 링크 중 하나를 비활성화하여 NUMA 친화적인 듀얼 소켓 구성을 비활성화한 것을 볼 수 있습니다.
Nehalem의 첫 번째 고급 데스크톱 구현인 코드명 Bloomfield는 본질적으로 결국 2소켓 서버에 사용된 것과 동일한 칩이었습니다. 따라서 Bloomfield 칩에는 위의 칩 스크린샷에 표시된 것처럼 2개의 온보드 QPI 링크가 장착되어 있습니다. 그러나 두 번째 QPI 링크는 사용되지 않습니다. 이 아키텍처를 기반으로 하는 2P 서버에서 두 번째 상호 연결은 두 소켓을 연결하고 이를 통해 CPU는 캐시 일관성 메시지(새 프로토콜 사용)와 데이터(메모리 하위 시스템이 NUMA이므로)를 공유합니다. Opteron과 매우 유사합니다.
그래서 나는 내 Google 연구 결과에 대한 귀하의 질문에서 벗어나고 있습니다. Linux 문서에서 2008년 말에 이를 켜도록 권장하기 시작한 이유를 묻습니까? 이 질문에 정답이 있는지 확실하지 않습니다. 문서 작성자에게 문의해야 합니다. NUMA를 켜는 것은 데스크탑 CPU 사용자에게 도움이 되지는 않지만 크게 해를 끼치지는 않으며 멀티 소켓 사용자에게 도움이 될 것입니다. 그렇다면 왜 안 될까요? 이것이 이유일 수 있습니다. Arch Linux 추적기(FS#31187 - [linux] - 구성 파일에서 NUMA 비활성화).
문서 작성자는 문서 작성 당시 NUMA가 있는 최초의 Nehalem 칩인 11/2008 Core i7 프로세서(920, 940, 965)로만 표현되는 Nehalem 아키텍처의 NUMA 잠재력을 염두에 둘 수도 있습니다. 정말 의미 있는 것은 2009년 1분기 Xeon 프로세서용 듀얼 QPI 링크가 있는 것입니다.제온 E5520.
답변2
나는 이 그림이 문제를 설명하기에 충분하다고 생각합니다.
소켓 또는 Numa 노드로컬 메모리 액세스가 가능한 코어 모음입니다. 각 소켓에는 1개 이상의 코어가 포함되어 있습니다. 이는 반드시 물리적 슬롯을 의미하는 것이 아니라 칩 공급업체에 따라 달라지는 시스템의 메모리 아키텍처를 의미합니다.
프로세서 코어(CPU 코어, 논리 프로세서)은 계산을 수행할 수 있는 단일 처리 장치를 의미합니다.
따라서 위 시나리오는 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
인용하다
답변3
나는 커널을 직접 만들 때 데스크탑 컴퓨터에서도 같은 작업을 해왔습니다. 많은 연구 끝에 NUMA를 비활성화하기로 결정했습니다. 내 CPU는 Core i7 3820, 8 프로세서(HT 포함)입니다. 이 페이지는 제가 결정을 내리는 데 도움이 되었습니다.
요약하자면, NUMA는 코어에 관계없이 CPU 소켓이 2개 이상인 경우에만 가치가 있습니다. 다중 코어를 사용하더라도 1개 CPU 소켓 시스템의 처리 능력에 약간의 영향이 있지만 거의 눈에 띄지 않으므로 대부분의 배포판에서는 슬롯이 1개 이상인 서버 및 컴퓨터에 더 나은 성능을 제공하므로 이를 활성화합니다. 엄청난 혜택을 제공합니다.
답변4
CPU가 최대 1개인 PC에서는 NUMA가 전혀 쓸모가 없습니다. 자신의 커널에서 자유롭게 비활성화하십시오.
다음을 통해 항상 CPU 바인딩을 제어할 수 있습니다.작업 세트(1).