[dpdk-dev] app/testpmd: log mbuf pool creation
Commit Message
Enhance the logs related to mbuf pool creation. Display an info level
log when creating the mbuf, and display the error as a string on failure.
After the patch, we have:
[...]
EAL: probe driver: 8086:10fb rte_ixgbe_pmd
USER1: create a new mbuf pool <mbuf_pool_socket_0>: n=331456, \
size=2176, socket=0
EAL: Error - exiting with code: 1
Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate \
memory
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
app/test-pmd/testpmd.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
Comments
2016-05-30 14:04, Olivier Matz:
> Enhance the logs related to mbuf pool creation. Display an info level
> log when creating the mbuf, and display the error as a string on failure.
>
> After the patch, we have:
>
> [...]
> EAL: probe driver: 8086:10fb rte_ixgbe_pmd
> USER1: create a new mbuf pool <mbuf_pool_socket_0>: n=331456, \
> size=2176, socket=0
> EAL: Error - exiting with code: 1
> Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate \
> memory
Yes printing the error reason is a good improvement.
But why the previous line is at INFO level? It looks to be a debug.
Hi Thomas,
On 05/30/2016 09:44 PM, Thomas Monjalon wrote:
> 2016-05-30 14:04, Olivier Matz:
>> Enhance the logs related to mbuf pool creation. Display an info level
>> log when creating the mbuf, and display the error as a string on failure.
>>
>> After the patch, we have:
>>
>> [...]
>> EAL: probe driver: 8086:10fb rte_ixgbe_pmd
>> USER1: create a new mbuf pool <mbuf_pool_socket_0>: n=331456, \
>> size=2176, socket=0
>> EAL: Error - exiting with code: 1
>> Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate \
>> memory
>
> Yes printing the error reason is a good improvement.
> But why the previous line is at INFO level? It looks to be a debug.
>
Using INFO instead of DEBUG was done on purpose. I think the mbuf
pool parameters is a valuable information for the user running testpmd,
especially to ensure it's compatible with best performance.
If you really think it should be DEBUG, I'll submit a v2.
Regards,
Olivier
2016-05-31 09:39, Olivier MATZ:
> Hi Thomas,
>
> On 05/30/2016 09:44 PM, Thomas Monjalon wrote:
> > 2016-05-30 14:04, Olivier Matz:
> >> Enhance the logs related to mbuf pool creation. Display an info level
> >> log when creating the mbuf, and display the error as a string on failure.
> >>
> >> After the patch, we have:
> >>
> >> [...]
> >> EAL: probe driver: 8086:10fb rte_ixgbe_pmd
> >> USER1: create a new mbuf pool <mbuf_pool_socket_0>: n=331456, \
> >> size=2176, socket=0
> >> EAL: Error - exiting with code: 1
> >> Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate \
> >> memory
> >
> > Yes printing the error reason is a good improvement.
> > But why the previous line is at INFO level? It looks to be a debug.
> >
>
> Using INFO instead of DEBUG was done on purpose. I think the mbuf
> pool parameters is a valuable information for the user running testpmd,
> especially to ensure it's compatible with best performance.
OK, seems reasonnable.
> -----Original Message-----
> From: Olivier Matz [mailto:olivier.matz@6wind.com]
> Sent: Monday, May 30, 2016 1:04 PM
> To: dev@dpdk.org
> Cc: De Lara Guarch, Pablo
> Subject: [PATCH] app/testpmd: log mbuf pool creation
>
> Enhance the logs related to mbuf pool creation. Display an info level
> log when creating the mbuf, and display the error as a string on failure.
>
> After the patch, we have:
>
> [...]
> EAL: probe driver: 8086:10fb rte_ixgbe_pmd
> USER1: create a new mbuf pool <mbuf_pool_socket_0>: n=331456, \
> size=2176, socket=0
> EAL: Error - exiting with code: 1
> Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate \
> memory
>
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-06-02 14:49, De Lara Guarch, Pablo:
> From: Olivier Matz [mailto:olivier.matz@6wind.com]
> > Enhance the logs related to mbuf pool creation. Display an info level
> > log when creating the mbuf, and display the error as a string on failure.
> >
> > After the patch, we have:
> >
> > [...]
> > EAL: probe driver: 8086:10fb rte_ixgbe_pmd
> > USER1: create a new mbuf pool <mbuf_pool_socket_0>: n=331456, \
> > size=2176, socket=0
> > EAL: Error - exiting with code: 1
> > Cause: Creation of mbuf pool for socket 0 failed: Cannot allocate \
> > memory
> >
> > Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
>
> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Applied, thanks
@@ -49,6 +49,7 @@
#include <inttypes.h>
#include <rte_common.h>
+#include <rte_errno.h>
#include <rte_byteorder.h>
#include <rte_log.h>
#include <rte_debug.h>
@@ -415,6 +416,10 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf,
mb_size = sizeof(struct rte_mbuf) + mbuf_seg_size;
mbuf_poolname_build(socket_id, pool_name, sizeof(pool_name));
+ RTE_LOG(INFO, USER1,
+ "create a new mbuf pool <%s>: n=%u, size=%u, socket=%u\n",
+ pool_name, nb_mbuf, mbuf_seg_size, socket_id);
+
#ifdef RTE_LIBRTE_PMD_XENVIRT
rte_mp = rte_mempool_gntalloc_create(pool_name, nb_mbuf, mb_size,
(unsigned) mb_mempool_cache,
@@ -446,8 +451,9 @@ mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf,
}
if (rte_mp == NULL) {
- rte_exit(EXIT_FAILURE, "Creation of mbuf pool for socket %u "
- "failed\n", socket_id);
+ rte_exit(EXIT_FAILURE,
+ "Creation of mbuf pool for socket %u failed: %s\n",
+ socket_id, rte_strerror(rte_errno));
} else if (verbose_level > 0) {
rte_mempool_dump(stdout, rte_mp);
}