问题标签 [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.
ubuntu - 为 EC2 上的 Ubuntu 16.04 解决关于 overcommit_memory 和透明巨大页面的 Redis 警告
在新的 Ubuntu 16.04 EC2 实例上,警告如下所示:
如何永久消除它们?
java - JVM大页面支持:如果大页面大于堆,是否会浪费内存?
我刚刚找到一个JVM配置,其中配置的大页面的大小远远大于为JVM分配的堆大小。
我在下面添加的配置是针对 Websphere Application Server 的,但是对于任何其他使用大页面的 Java 应用程序来说,问题都是一样的。通常,使用 -Xlp( IBM Knowledge Center-Tuning Linux 系统)开关为 IBM JRE 启用大页面,使用 -XX:+UseLargePages(Oracle:Java Support for Large Memory Pages)为 Oracle 启用大页面
当前配置显示
JVM 从启用 -Xlp 开始。
我会假设 vm.nr_hugepages 8GB 被固定,因此其他进程无法使用。但是 Java 只会为 Heap 申请 6GB。
谁能解释一下其他2GB会发生什么?
提前致谢!
linux - 如何在 mips32 上启用hugetlb
这是我遇到的问题:
内核驱动程序中的 rx/tx 数据包。用户空间程序需要访问这些数据包中的每一个。因此,内核和用户空间之间存在大量数据传输。(数据流:内核 rx -> 用户空间进程 -> 内核 tx)
吞吐量是 KPI。
我决定使用共享内存/mmap 来避免数据复制。虽然我没有测试过,但其他人告诉我缺少 tlb将是一个问题。
我使用的系统是
- mips32 系统(mips74kc,单核)
- 默认页面大小 4KB。
- 内核 2.6.32
它只能容纳在一个数据包中。在数据转换过程中,会丢失大量影响吞吐量的 tlb。
我发现大页面可能是一个解决方案。但是,目前似乎只有 mips64 支持 hugetlbfs。
https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt https://www.linux-mips.org/archives/linux-mips/2009-05/msg00429.html
所以,我的问题是:如何在 mips32 上使用 hugetlbfs。还是有其他方法可以解决吞吐量问题。(我必须在用户空间做数据处理部分)
根据 ddaney 的补丁,
目前该补丁仅适用于 64 位内核,因为 32 位内核中的 PTRS_PER_PTE 值使得不可能拥有有效的 PageMask。认为通过调整页面分配方案,未来可以支持 32 位内核。
这似乎是可能的。有人可以给我一个提示,需要修改什么,以启用hugetlb。
谢谢你!
bus-error - 大量的大页面导致总线错误
我试图dpdk
timer
通过设置 512 个 2MB 大页面来运行应用程序,但应用程序因以下错误而崩溃
EAL:检测到 4 个 lcore
EAL:探测 VFIO 支持...
总线错误(核心转储)
如果我将数量减少hugepages
到 256,它可以正常工作。我想知道这里可能是什么问题。这是我的cpu信息
处理器:0
vendor_id:GenuineIntel
cpu 系列:6
型号:26
型号名称:Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz
步进:5
微码:0x11
cpu MHz:2794.000
缓存大小:8192 KB
物理 ID:0
兄弟:4
核心 id:0
cpu 核心:4
apicid:0
初始 apicid:0
fpu:是
fpu_exception:是
cpuid 级别:11
wp:是
标志: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc monitor ds_perf pni dtest4 tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dtherm tpr_shadow vnm i flexpriority ept vpid 错误:
bogomips:5600.00
clflush 大小:64
cache_alignment:64
地址大小:36 位物理,48 位虚拟
电源管理:
处理器:1
vendor_id:GenuineIntel
cpu 系列:6
型号:26 型号名称:Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz
步进:5
微码:0x11
cpu MHz:2794.000
缓存大小:8192 KB
物理 ID:0
兄弟: 4
核心 id : 1
cpu 核心 : 4
apicid : 2
初始 apicid : 2
fpu : 是
fpu_exception : 是
cpuid 级别 : 11
wp : 是
标志: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc monitor ds_perf pni dtest4 tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dtherm tpr_shadow vnm i flexpriority ept vpid 错误:
bogomips:5600.00
clflush 大小:64
cache_alignment:64
地址大小:36 位物理,48 位虚拟
电源管理:
这是我的 meminfo
MemTotal:24679608 kB
MemFree:24014156 kB
MemAvailable:23950600 kB
缓冲区:3540 kB
缓存:31436 kB
SwapCached:0 kB
Active:21980 kB
Inactive:22256 kB
Active(anon):10760 kB
Inactive
(anon):2940 kB
: 11220 kB
非活动(文件): 19316 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 32 kB
回写: 0 kB
AnonPages: 9252 kB
Mapped: 11912 kB
Shmem: 4448 kB
Slab: 27712 kB
SReclaimable: 11276 kB
SUnreclaim: 16436 kB
KernelStack: 2672 kB
PageTables: 1000 kB
NFS_Unstable: 0 kB
Bounce: 0 kB WritebackTmp
: 0 kB
CommitLimit: 12077660 kB
Committed_AS: 137792 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 2048 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 256
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
大页面大小:2048 kB
DirectMap4k:22000 kB
DirectMap2M:25133056 kB
ubuntu - 禁用透明大页面 (THP) 的副作用/缺点是什么?
我在 Redis 日志中收到针对延迟问题的警告,如下所示:
禁用透明大页 (THP) 的副作用/缺点是什么?
与内核一样,默认情况下已启用它。
mysql - MySQL + 大页面 + 内存锁
我已经成功配置了我的 Ubuntu 服务器,因此 MySQL 可以使用大页面。问题是当我想启用memlock
选项my.cnf
并/proc/sys/vm/hugetlb_shm_group
设置为另一个组时(MySQL 是该组的成员)。
如果/proc/sys/vm/hugetlb_shm_group
设置为113
一切顺利,无论memlock
选项如何。
但是,如果我设置/proc/sys/vm/hugetlb_shm_group
为117
它只能在没有memlock
选项的情况下工作。如果我启用它,我会在 MySQL 启动时收到此错误:
InnoDB:HugeTLB:警告:无法分配 21978152960 字节。错误号 1
InnoDB HugeTLB:警告:使用常规内存池
知道有什么问题吗?
linux - 使用 mmap 和大页面随机读取大文件
我正在使用 mmap 读取一个大型数据库文件(例如 100GB),其索引保存在主内存中(键偏移对)。
由于默认的 4KB 虚拟内存页面大小,我假设文件系统上的读取调用也将使用 4KB 块。但是,这对于我的应用程序的访问模式来说效率很低。因此,我正在研究使用大页面透明地将 I/O 单元的大小从 4KB 增加到 2MB 的可能性。
大页面的典型用途似乎是改善内存分配和 TLB 利用率,但我找不到任何关于它与实际文件 I/O 的关系的信息。使用mmap
,似乎只有私有匿名地图支持大页面。这个假设正确吗?我还尝试查看 libhugetlbfs,但无法找到如何使用它读取实际文件。
mmap
那么,有没有办法使用大于 4KB 的 I/O 单元透明地访问文件呢?
memory - 如何从内核空间使用 Hugepage 内存?
我需要能够在内核模块中分配 2MB 或 4MB 大小的内存页面。
c - Huge pages for memory mapped files on Linux
I want to use Huge Pages with memory-mapped files on Linux 3.13.
To get started, on Ubuntu I did this to allocate 10 huge pages:
Then I ran this test program:
It always fails with EINVAL. If you change flags
to MAP_PRIVATE|MAP_ANONYMOUS
then it works, but of course it won't write anything to the file.
I also tried using madvise()
after mmap()
without MAP_HUGETLB
:
This also fails (EINVAL
) if MAP_ANONYMOUS
is not used.
Is there any way to enable huge pages with memory-mapped files on disk?
To be clear, I am looking for a way to do this in C--I'm not asking for a solution to apply to existing executables (then the question would belong on SuperUser).
linux - 使用 libhugetlbfs 分配页面
我正在编写一个需要使用大页面的程序。
我正在尝试将 libhugetlbfs 库用于 ubuntu64。我试图用安装的库的名称替换 LD_LIBRARY 变量,并将我的程序链接到它。
在我定期调用 malloc 的代码中,如何确保我得到一个大页面而不是常规页面?