할당할 수 있는 최대 크기

할당할 수 있는 최대 크기

VmallocTotal주어진 것보다 더 많은 메모리를 할당할 수 있나요 /proc/meminfo?

답변1

vmalloc()내부 커널 함수입니다. 사용자 프로그램에서는 사용할 수 없습니다. 사용자 프로그램의 메모리 할당에는 영향을 미치지 않습니다. VmallocTotal호출 커널 코드의 할당을 제한합니다 vmalloc()( VmallocTotal자동 또는 수동으로 변경하지 않습니다).

사용자 프로그램이 "할당"할 수 있는 최대 메모리 크기는 오버커밋 설정에 따라 다릅니다. "오버 커밋"이 "메모리 할당"이라는 개념과 어쩐지 모순되기 때문에 무서운 인용문으로 "할당"이라고 씁니다. 설명은 다음과 같습니다. 사용된 키워드로 다른 설명을 검색할 수 있습니다.https://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work

~처럼커널 문서말하자면, mmap()이전 시스템 호출과 같은 시스템 호출은 sbrk()기본적으로 메모리를 할당하지 않습니다. "주소 공간"을 반환합니다. 기록된 경우 실제 메모리는 요청 시 매핑됩니다. 메모리는 페이지(보통 4096바이트) 단위로 매핑됩니다.

관련 정보