HugePages的总数从6000减少到16,免费页面减少到0

问题描述 投票:1回答:2

我正在测试具有2M Hugepages的DPDK应用程序,因此我将Redhat VM的/ proc / cmdline更改为以6000个大页面开始,如下所示,该VM在VM上的总内存为32GB。

grep Huge /proc/meminfo 
AnonHugePages:      6144 kB
HugePages_Total:    6000
HugePages_Free:     6000
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB*

但是现在当我启动我的应用程序时,它报告该应用程序正在请求5094 MB的内存,但只有32 MB的可用空间,如下所示:

./build/app -l 4-7 -n 4 --socket-mem 5094,5094 --file-prefix dp -w 0000:13:00.0 -w 0000:1b:00.0
EAL: Detected 8 lcore(s)
EAL: Multi-process socket /var/run/.dp_unix
EAL: Probing VFIO support...
EAL: Not enough memory available on socket 0! Requested: 5094MB, available: 32MB
EAL: FATAL: Cannot init memory
EAL: Cannot init memory
EAL: Error - exiting with code: 1
  Cause: Error with EAL initialization

现在,当我再次检查“大页面”时,它仅显示16个页面,如下所示,请让我知道为什么我的大页面从最初的6000个减少到16个,原因是我的应用程序无法获取内存。

grep Huge /proc/meminfo 
AnonHugePages:      6144 kB
HugePages_Total:      16
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

./dpdk-devbind --status

Network devices using DPDK-compatible driver
============================================
0000:13:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=vmxnet3
0000:1b:00.0 'VMXNET3 Ethernet Controller 07b0' drv=igb_uio unused=vmxnet3

Network devices using kernel driver
===================================
0000:04:00.0 'VMXNET3 Ethernet Controller 07b0' if=ens161 drv=vmxnet3 unused=igb_uio *Active*
0000:0b:00.0 'VMXNET3 Ethernet Controller 07b0' if=ens192 drv=vmxnet3 unused=igb_uio *Active*
0000:0c:00.0 'VMXNET3 Ethernet Controller 07b0' if=ens193 drv=vmxnet3 unused=igb_uio *Active*

我还尝试在运行时增加大页面,但这无济于事,它首先增加,但在运行应用程序时再次报告,指出内存不可用。

echo 6000 > /proc/sys/vm/nr_hugepages
echo "vm.nr_hugepages=6000" >> /etc/sysctl.conf

grep Huge /proc/meminfo 
AnonHugePages:      6144 kB
HugePages_Total:    6000
HugePages_Free:     5984
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

./build/app -l 4-7 -n 4 --socket-mem 5094,5094 --file-prefix dp -w 0000:13:00.0 -w 0000:1b:00.0 
EAL: Detected 8 lcore(s)
EAL: Multi-process socket /var/run/.dp_unix
EAL: Probing VFIO support...
EAL: Not enough memory available on socket 0! Requested: 5094MB, available: 32MB
EAL: FATAL: Cannot init memory

EAL: Cannot init memory

EAL: Error - exiting with code: 1
  Cause: Error with EAL initialization

grep Huge /proc/meminfo 
AnonHugePages:      6144 kB
HugePages_Total:      16
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
rhel7 dpdk huge-pages
2个回答
0
投票

默认情况下,DPDK应用程序支持辅助进程,并且在退出时不会释放大页面。

要手动释放分配的内存,只需继续并删除hugetlbfs安装点中的所有文件。

要指示DPDK应用程序在退出时释放大量页面分配,请添加--huge-unlink命令行选项。


0
投票

[Centos 7 VM似乎存在一些问题,因为页面数过多没有任何意义,所以我重新创建了解决问题的VM。

© www.soinside.com 2019 - 2024. All rights reserved.