Я застрял в использовании rte_mempool_create
, какую бы настройку я ни дал, функция просто возвращает NULL
.
Ниже мой код,
int main(argc, **argv) {
int ret;
ret = rte_eal_init(argc, argv);
if (ret < 0)
printf("eal init fail!!!\n");
unsigned lcore_id;
lcore_id = rte_lcore_id();
printf("lcore %u\n", lcore_id);
struct rte_mempool *mp;
mp = rte_mempool_create("MP", 1024,
32, 32, 0,
NULL, NULL, NULL, NULL,
0, 0);
if (NULL == mp) {
printf("mempool init fail\n");
return -1;
}
printf("mempool init pass\n");
rte_mempool_free(mp);
printf("mempool uninit pass\n");
return 0;
}
И бегущий результат,
EAL: Detected 96 lcore(s)
EAL: Detected 4 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: No available hugepages reported in hugepages-32768kB
EAL: No available hugepages reported in hugepages-64kB
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: No legacy callbacks, legacy socket not created
lcore 0
mempool init fail
Как правильно создать пул?
rte_strerror(rte_errno))
для выяснить причину отказа. Я буду ждать вашего редактирования в вопросе, а не отмечать какinsufficent data
. См. doc.dpdk.org/api/. - person Vipin Varghese   schedule 04.12.2020https://stackoverflow.com/users/4350586/dmitry-grigoryev
отклонил редактирование, удаливpool
. В комментариях к редактированию уже упоминалась проблема, связанная с использованием библиотек DPDK и dpdk. @dmitry-grigoryev, пожалуйста, поделитесь своими мыслями, почему это не проблема DPDK. - person Vipin Varghese   schedule 05.12.2020echo 256 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
. Проблема заключается в кросс-компиляции, то есть я скомпилировал на ARM и использовал на x86, потом сбой... После перестановки тулчейна все работает нормально, в том числе без пула. Спасибо за направление :) - person LinconFive   schedule 08.12.2020