Gautham R Shenoy <e...@linux.vnet.ibm.com> writes: > On Thu, Apr 02, 2020 at 01:04:34PM +0530, Naveen N. Rao wrote: >> >> >> >>I wonder if we should introduce a sysctl interface to control thresholding. >> >>It can default to 0, which disables thresholding so that the existing >> >>behavior continues. Applications (lparstat) can optionally set it to suit >> >>their use. >> > >> >We would be introducing 3 new sysfs interfaces that way instead of >> >two. >> > >> >/sys/devices/system/cpu/purr_spurr_staleness >> >/sys/devices/system/cpu/cpuX/idle_purr >> >/sys/devices/system/cpu/cpuX/idle_spurr >> > >> >I don't have a problem with this. Nathan, Michael, thoughts on this?
No, I don't think this warrants a tunable when the issue it's intended to address is still a bit speculative at this point. (Also, note that this would be a system-wide value, but you could have multiple concurrent users of the interface with different needs.) >> >The alternative is to have a procfs interface, something like >> >/proc/powerpc/resource_util_stats >> > >> >which gives a listing similar to /proc/stat, i.e >> > >> > CPUX <purr> <idle_purr> <spurr> <idle_spurr> >> > >> >Even in this case, the values can be obtained in one-shot with a >> >single IPI and be printed in the row corresponding to the CPU. >> >> Right -- and that would be optimal requiring a single system call, at the >> cost of using a legacy interface. >> >> The other option would be to drop this patch and to just go with patches 1-5 >> introducing the new sysfs interfaces for idle_[s]purr. It isn't entirely >> clear how often this would be used, or its actual impact. We can perhaps >> consider this optimization if and when this causes problems... > > I am ok with that. We can revisit the problem if IPI noise becomes > noticable. However, if Nathan or Michael feel that this problem is > better solved now, than leaving it for the future, we will have to > take a call on what the interface is going to be. While I maintain some concern about the overhead on larger LPARs (150us per CPU works out to ~0.15s total to serially sample 1024 CPUs, ~0.3s for 2048 and so on), I am OK with the straightforward addition of the attributes without any batching or sampling thresholds behind the scenes for now. I appreciate your consideration of the issue. If this turns out to be too inefficient then I think we should consider a non-sysfs mechanism such as chardev+ioctl.