我有 8G 的物理内存,Fedora20,并配置了内核参数,通过将以下参数传递给内核,在启动时分配两个 1G 的巨页:
default_hugepagesz=1G hugepagesz=1G hugepages=2
HugeTLBFS 是自动挂载的:
% mount | grep ^huge
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
%
重新启动后,一切看起来都很好,我看到内核已经分配了所需的页面:
% dmesg | grep HugeTLB
HugeTLB registered 1 GB page size, pre-allocated 2 pages
% grep -E ^"(Mem|Huge)" /proc/meminfo
MemTotal: 8137732 kB
MemFree: 5359672 kB
MemAvailable: 5707656 kB
HugePages_Total: 2
HugePages_Free: 2
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 1048576 kB
%
如您所见,可用内存量应该允许我增加大页面的数量,但是我没有这样做:
% echo 3 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages
-bash: echo: write error: Invalid argument
或者
% echo 3 > /proc/sys/vm/nr_hugepages
-bash: echo: write error: Invalid argument
%
也减少页数失败。我究竟做错了什么?