当我在 valgrind 上运行基于 DPDK 的应用程序时,它无法执行并抛出错误
ERROR: This system does not support "RDRAND". Please check that RTE_MACHINE is set correctly.
我的 CPU 支持 RDRAND,但它仍然抛出同样的错误。为了让 valgrind 支持我的应用程序正在使用的大页面,我使用了以下修补版本的 valgrind。 https://github.com/bisdn/valgrind-hugepages.git
最佳答案
我在 Haswell 架构 CPU 上遇到了同样的问题,并且能够通过修改其中一个 makefile 以删除一些选项来修复它。具体来说,AVX/AVX2、RDRND、FSGSBASE 和 F16C。您可能需要删除 valgrind 犹豫不决的其他选项并重新编译 DPDK,这对我来说是一个迭代过程。使用 .config 文件可能有更优雅的方法来执行此操作,但我没有找到它。查看此补丁:
diff -u dpdk-2.2.0-orig/mk/rte.cpuflags.mk dpdk-2.2.0/mk/rte.cpuflags.mk
--- dpdk-2.2.0-orig/mk/rte.cpuflags.mk^I2015-12-15 12:06:58.000000000 -0500
+++ dpdk-2.2.0/mk/rte.cpuflags.mk^I2016-08-24 08:53:22.911258783 -0400
@@ -69,26 +69,6 @@
CPUFLAGS += PCLMULQDQ
endif
-ifneq ($(filter $(AUTO_CPUFLAGS),__AVX__),)
-CPUFLAGS += AVX
-endif
-
-ifneq ($(filter $(AUTO_CPUFLAGS),__RDRND__),)
-CPUFLAGS += RDRAND
-endif
-
-ifneq ($(filter $(AUTO_CPUFLAGS),__FSGSBASE__),)
-CPUFLAGS += FSGSBASE
-endif
-
-ifneq ($(filter $(AUTO_CPUFLAGS),__F16C__),)
-CPUFLAGS += F16C
-endif
-
-ifneq ($(filter $(AUTO_CPUFLAGS),__AVX2__),)
-CPUFLAGS += AVX2
-endif
-
# IBM Power CPU flags
ifneq ($(filter $(AUTO_CPUFLAGS),__PPC64__),)
CPUFLAGS += PPC64
关于c - 在 valgrind 上运行 DPDK 应用程序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37386738/