Examining Groups
When you debug a multiprocess program, TotalView adds each process to a control group and a share group as the process starts.
Note: These groups are not related to UNIX process groups or PVM groups.
TotalView groups the processes depending on the type of system call (fork() or execve()) that created or changed the processes. The two types of process groups are:
Control Group
Includes the parent process and all related processes. A control group includes children that a process forked (processes that share the same source code as the parent). It also included forked children that subsequently call a function such as execve(). That is, a control group can contain processes that do not share the same source code as the parent.
Control groups also include processes created in parallel programming disciplines like MPI.
Members of a control group can be stopped as a group.
Share Group
Is the set of processes within a control group that share the same source code. Members of the same share group share action points.
Note: A full discussion of Groups, Processes, and Threads can be found in Chapter 3 of the CLI Guide. This information is also contained within Help. In addition, you can download this information from our Web site.
TotalView automatically creates share groups when your processes fork children that call execve() or when processes using the same code are created in some parallel programming models such as MPI.
TotalView names processes based upon the name of the source program. Here are the naming rules TotalView uses:
- TotalView names the parent process after the source program.
- Child processes that are forked have the same name as the parent, but with a numerical suffix (.n). If you are running an MPI program, the numeric suffix is the process's rank in COMM_WORLD.
- Child processes that call execve() after they are forked have the parent's name, the name of the new executable in angle brackets (<>) and a numerical suffix.
For example, if the generate process does not fork any children, and the filter process forks a child process that subsequently calls itself and then calls execve() to execute the expr program, TotalView names and groups the processes as shown in the following figure.
Example of Control Groups and Share Groups
|