RAM 용량이 무엇이든 총 RAM 용량의 절반에만 액세스할 수 있는 이유는 무엇입니까?

RAM 용량이 무엇이든 총 RAM 용량의 절반에만 액세스할 수 있는 이유는 무엇입니까?

저는 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_memory0으로 설정하십시오.

관련 정보