It seems current versions of Linux use scheduling domains to distribute processes between CPUs, hyperthreads, NUMA nodes, etc.

Say I wanted to visualize the domains that exist on a system, and some statistics about them that relate to how work is being distributed among them. Questions might be things like:

  • What domains exist on this system?
  • Is each NUMA node / physical core / other domain being utilized evenly or are processes contending for access to some cores while others are underutilized?
  • How frequently are processes being migrated?

What tools are available for such needs?

  • For the arrangement of logical CPUs into NUMA nodes:



    numactl --hardware

    which also displays real-time information about nodes memory, and node "distances".

  • For general info about memory usage by a process:

    numastat -p <PID_or_name_pattern>

    from package numactl.

  • For a much more elaborate tool:


    (according to the manpage, it supports only Intel Xeon and some IBM processors)

Note that I would be very surprised to see idle cores while the next ones are drowning in work (unless you forced the system into this with cpuset, of course): you can check in a glimpse with a simple top, hit 1 for per-CPU activity.

  • This is useful information for NUMA but I'm afraid doesn't show much about scheduling domains more generally, for example as it relates to hyperthreading. – Phil Frost Feb 5 at 17:31

The tool made by JP Lozi for his 2016 paper "The Linux Scheduler: a Decade of Wasted Cores" are available at https://github.com/jplozi/wastedcores if something like that is what you were looking for. Various graph output from different benchmark runs are at http://sfu.lozi.org/results/

I can't vouch for its usability, I haven't used it. Looks like it was last updated for the 4.1 Linux kernel.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.