Linux 7.2-rc2, 기본 RISC-V 64비트 CPU 제한을 256코어로 상향
RISC-V
지금까지 RISC-V 64비트는 지원되는 CPU 코어 수에 대해 NR_CPUS 값을 64로 유지해 왔습니다. 하지만 Linux 7.2를 위해 Git에 병합된 내용에 따르면, 해당 기본 임계값이 256 코어/스레드로 상향되었습니다. NR_CPUS 값은 결과적으로 다양한 정적 메모리 할당(static memory allocations)의 크기에 영향을 미치며, 이 숫자가 높아짐에 따라 커널 메모리 소비가 약간 증가합니다. 한편, Linux x86_64의 경우, MAXSMP가 활성화된 대부분의 배포판 벤더 커널은 오늘날의 높은 코어 수를 가진 AMD 및 Intel 서버 프로세서를 처리하기 위해 NR_CPUS를 8192까지 높여 설정하고 있습니다. AArch64 (ARM64)는 NR_CPUS 값이 512이며, LoongArch는 2048입니다.
RISC-V의 NR_CPUS를 높이는 것은 SpacemiT의 요청에 따라 이루어졌습니다. 제한을 상향하는 커밋(commit)에는 다음과 같이 설명되어 있습니다:
"SpacemiT는 이미 80코어 RVA23 RISC-V 서버를 제작했으며, 더 거슬러 올라가면 듀얼 소켓 SG2042 기반의 Sophgo Pisces는 128코어를 보유하고 있습니다 (비록 메인라인 지원을 달성하는 데 몇 가지 문제가 있었지만). 따라서 NR_CPUS 64는 충분하지 않습니다.
64비트(64BIT)에 대해 기본 NR_CPUS를 256으로 상향합니다 (!RISCV_SBI_V01인 경우, 매우 오래된 펌웨어는 64코어 이상을 지원할 수 없기 때문). 이 숫자는 알려진 최대치의 최소 두 배가 되는 2의 거듭제곱으로 선택되었습니다. 저는 이것이 메모리를 너무 많이 낭비하지 않으면서도 이 작업을 너무 자주 수행하지 않아도 되는 적절한 균형이라고 믿습니다.
Ubuntu는 이미 riscv64에 대해 NR_CPUS=512를 배포해 왔습니다. 저희 ISCAS에서도 내부적으로 NR_CPUS=256을 테스트해 보았으며, 무시할 만한 성능 영향과 부작용이 없음을 확인했습니다."
유일하게 놀라운 점은 이것이 병합 창(merge-window) 이후에 Linus Torvalds에 의해 수락되었다는 것인데, 물론 실제적인 회귀(regression) 위험은 없을 것입니다.
해당 NR_CPUS 증가는 이번 주 RISC-V 수정 사항의 일부로 Linux Git에 병합되었습니다.