Types of Groups Created by TotalView
TotalView automatically organizes your processes and threads into the following predefined groups:
Process Groups:
By default, a process group contains all threads in all processes that are members of the group.
Control Group: All processes in a program. These processes can be local or remote. If your program uses processes that it did not create, TotalView places them in separate control groups by default. For example, a client/server program with two distinct executables that run independently will be placed into separate control groups. In contrast, processes created by
fork()/exec() are in the same control group.
You don’t have to accept these defaults. You can specify an existing control group for newly attached or created processes, and move existing processes to a different control group.
Share Group: All processes in a control group that share the same image, i.e., the same executable filename and path. In most cases, parallel programs have more than one share group. Share groups, like control groups, can be local or remote.
All Group: All processes in a debugging session.
Thread Groups:
A thread group can contain a subset of the threads from any process.
Workers Group: All worker threads in a control group. These threads can reside in more than one share group. TotalView automatically places all threads that are not manager threads into the workers group. Manager threads, i.e., those created by the pthreads package to manage other threads, do not execute code and cannot normally be controlled individually. (Note that most modern systems do not use manager threads.)
Lockstep Group: All threads in the share group that are at the same PC (program counter) as the thread of interest (TOI). This group is a subset of a workers group and will typically include threads from multiple processes.