Provided by: hwloc-nox_2.10.0-1build1_amd64 bug

NAME

       hwloc-ps - List currently-running processes or threads that are bound

SYNOPSIS

       hwloc-ps [options]

OPTIONS

       -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.

       --children-of-pid <pid>
                 Only show process of PID <pid> and its hierarchy of children, even if they are 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.

       --uid <uid>
                 Only  show processes of the user whose UID is <uid>, or processes of all users if all is given.
                 By default, only processes of the current user are displayed.  This is currently only supported
                 on Linux.

       -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.

       --single-ancestor
                 When the object is bound to different objects, report their common ancestor (even if it may  be
                 larger than the actual binding).

       -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.

       --disallowed
                 Include objects disallowed by administrative 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.

       --pid-cmd env=<name>
                 On  Linux, try to read the value of environment variable name in each process and display it at
                 the end of the line.

       --pid-cmd mpirank
                 On Linux, try to find the process MPI rank (by querying some widespread environment  variables)
                 and display it at the end of the line.

       --lstopo-misc <file>
                 Output  a file that may be given to lstopo --misc-from for displaying processes/threads as Misc
                 objects. See EXAMPLES below.

       --json-server
                 Run the tool as a JSON server that waits for other process' requests on a port and  sends  back
                 binding information.  See contrib/hwloc-ps.www/ for details.

       --json-port <port>
                 Use the given port number instead of the default 8888.

       -v --verbose
                 Increase verbosity of the JSON server.

       --short-name
                 Show only the process short name instead of the path.

       --version Report version and exit.

       -h --help Display help message and exit.

DESCRIPTION

       By  default,  hwloc-ps  lists  only  those  currently-running  processes  that are bound. If -t is given,
       processes that are not bound but contain at least one bound thread are also displayed,  as  well  as  all
       their threads.

       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 --disallowed
       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

       If a process is bound, it appears in the default output:

           $ hwloc-ps
           4759 Core:0         myprogram

       If  a  process  is  bound  on  two  cores  of a larger package, the output will show these cores.  Option
       --single-ancestor will rather return the package even if it is actually larger than the binding here (the
       process is not bound to Core:0 of Package:0):

           $ hwloc-ps
           4863        Core:1 Core:2   myprogram
           $ hwloc-ps --single-ancestor
           4863        Package: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):

           $ hwloc-ps

           $ hwloc-ps -t
           4759 Machine:0      myprogram
            4759 Machine:0
            4761 PU:0
            4762 PU:2
            4765 PU:1

           $ hwloc-ps --pid 4759
           4759 Machine:0      myprogram

       The  output  may  be  a  file  that  lstopo uses for adding Misc objects (more flexible version of lstopo
       --top):

           $ hwloc-ps --misc-from foo
           $ cat foo
           name=12444 myprogram
           cpuset=0x000000f0
           subtype=Process

           name=12444 mythread1
           cpuset=0x00000050
           subtype=Thread

           name=12444 mythread2
           cpuset=0x000000a0
           subtype=Thread

       This may be directly given to lstopo:

           $ hwloc-ps --misc-from - | lstopo --misc-from -

       On Linux, hwloc-ps may also display some process specific environment variable at the end  of  the  line.
       This is for instance useful for identify MPI ranks among processes:

           $ hwloc-ps --pid-cmd env=OMPI_COMM_WORLD_RANK
           29093     PU:0 myprogram OMPI_COMM_WORLD_RANK=0
           29094     PU:2 myprogram OMPI_COMM_WORLD_RANK=1
           29095     PU:1 myprogram OMPI_COMM_WORLD_RANK=2
           29096     PU:3 myprogram OMPI_COMM_WORLD_RANK=3

       Some  widespread  MPI  specific  environment  variables  (OMPI_COMM_WORLD_RANK,  PMIX_RANK,  PMI_RANK and
       SLURM_PROCID) are actually directly recognized by hwloc-ps when requesting the mpirank command:

           $ hwloc-ps --pid-cmd mpirank
           29093     PU:0 myprogram PMIX_RANK=0
           29094     PU:2 myprogram PMIX_RANK=1
           29095     PU:1 myprogram PMIX_RANK=2
           29096     PU:3 myprogram PMIX_RANK=3

       Beside reading environment variables, hwloc-ps may also append the output of a custom program. Again, for
       reading the Open MPI process rank:

           $ hwloc-ps --pid-cmd myscript
           29093     PU:0 myprogram OMPI_COMM_WORLD_RANK=0
           29094     PU:2 myprogram OMPI_COMM_WORLD_RANK=1
           29095     PU:1 myprogram OMPI_COMM_WORLD_RANK=2
           29096     PU:3 myprogram OMPI_COMM_WORLD_RANK=3

       where myscript is a shell script doing:

           #!/bin/sh
           cat /proc/$1/environ 2>/dev/null | xargs --null --max-args=1 echo | grep OMPI_COMM_WORLD_RANK

SEE ALSO

       hwloc(7), lstopo(1), hwloc-calc(1), hwloc-distrib(1), and hwloc-ps.www/README

2.10.0                                            Dec 04, 2023                                       HWLOC-PS(1)