Skip to content

Maintenance Ruby 3.4 gets fixes, but no new features. Switch to Ruby 4.0 →

class method

Etc.nprocessors

() -> ::Integer
nprocessors → Integer

Returns the number of online processors.

The result is intended as the number of processes to use all available processors.

This method is implemented using:

  • sched_getaffinity(): Linux

  • sysconf(_SC_NPROCESSORS_ONLN): GNU/Linux, NetBSD, FreeBSD, OpenBSD, DragonFly BSD, OpenIndiana, Mac OS X, AIX

Example:

Example
require 'etc'
p Etc.nprocessors #=> 4

The result might be smaller number than physical cpus especially when ruby process is bound to specific cpus. This is intended for getting better parallel processing.

Example: (Linux)

linux$ taskset 0x3 ./ruby -retc -e "p Etc.nprocessors"  #=> 2
See also .group .passwd .getpwuid .setgrent also in 4.1 · 4.0 · 3.3 · 3.2 · 3.1 · 3.0