Re: per-cpu thoughts
From: Paul Walmsley <hidden>
Date: 2019-03-13 20:15:34
Also in:
linux-riscv
Hi Christoph On Tue, 12 Mar 2019, Christopher Lameter wrote:
On Tue, 12 Mar 2019, Paul Walmsley wrote:quoted
The counters, though, may not need the preemption disable/reenable. Christoph, you expressed earlier that you think the overhead of the preempt_disable/enable is quite high. Do you think it's worth creating a separate, restricted implementation for per-cpu counters?As I have always said: I would like to have per cpu atomic instructions added on RISCV V that works like those on Intel. Single instruction and relative to a per cpu based addressable counter operations please.
Speaking from a RISC-V point of view, you could propose those kinds of instructions as an RISC-V extension. One good way to start might be to start a discussion in the isa-dev Google Group first. Others might speak up who agree with you and may be willing to help with the technical details: https://groups.google.com/a/groups.riscv.org/forum/#!forum/isa-dev Organizations that are members of the RISC-V Foundation can propose a new RISC-V Foundation working group to produce new instructions. There are a few of these extension task groups in progress now.
I think the attempt to reengineer the core counter mechanisms on Linux is not that realistic and would require you to first know the cross platform issues that have driven the development of these things in the first place. Sorry that I have been just superficially involved in these discussions but I have a hard time seeing this going anywere. There are already established core implementations and various arches take on this issue and those have been around for longer than a decade. It will be hard to come up with something better.
You might be right and you are certainly more of an expert in the per-cpu code than most of us. But if the existing implementation was designed around x86 instruction set constraints which might not apply to RISC-V (or ARM), there might be room for improvement.
Can we focus on the RISC V instruction support? I also do not think that this is a currently pressing issue but it will be when you scale up RISC V to many cores (especiall hundreds or thousands of concurrent hardware threads like what our interest is likely going to be in coming years and likely also when RISC V is going to be used for enterprise / cloud data services).
If the software discussion isn't productive, you could always take your concern directly to the architecture and microarchitecture mailing lists involved with the RISC-V Foundation. That way there's less need to talk it through with those of us who are primarily software focused. I would expect those engineers will probably go through a similar process: 1. they would want to become familiar with the minimal code sequences 2. if they think that an alternate code sequence would perform better, or just as well, they would probably expect someone to try it first 3. if they think that a given microarchitectural optimization would resolve the issue, without needing to add new instructions, they would probably be less interested in adding them 4. they might want to see traces that illustrate that there is an underlying problem This is more or less the approach that we're trying to take here, although with more of a software focus. We know you as a serious contributor and maintainer from the Linux community, which the hardware engineers might not, so it's easier to justify spending more time initially trying to understand the issue. Also, if it turns out that software optimizations are possible, it may help other architectures like ARM. - Paul _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel