Using parallel processing for submits, syncs, and shelves
Submits and syncs
You can configure the server to allow parallel file transfer for submit and sync processing. Parallel processing is most effective with long-haul, high-latency networks, or with other network configurations that prevent the use of available bandwidth with a single TCP flow. In addition, parallel processing between a client running on a multi-core machine and the server allows the uncompression of large compressed binary files to happen in parallel on the client.
-
Use the
configurable to:net.parallel.max
- Transfer files in parallel during the submit process.
- Speed up sync
processing by having the
command transfer files using multiple threads. You do this by setting thep4 sync
net.parallel.max
configuration variable to a value greater than1
and by using the--parallel
option to thep4 sync
command. See Parallel processing in the p4 sync comand in Helix Core Command-Line (P4) Reference.
- Use the
configurable to specify the number of threads for sending files in parallel for each submit (P4V 2017.3 and later). For details about setting up a service user, P4TRUST, andnet.parallel.submit.threads
ExternalAddress
for the commit server to pull files from the edge server, see Parallel submits the p4 submit command in Helix Core Command-Line (P4) Reference. For information about service users, see Types of users in Helix Core Command-Line (P4) Reference. - Use the
configurable to turn on parallel sync in a server. This parameter specifies the number of independent network connections that can be used for syncing files concurrently for each sync. When this parameter is set, parallel sync is automatically enabled in P4V as well (P4V 2017.3 and later).net.parallel.threads
- To reduce lock contention during parallel syncs, set the client.sendq.dir configurable.
Shelves
A p4 shelve command might execute more rapidly by transferring multiple files in parallel.
To enable automatic parallel shelving, set the net.parallel.shelve.threads configurable to a value that is less than or equal to the value of the
configurable. net.parallel.max
Optionally, set the net.parallel.shelve.min configurable to change the minimum number of files in a parallel shelve, which, by default, is 9.
Optionally, set the net.parallel.shelve.batch configurable to change the number of files in a parallel shelve, which, by default, is 8.
To disable automatic parallel shelving, unset the net.parallel.shelve.threads configurable.
Promoted shelves require an additional file transfer from the Edge to Commit Server. Parallel pull threads for this transfer are only used if the ExternalAddress field is set in its Edge Server spec and pull threads can be used on the Commit Server. This transfer using pull threads is currently 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.