저는 4*32GB RAM을 갖춘 Intel 11700을 사용하고 있습니다.
4개의 물리적 RAM 슬롯이 가득 차면 BIOS htop
( 시스템의 총 RAM을 표시하기 위해 어떤 명령을 사용하든 sudo lshw
관계 없음 sudo dmidecode dmesg
)에 128GB RAM이 있다고 표시됩니다.
하지만 사용 가능한 RAM의 절반 정도인 57.2GB만 사용할 수 있습니다.
나는 malloc()
C와 를 사용하여 이 작업을 수행했습니다 tmpfs
. 전자는 결국 NULL
포인터를 반환하고 후자는 장치에 공간이 부족하다는 메시지를 표시합니다.
더 이상한 점은 32GB 또는 64GB의 RAM 모듈을 한두 개만 설치해도 여전히 RAM의 약 절반인 12.1GB 또는 28.7GB에만 액세스할 수 있다는 것입니다.
답변1
특히 50% 점유율에서의 실패는 malloc
엄격한 할당의 증상입니다.즉장애가 있는과다 사용. 이는 다음으로 인해 발생합니다.시스템 vm.overcommit_memory
명령, 그리고 볼 수 있다
sysctl vm.overcommit_memory
2가 표시되면 커널이 오버 커밋을 방지하므로 mmap
메모리가 실제로 사용될 때가 아닌 할당 시 힙 크기 조정 등이 실패합니다. 익스체인지 플러스로 설정된 한도vm.overcommit-kbytes
또는vm.overcommit-ratio
(물리적 메모리의 백분율)
원하는 동작을 얻으려면 vm.overcommit_memory
0으로 설정하십시오.