Re: [PATCH 0/6] support "dataplane" mode for nohz_full
From: Ingo Molnar <mingo@kernel.org>
Date: 2015-05-09 07:05:46
Also in:
lkml
* Andrew Morton [off-list ref] wrote:
On Fri, 8 May 2015 19:11:10 -0400 Chris Metcalf [off-list ref] wrote:quoted
On 5/8/2015 5:22 PM, Steven Rostedt wrote:quoted
On Fri, 8 May 2015 14:18:24 -0700 Andrew Morton [off-list ref] wrote:quoted
On Fri, 8 May 2015 13:58:41 -0400 Chris Metcalf [off-list ref] wrote:quoted
A prctl() option (PR_SET_DATAPLANE) is addedDumb question: what does the term "dataplane" mean in this context? I can't see the relationship between those words and what this patch does.I was thinking the same thing. I haven't gotten around to searching DATAPLANE yet. I would assume we want a name that is more meaningful for what is happening.The text in the commit message and the 0/6 cover letter do try to explain the concept. The terminology comes, I think, from networking line cards, where the "dataplane" is the part of the application that handles all the fast path processing of network packets, and the "control plane" is the part that handles routing updates, etc., generally slow-path stuff. I've probably just been using the terms so long they seem normal to me. That said, what would be clearer? NO_HZ_STRICT as a superset of NO_HZ_FULL? Or move away from the NO_HZ terminology a bit; after all, we're talking about no interrupts of any kind, and maybe NO_HZ is too limited in scope? So, NO_INTERRUPTS? USERSPACE_ONLY? Or look to vendors who ship bare-metal runtimes and call it BARE_METAL? Borrow the Tilera marketing name and call it ZERO_OVERHEAD? Maybe BARE_METAL seems most plausible -- after DATAPLANE, to me, of course :-)
'baremetal' has uses in virtualization speak, so I think that would be confusing.
I like NO_INTERRUPTS. Simple, direct.
NO_HZ_PURE? That's what it's really about: user-space wants to run exclusively, in pure user-mode, without any interrupts. So I don't like 'NO_HZ_NO_INTERRUPTS' for a couple of reasons: - It is similar to a term we use in perf: PERF_PMU_CAP_NO_INTERRUPT. - Another reason is that 'NO_INTERRUPTS', in most existing uses in the kernel generally relates to some sort of hardware weakness, limitation, a negative property: that we try to limp along without having a hardware interrupt and have to poll. In other driver code that uses variants of NO_INTERRUPT it appears to be similar. So I think there's some confusion potential here. - Here the fact that we don't disturb user-space is an absolutely positive property, not a limitation, a kernel feature we work hard to achieve. NO_HZ_PURE would convey that while NO_HZ_NO_INTERRUPTS wouldn't. - NO_HZ_NO_INTERRUPTS has a double negation, and it's also too long, compared to NO_HZ_FULL or NO_HZ_PURE ;-) The term 'no HZ' already expresses that we don't have periodic interruptions. We just duplicate that information with NO_HZ_NO_INTERRUPTS, while NO_HZ_FULL or NO_HZ_PURE qualifies it, makes it a stronger property - which is what we want I think. So I think we should either rename NO_HZ_FULL to NO_HZ_PURE, or keep it at NO_HZ_FULL: because the intention of NO_HZ_FULL was always to be such a 'zero overhead' mode of operation, where if user-space runs, it won't get interrupted in any way. There's no need to add yet another Kconfig variant - lets just enhance the current stuff and maybe rename it to NO_HZ_PURE to better express its intent. Thanks, Ingo