Incorrect # of Hugepages in `numstat`

Я задавал подобный вопрос несколько лет назад.

Сейчас моя машина имеет четыре 1G hugepages и 256 2MB hugepages:

# cat /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages
4
# cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
256

Но затем numstat -vm показывает:

Per-node system memory usage (in MBs):
                          Node 0           Total
                 --------------- ---------------
MemTotal                65205.89        65205.89
MemFree                 58656.55        58656.55
MemUsed                  6549.34         6549.34
Active                    158.62          158.62
Inactive                   89.90           89.90
Active(anon)               15.32           15.32
Inactive(anon)              9.04            9.04
Active(file)              143.30          143.30
Inactive(file)             80.86           80.86
Unevictable                10.69           10.69
Mlocked                    10.69           10.69
Dirty                       0.02            0.02
Writeback                   0.00            0.00
FilePages                 235.87          235.87
Mapped                     16.08           16.08
AnonPages                  23.42           23.42
Shmem                       9.43            9.43
KernelStack                 5.38            5.38
PageTables                  2.84            2.84
NFS_Unstable                0.00            0.00
Bounce                      0.00            0.00
WritebackTmp                0.00            0.00
Slab                       50.60           50.60
SReclaimable               23.14           23.14
SUnreclaim                 27.46           27.46
AnonHugePages               0.00            0.00
HugePages_Total          4096.00         4096.00
HugePages_Free           4096.00         4096.00
HugePages_Surp              0.00            0.00

Исходя из ответа на мой предыдущий пост, 4096 должно быть "единицей". Теперь я в замешательстве. Единица чего здесь?

Мне кажется, что "единица" - это "МБ", и numastat не включает эти 2 МБ огромных страниц?

И почему 2 МБ огромных страниц не сообщается здесь?

2
задан 2 June 2021 в 10:58
1 ответ

Огромные страницы в Linux не так просто понять. Особенно, когда одни инструменты показывают то, чего нет у других, и каждый выполняет свои собственные преобразования единиц.

Общесистемный / proc / meminfo покажет сумму всех размеров больших страниц как Hugetlb

Hugetlb

- общий объем памяти (в килобайтах), потребляемый огромные страницы всех размеров. Если используются огромные страницы разного размера, это число будет превышать HugePages_Total * Hugepagesize. Чтобы получить более подробную информацию, обратитесь к / sys / kernel / mm / hugepages

numastat -m выведет "meminfo-like" на основе статистики узла NUMA в / sys / devices / system / node / node? / meminfo , но он также преобразует единицы измерения в МБ. Я не знаю, почему здесь явно не хватает суммы всех размеров. Может быть, ядро ​​настаивает на этом и позволяет пользовательским инструментам делать то, что они хотят, с данными для каждого узла? Предположительно, вы получили только 4 страницы по 1 ГБ.

hugeadm (из libhugetlbfs) основывает свой рекомендуемый shmmax, суммируя каждый из размеров страниц в / sys / kernel / mm / hugepages / . hugeadm --explain также полезен для проверки значений по умолчанию и размера каждого пула.


Упростить работу с использованием только одного огромного размера страницы. Менее 5 ГБ из 2 МБ страниц - это относительно мало, все они могут составлять 2 МБ. Размер страницы 1 ГБ работает, но может быть неэффективным использованием пространства для небольших выделений.

2
ответ дан 28 July 2021 в 12:19

Теги

Похожие вопросы