Linux에서 DirectMap4k, DirectMap2M, DirectMap4M 및 DirectMap1G가 주어지면 nr_hugepages를 사용하는 이유는 무엇입니까?

Linux에서 DirectMap4k, DirectMap2M, DirectMap4M 및 DirectMap1G가 주어지면 nr_hugepages를 사용하는 이유는 무엇입니까?

어쨌든 커널이 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 필드는 무엇을 의미합니까?DirectMapx86 관련 구현 세부 사항입니다. 다양한 크기의 페이지에 대한 페이지 매핑 사용량을 측정합니다.커널별;이것은 커널이 페이지를 다양한 크기의 거대한 페이지로 얼마나 잘 매핑할 수 있는지를 보여줍니다. 이는 nr_hugepages(사용자 공간에 사용되는) hugepage pool에 hugepage가 없는 시스템에서도 커널이 TLB 로드를 줄이기 위해 페이지 맵을 병합하려고 시도한다는 사실로 제한되지 않습니다 ( try_preserve_large_page참조pageattr.c).

관련 정보