Copyright © 2010-2018 Inria. All rights reserved.
Copyright © 2009-2010 Cisco Systems, Inc. All rights reserved.
See COPYING in top-level directory.
Synopsis Section
**************************
Options Section
**************************
10 -a List all processes, even those that are not bound to any specific part of the machine.
--pid <pid> Only show process of PID <pid>, even if it is not bound to any specific part of the machine.
--name <name> Only show processes whose name contains <name>, even if they are not bound to any specific part of the machine. This is not supported on all operating systems.
-p --physical Report OS/physical indexes instead of logical indexes
-l --logical Report logical indexes instead of physical/OS indexes (default)
-c --cpuset Show process bindings as cpusets instead of objects.
-t --threads Show threads inside processes. If -a is given as well, list all threads within each process. Otherwise, show all threads inside each process where at least one thread is bound. This is currently only supported on Linux.
-e --get-last-cpu-location Report the last processors where the process/thread ran. Note that the result may already be outdated when reported since the operating system may move the tasks to other processors at any time according to the binding.
--whole-system Do not consider administration limitations.
--pid-cmd <cmd>
Append the output of the given command to each PID line.
For each displayed process ID, execute the command <cmd> <pid>
and append the first line of its output to the regular hwloc-ps
line.
.
**************************
Description Section
**************************
hwloc-ps displays process identifier, command-line and binding. The binding may be reported as objects or cpusets. .
By default, process bindings are restricted to the currently available topology. If some processes are bound to processors that are not available to the current process, they are ignored unless --whole-system is given. .
The output is a plain list. If you wish to annotate the hierarchical topology with processes so as to see how they are actual distributed on the machine, you might want to use lstopo --ps instead (which also only shows processes that are bound). .
The
-a switch can be used to show
all processes, if desired.
.
**************************
Examples Section
**************************
If a process is bound, it appears in the default output:
$ utils/hwloc-ps
4759 Core:0 myprogram
If a process is not bound but 3 of his 4 threads are bound,
it only appears in the thread-aware output (or if explicitly selected):
$ utils/hwloc-ps
$ utils/hwloc-ps -t
4759 Machine:0 myprogram
4759 Machine:0
4761 PU:0
4762 PU:2
4765 PU:1
$ utils/hwloc-ps --pid 4759
4759 Machine:0 myprogram
To display the binding of already running MPI processes (launched by
Open MPI) and append their MPI rank (in MPI_COMM_WORLD) to each line:
$ utils/hwloc-ps --pid-cmd myscript
29093 L1dCache:0 myprogram OMPI_COMM_WORLD_RANK=0
29094 L1dCache:2 myprogram OMPI_COMM_WORLD_RANK=1
29095 L1dCache:1 myprogram OMPI_COMM_WORLD_RANK=2
29096 L1dCache:3 myprogram OMPI_COMM_WORLD_RANK=3
where myscript is a bash script doing:
#!/bin/sh
cat /proc/$1/environ 2>/dev/null | xargs --null --max-args=1 echo | grep OMPI_COMM_WORLD_RANK
**************************
See also section
**************************