Hello Benoit, Thank you for your answer about buffer allocation in batches, my solution is way more efficient now.
However, I still want to try to change the value of the " PRE_DATA_SIZE " cmake variable to see how it behaves with a greater value (i.e 256 instead of 128). To do so, I followed the method given in the documentation at the following url : [ https://fd.io/docs/vpp/master/gettingstarted/developers/buildsystem/cmakeandninja.html#tinkering-with-build-options-ccmake | https://fd.io/docs/vpp/master/gettingstarted/developers/buildsystem/cmakeandninja.html#tinkering-with-build-options-ccmake ] . The issue is that once I've changed the value of the " PRE_DATA_SIZE " variable, I press "c" to regenerate files that need to be regenerated and then I get this error in cmake output : CMake Error at cmake/misc.cmake:27 (_message): [1;31mDPDK RTE_PKTMBUF_HEADROOM (128) ;must be equal to PRE_DATA_SIZE (256)[m Call Stack (most recent call first): plugins/dpdk/CMakeLists.txt:65 (message) I guess I should also modify the value of " DPDK RTE_PKTMBUF_HEADROOM" but I don't know how I can do it ? Indeed, I can't find where this variable is defined. Jérôme De: "Benoit Ganne (bganne)" <bga...@cisco.com> À: "jerome bayaux" <jerome.bay...@student.uliege.be>, vpp-dev@lists.fd.io Cc: "Justin Iurman" <justin.iur...@uliege.be> Envoyé: Jeudi 15 Juillet 2021 19:16:32 Objet: RE: Buffer chains and pre-data area Hi Jerome, > However, when I tried to perform some performance tests I was quite > disappointed by the results : the buffer allocation for each packet is not > efficient at all. My question is then : Is there any way to increase the > performances ? To allocate buffers, I use the function "vlib_buffer_alloc" > defined in "buffer_funcs.h" but is it the right function to use ? Do you allocate buffers in batch? Let's say you want to encapsulate a batch of packets, instead of doing: while (n_left) u32 bi vlib_buffer_t *b vlib_buffer_alloc(vm, &bi, 1) b = vlib_get_buffer (vm, bi) add b to the chain ... You should do something like (allocation error checking etc. is left as an exercise): u32 bi[VLIB_FRAME_SIZE] vlib_buffer_t *bufs[VLIB_FRAME_SIZE] vlib_buffer_alloc (vm, bi, n_left) vlib_get_buffers (vm, bi, bufs, n_left) while (n_left) add bufs[i] to the chain ... > In my case, the best option would be to have more space available in the > buffer's pre-data area but VPP does not seem to be built in a way that > allows easy modifications of the "PRE_DATA_SIZE" value. Am I right or is > there any "clean" method to change this value ? It is define as a cmake variable and can be customize through eg. cmake-gui. ben
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#19821): https://lists.fd.io/g/vpp-dev/message/19821 Mute This Topic: https://lists.fd.io/mt/84230132/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-