Get local CPU id

Maxime Ripard maxime.ripard at free-electrons.com
Mon Mar 9 10:39:31 EDT 2015


On Sun, Mar 08, 2015 at 07:10:09PM -0400, Nicholas Krause wrote:
> 
> 
> On March 8, 2015 6:30:47 PM EDT, Valdis.Kletnieks at vt.edu wrote:
> >On Sun, 08 Mar 2015 22:49:00 +0100, Maxime Ripard said:
> >
> >> On Sun, Mar 08, 2015 at 10:06:23PM +0300, Matwey V. Kornilov wrote:
> >
> >> > I would like to somehow obtain local CPU core ID in the interrupt
> >> > handler function. I want to see how my interruptions are
> >distributed
> >> > among different CPU cores under different conditions.
> >
> >> > How should I do that?
> >>
> >> To answer strictly your question, like Nick said, smp_processor_id()
> >> will work fine.
> >>
> >> However, you can do exactly what you want be reading
> >/proc/interrupts,
> >> that already provide the informations you are looking for.
> >
> >Clarification:  /proc/interrupts will give userspace that information.
> >It is *not* recommended you try to read it from kernel space, much less
> >from an interrupt context... :)
> >
> Does that matter through as all Matwey is interested in getting are
> the load balancing among multiple cores on a smp based system under
> various workloads . I wouldn't mind recommending to just read
> proc/interrupts expect for it only being refreshed every 3 seconds
> to my knowledge by default and therefore not valid for getting per
> second data. Also this file doesn't explain the kernel's decision to
> put what work on which core on a smp capable system during interrupt
> context , which may also interest Matwey too.

The kernel decision is:
  - For SPIs, the default affinity is always on CPU0. That can be
    changed if someone calls irq_set_affinity.
  - For PPIs, the interrupt will be triggered on a particular
    processor, without any intervention of the kernel.

Maxime

-- 
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20150309/fef4482c/attachment.bin 


More information about the Kernelnewbies mailing list