[dpdk-dev] [PATCH 1/3] examples/flow_classify: fix check of port and core

Min Hu (Connor) humin29 at huawei.com
Tue Apr 27 14:23:01 CEST 2021


在 2021/4/27 19:51, Iremonger, Bernard 写道:
> Hi Min,
> 
>> -----Original Message-----
>> From: Thomas Monjalon <thomas at monjalon.net>
>> Sent: Tuesday, April 20, 2021 10:41 AM
>> To: Min Hu (Connor) <humin29 at huawei.com>
>> Cc: dev at dpdk.org; Yigit, Ferruh <ferruh.yigit at intel.com>; Iremonger,
>> Bernard <bernard.iremonger at intel.com>; Kantecki, Tomasz
>> <tomasz.kantecki at intel.com>; Richardson, Bruce
>> <bruce.richardson at intel.com>; Burakov, Anatoly
>> <anatoly.burakov at intel.com>; david.marchand at redhat.com
>> Subject: Re: [dpdk-dev] [PATCH 1/3] examples/flow_classify: fix check of
>> port and core
>>
>> 20/04/2021 04:26, Min Hu (Connor):
>>> 2021/4/20 9:08, Thomas Monjalon:
>>>> 27/03/2021 08:40, Min Hu (Connor):
>>>>> fix check of port and core in flow_classify example.
>>>>>
>>>>> Fixes: bab16ddaf2c1 ("examples/flow_classify: add sample
>>>>> application")
>>>>> Cc: stable at dpdk.org
>>>>>
>>>>> Signed-off-by: Min Hu (Connor) <humin29 at huawei.com>
>>>>> ---
>>>>>    	RTE_ETH_FOREACH_DEV(port)
>>>>> -		if (rte_eth_dev_socket_id(port) > 0 &&
>>>>> +		if (rte_eth_dev_socket_id(port) >= 0 &&
> 
> This fix works (I have tested it on my system)
> However a cleaner fix would be to drop the above line and add the if on the next line instead (also tested on my system).
> 
Hi, 'rte_eth_dev_socket_id(port)' may return -1,  we should avoid this
situation.

> If (rte_eth_dev_socket_id(port) != (int)rte_socket_id())
> 
>>>>>    			rte_eth_dev_socket_id(port) != (int)rte_socket_id())
>> {
>>>>>    			printf("\n\n");
>>>>>    			printf("WARNING: port %u is on remote NUMA
>> node\n",
>>>>
>>>> Please explain which case is broken and why.
>>>> If I understand well, we don't detect remote NUMA if not running on first
>> socket.
>>>>
>>> Hi, the code is this:
>>>
>> **********************************************************
>> ***************
>>> 	/*
>>> 	 * Check that the port is on the same NUMA node as the polling
>> thread
>>> 	 * for best performance.
>>> 	 */
>>> 	RTE_ETH_FOREACH_DEV(port)
>>> 		if (rte_eth_dev_socket_id(port) > 0 &&
>>> 			rte_eth_dev_socket_id(port) != (int)rte_socket_id())
>> {
>>> 			printf("\n\n");
>>> 			printf("WARNING: port %u is on remote NUMA
>> node\n",
>>> 			       port);
>>> 			printf("to polling thread.\n");
>>> 			printf("Performance will not be optimal.\n");
>>> 		}
>>> 	printf("\nCore %u forwarding packets. ", rte_lcore_id());
>>> 	printf("[Ctrl+C to quit]\n");
>>>
>> **********************************************************
>> ************
>>> ***
>>>
>>> According to the comments and logging, the author just hope user to
>>> use the core and device which are in the same numa node for optimal
>>> performance. If not, A warning gives out.
>>>
>>> For example in flow_classify:
>>> ./build/flow_classify -w 0000:7d:00.1  -l 93
>>> Here:
>>> 0000:7d:00.1 is on numa node 0.
>>> core 93  is on numa node 3.
>>>
>>> the two are not in same numa node, but no warning gives out in old codes.
>>>
>>> Well, using this patch, we can get the waring.
>>
>> You need to explain which case was broken in the commit log.
>> Thanks
>>
>>
> Regards,
> 
> Bernard.
> .
> 


More information about the dev mailing list