在我的/etc/default/grub文件中,我明确地用"hugepages=N"留出了N个巨大的页面。如果我在一个有2个NUMA节点的盒子上运行,是为每个节点留出N/2个巨大的页面,还是它们都转到节点0,或者。。。。?此外,在命令行上是否有一种方法可以查询它们是如何在节点之间拆分的?
来自kernel.org关于hugepages HERE 的帖子
在NUMA平台上,内核将尝试分发巨大的页面池的NUMA内存策略指定的所有允许节点集修改nr_hugepages的任务。允许的节点的默认值——当任务具有默认的内存策略--是所有具有内存的联机节点。允许可用内存不足的节点,用于巨大页面的连续内存将在分配持久性大页面时静默跳过。查看讨论下面是任务内存策略、cpusets和每个节点属性的交互分配和释放持久的巨大页面。
巨大页面分配的成败取决于在分配尝试。如果内核无法从NUMA系统中的一些节点,它将尝试通过在具有足够可用连续空间的其他节点上分配额外页面内存(如果有的话)。
系统管理员可能想把这个命令放在一个本地rc中init文件。这将使内核能够在早期分配巨大的页面当可能获得物理连续页面时的引导过程仍然很高。管理员可以验证巨大页面的数量实际上是通过检查sysctl或meminfo来分配的。检查每个节点NUMA系统中巨大页面的分布,使用:
cat /sys/devices/system/node/node*/meminfo | fgrep Huge