Helix Core is now P4. Product user interfaces will be updated soon. Learn more >>

P4 Server Administration Documentation | 2026.1

# Parallel processing for submits, syncs, and shelves

Parallel processing of submits, syncs, and shelves might aid performance for:

- High-latency networks.

- Network configurations that prevent a single TCP flow from making full use of available bandwidth.

- Situations where the server transmits large compressed binary files to a multi-core client machine that uses parallel processing to uncompress the files.

The links that follow in this topic go to P4 CLI Reference.

The `net.parallel.max` configurable specifies the maximum number of concurrent threads for a single `p4 submit`, `p4 sync`, or `p4 shelve` command.

### Submit

To enable Parallel submits, specify the `--parallel` option of the `p4 submit` command.

To enable automatic parallel submits, set the ``net.parallel.submit.threads`` configurable to the number of threads for sending files in parallel for each submit.

### Sync

To transfer files using multiple threads, specify the `--parallel` option of the ``p4 sync`` command.

To enable automatic parallel sync, set the `net.parallel.threads` configurable on the server to a value greater than `1`, but less than or equal to the value of the ``net.parallel.max`` configurable.

To reduce lock contention during parallel syncs, set the `client.sendq.dir` configurable.

To reduce the number of parallel transmit threads for sync commands when the total number of concurrent user-transmit threads from all commands, including submit, would exceed the value you specify:

1. Set the net.parallel.sync.svrthreads configurable.

2. Set the monitor configurable to `1` or greater.

See Parallel processing for the `p4 sync` command.

### Shelves

To enable automatic parallel shelving, set the net.parallel.shelve.threads configurable to a value that is greater than `1` and less than or equal to the value of the ``net.parallel.max`` configurable.

Optionally, set the:

- net.parallel.shelve.min configurable to change the minimum number of files in a parallel shelve, which, by default, is `9`

- net.parallel.shelve.batch configurable to change the number of files in a batch for parallel shelving, which, by default, is `8`

To disable automatic parallel shelving, unset the net.parallel.shelve.threads configurable.

### Parallel processing in a commit-edge environment

Parallel submits can take place from an edge server to a commit server and the commit server can use standard pull threads to transfer the files. To enable this feature, the administrator makes sure that:

- The commit server has a service user (see Types of users) that is logged in to the edge server.

- The tickets file of the service user is available to the commit server.

- The edge server external address is configured in its server spec. See the `p4 server` command.

- If SSL/TLS is being used by the edge server, a trust is be set up between the commit and edge server, and the `P4TRUST` file is available to the commit server. See the `p4 trust` command.

Shelving

Promoted shelves require an additional file transfer from the edge server to the commit server. Parallel pull threads for this transfer require that the ExternalAddress field be set in the edge server spec and that pull threads can be used on the commit server. (This transfer using pull threads is not supported on Windows platforms.)

A user can override the shelve configurables on the command line or disable parallel shelving with the p4 shelve --parallel=0 command.

p4 monitor show and replica

The output from `p4 monitor show` for parallel sync, submit, or shelve commands issued to a forwarding replica include the associated transmit processes only on the target server The immediately upstream server for replica servers, edge servers, standby servers, proxies and brokers. See also 'upstream server' and 'central server'.. Those transmit processes are not seen on a replica unless the `-p` option is used for a parallel sync command.

To learn more, see Parallel checkpointing, dumping, and recovery.

Your search for returned results