Server threads in instrumentation output
The server program divides its operations into threads. In instrumentation output, the names of the threads identify the operations.
Only some of the threads in the instrumentation output are useful for diagnosing performance problems. The most important threads are for reclamation of storage pool volumes, migration of data from random-access storage pools, and backup of storage pools.
Reclamation of storage pool volumes
The main thread for a reclamation operation for a storage pool volume is called AfRclmVolumeThread. The main thread starts one or two child threads. Each child thread controls a thread that is called AgentThread. Data movement operations start with an AgentThread that reads an object from a volume that is being reclaimed. See Figure 1.
A typical data movement operation starts with an AgentThread that reads an object from a volume that is being reclaimed. That data is processed through the SsAuxSrcThread, AfRclmVolumeThread, and SsSWThread threads. Data movement ends when the data is written on the target volume by the AgentThread thread that writes the data.
Migration of data from random-access storage pools
The main thread for a migration operation for a random-access storage pool is DfMigrationThread. The child threads to complete the migration operation differ by operating system.- AIX® and Linux®
- The main thread, DfMigrationThread, does the work of selecting the data for migration and the
volumes that are read from and written to. The thread starts two child threads: SsAuxSrcThread,
which controls the read operations, and SsSWThread, which controls the write operations. See Figure 2.
Figure 2. Threads for storage pool migration on AIX and Linux systems 
To read the data, the SsAuxSrcThread thread uses a DiskServerThread thread for each volume that must be read. The SsAuxThread thread uses multiple DiskServerThread threads if the data that is being migrated is on more than one volume.
DiskServerThread threads are independent of the SsAuxSrcThread thread. For each volume in a random-access storage pool, a DiskServerThread runs constantly to read and write from that particular volume. For example, if the storage pool has 10 disk volumes, then 10 DiskServerThread threads are always running. Because the SsAuxThread is not a parent for the DiskServerThread threads, you cannot use the ID of the SsAuxThread thread to find a DiskServerThread that is being used.
To write the data, the SsSWThread thread controls a child thread that is called AgentThread, which writes the data to the target volume.
Data movement starts with the DiskServerThread that reads the data from the volume that has the data to be migrated. That data is processed through the SsAuxSrcThread, DfMigrationThread, and SsSWThread threads. Data movement ends when the data is written on the target volume by the AgentThread thread that writes the data.
- Windows
- The main thread, DfMigrationThread, does the work of selecting
the data for migration and the volumes that are read from and written
to. The thread starts two child threads: SsAuxSrcThread, which controls
the read operations, and SsSWThread, which controls the write operations.
The SsAuxSrcThread thread reads data directly from the disks, without
using other threads. For writing the data, the SsSWThread thread controls
a separate child thread that is called AgentThread, which writes the
data to the target volume.
See Figure 3.
Figure 3. Threads for storage pool migration on Windows systems 
Data movement starts with the SsAuxSrcThread that reads the data from the volume that has the data to be migrated. That data is processed through the DfMigrationThread and SsSWThread threads. Data movement ends when the data is written on the target volume by the AgentThread thread that writes the data.
Backups for random-access storage pools
The main thread for a backup operation for a random-access storage pool is DfBackupPoolThread. The threads for reading from the random-access storage pool differ by operating system.- AIX and Linux
- The main thread, DfBackupPoolThread, controls the work for the backup operation, including
selection of volumes and reading and writing the data. The thread starts two child threads:
SsAuxSrcThread, which controls the read operations, and SsSWThread, which controls the write
operations. See Figure 4.
Figure 4. Threads for backup of random-access storage pools on AIX and Linux systems 
To read the data, the SsAuxSrcThread thread uses a DiskServerThread thread for each volume that must be read. The SsAuxThread thread uses multiple DiskServerThread threads if the data that is being migrated is on more than one volume.
DiskServerThread threads are independent of the SsAuxSrcThread thread. For each volume in a random-access storage pool, a DiskServerThread runs constantly to read and write from that particular volume. For example, if the storage pool has 10 disk volumes, then 10 DiskServerThread threads are always running. Because the SsAuxThread is not a parent for the DiskServerThread threads, you cannot use the ID of the SsAuxThread thread to find a DiskServerThread that is being used.
To write the data, the SsSWThread thread controls a child thread that is called AgentThread, which writes the data to the target volume.
Data movement starts with the DiskServerThread that reads the data from the volume that has the data to be backed up. That data is processed through the SsAuxSrcThread, DfBackupPoolThread, and SsSWThread threads. Data movement ends when the data is written on the target volume by the AgentThread thread that writes the data.
- Windows
- The main thread, DfBackupPoolThread, controls the work for the backup operation, including selection of volumes and reading and writing the data. The thread starts two child threads: SsAuxSrcThread, which controls the reading of data, and SsSWThread, which controls the writing of data. The SsAuxSrcThread thread reads the data directly from the disks, without using other threads. For writing the data, the SsSWThread thread controls a separate child thread that is called AgentThread, which writes the data to the target volume. See Figure 5.
Figure 5. Threads for backup of random-access storage pools on Windows systems 
Data movement starts with the SsAuxSrcThread that reads the data from the volume that has the data to be backed up. That data is processed through the DfBackupPoolThread and SsSWThread threads. Data movement ends when the data is written on the target volume by the AgentThread thread that writes the data.
Backups for sequential-access storage pools
The main thread for a backup operation for a sequential-access storage pool is AfBackupPoolThread. This thread controls the work for the backup operation, including selection of volumes and reading and writing the data. The main thread starts two child threads: SsAuxSrcThread, which controls the read operations, and SsSWThread, which controls the write operations. Each of these child threads controls a separate child thread that is called AgentThread, which either reads or writes the data. See Figure 6.
Data movement starts with the AgentThread that reads the data from the volume that is being backed up. That data is processed through the SsAuxSrcThread, AfBackupPoolThread, and SsSWThread threads. Data movement ends when the data is written on the target volume by the AgentThread thread that writes the data.
Copying active data for storage pool volumes
The main thread for a copy operation for a storage pool volume is called DfCopyActiveDataThread. The main thread starts one or two child threads. Each child thread controls a thread that is called AgentThread. See Figure 7.
A typical data movement operation starts with an AgentThread that reads an object from a volume that is being copied. That data is processed through the SsAuxSrcThread, DfCopyActiveDataThread, and SsSWThread threads. Data movement ends when the data is written on the target volume by the AgentThread thread that writes the data.
Replicating data from a source replication server
The main threads for replicating data from a source replication server to a target replication server are NrReplicateFilespace. This thread determines the data that must be replicated, which is a database heavy task and it is expected that database activities are dominant. NrReplicateBatch threads then send the data to the target replication server over the network. To read the data, the NrReplicateBatch threads start a child thread, SsAuxSrcThread, which controls the read operations. The NrReplicateBatch thread sends the data that is identified by the NrReplicateFilespace threads to the target replication server. See Figure 8.

- Waiting for the NrReplicateFilespace thread to provide lists of files to replicate
- Waiting for the SsAuxSrcThread to read the source data from storage
Expire inventory
The main thread for expire inventory is ExpirationProcessThread. Expire inventory does not move data and is a database intensive operation. It is expected that database operations are dominant in this thread. There might be several of these threads active, depending on the RESOURCE option that is used. See Figure 9.