mapping interrupts to a particular cpu
John Baldwin
jhb at freebsd.org
Thu Feb 1 23:23:22 UTC 2007
On Wednesday 31 January 2007 22:33, Alfred Perlstein wrote:
> Through source inspection it appears that we don't have interrupts
> running in the context of the actual interrupt handler unless they
> are truly "FAST". (correct me if I'm wrong).
>
> That makes my decision a lot easier. I will just use bind_cpu.
>
> If so, I will just use bind_cpu.
What is bind_cpu, sched_bind maybe?
If you want to bind interrupts to CPUs, look at
http://www.FreeBSD.org/~jhb/patches/intr_bind.patch It's tested and works on
i386 and amd64 and lets you bind interrupts to specific CPUs. There is a
sysarch() to do it, so you can write a trivial userland app. It doesn't
currently provide a way for userland to ask which interrupts are bound to
which CPUs. I'm mostly waiting for folks to benchmark it to make sure it
isn't a pessimization.
> * Alfred Perlstein <alfred at freebsd.org> [070131 19:18] wrote:
> > [[jhb cc'd cause he's Mr Apic from what I understand.]]
> >
> > I'm trying to figure out pinning interrupts to a particular cpu.
> >
> > If it can be done, if it's worth it and how.
> >
> > Any generic pointers one could give to help me do this? I'd like to
> > bind network interfaces to a particular cpu.
> >
> > I guess the questions boil down to:
> >
> > 1) Are we at the point that an interrupt for something such as an
> > ethernet device actually runs under interrupt context?
> > (or do we always switch to an ithread (for !FAST_INTR))
> > (I already know about bind_cpu which can be done inside interrupt
> > routine (I think?))
> >
> > Anyhow, if we have the actual interrupts running directly...
> > 2) How can I bind an interrupt source to a cpu?
> > 3) Is there a way to determine which cpu is best to wire an interrupt to?
> >
>
--
John Baldwin
More information about the freebsd-smp
mailing list