어쨌든 커널이 hugepages를 사용하는 것 같은데 왜 특정 커널 매개변수를 사용하여 예약할 hugepages 수를 지정합니까?
모두 /proc/meminfo
보여드린 후DirectMap4K
, , DirectMap4M
의 값은 DirectMap1G
페이지 크기별로 존재하는 페이지 테이블 항목의 수를 나타냅니다.. 따라서 분명히 4KiB보다 큰 페이지가 사용되고 있습니다.
친구는 왜 /proc/sys/vm/nr_hugepages
아직도 존재하는가?
답변1
nr_hugepages
당신이 언급한 다른 가치를 보완하기 때문에 여전히 존재합니다. 이것커널 문서모든 세부 정보가 있지만 기본적으로 /proc/sys/vm/nr_hugepages
커널 hugepage 풀에 있는 기본 크기의 영구 hugepage 수를 표시합니다(크기는 HugePages_Total
에 표시됨 /proc/meminfo
). nr_hugepages
관리자가 제어하는 설정으로, hugepages
부팅 시 커널 매개변수를 사용하거나 런타임 시 쓰기를 통해 정의됩니다 nr_hugepages
(시스템이 요청된 대용량 페이지 수를 제공할 수 있는 경우).
목적 nr_hugepages
은 큰 페이지를 사용할 수 있도록 하는 것입니다.사용자 공간 프로그램에,통과하다 hugetlbfs
또는 공유 메모리 또는 mmap
할당된 페이지 수통과하다 nr_hugepages
이 목적을 위해 예약된 hugepages 풀을 구성합니다. 시스템 리소스가 허용하는 경우 더 많은 hugepages를 사용할 수 있지만(최대 설정 nr_overcommit_hugepages
) 이것이 보장되지는 않습니다. 대형 페이지를 지원하는 모든 플랫폼에서 작동합니다. 이러한 페이지는 과도한 메모리 할당을 수행하는 프로그램에 유용하지만 제약이 따릅니다. 특히 교체할 수는 없습니다.
에서 언급했듯이Linux "/proc/meminfo" 파일의 HardwareCorrupted, DirectMap4k 및 DirectMap2M 필드는 무엇을 의미합니까?는 DirectMap
x86 관련 구현 세부 사항입니다. 다양한 크기의 페이지에 대한 페이지 매핑 사용량을 측정합니다.커널별;이것은 커널이 페이지를 다양한 크기의 거대한 페이지로 얼마나 잘 매핑할 수 있는지를 보여줍니다. 이는 nr_hugepages
(사용자 공간에 사용되는) hugepage pool에 hugepage가 없는 시스템에서도 커널이 TLB 로드를 줄이기 위해 페이지 맵을 병합하려고 시도한다는 사실로 제한되지 않습니다 ( try_preserve_large_page
참조pageattr.c
).