From: Eric Wong Date: 2014-09-20T05:57:50+00:00 Subject: [ruby-core:65155] Re: [ruby-trunk - Feature #10267] [Open] Number of processors KOSAKI Motohiro wrote: > On Sat, Sep 20, 2014 at 1:03 PM, Eric Wong wrote: > > akr@fsij.org wrote: > >> matz accepted this feature including the method name, > >> Etc.nprocessors_online. > > > > I think the name is too long. How about naming it after the GNU > > coreutils nproc(1) command? > > > > Etc.nproc(:online) > > This is an option. But "proc" is not unclear on ruby context. It is sometimes > procedure, and it is sometimes process. I like processor or cpu. OK. I mainly want the ability to specify type as arg. > > I think it is important to be able to get all CPUs, not just > > online CPUs, too > > > (to workaround old SMP bugs in the kernel): > > What bug? Anything which may involve synchronizing with softirq or workqueues, I think... I suppose my fix in 128dd1759d96ad36c379240f8b9463e8acfd37a1 (missing barrier in EPOLL_CTL_MOD) is one example. I was never able to reproduce that bug on my HW, but it worries me because some users are still on old kernels and potentially affected. > > Etc.nproc(:all) > > I don't think this is useful. I'd like to explain some kernel internal. > Now, Linux has three type of number of cpus. > > 1) online > 2) present > 3) possible I think these names are fine for Ruby. > "all" is not clear to me. > > If you elaborate why you need nproc(:all), I may be able to suggest better > name. I just chose "all" because it matched the nproc(1) --all option and didn't want to use Linux-specific naming. But online/present/possible is fine, for now, too. We could also have extra options like: :cores - exclude HyperThread (probably useful for Intel users) :physical - number of sockets (maybe for affinity)