[ovs-dev] [PATCH V6] netdev-dpdk: Set pmd thread priority
Bodireddy, Bhanuprakash
bhanuprakash.bodireddy at intel.com
Thu Aug 18 21:20:42 UTC 2016
>-----Original Message-----
>From: Flavio Leitner [mailto:fbl at sysclose.org]
>Sent: Thursday, August 18, 2016 2:15 PM
>To: Bodireddy, Bhanuprakash <bhanuprakash.bodireddy at intel.com>
>Cc: Daniele Di Proietto <diproiettod at ovn.org>; dev at openvswitch.org
>Subject: Re: [ovs-dev] [PATCH V6] netdev-dpdk: Set pmd thread priority
>
>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?
I don't know if this is a problem on BSD. I searched a bit and found BSD code using "syscall(SYS_thr_self, &tid)"
to retrieve the tid.
>
>
>> 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?
Yes, I tested this case and there seems to be no problem here.
Regards,
Bhanu Prakash.
>
>Thanks,
>--
>fbl
More information about the dev
mailing list