[ovs-dev] [PATCH] dpif-netdev: Add core id in the PMD thread name.

Eelco Chaudron echaudro at redhat.com
Wed Aug 14 07:53:57 UTC 2019



On 14 Aug 2019, at 9:45, Ilya Maximets wrote:

> On 13.08.2019 19:46, Eelco Chaudron wrote:
>>
>>
>> On 13 Aug 2019, at 18:37, Ilya Maximets wrote:
>>
>>> This is highly useful to see on which core PMD is running by
>>> only looking at the thread name. Thread Id still allows to
>>> distinguish different threads running on the same core over the 
>>> time:
>>>
>>>    |dpif_netdev(pmd-c10/id:53)|DBG|Creating 2. subtable <...>
>>>    |dpif_netdev(pmd-c10/id:53)|DBG|flow_add: <...>, actions:2
>>>    |dpif_netdev(pmd-c09/id:70)|DBG|Core 9 processing port <..>
>>>
>>> In gdb, top or any other utility it's useful to quickly catch up
>>> needed thread without parsing logs, memory or matching threads by 
>>> port
>>> names they're handling.
>>>
>>> Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
>>> ---
>>>  lib/dpif-netdev.c | 9 ++++++++-
>>>  1 file changed, 8 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
>>> index d0a1c58ad..34ba03836 100644
>>> --- a/lib/dpif-netdev.c
>>> +++ b/lib/dpif-netdev.c
>>> @@ -4735,9 +4735,16 @@ reconfigure_pmd_threads(struct dp_netdev *dp)
>>>      FOR_EACH_CORE_ON_DUMP(core, pmd_cores) {
>>>          pmd = dp_netdev_get_pmd(dp, core->core_id);
>>>          if (!pmd) {
>>> +            struct ds name = DS_EMPTY_INITIALIZER;
>>> +
>>>              pmd = xzalloc(sizeof *pmd);
>>>              dp_netdev_configure_pmd(pmd, dp, 
>>> core->core_id, core->numa_id);
>>> -            pmd->thread = ovs_thread_create("pmd", 
>>> pmd_thread_main, pmd);
>>> +
>>> +            ds_put_format(&name, "pmd-c%02d/id:", 
>>> core->core_id);
>>
>> This is a really good idea :) One remark should we make it %03d?
>
> There is a hard limit for the thread name. It's 15 meaningful chars 
> excluding the
> terminating null byte. 'pmd-c02/id:' is 11 bytes wide keeping 4 bytes 
> for the
> thread id. 'pmd-c002/id:' is 12 bytes wide with only 3 bytes remaining 
> for id.
> Thread ids could easily become big ( > 1000) for a long running 
> process, that is
> why %02d was chosen, to save some space.
>
> BTW, even on a systems with 100+ CPUs I'm usually placing OVS threads 
> on a lower
> cores. Anyway, this is only the matter of a bit more visual beauty in 
> the logs.
>
> What do you think?

Makes sense

Acked-by: Eelco Chaudron <echaudro at redhat.com>

>
>>
>>> +            pmd->thread = 
>>> ovs_thread_create(ds_cstr(&name),
>>> +                                            
>>> pmd_thread_main, pmd);
>>> +            ds_destroy(&name);
>>> +
>>>              VLOG_INFO("PMD thread on numa_id: %d, core 
>>> id: %2d created.",
>>>                        pmd->numa_id, 
>>> pmd->core_id);
>>>              changed = true;
>>> -- 
>>> 2.17.1
>>
>>


More information about the dev mailing list