mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Dimitri Sivanich <sivanich@sgi.com>,
	"Eric W. Biederman" <ebiederm@xmission.com>,
	Ingo Molnar <mingo@elte.hu>,
	Suresh Siddha <suresh.b.siddha@intel.com>,
	Yinghai Lu <yinghai@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Jesse Barnes <jbarnes@virtuousgeek.org>,
	Arjan van de Ven <arjan@infradead.org>,
	David Miller <davem@davemloft.net>,
	Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH v6] x86/apic: limit irq affinity
Date: Tue, 24 Nov 2009 14:55:15 +0100 (CET)	[thread overview]
Message-ID: <alpine.LFD.2.00.0911241443110.24119@localhost.localdomain> (raw)
In-Reply-To: <1259069986.4531.1453.camel@laptop>

On Tue, 24 Nov 2009, Peter Zijlstra wrote:
> On Tue, 2009-11-24 at 14:20 +0100, Thomas Gleixner wrote:
> > On Sat, 21 Nov 2009, Dimitri Sivanich wrote:
> > 
> > > On Sat, Nov 21, 2009 at 10:49:50AM -0800, Eric W. Biederman wrote:
> > > > Dimitri Sivanich <sivanich@sgi.com> writes:
> > > > 
> > > > > This patch allows for hard numa restrictions to irq affinity on x86 systems.
> > > > >
> > > > > Affinity is masked to allow only those cpus which the subarchitecture
> > > > > deems accessible by the given irq.
> > > > >
> > > > > On some UV systems, this domain will be limited to the nodes accessible
> > > > > to the irq's node.  Initially other X86 systems will not mask off any cpus
> > > > > so non-UV systems will remain unaffected.
> > > > 
> > > > Is this a hardware restriction you are trying to model?
> > > > If not this seems wrong.
> > > 
> > > Yes, it's a hardware restriction.
> > 
> > Nevertheless I think that this is the wrong approach.
> > 
> > What we really want is a notion in the irq descriptor which tells us:
> > this interrupt is restricted to numa node N.
> > 
> > The solution in this patch is just restricted to x86 and hides that
> > information deep in the arch code. 
> > 
> > Further the patch adds code which should be in the generic interrupt
> > management code as it is useful for other purposes as well:
> > 
> > Driver folks are looking for a way to restrict irq balancing to a
> > given numa node when they have all the driver data allocated on that
> > node. That's not a hardware restriction as in the UV case but requires
> > a similar infrastructure.
> > 
> > One possible solution would be to have a new flag:
> >  IRQF_NODE_BOUND    - irq is bound to desc->node
> > 
> > When an interrupt is set up we would query with a new irq_chip
> > function chip->get_node_affinity(irq) which would default to an empty
> > implementation returning -1. The arch code can provide its own
> > function to return the numa affinity which would express the hardware
> > restriction.
> > 
> > The core code would restrict affinity settings to the cpumask of that
> > node without any need for the arch code to check it further.
> > 
> > That same infrastructure could be used for the software restriction of
> > interrupts to a node on which the device is bound.
> > 
> > Having it in the core code also allows us to expose this information
> > to user space so that the irq balancer knows about it and does not try
> > to randomly move the affinity to cpus which are not in the allowed set
> > of the node.
> 
> I think we should not combine these two cases.
> 
> Node-bound devices simply prefer the IRQ to be routed to a cpu 'near'
> that node, hard-limiting them to that node is policy and is not
> something we should do.
> 
> Defaulting to the node-mask is debatable, but is, I think, something we
> could do. But I think we should allow user-space to write any mask as
> long as the hardware can indeed route the IRQ that way, even when
> clearly stupid.

Fair enough, but I can imagine that we want a tunable know which
prevents that. I'm not against giving sys admins enough rope to hang
themself, but at least we want to give them a helping hand to fight
off crappy user space applications which do not care about stupidity
at all.

> Which is where the UV case comes in, they cannot route IRQs to every
> CPU, so it makes sense to limit the possible masks being written. I do
> however fully agree that that should be done in generic code, as I can
> quite imagine more hardware than UV having limitations in this regard.

That's why I want to see it in the generic code.
 
> Furthermore, the /sysfs topology information should include IRQ routing
> data in this case.

Hmm, not sure about that. You'd need to scan through all the nodes to
find the set of CPUs where an irq can be routed to. I prefer to have
the information exposed by the irq enumeration (which is currently in
/proc/irq though).

Thanks,

	tglx

  reply	other threads:[~2009-11-24 13:56 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-20 21:11 Dimitri Sivanich
2009-11-21 18:49 ` Eric W. Biederman
2009-11-22  1:14   ` Dimitri Sivanich
2009-11-24 13:20     ` Thomas Gleixner
2009-11-24 13:39       ` Peter Zijlstra
2009-11-24 13:55         ` Thomas Gleixner [this message]
2009-11-24 14:50           ` Arjan van de Ven
2009-11-24 17:41             ` Eric W. Biederman
2009-11-24 18:00               ` Peter P Waskiewicz Jr
2009-11-24 18:20               ` Ingo Molnar
2009-11-24 18:27                 ` Yinghai Lu
2009-11-24 18:32                   ` Peter Zijlstra
2009-11-24 18:59                     ` Yinghai Lu
2009-11-24 21:41               ` Dimitri Sivanich
2009-11-24 21:51                 ` Thomas Gleixner
2009-11-24 23:06                   ` Eric W. Biederman
2009-11-25  1:23                     ` Thomas Gleixner
2009-11-24 22:42                 ` Eric W. Biederman
2009-11-25 15:40               ` Arjan van de Ven
2009-12-03 16:50                 ` Dimitri Sivanich
2009-12-03 16:53                   ` Waskiewicz Jr, Peter P
2009-12-03 17:01                     ` Dimitri Sivanich
2009-12-03 17:07                       ` Waskiewicz Jr, Peter P
2009-12-03 17:19                         ` Dimitri Sivanich
2009-12-03 18:50                           ` Waskiewicz Jr, Peter P
2009-12-04 16:42                             ` Dimitri Sivanich
2009-12-04 21:17                               ` Peter P Waskiewicz Jr
2009-12-04 23:12                                 ` Eric W. Biederman
2009-12-05 10:38                                   ` Peter P Waskiewicz Jr
2009-12-07 13:44                                   ` Dimitri Sivanich
2009-12-07 13:39                                 ` Dimitri Sivanich
2009-12-07 23:28                                   ` Peter P Waskiewicz Jr
2009-12-08 15:04                                     ` Dimitri Sivanich
2009-12-11  3:16                 ` david

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.2.00.0911241443110.24119@localhost.localdomain \
    --to=tglx@linutronix.de \
    --cc=arjan@infradead.org \
    --cc=davem@davemloft.net \
    --cc=ebiederm@xmission.com \
    --cc=hpa@zytor.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=peter.p.waskiewicz.jr@intel.com \
    --cc=peterz@infradead.org \
    --cc=sivanich@sgi.com \
    --cc=suresh.b.siddha@intel.com \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®