Thread (4 messages) 4 messages, 2 authors, 2011-09-26
  • (off-list ancestor, not in this archive)
  • CPU pinning · Kernel Piddu <hidden> · 2011-09-15
  • CPU pinning · Peter Teoh <hidden> · 2011-09-26
  • CPU pinning · Kernel Piddu <hidden> · 2011-09-26
  • CPU pinning · Peter Teoh <hidden> · 2011-09-26

CPU pinning

From: Peter Teoh <hidden>
Date: 2011-09-26 16:38:54

well, use the term "cpu affinity" when u google and u will find more
info (correct) from others - my answer is not complete - there are
situation where u can do tuning - read further here:

http://honglus.blogspot.com/2011/03/tune-interrupt-and-process-cpu-affinity.html
http://www.ibm.com/developerworks/linux/library/l-affinity/index.html

at the lowest level, the IRQ is handled at the the CPU inside
arch/x86/kernel/irq_32.c.

Inside this file, u can always identify your own SMP core by a
specific smp ID, and if it matches, then continue processing the IRQ,
otherwise, just ignore the processing, and let the other processor
does the work - not sure if I am right?

On Mon, Sep 26, 2011 at 7:28 PM, Kernel Piddu [off-list ref] wrote:
Thanks so much for the detailed info. It's very comprehensive. Thanks for taking the time.

On Sep 26, 2011, at 6:51 AM, Peter Teoh [off-list ref] wrote:
quoted
On Fri, Sep 16, 2011 at 5:08 AM, Kernel Piddu [off-list ref] wrote:
quoted
quoted
I have a multi processor system/machine and I would like dedicate a CPU entirely to listen on to a port.
I would greatly appreciate if you could tell me how this can be done.

Thanks!
doing this in the kernel, is perhaps not really recommended, and linux
kernel is become UNIX-non-compliant if such features were ever
provided.
but userspace, is definitely possible, but is always a suggestive
tuning....the kernel can always override your request:
http://www.cyberciti.biz/tips/setting-processor-affinity-certain-task-or-process.html
but this is per-process, if u want per-port IRQ handling attach to the
core, then this is going to affect the algorithm kernel used for
SoftIRQ handling:

doing a "cat /proc/softirqs" on my system:

? ? ? ? ? ? ? ? CPU0 ? ? ? CPU1 ? ? ? CPU2 ? ? ? CPU3
? ? ? HI: ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0
? ?TIMER: ? ? 563854 ? ? 591025 ? ? ? ? ?0 ? ? ? ? ?0
? NET_TX: ? ? ? ? ?7 ? ? ? ? ?6 ? ? ? ? ?0 ? ? ? ? ?0
? NET_RX: ? ? ?17486 ? ? ?19250 ? ? ? ? ?0 ? ? ? ? ?0
? ?BLOCK: ? ? ?28888 ? ? ? 3784 ? ? ? ? ?0 ? ? ? ? ?0
BLOCK_IOPOLL: ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0 ? ? ? ? ?0
?TASKLET: ? ? 399230 ? ? 391008 ? ? ? ? ?0 ? ? ? ? ?0
? ?SCHED: ? ? 116858 ? ? 119604 ? ? ? ? ?0 ? ? ? ? ?0
?HRTIMER: ? ? ? ?978 ? ? ? ?610 ? ? ? ? ?0 ? ? ? ? ?0
? ? ?RCU: ? ? 158513 ? ? 192567 ? ? ? ? ?0 ? ? ? ? ?0

i can see that the IRQ processing is skewed, but then unless i have an
overall picture of what every core is doing.....not advisable to touch
that.

anyway looking at the "processes":

root ? ? ? ? 3 ? ? 2 ?0 16:59 ? ? ? ? ?00:00:00 [ksoftirqd/0]
root ? ? ? ? 7 ? ? 2 ?0 16:59 ? ? ? ? ?00:00:00 [ksoftirqd/1]

only two tasklet thread are spawned to handle the these softirq at
each core. ? i suspect some error in the interpreting the number of
cores here, as there is only two core. (/proc/cpuinfo).

good reading on these internals:

http://lwn.net/Articles/308117/
http://www.wil.cx/matthew/lca2003/paper.pdf

--
Regards,
Peter Teoh


-- 
Regards,
Peter Teoh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help