1

valgrind で DPDK ベースのアプリを実行すると、実行できず、エラーがスローされます

エラー: このシステムは「RDRAND」をサポートしていません。RTE_MACHINE が正しく設定されていることを確認してください。

私の CPU は RDRAND をサポートしていますが、それでも同じエラーがスローされます。アプリで使用されているヒュージページを valgrind でサポートするために、次のパッチを適用したバージョンの valgrind を使用しています。 https://github.com/bisdn/valgrind-hugepages.git

4

3 に答える 3

5

私は Haswell アーキテクチャの CPU でこれと同じ問題を抱えていましたが、makefile の 1 つを変更していくつかのオプションを削除することで修正できました。具体的には、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
于 2016-08-24T14:05:55.937 に答える
3

RDRAND は IvyBridge で導入されました。「CONFIG_RTE_MACHINE」を使用して、特定の命令のサブセットで dpdk をビルドできます。この場合、マシンとして SandyBridge を使用できます。

$RTE_SDK/$RTE_TARGET/.config を変更し、CONFIG_RTE_MACHINE="snb" を設定して、DPDK ライブラリを再構築します (make -C $RTE_SDK/$RTE_TARGET)。

于 2016-09-02T20:43:10.983 に答える