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

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.