[ovs-dev] [PATCH V6] netdev-dpdk: Set pmd thread priority

Flavio Leitner fbl at sysclose.org
Thu Aug 18 13:14:47 UTC 2016


On Tue, Aug 16, 2016 at 02:30:04PM +0000, Bodireddy, Bhanuprakash wrote:
> >-----Original Message-----
> >From: Daniele Di Proietto [mailto:diproiettod at ovn.org]
> >Sent: Tuesday, August 16, 2016 1:44 AM
> >To: Bodireddy, Bhanuprakash <bhanuprakash.bodireddy at intel.com>
> >Cc: dev at openvswitch.org; Flavio Leitner <fbl at sysclose.org>
> >Subject: Re: [PATCH V6] netdev-dpdk: Set pmd thread priority
> >
> >I found a crash if apply this patch, "dpdk-lcore-mask" is not set and "-c 0x1" is
> >passed to "dpdk-extra".
> My bad, I didn't test with dpdk-extra options. I see that the crash was due to strtol. 
> 
> >Also, I believe Flavio had a comment on the previous version of this
> >patch.  Would it be enough to use setpriority(2)?
> I sent out my comments in another mail. I agree to Flavio's suggestion as this seems less dangerous and 
> is guaranteed to work even in case of misconfiguration. I tested this approach and have a concern with
> setpriority().  
> 
> To apply the new nice value to the thread, thread id is needed and due to absence of glibc wrapper
> for gettid, I have to use syscall(SYS_gettid). I want to know if this is acceptable in OVS or better way to handle this?
> 
> Void ovs_numa_thread_setpriority(int nice OVS_UNUSED)
> {
> ....
> #if defined(__linux__) && defined(SYS_gettid)
>      pid_t tid = syscall(SYS_gettid);
>      err = setpriority(PRIO_PROCESS, tid, nice);
>      ....
> #endif
> }

I don't know a better way to implement this and it seems ovs-numa.c
already has some ifdefs specific to linux.

Do you know if this problem happen on BSD?


> Without priority patch:
> 
> $ ps -eLo tid,pri,psr,comm | grep -e lcore -e revalidator -e ovs-vswitchd -e pmd
>  22509  19   4 ovs-vswitchd
>  22512  19   5 lcore-slave-5
>  22513  19   6 lcore-slave-6
>  22514  19   7 lcore-slave-7
>  22589  19   4 revalidator37
>  22590  19   4 revalidator52
>  22591  19   4 revalidator42
>  22592  19   4 revalidator38
>  22593  19   4 revalidator39
>  22594  19   4 revalidator45
>  22595  19   4 revalidator53
>  22596  19   4 revalidator54
>  22598  19   4 pmd61                    [Default priority]
> 
> With priority patch:
> 
> $ ps -eLo tid,pri,psr,comm | grep -e lcore -e revalidator -e ovs-vswitchd -e pmd
>  24879  19   4 ovs-vswitchd
>  24881  19   5 lcore-slave-5
>  24882  19   6 lcore-slave-6
>  24883  19   7 lcore-slave-7
>  24951  19   4 revalidator55
>  24952  19   4 revalidator37
>  24953  19   4 revalidator52
>  24954  19   4 revalidator42
>  24955  19   4 revalidator38
>  24956  19   4 revalidator39
>  24957  19   4 revalidator45
>  24958  19   4 revalidator53
>  24964  39   4 pmd61                  [Higher priority set]

Looks good, so if you affinity your bash to the CPU running
pmd61 thread, are you able to use it?

Thanks,
-- 
fbl




More information about the dev mailing list