2

DPDK-1.6.0r0 を使用して作成されたアプリケーションを使用しており、それをデバッグしたいと考えています。私の最初のアイデアは gdb を使用することでしたが、次のエラーが発生しました: EAL: No free hugepages reported in hugepages-2048kB

この方法で環境をコンパイルしました: make install T=x86_64-default-linuxapp-gcc EXTRA_CFLAGS='-g -ggdb'1

hugepages の予約:

cd /tmp
sudo mkdir -p /mnt/huge
grep -s '/mnt/huge' /proc/mounts > /dev/null
if [ $? -ne 0 ] ; then
    sudo mount -t hugetlbfs nodev /mnt/huge
fi
Pages=256
echo "echo $Pages > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages" > .echo_tmp

echo "Reserving hugepages"
sudo sh .echo_tmp
rm -f .echo_tmp

そして、gdb でアプリを実行します。

gdb appname`
...
(gdb) start appname -c 7e -n 3 --no-hpet -- -p 1`

それを解決するためのアイデアはありますか?

4

3 に答える 3

3

--no-hugeおよびEAL オプションを使用すると-m、hugepages は必要ありません。

たとえば、GDB で 128MB の「malloc」メモリを使用する場合: gdb --args appname -c 7e -n 3 --no-hpet --no-huge -m 128 -- -p 1

特定のマウント ポイントで hugepage を本当に使用したい場合は、--huge-dirEAL オプション を使用します。 gdb --args appname -c 7e -n 3 --no-hpet --huge-dir /mnt/huge -- -p 1

于 2015-12-06T22:44:25.530 に答える
1

GDB を使用してヒュージページで DPDK アプリをデバッグできますが、これは問題ではありません。hugepage にはいくつかのセットアップ (hugetlbfs マッピング、rte_memseg セットアップ、rte_malloc を使用) のみが含まれ、実行時には通常のページと同じように見えるはずです。

ええ、コメントは正しいです。hugepage にアクセスするには root になる必要があります。特権のないユーザーがヒュージページのマウント ポイントにアクセスできるようにすることで、DPDK アプリを起動できるという記述があります。ただし、セキュリティ上の懸念から、Linux が CAP_SYS_ADMIN 機能を持つユーザーに /proc/self/pagemap アクセス制御を追加したため、これはもはや正しくありません。pgemap がないと、プル モード ドライバー DMA の物理アドレス マッピングが見つからないため、DPDK は機能しません。

https://www.kernel.org/doc/Documentation/vm/pagemap.txt

于 2016-04-14T03:07:01.857 に答える