요즘 Linux 커널 코드를 검색하는 동안 커널이 지원할 수 있는 CPU 수에 대한 많은 질문을 접했습니다.
내가 이해한 바로는 아키텍처에 따라 코어가 특정 수의 CPU를 처리할 수 있습니다. 이 번호는 Kconfig 파일에 지정되며 CONFIG_NR_CPUS 옵션으로 전달됩니다.
이것은 내 dmesg 출력입니다.
setup_percpu: NR_CPUS:5120 nr_cpumask_bits:240 nr_cpu_ids:240 nr_node_ids:1 RCU restricting CPUs from NR_CPUS=5120 to nr_cpu_ids=240
내 질문은 다음과 같습니다
왜 그렇게 큰가요
NR_CPUS
?240은 어디서
nr_cpumask_bits
왔나요nr_cpu_ids
?
도움을 주셔서 감사합니다
답변1
NR_CPUS가 왜 그렇게 큰가요?
실제 Linux 시스템의 CPU 수가 이 순서이기 때문입니다. 나는 1024 CPU 머신에서 실제 테스트 결과를 보았습니다.
저는 소규모 독립 시스템의 클러스터가 아니라 여러 CPU 코어가 있고 모두 단일 Linux 커널을 실행하는 단일 컴퓨터에 대해 이야기하고 있습니다.
예를 들어,SGI는 현재최대 32개의 CPU 소켓까지 확장할 수 있는 시스템입니다. 현재 Intel Xeon 시리즈의 최대 코어 수는 22개입니다. 이를 통해 최대 704개의 코어를 추가한 다음 두 배로 늘릴 수 있습니다.하이퍼스레딩. 이 기사가 작성된 시점과 이 기사를 읽는 시점 사이에 이 코어 제한이 초과되었을 수 있습니다.
240 nr_cpumask_bits 및 nr_cpu_ids는 어디에서 왔습니까?
실제 하드웨어에는 일부 제한이 있을 수 있습니다. 두 개의 물리적 프로세서가 있더라도 이를 처리하려면 특별히 설계된 시스템이 필요합니다. 많은 물리적 CPU 칩을 지원할 수 있는 시스템에는 효율성을 높이기 위해 다양한 특수 하드웨어 지원이 필요합니다.크로스바 스위치 구조,누마계획 등