问题标签 [huge-pages]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 即使 HugePages_Free 是积极的,在大页面的 mmap 之后获取 SIGBUS
我mmap
用来分配大页面。这很好用,但有时我会接近可用大页面的限制,并且在访问内存时会出现 SIGBUS 错误。但是我不明白mmap
如果没有任何内存,为什么首先成功,我不明白为什么/proc/meminfo
似乎表明有足够的内存?
linux - DirectMap1G 显示一个有线的巨大数字
我没有在系统中设置任何大页面。为什么直接映射有一个奇怪的值 DirectMap4k:251600 kB DirectMap2M:5941248 kB DirectMap1G:130023424 kB
查看命令行,没有指定大页面。还有运行时的大页面,目录中只有 2M 的大页面条目,没有指定任何内容。
linux - 静态分配的大页面背后的内存如何分布在 NUMA 节点上?
在我的 /etc/default/grub 文件中,我明确地使用“hugepages=N”留出了 N 个大页面。如果我在一个有 2 个 NUMA 节点的盒子上运行,是否会为每个节点留出 N/2 个大页面,或者它们都转到节点 0,还是......?还有一种方法可以在命令行上查询它们是如何跨节点拆分的吗?
postgresql - 如何判断postgres是否使用huge_pages
我使用 PostgreSQL 9.5 并为 huge_pages = try 设置了默认值。如何确定 postgres 在服务器运行时是否正在使用它?
dpdk - 大页面存在,但不是免费的,也不是保留的。或者,我如何释放大页面?
我正在运行一个 SPDK 实验(它使用 DPDK,而 DPDK 又使用大页面),它昨天还在工作。我在共享环境中运行它们(我认为还有一两个人将这台机器用于其他东西)。现在,每当我尝试运行它时,都会出现 no free hugepages 错误。
/proc/meminfo 的输出是:
安装输出:
在我上一个环境中起作用的东西不再起作用:
然后 /proc/meminfo 的输出是
但如果我尝试运行它:
为什么这些页面是多余的而不是免费的?有什么办法可以释放他们吗?我想重新启动系统,因为可能有其他作业正在运行或有人在使用它。
编辑:重新启动机器,分配更多的大页面并且它们是免费的。执行测试,它崩溃了,现在大页面又丢失了。
没有有效答案的相关问题(至少对我而言):
puppet - 使用 puppet file_line 禁用透明大页面 (THP)
我正在使用下面的代码来禁用 THP Enabled using puppet
但我收到以下错误消息:
这仅在实际启用 THP 时发生。例如
如果禁用 THP,则不会发生此错误。例如
将 swappiness 设置为 0 时,类似的 puppet 代码会起作用。
有人可以指出我可能遗漏了什么或做错了什么吗?我正在使用独立的木偶版本 3.8.6。这是 CentOS 7.2 上的无主设置
linux - 如何将共享库的 .text 段加载到 linux 上的大页面中
我正在尝试将大页面用于我的应用程序的 .text 段以减少 TLB 未命中。我成功地使用 libhugetlbfs 支持重新链接了我的应用程序,并且主可执行文件的 .text 段现在正在加载到大页面支持的内存中。
然而,应用程序的主要代码库是由几个共享库构成的,所以我希望这些库也由大页面支持。简单地将 .so 与主应用程序相同的选项链接并设置 env 参数不会导致 .so .text 段出现在大页面上。
有什么办法可以将 .so 加载到大页面中?我可以对我的应用程序进行静态链接,但这会使构建变得非常复杂。
ubuntu - /etc/default/grub 和 /proc/meminfo 之间的大页值差异
我看到 /etc/default/grub 文件和 /proc/meminfo 之间的巨大页面值存在差异。我在 /etc/default/grub 文件中有 107520 。但是 /proc/meminfo 显示 106856。可能是什么原因?
ignite - 使用 Ignite 的 Linux 大页面用于大物理内存
Ignite 可以从 Linux 巨页(或透明巨页)中受益吗?对于大物理内存大小的大页面调整是否有任何建议(最佳实践?)?
linux - 使用 O_TMPFILE 清理大页面...或其他方法?
我的程序正在使用大页面。为此,它打开文件如下:
hugetlb 文件系统在哪里filename
。这样可行。然后我的程序可以mmap()
创建文件描述符。但是如果我的程序被杀死,文件仍然存在......并且在大页面文件系统中,剩余文件被阻塞内存,如以下命令所示(876!= 1024):
因此,由于我的程序没有将文件共享给其他任何人,因此使用 O_TMPFILE 标志创建临时文件对我来说是有意义的。所以我尝试了:
其中 pathname 是hugetlbfs 的点。失败(由于我无法解释的原因)并出现以下错误:
为什么?更重要的是:如何保证我的程序正在使用的所有大页面都被释放?
是的:我可以捕捉到一些信号(例如SIGTERM
);但不是全部 ( SIGKILL
)
是的:我可以unlink()
使用第一种方法尽快获得文件,但是如果在和SIGKILL
之间收到怎么办?open()
unlink()
内核喜欢保证。我也是。无论我的程序何时或如何终止,保证 100% 清理的正确方法是什么。