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

P4 CLI Documentation | 2025.2

# Configurables reference

View information about each configurable. To search for information on the page, use the browser search.

## Alphabetical list

A | C | D | F | I | J | L | M | N | P | R | S | T | U | Z

### A

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
auth.2fa.persist | Server | 1 | To disable p4 login2 -p, set to 0. To make p4 login-p implicitly invoke p4 login2 -p, set to 2. | No
auth.autologinprompt | Server | 1 | The default value causes the command-line user to be prompted to log in. To disable, set to 0 | No
`auth.default.method` | Server | `perforce` | The default method to use for authenticating new users. perforce specifies that the user is to be authenticated using the `db.user` table. This is the default setting. If there are no active LDAP configurations, this setting might cause a new user to be authenticated against an AD/LDAP server, using an authentication trigger if such a trigger exists. ldap specifies the user be authenticated against an AD/LDAP server without having to use authentication triggers. In addition, if you want new users to be automatically created when they have successfully authenticated against an AD/LDAP server, set the configurable `auth.ldap.userautocreate` to a non-zero value. | No
`auth.id` | Server | unset | An alphanumeric identifier that must be set for all servers in a distributed configuration if you want to implement single login to the central server The one server that is innermost in a multi-server deployment. In the server specification form field for Services, the central server might be specified as “standard” or “commit-server”. If edge servers are part of the multi-server deployment, the central server must be a commit server. See also 'upstream server'., which is then valid across all replica instances. You must also set `rpl.forward.login` to `1` for each replica participating in the distributed configuration. | On edge servers: See Explicit stop and restart.
`auth.ldap.cafile` | Server | unset | The path to a file that contains one or more PEM-formatted certificates used to verify the certificate presented by the AD/LDAP server when using SSL or TLS and `auth.ldap.ssllevel` is >=1. | No
`auth.ldap.order.N` | Server | unset | Specifies the name of the LDAP configuration to use for authentication and the order in which it should be used to search for a given user name. The lowest number confers the highest priority. You may skip numbers. For example:
    auth.ldap.order.1=UK_LDAP
    auth.ldap.order.2=US_LDAP
    auth.ldap.order.5=RU_LDAP
If you want LDAP authentication to replace trigger-based authentification, see LDAP authentication in the P4 Server Administration Documentation, and note that the Testing and enabling LDAP configurations procedure requires a server restart. | If LDAP Auth is working and you are adding a backup configuration, a restart is not required. However, the following applies after the first valid LDAP configuration is added to the list and after the last LDAP configuration is removed. See Explicit stop and restart.
`auth.ldap.pagesize` | Server | `0` | Specifies the paging limit for LDAP searches with paged results. Set the configurable to a value less than the result limit of the LDAP server. The default value, `0`, means that paging is not enabled. | No
`auth.ldap.sslciphers` | Server | unset | SSL/TLS ciphers to present to LDAP servers. LDAP uses the same defaults as SSL/TLS connections for the same OpenSSL implementation. The default is TSL 1.3 and the default ciphers and their priority are: Priority 1: `TLS_AES_256_GCM_SHA384` Priority 2: `TLS_CHACHA20_POLY1305_SHA256` Priority 3: `TLS_AES_128_GCM_SHA256` Priority 4: `AES256-SHA` You can set non-default ciphers for LDAP with this configurable. | See Explicit stop and restart.
`auth.ldap.ssllevel` | Server | `0` | Level of SSL/TLS certificate validation: 0: No validation; default. 1: Certificate must be valid, but the common name is not checked. 2: Certificate must be valid and the certificate common name matches the AD/LDAP server’s host name. | No
`auth.ldap.timeout` | Server | `30` | The time in seconds to wait before giving up on a connection attempt. | No
`auth.ldap.userautocreate` | Server | `0` | 0 means no automatic creation of users. 1 means that if `auth.default.method` is set to `ldap`, users are auto-created when they log in to P4 Server and they have been successfully authenticated against an active directory AD/LDAP server using `p4 login`. 2 is similar to `1` but also requires the user already have permissions on the server through the protections table. | No
`auth.licenseexpiry.warn` | Server | `1` | Enable license expiry warning: `0`: No license expiry warning `1`: Warn users with permission level admin or higher when they log in `2`: Warn all users when they log in | No
`auth.licenseexpiry.warnthreshold` | Server | `7` | Number of days prior to the expiration of the P4 license to start providing the warning if `auth.licenseexpiry.warn` is set. | No
auth.sso.allow.passwd | Server | 0 | To allow users who authenticate against the Perforce database (as opposed to LDAP or other auth triggers) to fall back to password authentication despite an auth-check-sso trigger being on the server, set to 1 If LDAP is enabled, see the auth.sso.nonldap configurable. See p4 login behavior with auth-check-sso trigger under Single signon and auth-check-sso triggers in P4 Server Administration Documentation. | No
auth.sso.args | Server | unset | This configurable can be set to string value to send to the client-side P4LOGINSSO script when an auth-check-sso trigger is in use. This string is substituted for the %ssoArgs% variable in the P4LOGINSSO environment variable, as the client executable is being invoked. For example, the SAML agent can get the identity provider (IdP) URL as follows: p4 configure set auth.sso.args=--idpUrl=yourURLforIdP where --idpUrl=yourURLforIdP replaces %ssoArgs% | No
auth.sso.nonldap | Server | 0 | When set to 0 and LDAP authentication is enabled, users whose AuthMethod is perforce will authenticate by password against the Perforce database. If set to 1, those users will be required to authenticate using a client-side P4LOGINSSO script. Note: If this configurable and auth.sso.allow.passwd are both set to 1, users whose AuthMethod is perforce will be able to authenticate using a client-side P4LOGINSSO script, or fallback to authenticating by password against the Perforce database. See p4 login behavior with auth-check-sso trigger under Single signon and auth-check-sso triggers in P4 Server Administration Documentation. | No
`auth.tickets.nounlocked` | Server | `0` | If set to `1` or `2`, prevents `p4 login -a` from issuing host unlocked tickets. In other words, `1` or `2` enforce host locked tickets, which are restricted to the one host with the correct IP address. 1 means the `-a` flag is silently ignored and the users are always issued host locked tickets. 2 means the `-a` flag is explicitly disabled and users get an error if they try to use it. If either value is set, the tagged output from p4 info `p4 -ztag info` shows that `unlockedTickets` is disabled: `... unlockedTickets disabled` | No

### C

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`client.readonly.dir` | Server | unset | The path of the directory on the P4 Server for the `db.have.pt` table of client workspaces of type `readonly`, `partitioned`, and `partitioned-jnl`. For example, if `client.readonly.dir` is set to `/perforce/1`, when a user creates `maria_wk` as a `readonly`, `partitioned`, or `partitioned-jnl` client workspace, the `db.have.pt` table associated with this client will be located in the `/perforce/1/server.dbs/client/hashdir/db.maria_wk` directory. To learn more, see Client workspace types in P4 Server Administration Documentation. | No
`client.sendq.dir` | Server | unset | For parallel sync: To avoid lock contention on the database table used for processing parallel syncs, set the configurable. This specifies the directory that will contain a separate db.sendq table for each client. Consider specifying the same directory you use for client.readonly.dir. | No

### D

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
db.checkpoint.bufsize | Server | 224K | Minimum journal buffer size during checkpoint. | No
`db.checkpoint.numfiles` | Server | `10` | Used to determine how many checkpoint files should be generated during a multifile checkpoint operation. See To tune future checkpoint requests. | No
`db.checkpoint.reqlevel` | Server | `4` | The depth of a table must be greater or equal to this value for it to be considered for splitting. See To tune future checkpoint requests. | No
`db.checkpoint.threads` | Server | `0` | Number of threads to use for checkpoint. `0`: Do not use threads `N`: Use the specified number of threads, up to `4096` The value can be overridden by the `p4 admin checkpoint` command as well as by the p4d utility. See Parallel checkpointing, dumping and recovery in P4 Server Administration Documentation. | No
`db.checkpoint.worklevel` | Server | `3` | The page level examined within a database table that supplies the record keys used to split that table during a multifile checkpoint operation. See To tune future checkpoint requests. | No
`db.journalrotate.warnthresh` | Server | `0` | If set to a value between `1` and `365`, at login, if the last journal rotation is older than the set number of days, a warning reminds admins and users of type operator to do a journal rotation. | No
db.monitor.addthresh | Server | 0 | The value is in milliseconds. If the value of the monitor is set to 1 or 2, new connections will only be added to the db.monitor table if they run for longer than the number of milliseconds specified in this configurable, or if they become blocked waiting for a lock on a table in the schema. To learn more, see p4 monitor. | No
`db.monitor.interval` | Server | 30 since 2018.2 and `0` prior to 2018.2 | The value of 0 means the feature is off. A non-zero value specifies the number of seconds that the P4 Server waits before checking if any process in the monitor table is marked for termination. If the P4 Server determines that any such process is blocked because it is waiting for client input, the P4 Server terminates it. See also: Enabling process monitorning in the P4 Server Administration Documentation the Support Knowledgebase article, Fixing a hung P4 Server server | No
`db.monitor.shared` | Server | `1024` | The maximum size of memory allotted to the `db.monitor` table, which tracks the p4d commands that are currently running. The value is in units of 8 kilobyte database pages to be stored in shared memory. The default of `256` pages is the equivalent of 2 MB. A value of `4096` pages would be the equivalent of 32 MB. If set to 0, the table is written to disk. Writing the table to memory improves performance. If the size of the table exceeds the value of `db.monitor.shared`, an error is returned. Commands are still executed, but they are not recorded in the table. See also the Options under the p4 configure command. The `p4 configure show` command indicates the actual maximum, but `p4 configure show allservers` indicates a manual preference that is only enforced if sufficient memory is available. MaxValue is `32768`. Prior to 2025.2, the default was `256`. | See Explicit stop and restart.
db.monitor.term.allow | Server | `0` | To allow users to terminate their own processes, set to `1`. To also allow users to pause and resume their own processes, set to `2`. A minimum of read permission in the protections table is required for these users to be able to use p4 monitor terminate. | No
`db.partition.dropondelete` | Server | `0` | If set to 1, during the partitioned client deletion, the individual records are not deleted but the table is deleted followed by the respective journal note Entries added to journals and checkpoints that provide information for subsequent users of the journal or checkpoint. For example, replica servers might take action based on the journal notes they process.. The table cannot be recovered but the performance is improved for the deletion. To learn more, see Journal notes in P4 Server Administration Documentation. | No
`db.partition.verify` | Server | `1` | Enables the verification of partitioned have tables for clients of type `readonly`, `partitioned`, and `partitioned-jnl`. To disable, set to `0`. | No
`db.peeking` | Server | `2` | Enable and configure lockless reads. When enabled, many common commands no longer block other commands attempting to update the database. To learn more, see Commands implementing lockless reads in the P4 Server Administration Documentation. 0: Disable peeking. Behavior is identical to 2013.2 and earlier. 1: New locking order is enabled, peeking is disabled, (diagnostic use only). 2: New locking order is enabled, peeking is enabled, `hx`/`dx` optimization on. 3: New locking order is enabled, peeking is enabled, `hx`/`dx` optimization is off. To help you decide between 2 and 3, see Possible values for db.peeking in P4 Server Administration Documentation. | Beginning with the 2017.1 release, this configurable is dynamic and no server restart is required.
db.peeking.usemaxlock | Server | 0 | When peeking, obey maxlocktime setting. To learn more, see Limiting database queries in P4 Server Administration Documentation. | No
db.reorg.disable | Server | 1 | 1: The default disables passive B-tree reorganization, which we recommend for solid-state drive (SSD) storage. 0: Enable passive B-tree reorganization. This might: be beneficial if data storage involves a spinning disk because it might reduce the need to periodically recreate database tables from a checkpoint to improve performance increase the size of some database tables due to the allocation of new contiguous pages Changing from the default value is not supported. | No
`db.replication` | Server | unset | Control behavior of commands that access metadata (`db.*` files) on the P4 Server server: readonly: User commands that read metadata are accepted; commands that modify metadata are rejected. Equivalent to starting a replica with the `p4d -M readonly` option. This configurable cannot be set globally. You must specify a server id. | No
`db.rt.io` | Server | `0` | Set to `1` to enable Database IO tracking by the rt.monitorfile configurable. | See Explicit stop and restart.
`dbjournal.bufsize` | Server | `16K` | Buffer size for journal and checkpoint read/write operations. | No
`dbopen.nofsync` | Server | `0` | For performance, set to `1` to disable the `fsync()` call when the server closes a `db.*` database file. This permits the operating system to determine when to write the modified data. | No
`defaultChangeType` | Server | unset | `defaultChangeType` Default type for new changelists: either `public` or `restricted`. If unset, new changelists are `public`. When changes are pushed or fetched, the Type: field for changes ignores the setting of this configurable on the target server. | No
`dm.annotate.maxsize` | Server | `10M` | Maximum revision size for p4 annotate. | No
`dm.batch.net` | Server | `10K` | Maximum files per (un)lock message sent between edge and commit server. | No
`dm.change.skipkeyed` | Server | `0` | When set to `1`, updates to a submitted changelist by `p4 change -u` or `p4 change -f` unset the checksum and filesize for `+k` type files instead of recalculating them. These can be recalculated later with the `p4 verify -u` command, or, for a large number of revisions, with parallel processing by the `p4 storage -U -n threads` command. | No
`dm.configure.comment.mandatory` | Server | `0` | If set to `1`, a comment must be provided when the value of a configurable is changed with the p4 configure command. How to add comments is shown at Examples of p4 configure history. | No
`dm.domain.accessforce` | Server | `3600` | Wait this many seconds before forcibly updating an access time, even if server must wait for a lock. | No
`dm.domain.accessupdate` | Server | `300` | Wait this many seconds before requesting a write lock to update an access time. | No
`dm.fetch.preservechangenumbers` | Server | `0` | If set to `1`, DVCS (or the Distribution Server) preserves existing changelist numbers when pushes or fetches occur. | No
`dm.grep.maxrevs` | Server | `10K` | Maximum number of revisions that can be searched with `p4 grep`. | No
`dm.info.hide` | Server | `0` | If set to `1`, which is recommended, and the user is not authenticated, p4 info hides: `Server name Server address Server uptime Server license ip address` and the license string is either `none` or `Licensed`. | No
dm.integ.streamspec | Server | 1 | `0`: Stream spec integration is not allowed `1`: Allow stream spec integration only for target streams with noinherit ParentViews. See 'p4 help streams' and 'p4 help streamcmds' to read about the stream ParentView property. `2`: Allow stream spec integration for all streams Changing from the default value is not supported. | No
`dm.locks.excl.batch.net` | Server | `10K` | Batch size for exclusively (un)locked files sent from an edge to a commit server. See `+l` at File type modifiers. | No
`dm.locks.global.batch.net` | Server | `10K` | Batch size for globally (un)locked files sent from an edge to a commit server. See `p4 lock -g`, `p4 fstat -OL`, and dm.open.show.globallocks | No
`dm.locks.global.result.batch.net` | Server | `10K` | Batch size for globally (un)locked files returned from a commit server to an edge server. (See `p4 lock -g`, `p4 fstat -OL`, and dm.open.show.globallocks) | No
`dm.keys.hide` | Server | `0` | `0`: Default `1`: `p4 keys` requires `admin` access `2`: `p4 key` requires `admin` access, `p4 keys` requires `admin` access | No
`dm.open.show.globallocks` | Server | `0` | `0`: Default `1`: Commands that open files on an edge server report any global locks that affect those files. This setting has the overhead of a query to the commit server. This is for global locks created through p4 lock, not `+l`, which is one of the File type modifiers . | No
`dm.password.minlength` | Server | `8` | Default minimum password length for servers where `security` is set to a non-zero value. | No
`dm.populate.skipkeyed` | Server | 0 | 0: Recalculates the `digest` and `size` fields for `ktext` files when the submitted changelist involving those revisions is updated. 1: Unsets the `digest` and `size` fields for `ktext` files when the submitted changelist involving those revisions is updated, which might improve the performance of p4 populate. | No
`dm.protects.allow.admin` | Server | `0` | Allow P4 administrators to use `-a`, `-g`, and `-u` with `p4 protects`. By default, only superusers can use these options. Changing from the default value is not supported. | No
`dm.protects.exclusioncheck` | Server | `1` | Revoking `list` access using an exclusionary protections entry with a path such as `-//...` revokes `list` access, as expected, for commands such as p4 changes and p4 describe. This default is the recommended setting for security purposes. To revert to the legacy behavior (less secure), set this configurable to `0` | No
`dm.protects.streamspec` | Server | `0` | To start enforcing the stream spec permissions described at p4 protect, set to `1` | No
`dm.proxy.protects` | Server | `1` | Determine (in accord with the use of IP addresses in the protections table) whether a user can access a server from a given IP address. When P4 Server evaluates protections table entries, it also considers the setting of the `dm.proxy.protects` configurable. dm.proxy.protects defaults to `1`, which causes the `proxy-` prefix to be prepended to all client host addresses that connect through an intermediary proxy, broker, or replica. The `proxy-` prefix indicates that the connection is not direct. If you specify `proxy-*` for the `Host` field, that will affect all connections made via proxies, brokers, and replicas. A value such as `proxy-10.0.0.5` identifies a client machine with an IP address of `10.0.0.5` that is connected to the server through an intermediary. If `dm.proxy.protects` is set to `0`, the `proxy-` prefix is removed. This allows you to write a single set of protection entries that apply both to directly-connected clients and clients that connect through a proxy, broker, or replica. A single set of protection entries is more convenient. However, in some cases a connection through one or more intermediaries might be less secure. If you use the `0` setting, all intermediaries must be at release 2012.1 or higher. For more information, see the `p4 protect` command. | No
`dm.repo.noautocreate` | Server | `0` | Control behavior of automatic repo creation in a depot of type `graph`. 0: When a user does a git push, if that repo does not already exist in the graph depot, this new repo is added in the graph depot. 1: When a user does a git push, if that repo does not already exist in the graph depot, the git push fails and the repo is not added to the graph depot. | No
dm.repo.unpack | Server | `1` | Control the retaining or unpacking of Git packfiles into loose objects when Git Connector imports the contents of an external Git repo into a P4 graph depot. The first import creates (or does the initial population of) the repo. Any subsequent imports (or mirroring) append new commits to the repo.
| Create | Append
--- | --- | ---
0 | retain | retain
1 | retain | unpack
2 | unpack | unpack
The value of 0 is consistent with the behavior prior to the 2020.2 release. | No
`dm.resolve.attrib` | Server | `1` | Enable resolve for attributes set with `p4 attribute`. Changing from the default value is not supported. | No
`dm.resolve.ignoredeleted` | Server | 0 | When a file has been deleted in branch A and not in branch B, a merge of B into A results in a conflict, and a subsequent `p4 resolve -as` does not resolve the conflict. However, if `dm.resolve.ignoredeleted` is set to `1`, `p4 resolve -as` resolves the conflict by honoring the file deletion in branch A. Changing from the default value is not supported. | No
`dm.rotatelogwithjnl` | Server | `1` | Set to `0` to disable log rotation after journal rotation. By default, when the journal is rotated, any structured logs are also rotated. Disabling this behavior can help when you’re doing frequent journal rotations and you want the log rotated on a different schedule. | No
`dm.shelve.accessupdate` | Server | 300 seconds | When a shelf is viewed or modified, update its access time if its last access time was longer than the limit specified by the value of `dm.shelve.accessupdate` Use the `p4 -Ztag change -o` command to display the access time for shelved files. | No
`dm.shelve.maxfiles` | Server | `10M` | Maximum number of files that can be shelved with `p4 shelve`. | No
`dm.shelve.maxsize` | Server | `0` | Maximum size in bytes of a file revision to be shelved, with a valid range from `1` to `2147483647`, or `0` for unlimited. | No
`dm.shelve.promote` | Server | `0` | Enable to make edge servers automatically promote shelved files to the commit server. An alternative is manual promotion with the `-p` option of `p4 shelve`. To determine whether to set this configurable, see Explicitly promoting shelves under Promoting shelved changelist in P4 Server Administration Documentation. | No
`dm.stream.components` | Server | `0` | `0`: default, stream components not enabled `1`: stream components enabled See Stream components. | No
dm.stream.parentview | Server | `0` | When creating a development, release, or mainline stream without the --parentview parameter, this configurable determines the default value for the ParentView field of the stream spec. `0`: All new streams have an inherit ParentView `1`: All new mainline, development and release streams have a noinherit ParentView. All new task and virtual streams have an inherit ParentView. `2`: All new release streams have a noinherit ParentView. All new streams that are not a release stream have an inherit ParentView. | No
`dm.stream.sparse.branchmax` | Server | `100000` | Maximum number of depot files in the branch view of a sparse stream. `0`: No limit See Sparse streams. | No
`dm.sync.streamchange` | Server | `0` | See the `--use-stream-change` option of p4 sync. | No
`dm.topology.lastseenupdate` | Server | `300` | Number of seconds that determines whether to update the `lastSeenDate` field in the db.topology table. If an update occurs before the number of seconds has passed, the `lastSeenDate` is not updated. Since 2025.2, can be set to zero (`0`) to disable topology functionality. This is for diagnostic use only and should not be set outside of the guidance of Perforce Support. | No
`dm.user.allowselfupdate` | Server | `1` | (MFA): The default of `1` allows a user to set the value for that user's `%email%` and `%fullname%` variables. To prevent users from changing the value of these variables, set to `0`. | No
`dm.user.accessforce` | Server | `3600` | Wait this many seconds before forcibly updating an access time, even if server must wait for a lock. | No
dm.user.accessmode | Server | 1 | Conditions for updating user access times: 0: Access times are only updated on command start. 1: Access times for users with an IdleTimeout are updated periodically during and at the end of a command. 2: All user's access times are periodically updated. 3: Like 2, but also includes service users. | No
`dm.user.accessupdate` | Server | `300` | Wait this many seconds before requesting a write lock to update an access time. | No
`dm.user.hideinvalid` | Server | `0` | Set to the recommended value of `1`, which requests a password even if the username does not exist. In addition, we recommend that the `security` configurable be set to `4` or higher, and that both `dm.users.hideinvalid` and `run.users.authorize` be set to `1`. | No
`dm.user.loginattempts` | Server | `3` | Number of password attempts before delay. When the number of consecutive failed login attempts equal this value, a delay is added before next attempt is possible. The delay is 1 second plus 1 second for every next failed attempt up to the maximum of 10 seconds. | No
`dm.user.noautocreate` | Server | `0` | Control behavior of automatic user creation. By default, P4 Server creates a new user whenever a previously unknown user invokes any command that can update the repository or its metadata Information that P4 Server maintains, such as who created file revisions in the depot, whether the file is a 'lazy copy,, the current state of client workspaces, protections, groups, users, labels, streams, and branches. Metadata is stored in the server database and is separate from the 'archive files' that users submit from their client workspace into the depot.. When executed by a nonexistent user, most P4 Server commands cause a user to be created. You can control this behavior by setting the configurable with the `p4 configure` command. For security, we recommend that only the P4 Server superuser be allowed to create new users. `p4 configure set dm.user.noautocreate=2` `0`: A user record is created whenever any new user invokes any command that updates the depot or its metadata (default). Many such commands exist, including p4 ping. `1`: New users must create their own user records by explicitly running `p4 user`. `2`: Only the P4 Server superuser can create a new user, and the superuser does so by explicitly running `p4 user -f username`. However, if LDAP authentication is enabled, the setting of `dm.user.noautocreate` is ignored. | No
`dm.user.resetpassword` | Server | `0` | Password reset behavior: `0`: New users are not required to create their own password. `1`: Recommended. If a user with the `super` access level A permission assigned to a user to control which commands the user can run. See also the 'protections' entry in this glossary and the 'p4 protect' command in the P4 CLI Documentation. has set the initial password for a user, that user must create their own password before they can run commands. | No
`dm.user.setinitialpasswd` | Server | `1` | Initial password behavior: `0`: Only users with the `super` access level A permission assigned to a user to control which commands the user can run. See also the 'protections' entry in this glossary and the 'p4 protect' command in the P4 CLI Documentation., and whose password is already set, can set the initial password for other users. All users can reset their own password after logging in with an initial password set by a super user. Before setting this configurable to 0, ensure that you already have super user, and that this super user already has a strong password set. `1`: All users can set their own passwords (default). If this configurable is set to `0`, and the security level is `1` or higher, all users without a password are unable to set their own password, and thus unable to log in to the P4 Server. Make sure that at least one user with `super` access has a password before setting this configurable to `0`, which is recommended. A `super` user with a password can set the initial password for other `super` users if necessary. | No

### F

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`filesys.atomic.rename` | Server | `1` | If set to `1` on a P4 Server running Windows Server 2016 and newer, enables journal rotation with an atomic rename, rather than requiring a copy and truncate operation. (If you want to disable this feature, set the value to `0` and restart the server.) Note that atomic rename is the default on Linux. | See Explicit stop and restart.
`filesys.binaryscan` | Client, Server | `64K` | Scan the first `filesys.binaryscan` bytes for binary data when running `p4 add`. | No
`filesys.bufsize` | Client, Server | `64K` | Buffer size for client-side read/write operations. | No
`filesys.checklinks` | Server | `0` | Use to control symbolic links. 0: No link checking, so directory `symlinks` can occur. 1: Blocks attempts to `p4 add` a symlink to a directory, such that both the following fail: p4 add /path/to/a/symlinkDirectory p4 add /path/to/an/embeddedSymlink/readme.txt 2: Same as `1` except allows the user to bypass the check by using the `-f` (force) option: p4 add -f /path/to/a/symlinkDirectory p4 add -f /path/to/an/embeddedSymlink/readme.txt 3: allows a symlink to a directory that terminates the path without having to use `-f`: `p4 add /path/to/a/symlinkDirectory` succeeds without using `-f` because the directory that is represented by a symlink is at the end of the path. `p4 add /path/to/an/embeddedSymlink/subdirectory/readme.txt` fails because the directory that is represented by a symlink is not at the end of the path. p4 add -f /path/to/an/embeddedSymlink/subdirectory/readme.txt succeeds because of the `-f` option. | No
`filesys.depot.min` | Server | `250M` | Minimum disk space required for each depot. The server rejects commands from those depots, if any, that fail to meet this minimum. To specify size, use the following binary abbreviations, which are slightly different from the more familiar decimal abbreviations: t or `T` for tebibytes (1 T is approximately 1.1 TB) g or `G` for gibibytes (1 G is approximately 1.07 GB) m or `M` for mebibytes (1 M is approximately 1.05 MB) k or `K` for kibibytes (1 K is 1,024 bytes) You can also use a percentage to specify the relative amount of free disk space required. | No
`filesys.extendlowmark` | Client | `32K` | Minimum filesize before preallocation (Windows). | No
`filesys.P4JOURNAL.min` | Server | `250M` | Minimum disk space required on server journal filesystem before server rejects commands. To specify size, use the following binary abbreviations, which are slightly different from the more familiar decimal abbreviations: t or `T` for tebibytes (1 T is approximately 1.1 TB) g or `G` for gibibytes (1 G is approximately 1.07 GB) m or `M` for mebibytes (1 M is approximately 1.05 MB) k or `K` for kibibytes (1 K is 1,024 bytes) You can also use a percentage to specify the relative amount of free disk space required. | No
`filesys.P4LOG.min` | Server | `250M` | Minimum disk space required on server log filesystem before server rejects commands. To specify size, use the following binary abbreviations, which are slightly different from the more familiar decimal abbreviations: t or `T` for tebibytes (1 T is approximately 1.1 TB) g or `G` for gibibytes (1 G is approximately 1.07 GB) m or `M` for mebibytes (1 M is approximately 1.05 MB) k or `K` for kibibytes (1 K is 1,024 bytes) You can also use a percentage to specify the relative amount of free disk space required. | No
`filesys.P4ROOT.min` | Server | `250M` | Minimum disk space required on server root filesystem before server rejects commands. To specify size, use the following binary abbreviations, which are slightly different from the more familiar decimal abbreviations: t or `T` for tebibytes (1 T is approximately 1.1 TB) g or `G` for gibibytes (1 G is approximately 1.07 GB) m or `M` for mebibytes (1 M is approximately 1.05 MB) k or `K` for kibibytes (1 K is 1,024 bytes) You can also use a percentage to specify the relative amount of free disk space required. | No
`filesys.TEMP.min` | Server | `250M` | Minimum disk space required for temporary operations before server rejects commands. To specify size, use the following binary abbreviations, which are slightly different from the more familiar decimal abbreviations: t or `T` for tebibytes (1 T is approximately 1.1 TB) g or `G` for gibibytes (1 G is approximately 1.07 GB) m or `M` for mebibytes (1 M is approximately 1.05 MB) k or `K` for kibibytes (1 K is 1,024 bytes) You can also use a percentage to specify the relative amount of free disk space required. | No
`filesys.windows.lfn` | Server, Client, Proxy | `1` | Set to `1` to support filenames longer than 260 characters on Windows platforms. Depending on the depth of your workspace path, this might need to be set on the client, server, and/or proxy (which acts as a client). A file name length of up to 32,767 characters is allowed. Each component of the path is limited to 255 characters. The server root or client root cannot be a long path. Changing from the default value is not supported. | No
`filetype.maxtextsize` | Server | `10M` | Maximum file size for text type detection. | No

### I

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`info.p4auth.usercheck` | Server | 1 | Validate username against P4AUTH server | No

### J

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`journalPrefix` | Server | unset | Prefix or directory location for rotated journals and checkpoints: p4 configure show journalPrefix `master#journalPrefix=/p4/ckps/master (configure)` p4 admin checkpoint p4 -F %jfile% journals -m2 `/p4/ckps/master.ckp.539` `/p4/ckps/master.jnl.538` | See Explicit stop and restart for a multi-server environment with replication. A standalone server does not need to restart.
`journalPrefixBackup` | Server | unset | Can be set to specify a secondary storage location on the commit server and still support edge server activity. For example, your commit server machine might have access to a location where storage is more economical. Setting this configurable enables the commit server to read the rotated journal files from the secondary location, provided that the journal files have been moved to that location, which is a manual task. | No

### L

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`lbr.autocompress` | Server | `1` | Specific for the Base file types that are stored in RCS format. This excludes `binary`, which is always compressed. `1`: all files are compressed. (The default since 2022.1) `0`: new files except binary are stored without compression. (The default prior to 2022.1) However, any typemap settings set with p4 typemap override this configurable. For example, if a file is specified as type `text+D` in the typemap, it will be stored as uncompressed. In addition, the typemap override can itself be overridden by using the `-t type` option of p4 add or p4 edit. | No
`lbr.bufsize` | Server, Proxy | `64K` | Buffer size for read/write operations to server’s archive of versioned files. | No
`lbr.proxy.case` | Proxy | `1` | 1: File paths are always case-insensitive. 2: File paths are case-insensitive if server is case-insensitive. 3: File paths are always case-sensitive. | No
`lbr.rcs.existcheck` | Server | `1` | Perform an RCS validation check during submit. | No
`lbr.rcs.maxlen` | Server | `10M` | Maximum line length in a `+k` file. | No
`lbr.replica.notransfer` | Server | `0` | If set to 1, suppresses direct on-demand file fetch, which forces the use of pull-archive triggers for transfers. See Triggers for external file transfer in P4 Server Administration Documentation. | No
`lbr.replication` | Server | unset | Define the behavior for replication of versioned files on the P4 Server: readonly: Replicates version files when they are updated 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'.. shared: For shared storage. See Configuring a replica with shared archives in P4 Server Administration Documentation. cache: Replicates version files only when referenced if they do not already exist on the replica. ondemand: Replicates versioned files only when referenced if they do not already exist on the server. File revisions are not deleted based on received journal records and there is no checking that the storage for file revisions is shared with the upstream server. The commands p4 pull -u, p4 verify -t, and p4 cachepurge are not supported with this setting. none: Versioned files are not replicated and no user access to versioned files is permitted for read-only replica and read-only standby servers. This configurable cannot be set globally. You must specify a server id. Equivalent to starting a replica `p4d` process with one of the `-D readonly`, `-D shared`, `-D cache`, or `-D none` options. | See Explicit stop and restart.
`lbr.retry.max` | Server | `50` | In the event of a failed transfer, a replica will make `lbr.retry.max` attempts to retrieve the file. | No
`lbr.s3.multipart` | Server | 4096 | Only files greater than this value use the S3 multipart protocol to split and send this file. This value is specified in megabytes. The default value is `4096`, which corresponds to 4 GB. Valid range is `5` to `2147483647`. | No
`lbr.s3.multipartsz` | Server | `1024` | S3 transfers using the S3 multipart upload protocol split the transfer into chunks of this size. This value is specified in megabytes. The default value is `1024`, which corresponds to 1 GB. Valid range is `5` to `2147483647`. | No
`lbr.s3.uploadretries` | Server | `5` | Number of times to retry uploads to S3 that generate a response code error between `500` and `599`. | No
`lbr.scan.ignore_pattern` | Server | 0 | A JSON-encoded array of regular expressions used by the archive file scanner if the command is the following: `p4 storage -l start --nonlbr` A filename matching any of the patterns will be ignored by the scanner. | No
lbr.stat.interval | Server | 0 | Proxy file status interval. If set to a value, such as 30, the LbrStatus table entry for a large file will be updated every 30 seconds, indicating that the proxy is making progress on the file transfer. If the proxy has not read some data for that file within the 30 seconds then the entry will not be updated. For more information, if you have installed the P4P, see the proxy help by typing at the command line p4p -h | No
lbr.storage.allowsymlink | Server | 0 | To allow symlinks, set to 1 This should only be done if all the symlinks only reference files and directories that are not under any scanned directory. See p4 storage. | No
lbr.storage.delay | Server | 86400 | Required number of seconds before p4 storage -d scanner considers deleting storage records. 86400 seconds equates to 24 hours. This delay is to allow any in-progress submits and in-progress shelves to complete. | No
`lbr.storage.skipkeyed` | Server | `2` | If 2, the default value, no digest is created for keyword revisions and no message is logged. If 1, no digest is created for keyword revisions and a warning message is logged. If 0, a digest is created for all keyword revisions. | See Explicit stop and restart.
`lbr.storage.threads` | Server | `0` | Number of threads to use for a `p4 storage -U` request. `0`: Don't use threads `N`: Use `N` threads to compute the digests | No
`lbr.unloaddepot.compress` | Server | `0` | If set to `1`, and if the `Options` field of p4 label is set to `autoreload`, stores newly created labels to the unload depot in compressed mode. | No
`lbr.verify.in` | Server | `1` | Verify contents from the client to server? (`1` for yes, `0` for no) | No
`lbr.verify.out` | Client, Server | `1` | Verify contents from the server to client? (`1` for yes, `0` for no) | No
`lbr.verify.script.out` | Server | `1` | Set to `0` to prevent files of type `+X` from having their digest checked when transmitted from server to client. When source watermarking is used, sites have configured a `+X` archive trigger script that returns different results each time a file is sync’d or printed, in order to embed a user-specific string into the file contents during sync. This defeats the digest verification performed when sending the file to disk. Setting `lbr.verify.script.out` disables digest verification in this situation. Other files are still verified normally, as determined by the setting of `lbr.verify.out`. | No
`log.originhost` | Server | `1` | Origin and peer IPs in the structured logs. | No

M

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`minClient` | Server | unset | Lowest version of client software permitted to connect to this server. The `minClient` version can be lower than, or equal to, the server version, but not higher than the server version. The syntax to set this configurable is:
    p4 configure set minClient=version
The value of version can be a version string:
    p4 configure set minClient=2017.2
or a client protocol level:
    p4 configure set minClient=83
To discover which client protocol version corresponds to a given P4V version string, see the server log. The following server log entry shows that P4V 2017.3 is using v83 as the protocol version: P4V/MACOSX1011X86_64/2017.3/1582486/v83 You can use `minClientMessage` to provide your users a message if their client is blocked by this configurable. See also: : Protocol levels: server/client in the P4 Server Administration Documentation. The Support Knowledgebase article, How to force users to upgrade their client software | No
`minClientMessage` | Server | unset | Message to issue if client software is too old, set by `p4 configure set minClientMessage=message`. | No
`monitor` | Server | `0` | Valid values for the monitor configurable are: 0: Server process monitoring off. (Default) 1: monitor active commands 2: active commands and idle connections 3: same as `2`, but also includes connections that failed to initialize (stuck at the Init() phase) 5: same as `3`, but also includes a list of the files locked by the command for more than one second 10: same as `5`, but also includes lock wait times 25: same as `10`, except that the list of files locked by the command includes files locked for any duration See the `p4 monitor` command. This configurable is affected by the db.monitor.shared configurable. | If `monitor` is being changed from `0` to a non-zero value, see Explicit stop and restart.
`monitor.lsof` | Server | unset | When set on Unix platforms, enables the use of the `p4 monitor` command to display a list of locked files. Set to the following value:
    path/lsof -F pln
The value for `path` varies with the version of Unix you are using. For example:
    /usr/bin/lsof -F pln
For the list of valid values for this configurable, see the Description of the `p4 monitor` command. | No

### N

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`net.autotune` | Server, Client, Proxy, Broker | 1 | TCP connection changes to improve performance over long latency connections. To disable, set to `0`. Clients set this configurable by using p4 set or P4CONFIG files. Servers set this configurable by using p4 configure. On Windows-based platforms, send buffer sizes are not autotuned but are manually configurable with net.tcpsize. If net.autotune has a non zero value, the following are ignored: (Windows) any net.tcpsize setting for receive buffer sizes (Linux/macOS) any send and receive buffer sizes Autotune defaults to being enabled on server versions: 2019.1 and later 2017.1 (unpatched) Autotune defaults to being disabled on server versions: 2018.2 2018.1 2017.2 2017.1 (when patched) | Not since 2025.1. Prior to 2025.1, see Explicit stop and restart.
`net.backlog` | Server, Proxy | `128` | Maximum length of queue for pending connections. Consider increasing if users cannot connect to servers that are heavily loaded. | No
`net.delta.rpl.minsize` | Server | `131,072` | Minimum file size to perform replica delta transfer. Must be non-zero on both upstream and downstream servers to activate delta transfer. Upstream server values are used for replica delta transfer. Default of `131,072` bytes corresponds to 128 * 1024. | The startup.N archive pull threads of an edge/replica see this configurable's change when those threads restart and reconnect. To avoid having to restart the edge/replica server, run : `p4 configure set SERVER=SPEC-NAME#server.startup.autorestart=1` followed by `p4 monitor terminate PID` on each of the edge/replica archive pull threads (`p4 pull -u`) processes.
`net.delta.rpl.threshold` | Server | 90 | Determines when to send the full file instead of delta chunks. If the percentage of differing chunks to total chunks is the greater than the threshold, the full file transfer will be initiated.
`net.delta.transfer.minsize` | Client, Server | `131,072` | Submits and syncs to files of type `binary+F` use a delta transfer mechanism to only send the modified portion of file content from the client to the server. This is an optimization for remote clients. If `0` on the client, the feature is disabled locally. If `0` on the server, the feature is disabled globally. Default of `131,072` bytes corresponds to 128 * 1024. Non-zero values on the client represent the minimum file size in bytes that a delta transfer will be performed on. | No
`net.delta.transfer.threshold` | Client | `90` | Maximum percentage of file size to perform delta transfer before reverting to streaming the complete file. On a low-bandwidth remote client, reducing file transfers improves performance and the default of 90% is likely to be appropriate. On a client with a fast network, a lower threshold minimizes the overhead of the delta transfer. | No
`net.heartbeat.interval` | Server | `2000` | Milliseconds between sending heartbeats to the target server. You can interactively invoke p4 heartbeat to observe the effect of varying the value for this configurable. | The server must be restarted for any background heartbeat threads to start using the updated value for this configurable.
`net.heartbeat.missing.count` | Server | `5` | The number of consecutive missed heartbeat responses (see `net.heartbeat.missing.wait`) before the heartbeat is considered non-responsive or dead. When the count of consecutive missed responses reaches `net.heartbeat.missing.count`, your `heartbeat-dead` trigger will fire. See Triggering on heartbeat (server responsiveness) in P4 Server Administration Documentation. You can interactively invoke p4 heartbeat to observe the effect of varying the value for this configurable. | The server must be restarted for any background heartbeat threads to start using the updated value for this configurable.
`net.heartbeat.missing.interval` | Server | `2000` | Milliseconds between sending heartbeats after a missing response. You can interactively invoke p4 heartbeat to observe the effect of varying the value for this configurable. | The server must be restarted for any background heartbeat threads to start using the updated value for this configurable.
`net.heartbeat.missing.wait` | Server | `4000` | Milliseconds to wait for a response from the target server after a missed response. If the response arrives before the request times out, your `heartbeat-resumed` trigger will fire. See Triggering on heartbeat (server responsiveness) in P4 Server Administration Documentation. You can interactively invoke p4 heartbeat to observe the effect of varying the value for this configurable. | The server must be restarted for any background heartbeat threads to start using the updated value for this configurable.
`net.heartbeat.wait` | Server | `2000` | Milliseconds to wait for a response from the target server. If this interval is exceeded, your `heartbeat-missing` trigger will fire if this is the first missing response. See Triggering on heartbeat (server responsiveness) in P4 Server Administration Documentation. You can interactively invoke p4 heartbeat to observe the effect of varying the value for this configurable. | The server must be restarted for any background heartbeat threads to start using the updated value for this configurable.
`net.keepalive.count` | Client, Server | `0` | Number of unacknowledged keepalives before failure. Similar to `tcp_keepalive_probes` at https://linux.die.net/man/7/tcp If `0`, defaults to the operating system behavior. See the TCP keepalive section in the Administrators Guide. | No
`net.keepalive.disable` | Client, Server | `0` | If `0` and keepalive functionality is supported by the OS, keepalives are enabled on the socket. If `1`, keepalives are disabled on the socket. See the TCP keepalive section in the Administrators Guide. | No
`net.keepalive.idle` | Client, Server | `0` | Idle time (in seconds) before starting to send keepalives. Similar to `tcp_keepalive_time` at https://linux.die.net/man/7/tcp If `0`, defaults to the operating system behavior. See the TCP keepalive section in the Administrators Guide. | No
`net.keepalive.interval` | Client, Server | `0` | Interval (in seconds) between sending keepalive packets. Similar to `tcp_keepalive_intvl` at https://linux.die.net/man/7/tcp If `0`, defaults to the operating system behavior. See the TCP keepalive section in the Administrators Guide. | No
`net.maxclosewait` | Server | `1000` | Milliseconds to wait for a network close | No
`net.maxfaultpub` | Proxy | `100` | A value in megabytes that controls the proxy’s cache faulting behavior. A single `p4 sync` will not publish more than `net.maxfaultpub` megabytes of faults into `pdb.lbr`. You must restart the server after changing the value of this configurable. | See Explicit stop and restart.
`net.maxwait` | Client, Server, Proxy | 0 | Time, in seconds, before a network connection times out. Note that the default of 0 means the configurable is not activated. Best practice is not to set server-wide: if set on server, requires that users complete command-line forms within this limit. If set in user’s individual `P4CONFIG` file, applies to user’s workstation (and requires only that the versioning service reply to user requests within the allotted time limit). You must restart the server after changing the value of this configurable. | See Explicit stop and restart.
`net.mimcheck` | Server, Proxy | `1` | Man-in-the-middle network security level: This enables checks for possible interception or modification of data such as using an SSH tunnel or other TCP forwarder for users with passwords set. 0: Disable MitM checks. 1: Check proxy/broker connections in legacy contexts. 2: Connections from clients are checked for TCP forwarding. 3: Connections from clients, proxies, and brokers are checked for TCP forwarding. 4: All connections are checked; client software older than release 2010.1 cannot connect. 5: Requires that proxies, brokers, and all intermediate servers have valid logged-in service users associated with them. This allows administrators to prevent unauthorized proxies and services from being used. You must restart the server after changing the value of this configurable. | See Explicit stop and restart.
net.nagle | Client, Server, Proxy | 2 | Whether the Nagle algorithm is used. This algorithm clears the TCP_NODELAY socket option, which delays sending small packets of data in the hope of bundling them with other data to create larger, more efficient packets. 0 : Disable the Nagle algorithm to send data as soon as possible. 1 : Enable the Nagle algorithm. 2 : Disable the Nagle algorithm for SSL but use the system default for TCP, which on most systems is to enable the Nagle algorithm. See also net.quickack. | No
`net.parallel.batch` | Server | `8` | Specifies the number of files in a batch. See p4 sync on Parallel syncs. | No
`net.parallel.batchsize` | Server | `512K` | Default of 524288 is equivalent to 512 KB. Specifies the number of bytes in a batch. See p4 sync on Parallel syncs. | No
`net.parallel.max` | Server | `0` | The maximum number of concurrent threads for a single `p4 sync`, `p4 shelve`, or `p4 submit` command. A value greater than `1` enables parallel processing up to the specified number of threads. Values can range between `0` and `100`. Too many threads can reduce performance due the overhead associated with starting, managing, and stopping threads. Often, 8 threads perform better than 20. Make sure to also set net.parallel.sync.svrthreads on every server that sets net.parallel.max. In addition to setting this variable, you must also use the `--parallel` option of `p4 sync`, `p4 shelve`, or `p4 submit`. However, If you use net.parallel.threads, net.parallel.submit.threads, or net.parallel.shelve.threads to automate parallel processing, you do not need to use the `--parallel` option. See also: Parallel syncs for p4 sync Parallel submits Parallel shelving Parallel processing for submits, syncs, and shelves in the P4 Server Administration Documentation. | No
`net.parallel.min` | Server | `9` | Specifies the minimum number of files in a parallel sync. A sync that is too small does not initiate parallel file transfers. See p4 sync on Parallel syncs. | No
`net.parallel.minsize` | Server | `576K` | Specifies the minimum number of bytes in a parallel sync. A sync that is too small does not initiate parallel file transfers. See p4 sync on Parallel syncs. | No
`net.parallel.shelve.batch` | Server | `8` | For automatic parallel processing: specifies the number of files in a batch. (See also `net.parallel.submit.batch`) | No
`net.parallel.shelve.min` | Server | `9` | For automatic parallel processing: specifies the minimum number files for auto parallel shelve. A shelf that is too small does not initiate parallel file transfers. (See also `net.parallel.submit.min`) | No
`net.parallel.shelve.threads` | Server | `0` | For automatic parallel processing, specifies the number of threads for sending files in parallel. Can be overridden on the command line, but cannot be greater than net.parallel.max., which must be set to `2` or more threads. The specified threads grab work in batches. The size of a batch is specified using the `net.parallel.shelve.batch` configurable. | No
`net.parallel.submit.batch` | Server | `8` | For automatic parallel processing: specifies the number of files in a batch. See the `p4 submit` command on Parallel submits. | No
`net.parallel.submit.min` | Server | `9` | For automatic parallel processing: specifies the minimum number of files to be sent in a parallel submit. A submit that is too small does not initiate parallel file transfers. See the `p4 submit` command on Parallel submits. | No
`net.parallel.submit.threads` | Server | `0` | For automatic parallel processing, specifies the number of threads for sending files in parallel. Can be overridden on the command line, but cannot be greater than net.parallel.max, which must be set to `2` or more threads. The specified threads grab work in batches. The size of a batch is specified using the net.parallel.submit.batch configurable. See the `p4 submit` command on Parallel submits. | No
`net.parallel.sync.svrthreads` | Server | `0` | Can help prevent the degradation of network response. Reduces 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 of this configurable. Does NOT reduce parallel transmit threads for submit commands. To determine the value for this configurable, consider the average network utilization of each user-transmit thread and how much spare bandwidth to allocate for occasional peak loads. If parallel syncs are saturating the network, use the p4 monitor `show` command to find out how many concurrent transmit threads are executing in the server. The default value of `0` means no reduction of parallel sync threads. For this configurable to take effect, also set the monitor configurable to `1` or greater. | No
`net.parallel.threads` | Server | `0` | Specifies your default number of threads for syncing files concurrently. To enable automatic parallel processing, set this configurable to a value greater than `1`, but less than or equal to the value of net.parallel.max. See also Parallel syncs. The specified threads grab work in batches. | No
net.quickack | Client, Server, Proxy | `0` | Whether the TCP_QUICKACK socket option is set for acknowledgements (ACKs) of received messages. 0: Disable quick ACKs, which delays sending ACKs. 1: Enable quick ACKs, which sends ACKs immediately. See also net.nagle. | No
`net.reuseport` | Server | `0` | Set `SO_REUSEPORT` for listening socket. You must restart the server after changing the value of this configurable. | See Explicit stop and restart.
`net.rfc3484` | Client, Server | `0` | If `0`, The server connection defaults to IPV4 addressing. A IPV6 connection requires using P4PORT or setting the `net.rfc3484` configurable. If `1`, The operating system determines whether IPv4 or IPv6 is used when resolving hostnames. This is applicable only if a host name is used, either a FQDN (Fully Qualified Domain Name, such as `host1.company.com`, or an unqualified name, such as `host1`. If an IPv4 literal address is used, such as `127.0.0.1`, the transport is `tcp4`. If an IPv6 literal address is used, such as https://`[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443/`, the transport is `tcp6`. | See Explicit stop and restart.
`net.tcpsize` | Client, Server, Proxy | `512K` | TCP send and receive buffer sizes, set on connection. Consider increasing for high-latency connections, such as the Proxy. Actual buffer size is the larger of this value and that defined by the OS. (See also net.autotune) | Not since 2025.1. Prior to 2025.1, see Explicit stop and restart.

### P

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`proxy.clearcachethresh` | Proxy | `0` | If set to a value greater than `0`, that value sets the threshold for deleting inactive files from the proxy cache when `p4p --cache-purge` is run. For example, `30` means files that have been inactive for more than 30 days are deleted from the proxy cache when `p4p --cache-purge` is run. See Proxy options in P4 Server Administration Documentation. | No
`proxy.monitor.interval` | Proxy | `10` | Set the proxy monitoring interval. Default is 10 seconds. | No
`proxy.monitor.level` | Proxy | `0` | 0: Monitoring disabled (default). 1: Monitor file transfers only. 2: Monitor all operations. 3: Monitor all traffic for all operations. | No
`pull.trigger.dir` | Server | unset | Temporary directory for alternative archive copy. | No
```push.unlocklocked` | Server | `0` | When set, unlock locked files if p4 push fails. | No

### R

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`rcs.nofsync` | Server | `0` | Set to `1` to disable the `fsync()` call when P4 Server writes to a versioned file in RCS format, and permit the operating system to determine when to write the modified data. | No
`rejectList` | Server | unset | Specifies one or more clients whose requests should be blocked. For more information, see Blocking Clients in P4 Server Administration Documentation. | No
rmt.allow.remoteuser | Server | `0` | 0: Prevent the remote user from being used, regardless of the value of the security configurable. 1: Allow the remote user to be used unless security is set to 4 or higher. Regardless of the setting of the rmt.allow.remoteuser configurable, the remote user might appear in log files as the user running background startup commands. This characteristic of logging does not indicate access by a remote user. If a service user is defined, that user will appear instead. | No
`rpl` | Server | `0` | Replication logging level: `0`: Replication logging is not enabled on this server. `1`: Logs replication details and is the minimum prerequisite value for the use of rpl.track.behind and rpl.track.behind.interval. | No
`rpl.checksum.auto` | Server | `0` | Level of database table checksum verification to perform when rotating a journal. Each level corresponds to a larger set of database tables. 0: Disable checksums. 1: Verify only the most important system and revision tables: `db.config, db.depot, db.graphindex, db.graphperm, db.group, db.groupx, db.haveg, db.integed, db.integedss, db.integtx, db.ldap, db.object, db.protect, db.pubkey, db.ref, db.rev, db.revcx, db.revdx, db.revhx, db.revstg, db.revtx, db.stream, db.streamq, db.streamrelation, db.streamview, db.streamviewx, db.submodule, db.ticket, db.trigger, db.user` 2: Verify all of level 1, plus tables that hold metadata that does not vary between replicas: `db.bodtext, db.bodtextcx, db.bodtexthx, db.counters, db.excl, db.exclg, db.exclgx, db.fix, db.fixrev, db.haveview, db.ixtext, db.ixtexthx, db.job, db.logger, db.message, db.nameval, db.property, db.refhist, db.remote, db.repo, db.revbx, db.review, db.revsx, db.revux, db.rmtview, db.server, db.svrview, db.topology, db.traits, db.uxtext` 3: Verify all tables. | No
`rpl.checksum.change` | Server | `0` | Level of on-the-fly changelist verification to perform. 0: Perform no verification. 1: Write journal notes Entries added to journals and checkpoints that provide information for subsequent users of the journal or checkpoint. For example, replica servers might take action based on the journal notes they process. when a `p4 submit`, `p4 fetch`, `p4 populate`, `p4 push`, or `p4 unzip` command completes. The value of the `rpl.checksum.change` configurable will determine the level of verification performed for the command. 2: Replica verifies changelist summary and writes to `integrity.csv` if the changelist does not match. 3: Replica verifies changelist summary and writes to `integrity.csv` even if the changelist does match. To learn more, see Journal notes in P4 Server Administration Documentation. | No
`rpl.checksum.table` | Server | `0` | Level of table checksumming to perform. 0: Perform table-level checksumming only. 1: When a table is unloaded or scanned, journal notes Entries added to journals and checkpoints that provide information for subsequent users of the journal or checkpoint. For example, replica servers might take action based on the journal notes they process. are written. These notes are processed by the replica and are logged to `integrity.csv` if the check fails. 2: When a table is unloaded or scanned, journal notes are written, and the results of journal note processing are logged even if the results match. To learn more, see Journal notes in P4 Server Administration Documentation. | No
`rpl.compress` | Server | `0` | Enable network compression in a replicated environment: 0: No data stream compression. 1: Data streams used for archive transfer to the replica (`p4 pull``-u`) are compressed. 2: Data streams used by `p4 pull` `-u` and `p4 pull` are compressed. 3: All data streams (`p4 pull` `-u`, `p4 pull`, and data streams for commands forwarded to the upstream server Any server in the inward direction, that is, toward the central server. For example, in an edge-to-edge configuration with a commit, edge1, and edge2, both edge1 and the commit server are upstream servers for edge2. See also 'central server'. are compressed. 4: Compress only the journal pull and journal copy connections between the replica and the master. | No
rpl.deferred.sends | Server | `0` | Allow pull -u threads to fetch missing archives during sync on edge and build servers. 1 is intended to improve performance for syncing from an edge or build server if: File content for a number of revisions is not in the archives of the edge or build server. The edge or build server has pull -u threads running. The lbr.replication configurable on the edge or build server is set to readonly | No
`rpl.filter.expand` | Server | `1` | `1`: Allow the journal pull thread to automatically run the `admin replica-filter-reconcile` expand operation when a server filter change is detected. `0`: Disable the `admin replica-filter-reconcile` expand feature. | No
`rpl.filter.expand.batch` | Server | `1000` | Block size used for the `admin replica-filter-reconcile` expand operation. | No
`rpl.filter.expand.threads` | Server | `6` | The number of threads to use in the `admin replica-filter-reconcile` expand operation. | No
`rpl.filter.restrict` | Server | `1` | `1`: Allow the journal pull thread to automatically run the `admin replica-filter-reconcile` restrict operation when a server filter change is detected. `0`: Disable the `admin replica-filter-reconcile` restrict feature. | No
`rpl.filter.restrict.batch` | Server | `1000` | Number of records to batch process per database table in the `admin replica-filter-reconcile` restrict operation. | No
`rpl.filter.restrict.threads` | Server | `6` | The number of journal pull threads to use in the `admin replica-filter-reconcile` restrict operation. | No
rpl.forward.all | Server | `0` | When set to 1 on a replica, commands that are not read-only commands are forwarded to the upstream sever. Instead of setting this configurable, we recommend setting the Services: field to forwarding-replica in the server spec. See p4 server > Form Fields > Services. | On the replica server, issue the p4 admin restart command.
`rpl.forward.login` | Server | `0` | Set to `1` on each replica to enable single-sign-on authentication for users in a distributed configuration. The `auth.id` configurable must also be the same for all servers participating in a distributed configuration. For more information, see Authenticating users in P4 Server Administration Documentation. | On edge servers: See Explicit stop and restart.
rpl.jnl.batch.size | Server | 100M | Maximum size of a single journal transfer in bytes. Limits the amount of data that the target server can send back to journalcopy in a single flush. Set this configurable on the server executing the journalcopy, which is generally a standby server, to tune the maximum size of journal fragments sent to journalcopy. | The following applies to the server that executes the journalcopy: See Explicit stop and restart.
`rpl.jnlwait.adjust` | Server | `25` | The additional time in milliseconds to add to the wait before checking for journal updates after no updates were seen. The total will not exceed the value specified by `rpl.jnlwait.max`. For guidance in adjusting values, contact Perforce Support. | No
`rpl.jnlwait.interval` | Server | `50` | The longest time in milliseconds to wait before checking for journal updates. Incremented by `rpl.jnlwait.adjust` each time no updates are seen. For guidance in adjusting values, contact Perforce Support. | No
`rpl.jnlwait.max` | Server | `1000` | The longest time in milliseconds to wait before checking for journal updates. For guidance in adjusting values, contact Perforce Support. | No
`rpl.journalcopy.location` | Server | `0` | Set to `0` means that the journalcopy thread writes the journal directly to the filepath with a prefix of the standby server's journalPrefix. Set to `1` means that the journalcopy thread writes the journal to where the standby server's P4JOURNAL would be written. The journal is then rotated to the filepath with a prefix of the standby server's journalPrefix. Note that journals written by the journalcopy thread always have their journal number in the suffix. Changing this configurable takes effect when the standby server replicates the P4TARGET's journal rotation. | No
`rpl.labels.global` | Server | `0` | A multi-site deployment supports both local and global labels.
0 means local is the default | 1 changes default to global
--- | ---
A local label is is created and updated on a single edge server, and cannot be used on other servers. | A global label is created and updated on the commit server, and visible to all servers.
The -g option of `p4 label`, `p4 labelsync`, and `p4 tag` specifies whether the label being applied is local to an edge server, or globally available from the commit server:
To create or update a global label on an edge server, use the `-g` option. For example, p4 label -g myGlobalLabel | The command p4 configure set rpl.labels.global=1 means that any new label will be global. Existing local labels remain local. To update a local label, use the `-g` option. To convert a local label into a global label, use p4 unload, then p4 reload to load the label onto the commit server.
To learn more, see Commit-edge in P4 Server Administration Documentation. | No
rpl.pull.archivedepots | Server | 0 | To enable the propagation of archive files to a replica, such as a standby server, set this to 1 | On edge servers: See Explicit stop and restart.
rpl.pull.position | Server | `0` | Interval in milliseconds for pull position reports. If set to 1, the position in the P4TARGET's journal of the last journal fragment applied by the replica is written (that is, reported) to the replica's server log and the replica's journal at the specified interval. | For most installations, changes take effect within a few minutes, provided the configurable was set when the replication thread was started. For all installations, changes take effect when the replication thread is restarted, which typically necessitates restarting the replica for which this configurable was changed.
`rpl.replay.userrp` | Server | `0` | To replicate the `db.user.rp` table, set to 1 . The `db.user.rp` table contains information about users who have directly logged into and used a replica. It records the ticket that the replica issued to the user and the last time the user accessed the replica. This table is currently journaled, but it is not replicated by default. Typically you would not want to replicate this data. But there are times when this might be needed. For example, if you are chaining a read-only replica to another replica to provide a warm standby for failover, you might want your warm standby to replicate the `db.user.rp` table. This would disable the automatic filtering of `db.user.rp` records, and your replica would then replay (and re-journal) all the `db.user.rp` journal records it receives from its target. | No
`rpl.submit.nocopy` | Server | `0` | Disable default submit archive file copy | No
`rpl.track.behind` | Server | `0` | If set to 1 or 2 and the rpl configurable is set, report journals and total bytes that are not replicated: `0`: No reporting `1`: `pull` logs at `rpl=1` and via rt.monitorfile `2`: `pull -l -j` logs at `rpl=1` | See Explicit stop and restart.
`rpl.track.behind.interval` | Server | `10000` | If the rpl configurable is set, the maximum interval in milliseconds for pull lag reports. The default is the equivalent of 10 seconds. | See Explicit stop and restart.
`rpl.pull.reload` | Server | `6000` | Interval in milliseconds for `p4 pull` to reload any configuration changes. | No
`rpl.verify.cache` | Server | `0` | If set, a replica server will re-verify the integrity of a cached file every time it delivers the file to the user, If the files do not match, it will re-fetch the file from the upstream server. This is computationally expensive on the replica and typically only useful in conjunction with Perforce technical support. | No
`rt.monitorfile` | Server | unset | Enable real-time monitoring of server performance, if this configurable is set to specify a file that backs the shared memory. For example, `rt.monitorfile=monfile.mem` The real-time monitoring output cannot be viewed from a text editor. However, you can display real-time monitoring values on the command line by using any of the following: `p4d -r P4ROOT --show-realtime` `p4 monitor realtime` `p4 monitor rt` See also p4 monitor realtime. | See Explicit stop and restart.
`run.clientexts.allow` | Server | `1` | Allow client-side Extensions to run. | No
`run.renameclient.allow` | Server | `1` | Allow the p4 renameclient command. `0`: disallow for all users `1`: allow for client owners, admins, and super `2`: allow for admins and super `3`: allow for super | No
`run.unzip.user.allow` | Server | `0` | Should `p4 unzip` allow `-u` | No
`run.users.authorize` | Server | `0` | If set to the recommended value of 1, requires a user to authenticate before running the `p4 users` command. To hide the user list from unauthenticated users, set to 1. For security, also set `dm.user.hideinvalid`. | No

### S

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`s3.credentialerror.retry` | Server |
    400
| A JSON format array that can be used to retry requested S3 operations. The values are combined to build an object to detect an AWS S3 error, re-fetch the credentials, and retry the operation. The default values are:
    [ 400, "ExpiredToken", "InvalidSessionException", "TokenRefreshRequired", "" ]
The elements include an http status code and an AWS error code string. The `""` is for the AWS error code string when the S3 operation does not supply a response body, such as `HEAD`. Up to five retries occur within about four seconds before retries cease and the last error is reported. To learn more, see S3 error handling in the P4 Server Administration Documentation. | No
`s3.error.retry` | Server | 400 | A JSON format array that can be used to retry requested S3 operations. These values are combined to build an object to detect an AWS S3 error and attempt to retry the operation without re-fetching the credentials. The default values are:
    [ 500, "InternalError", 503, "SlowDown", "503 SlowDown", "ServiceUnavailable", 307, "Redirect", "TemporaryRedirect" ]
Up to five retries occur within about four seconds before retries cease and the last error is reported. To learn more, see S3 error handling in the P4 Server Administration Documentation. | No
`security` | Server | `0` | Server security level 4 or higher is recommended. Each level includes the restrictions of lower levels and adds further restrictions: 0: Legacy support: passwords not required, strength requirements unenforced. 1: Strong passwords required, existing passwords not reset, compatible with pre-2003.2 client software. 2: Strong passwords required, existing passwords reset, requires 2003.2 or higher client software. 3: Passwords must be strong, and ticket-based authentication (`p4 login`) is required. 4: Authenticated service users must be used for all replica server and remote depot connections to this server, and all replicas need server specs. 5: Requires that any intermediary has a valid authenticated service user. Intermediaries include, but are not limited to, P4 Broker, P4 Proxy, P4 Code Review, and P4 DAM. 6: Requires each intermediary to have a valid server spec, where the service user must match the user named in the User field of the spec. For succesful configuration at various levels, see Server security levels in P4 Server Administration Documentation. | No
`security.digest` | Server | sha256 | The digest algorithm used in the round trip tamper checking. If unset or set to an unknown algorithm, the default sha256 algorithm will be used. In the case of invalid algorithms or algorithms considered insecure, reports will be written to the server log. | No
`server` | Server, Proxy, Broker | 3 | Server command logging level (levels are additive): server=0 fatal errors and some system events will be logged. server=1 ensures that the start information for each command is logged. server=2 extends server tracing to include command start and stop. server=3 adds a compute end message and Sync Network Estimates for p4 sync. server=4 adds errors sent to the client. server=5 adds database locking, monitor and resource pressure information. See also Diagnostic flags for monitoring the server in P4 Server Administration Documentation and P4LOG | No
`server.allowfetch` | Server | `0` | Determines whether changes can be fetched. `1`: This server can fetch from other servers. `2`: Other servers can fetch from this server. `3`: Both `1` and `2` are allowed. | No
`server.allowpush` | Server | `0` | Determines whether changes can be pushed. `1`: This server can push to other servers. `2`: Other servers can push to this server. `3`: Both `1` and `2` are allowed. | No
`server.allowremotelocking` | Server | `0` | DVCS configurations with files of type `+l` can use the `--remote` flag on the p4 edit, p4 delete, and p4 revert commands. This locks `+l` file types exclusively on the shared server. The locks are released automatically when the modified files are pushed. The shared server must be a commit server and this configurable must have `1`, not `0`, as its value. See `+l` in File type modifiers. | No
`server.allowremotelocking` | Server | `0` | DVCS configurations with files of type `+l` can use the `--remote` flag on the p4 edit, p4 delete, and p4 revert commands. This locks `+l` file types exclusively on the shared server. The locks are released automatically when the modified files are pushed. The shared server must be a commit server and this configurable must have `1`, not `0`, as its value. See `+l` in File type modifiers. | No
`server.allowrewrite` | Server | `0` | If set to a non-zero value, allows this server to run the p4 unsubmit and p4 fetch -t commands. | No
`server.commandlimits` | Server | `0` | Policy for per-command resource limits: 0: All command-line users can override these limits in `p4 group` specs: `MaxResults`, `MaxScanRows`, `MaxLockTime`, `MaxOpenFiles`, `MaxMemory` 1: Per-command options can specify lower, but not higher, resource limits. 2: All command-line resource limit options are silently ignored and the spec limits are not overridden. | No
`server.depot.root` | Server | unset | The filesystem location, an absolute path, with respect to which a relative address given in the `Map:` field of a depot form is evaluated. If it is not set, the `Map:` field relative address is evaluated with respect to the value stored in `P4ROOT`. For more information, see the `p4 depot` command. | No
`server.extensions.allow.admin` | Server | `1` | 0: Prevents `admin` users to install and configure or delete server-side extensions. `1`: Allows admin users to install and configure or delete server-side extensions if these extensions are signed and verified by a trusted certificate from the list provided by the super user. | See Explicit stop and restart.
`server.extensions.allow.unsigned` | Server | `0` | `0`: Prevents the super user to install unsigned extensions. `1`: Allows the super user to install unsigned extensions. | See Explicit stop and restart.
`server.extensions.dir` | Server | `P4ROOT/server.extensions.dir` | Directory for Extension-owned storage, which defaults to `P4ROOT/server.extensions.dir` | No
`server.global.client.views` | Server | `0` | Controls whether the view maps (or client maps) of a non-stream client on an edge server are made global when a client is modified. View maps of a client on a replica must be made global if that client is to be used as a template on another server. This configurable can be set globally, or individually for each server. Setting this configurable can make client view maps global upon the subsequent client modification. Clearing this configurable does not delete the view maps of any clients, but does prevent subsequent changes to a client’s view map from being propagated to other servers. If a client with global view maps is deleted, its view maps are also deleted globally regardless of the value of `server.global.client.views`. | No
`server.locks.archive` | Server | `1` | By default, p4 archive and p4 restore lock the global metadata while archiving or restoring revisions. To disable locking, set the value of this configurable to `0`. | No
`server.locks.dir` | Server | `server.locks` | Directory for server locks, specified relative to `P4ROOT`. To disable server locking, set this configurable to `disabled`. If `db.peeking` is nonzero (enabled), `server.locks` cannot be `disabled`. To disable locking, set `server.locks.sync` to `0`. | No
`server.locks.global` | Server | `0` | Set this configurable to `1` to make `p4 lock` from an edge server take global locks on the commit server by default. | No
`server.locks.sync` | Server | `0` | `0`: Unset prevents sync from taking a client workspace lock. When set, the `p4 sync` command takes a client workspace lock in shared mode. If `db.peeking` is enabled, the `server.locks.dir` directory must exist. The changes to locking behavior that occur when you enable `db.peeking` eliminate the need to set `server.locks.dir` to `disabled`, but if performance issues arise with respect to multiple concurrent, large, or interrupted `p4 sync` commands, set `server.locks.sync` to `0`. | No
`server.maxcommands` | Server | `0` | If monitoring is enabled, this configurable is set to a nonzero value, and the limit is exceeded, p4d refuses to accept more than this many simultaneous command requests and users receive the TooManyCommands error. See server.maxcommands.allow. | See Explicit stop and restart.
server.maxcommands.allow | Server | 1 | Enables super and operator users to access to a subset of commands, even if server.maxcommands is reached. See Commands that super and operator users can always run under Limiting simultaneous connections in the P4 Server Administration Documentation. To disable, set to 0. | See Explicit stop and restart.
`server.rolechecks` | Server | 0 | 1 : Recommended because it enforces `p4 server` settings and adds more security. 0: Default does not consider the `p4 server` settings. Setting server.rolechecks to 1 adds security. For example, the Services field is enforced. | No
`server.start.unlicensed` | Server | `0` | When enabled, the server can start even if the license is invalid. User commands will be rejected until a valid license is installed. | No
`server.startup.autorestart` | Server | 0 | If set to 1, the server automatically restarts the startup commands that are set by the startup.N configurable. If this configurable is enabled and you want to terminate a startup command without the command automatically restarting, first disable this configurable by setting it to `0`. | No
`serverlog.bufsz.N` | Server | unset | Unset: By default, there is no buffer. `10240`: Typical value. If set, the maximum number of bytes in the buffer for the log file. A buffer improves performance because p4d only writes to the log file when the command has completed or the buffer has been filled. Data loss is possible if p4d crashes before the buffer's content is written to the log file. | No
`serverlog.counter.`N`` | Server | unset | Rarely used because if unset, p4d controls the rotated log names, which are incremented from `0`. | No
`serverlog.file.`N`` | Server | unset | Server log file name associated with each structured log file. See `p4 logparse` for a list of valid filenames. Note that n cannot exceed 500. | No
`serverlog.maxmb.`N`` | Server | unset | For each structured log file, the size, in megabytes, at which the associated log file is rotated. | No
`serverlog.retain.`N`` | Server | unset | For each structured log file, the number of rotated log files to retain on the server at any one time. | No
`serverlog.version.`N`` | Server | the current server protocol level | The serverlog version matches a server protocol level and retains a level prior to an upgrade. See Protocol levels: server/client in P4 Server Administration Documentation. | No
`serviceUser` | Server | unset | The service user that represents a server or proxy when authenticating against a central server The one server that is innermost in a multi-server deployment. In the server specification form field for Services, the central server might be specified as “standard” or “commit-server”. If edge servers are part of the multi-server deployment, the central server must be a commit server. See also 'upstream server'., or a remote server. | No
`spec.hashbuckets` | Server | `99` | Maximum number of subdirectories for hashed directory structures. This limits the number of subdirectories into which files are hashed in the spec depot - see Working with spec depots, unload depot - see Unloading infrequently-used metadata in the P4 Server Administration Documentation, and the server.locks.dir directory. `99`: default `0`: disables hashing | No
`ssl.cipher.list` | Server | unset | The list of OpenSSL ciphers p4d allows when establishing a connection at TLS 1.2 or below, overriding the OpenSSL defaults. | Not since 2025.1. Prior to 2025.1, see Explicit stop and restart.
`ssl.cipher.suites` | Server | unset | The list of OpenSSL cipher suites p4d allows when establishing a TLS 1.3 connection, overriding the OpenSSL defaults | Not since 2025.1. Prior to 2025.1, see Explicit stop and restart.
`ssl.client.ca.path` | Client, Server | unset | Can be set on a client, including a p4d that acts as a client to another p4d. The path of the Certificate Authority (CA) Privacy-Enhanced Mail (PEM) file to validate the server certificate. The certificate authority (CA) path can be specified with this client-side configurable if the CA is not present in the system's CA store or if validation against a specific CA is required. | Not since 2025.1. Prior to 2025.1, see Explicit stop and restart.
`ssl.client.cert.validate` | Client, Server | `1` | Can be set on a client, including a p4d that acts as a client to another p4d. `0`: use P4TRUST, no certificate validation , `1`: validate the certificate chain against the certificate authority (CA), `2`: validate that the subject matches the P4PORT. | See Explicit stop and restart.
ssl.client.cipher.list | Client, Server, Proxy, Broker | unset | The list of OpenSSL ciphers the client will allow when establishing a TLS 1.2 or below connection, overriding the default, or ssl.cipher.list if set. | No
ssl.client.cipher.suites | Client, Server, Proxy, Broker | unset | The list of OpenSSL cipher suites the client will allow when establishing a TLS 1.3 connection, overriding the OpenSSL defaults, or ssl.cipher.suites if set. | No
ssl.client.timeout | Server | 30 | Timeout in seconds for SSL handshake negotiation on client connects. If net.maxwait is longer, net.maxwait is used instead. | No
`ssl.client.tls.version.min` | Client, Server | `12` | Can be set on a client, including a server, broker, or proxy that acts as a client to another server. Determines which TLS versions the client allows for SSL/TLS connections. The connection uses the highest version in common between Server and client. `12` means TLS 1.2 and `13` means TLS 1.3. If the client is not explicitly set, explicitly setting the server's ssl.tls.version.min and ssl.tls.version.max applies to client connections for backwards compatibility. These client and server configurables can be used in servers, proxies, or brokers where both upstream (client-side) and downstream (server-server) connections are made. For example, in edge-to-edge chaining, one edge server acts as a client to another edge server. This aspect of a server as a client applies to other scenarios as well, such as P4AUTH server, centralized changelist server (P4CHANGE), and when one server accesses a remote depot on another server. | See Explicit stop and restart.
`ssl.client.tls.version.max` | Client, Server | `13` | Can be set on a client, including a server, broker, or proxy that acts as a client to another server. Determines which TLS version(s) the client allows for SSL/TLS connections. The connection uses the highest version in common between Server and client. `12` means TLS 1.2 and `13` means TLS 1.3. If the client is not explicitly set, explicitly setting the Server's ssl.tls.version.min and ssl.tls.version.max applies to client connections for backwards compatibility. These client and server configurables can be used in servers, proxies, or brokers where both upstream (client-side) and downstream (server-server) connections are made. For example, in edge-to-edge chaining, one edge server acts as a client to another edge server. This aspect of a server as a client applies to other scenarios as well, such as a P4AUTH server, centralized changelist server (P4CHANGE), and when one server accesses a remote depot on another server. | See Explicit stop and restart.
`ssl.client.trust.name` | Client | `1` | If you run p4 trust against a server that has a certificate that is not self-signed, `0`: Only the IP address can be recorded. `1`: (default) Both the hostname and IP address can be recorded. `2`: Only the hostname can be recorded. | No
`ssl.secondary.suite` | Server | `0` | `0`: By default, SSL/TLS support is based on the AES256-SHA cipher suite. `1`: Use CAMELLIA256-SHA instead. | No
`ssl.tls.version.min` | Server and optionally on the client for testing | 12 | Determines which TLS versions the server, broker, or proxy allows for SSL/TLS connections. The connection uses the highest version in common between the server, broker, or proxy and its client. See also the corresponding client-side configurables: ssl.client.tls.version.min and ssl.client.tls.version.max. | See Explicit stop and restart.
```ssl.tls.version.max` | Server and optionally on the client for testing | `13` | Determines which TLS versions the server, broker, or proxy allows for SSL/TLS connections. The connection uses the highest version in common between the server, broker, or proxy and its client. See also the corresponding client-side configurables: ssl.client.tls.version.min and ssl.client.tls.version.max. ssl.tls.version.min specifies the lowest version that the server, broker, or proxy allows, and `ssl.tls.version.max` specifies the highest allowed version. Valid values are `10` for TLSv1.0, `11` for TLSv1.1, `12` for TLSv1.2, and `13` for TLSv1.3. For security, choose a value that is at least `12`. To learn how to use these configurables, see SSL and TLS Protocol Versions in P4 Server Administration Documentation. | See Explicit stop and restart.
`startup.N` | Server | unset | For replica servers, set `startup.1` through `startup.`N`` to be `p4 pull` threads to be spawned when p4d starts. All servers with a configured ServerID can set `startup.1` through `startup.`N`` to be background tasks to be spawned at startup. The `startup.`N`` configurables are processed sequentially. Processing stops at the first gap in the numerical sequence, so any commands after a gap are ignored. (See also server.startup.autorestart.) | See Explicit stop and restart.
`statefile` | Server | `state` | For replica servers, the file used to track the current journal position. | No
submit.allowbgtransfer | Server | 0 | To enable background archive transfer, set to 1 on those edge servers. To cause the commit server's p4 sync command to wait for the completion of queued background file transfer for files submitted from edge servers, set to `1` on the commit server. See submit.autobgtransfer and Background archive transfer for edge server submits in P4 Server Administration Documentation. | See Explicit stop and restart.
submit.autobgtransfer | Server | 0 | If you have set submit.allowbgtransfer to 1 on one or more the edge servers that participate in your replicated environment, to make p4 submit function as if it were an alias for p4 submit -b on those edge servers, also set `submit.autobgtransfer` to 1 on those same edge servers. See Background archive transfer for edge server submits in P4 Server Administration Documentation. | See Explicit stop and restart.
submit.collision.check | Server | 1 | The default, 1, prevents submitting a changelist that contains what the server perceives as a name collision between directory name and file name. To remove the check, set this configurable to 0 and be aware of the risk of accidentally overwriting file content. | No
`submit.identity` | Server | unset | Enable the generation of global changelist ids for DVCS: uuid generates the id in uuid format, checksum generates the id in checksum format, serverid generates the id in serverid+change format. See Track a changelist’s identity from server to server in P4 Server Administration Documentation. | No
`submit.noretransfer` | Server | `0` | `0`: Always re-transfer files after a failed submit. 1: Check whether files are already in the expected archive location and not re-transfer such files. You can override the set behavior by using the `--noretransfer` option to the `p4 submit` command. | See Explicit stop and restart.
`submit.storagefields` | Server | `0` | Regarding the `compCksum` field in a storage record: `0`: Do not compute the digest of the incoming archive files on the server during a submit. `1`: Compute the digest of the incoming archive files on the server during a submit. | No
`submit.unlocklocked` | Server | `0` | If set to 1, open files that users have locked (with the `p4 lock` command) are unlocked after a failed `p4 submit`. | No
`sys.pressure.max.pause.time` | Server | `300` | If set, the number of seconds a command can be in the paused state before an error returns to the client. Setting this configurable to `0` disables pausing commands. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. | No
`sys.pressure.max.paused` | Server | `1000` | If set, the maximum number of concurrently-paused client commands. New incoming commands above this threshold are rejected with an error. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. | No
`sys.pressure.mem.high` | Server | `95` | If set to a non-zero value, while the server is above this threshold, commands might be canceled and return an error to the client. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. If set to 0, disables this memory threshold check. | No
`sys.pressure.mem.high.duration` | Server | `1000` | The period in milliseconds used for averaging `sys.pressure.mem.high`. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. | No
`sys.pressure.mem.medium` | Server | `80` | If set, when commands begin pausing. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. | No
`sys.pressure.mem.medium.duration` | Server | `1000` | Number of milliseconds for averaging `sys.pressure.mem.medium`. | No
`sys.pressure.os.cpu.high` | Server | `100` | (Linux) If set to a non-zero value, CPU monitoring is only available if cgroups v2 support is configured. This configurable represents the amount of time some processes on the system are stalled waiting for CPU time. For Linux cgroup support, only the `system-wide /proc/pressure/*` files are considered. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. If set to 0, disables this threshold checking. | No
`sys.pressure.os.cpu.high.duration` | Server | `2000` | Number of milliseconds for averaging `sys.pressure.os.cpu.high`. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. | No
`sys.pressure.os.mem.high` | Server | `70` | (Windows and Linux) If set to a non-zero value, the amount of time some processes on the system are stalled waiting for memory. New incoming commands received by p4d are rejected. Existing commands that request more memory might be canceled and return an error to the client. When p4d limits its work, it does not distinguish between memory used by other processes on the operating system and its own. For example, if a large external process consumes a large amount of memory, p4d can throttle itself. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. If set to 0, disables this check on stalled processes. | No
`sys.pressure.os.mem.high.duration` | Server | `2000` | Number of milliseconds for averaging `sys.pressure.mem.high`. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. | No
`sys.pressure.os.mem.medium` | Server | `40` | (Linux) The server tries to keep memory usage below this level. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. | No
`sys.pressure.os.mem.medium.duration` | Server | `2000` | Number of milliseconds for averaging `sys.pressure.os.mem.medium`. For all the `sys.pressure.*` configurables, see System resources in P4 Server Administration Documentation. | No
`sys.rename.max` | Server and client | `10` | Limit for the number of retries to rename a file if renaming fails. Affects Windows `Rename()` retry loop. Set on the server and each client. Changing from the default value is not supported. | No
`sys.rename.wait` | Server and client | `1000` | Timeout in microseconds between file rename attempts. Affects Windows `Rename()` retry loop. Set on the server and each client. Changing from the default value is not supported. | No
`sys.threading.groups` | Server | 0 | If set to 1, adds support for utilizing multiple processor groups. | See Explicit stop and restart.

### T

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`template.client` | Server | unset | Specifies the default client to be used as a template if the user omits the `-t` option on the `p4 client` command. | No
`template.label` | Server | unset | Specifies the default label to be used as a template if the user omits the `-t` option on the `p4 label` command. | No
`track` | Server | `-1` | Set by the server. See Performance Tracking under Diagnostic flags for monitoring the server in P4 Server Administration Documentation. | No
`trait.storagedepot.min` | Server | `0` | If unset or set to `0`, attribute values are stored in the `db.traits` table. If set to a value greater than `0`, the value of a newly created attribute is stored in the `trait` depot if its size in bytes matches or exceeds the setting of this configurable. Retrieving trait values from the `trait` depot with `p4 fstat -Oa` incurs a performance hit. Set this configurable to a value that stores only huge traits in the `trait` depot. A recommended value for this configurable would be the minimum size of huge traits. See also Attribute values and the trait depot in the p4 attribute topic. | No
`triggers.io` | Server | `0` | If set to 1, specifies that triggers will not receive their parameters via command line variables. Rather, they will receive a dictionary of key/value pairs sent to their STDIN. Triggers can use their dictionary response to reply to the server via STDOUT. | No

### U

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`unicode` | Server | unset | If set, the server will assume all data is encoded in utf8 and enable file content translation for files of type `unicode`. Clients must specify a valid `P4CHARSET` when communicating with the server. Unicode mode cannot be disabled and should only be enabled by the `p4d -xi` command. | See Explicit stop and restart.

### Z

Configurable | Client, server, or proxy? | Default value | Description | Server restart required?
--- | --- | --- | --- | ---
`zerosyncPrefix` | Server | unset | If set, changes default behavior of `p4 sync` such that if a client workspace begins with this prefix, all sync operations to affected workspaces assume `p4 sync` `-k`, and do not alter contents of the workspace. | No
`zlib.compression.level` | Server, Client | unset | Provides a way to find a balance between file size and compression time: the default, unset value corresponds to `6` `2` is faster than `6` and the file size increase might be relatively small `9` takes the longest and the amount of file size reduction might not be worth the cost in time | No

## Categories

A configurable can be in one or more categories. For example, a configurable in the Security and Performance categories might affect security and performance.

Items in all capital letters are Environment and registry variables, not configurables.

Archive-Management

lbr.bufsize

lbr.replica.notransfer

pull.trigger.dir

rpl.compress

rpl.deferred.sends

rpl.pull.archivedepots

rpl.submit.nocopy

submit.allowbgtransfer

submit.autobgtransfer

DVCS

dm.fetch.preservechangenumbers

server.allowfetch

server.allowpush

server.allowremotelocking

submit.identity

Extensions

run.clientexts.allow

server.extensions.allow.admin

server.extensions.allow.unsigned

server.extensions.dir

Licensing

auth.licenseexpiry.warn

auth.licenseexpiry.warnthreshold

dm.info.hide

server.start.unlicensed

Monitoring

auth.licenseexpiry.warn

auth.licenseexpiry.warnthreshold

db.checkpoint.bufsize

db.checkpoint.numfiles

db.checkpoint.reqlevel

db.checkpoint.threads

db.checkpoint.worklevel

db.monitor.addthresh

db.monitor.interval

db.monitor.shared

db.monitor.term.allow

db.rt.io

dbjournal.bufsize

dm.configure.comment.mandatory

dm.rotatelogwithjnl

dm.shelve.accessupdate

filesys.P4JOURNAL.min

filesys.P4LOG.min

filesys.P4ROOT.min

filesys.TEMP.min

filetype.maxtextsize

journalPrefix

journalPrefixBackup

log.originhost

monitor

log.originhost

monitor.lsof

net.autotune

net.mimcheck

P4AUDIT

P4DEBUG

P4JOURNAL

P4LOG

proxy.monitor.interval

proxy.monitor.level

rpl.jnl.batch.size

rpl.jnlwait.adjust

rpl.jnlwait.interval

rpl.jnlwait.max

rpl.journalcopy.location

rpl.track.behind

rpl.track.behind.interval

rt.monitorfile

server

server.depot.root

server.startup.autorestart

serverlog.bufsz.N

serverlog.counter.N

serverlog.file.N

serverlog.maxmb.N

serverlog.retain.N

serverlog.version.N

startup.N

sys.pressure.max.pause.time

sys.pressure.max.paused

sys.pressure.mem.high

sys.pressure.mem.high.duration

sys.pressure.mem.medium

sys.pressure.mem.medium.duration

sys.pressure.os.cpu.high

sys.pressure.os.cpu.high.duration

sys.pressure.os.mem.high

sys.pressure.os.mem.high.duration

sys.pressure.os.mem.medium

sys.pressure.os.mem.medium.duration

net.autotune

Network

auth.ldap.sslciphers

auth.ldap.ssllevel

auth.ldap.timeout

net.autotune

net.backlog

net.heartbeat.interval

net.heartbeat.missing.count

net.heartbeat.missing.interval

net.heartbeat.missing.wait

net.keepalive.count

net.keepalive.disable

net.keepalive.idle

net.keepalive.interval

net.maxclosewait

net.maxfaultpub

net.maxwait

net.mimcheck

net.nagle

net.parallel.batch

net.parallel.batchsize

net.parallel.max

net.parallel.min

net.parallel.minsize

net.parallel.shelve.batch

net.parallel.shelve.min

net.parallel.shelve.threads

net.parallel.submit.batch

net.parallel.submit.min

net.parallel.submit.threads

net.parallel.sync.svrthreads

net.parallel.threads

net.quickack

net.reuse.port

net.rfc3484

net.tcpsize

rpl.compress

server

ssl.cipher.list

ssl.cipher.suites

ssl.client.ca.path

ssl.client.cert.validate

ssl.client.cipher.list

ssl.client.cipher.suites

ssl.client.timeout

ssl.client.tls.version.max

ssl.client.tls.version.min

ssl.client.trust.name

ssl.secondary.suite

ssl.tls.version.max

ssl.tls.version.min

Performance

client.readonly.dir

client.sendq.dir

db.checkpoint.bufsize

db.checkpoint.threads

db.monitor.interval

db.monitor.shared

db.partition.dropondelete

db.partition.verify

db.peeking

db.peeking.usemaxlock

db.reorg.disable

dbjournal.bufsize

dbopen.nofsync

dm.annotate.maxsize

dm.batch.net

dm.change.skipkeyed

dm.domain.accessforce

dm.domain.accessupdate

dm.grep.maxrevs

dm.locks.excl.batch.net

dm.locks.global.batch.net

dm.locks.global.result.batch.net

dm.open.show.globallocks

dm.populate.skipkeyed

dm.rotatelogwithjnl

dm.shelve.accessupdate

dm.shelve.maxfiles

dm.shelve.maxsize

dm.topology.lastseenupdate

dm.user.accessforce

dm.user.accessmode

dm.user.accessupdate

filesys.bufsize

lbr.bufsize

lbr.storage.skipkeyed

lbr.storage.threads

net.autotune

net.delta.rpl.minsize

net.delta.rpl.threshold

net.backlog

net.heartbeat.interval

net.heartbeat.missing.count

net.heartbeat.missing.interval

net.heartbeat.missing.wait

net.heartbeat.wait

net.nagle

net.parallel.batch

net.parallel.batchsize

net.parallel.max

net.parallel.min

net.parallel.minsize

net.parallel.shelve.batch

net.parallel.shelve.min

net.parallel.shelve.threads

net.parallel.submit.batch

net.parallel.submit.min

net.parallel.submit.threads

net.parallel.sync.svrthreads

net.parallel.threads

net.quickack

net.reuseport

net.tcpsize

rcs.nofsync

rejectList

rpl.compress

rpl.deferred.sends

rpl.filter.expand.batch

rpl.filter.expand.threads

rpl.filter.restrict.batch

rpl.filter.restrict.threads

rt.monitorfile

server.commandlimits

server.locks.sync

server.maxcommands

server.maxcommands.allow

serverlog.bufsz.N

serverlog.maxmb.N

submit.storagefields

sys.pressure.max.pause.time

sys.pressure.max.paused

sys.pressure.mem.high

sys.pressure.mem.high.duration

sys.pressure.mem.medium

sys.pressure.mem.medium.duration

sys.pressure.os.cpu.high

sys.pressure.os.cpu.high.duration

sys.pressure.os.mem.high

sys.pressure.os.mem.high.duration

sys.pressure.os.mem.medium

sys.pressure.os.mem.medium.duration

sys.threading.groups

trait.storagedepot.min

Replication

auth.id

db.replication

dm.batch.net

dm.locks.excl.batch.net

dm.locks.global.batch.net

dm.locks.global.result.batch.net

dm.open.show.globallocks

dm.shelve.promote

journalPrefixBackup

lbr.replica.notransfer

lbr.replication

lbr.retry.max

P4TARGET

pull.trigger.dir

rpl

rpl.checksum.auto

rpl.checksum.change

rpl.checksum.table

rpl.compress

rpl.deferred.sends

rpl.filter.expand

rpl.filter.expand.batch

rpl.filter.expand.threads

rpl.filter.restrict

rpl.filter.restrict.batch

rpl.filter.restrict.threads

rpl.forward.all

rpl.forward.login

rpl.jnl.batch.size

rpl.jnlwait.adjust

rpl.jnlwait.interval

rpl.jnlwait.max

rpl.journalcopy.location

rpl.labels.global

rpl.pull.archivedepots

rpl.pull.position

rpl.pull.reload

rpl.replay.userrp

rpl.submit.nocopy

rpl.track.behind

rpl.track.behind.interval

rpl.verify.cache

security

server.global.client.views

server.locks.global

server.startup.autorestart

serviceUser

startup.N

statefile

submit.allowbgtransfer

submit.autobgtransfer

Security

auth.2fa.persist

auth.autologinprompt

auth.default.method

auth.id

auth.ldap.cafile

auth.ldap.order.N

auth.ldap.pagesize

auth.ldap.sslciphers

auth.ldap.ssllevel

auth.ldap.timeout

auth.ldap.userautocreate

auth.sso.allow.passwd

auth.sso.args

auth.sso.nonldap

auth.tickets.nounlocked

defaultChangeType

dm.info.hide

dm.keys.hide

dm.password.minlength

dm.protects.allow.admin

dm.protects.exclusioncheck

dm.protects.streamspec

dm.proxy.protects

dm.repo.noautocreate

dm.user.accessforce

dm.user.accessmode

dm.user.accessupdate

dm.user.allowselfupdate

dm.user.hideinvalid

dm.user.loginattempts

dm.user.noautocreate

dm.user.resetpassword

dm.user.setinitialpasswd

info.p4auth.usercheck

minClient

minClientMessage

net.mimcheck

P4AUTH

P4TICKETS

P4TRUST

rejectList

rpl.forward.login

run.clientexts.allow

run.renameclient.allow

run.unzip.user.allow

run.users.authorize

security

security.digest

server.allowfetch

server.allowpush

server.allowrewrite

server.extensions.allow.admin

server.maxcommands.allow

server.rolechecks

serviceUser

ssl.cipher.list

ssl.cipher.suites

ssl.client.ca.path

ssl.client.cert.validate

ssl.client.cipher.list

ssl.client.cipher.suites

ssl.client.tls.version.max

ssl.client.tls.version.min

ssl.client.trust.name

ssl.secondary.suite

ssl.tls.version.max

ssl.tls.version.min

Streams

dm.integ.streamspec

dm.protects.streamspec

dm.stream.components

dm.stream.parentview

dm.stream.sparse.branchmax

dm.sync.streamchange

Triggers

auth.default.method

auth.ldap.order.N

auth.sso.allow.passwd

auth.sso.args

auth.sso.nonldap

lbr.replica.notransfer

lbr.verify.script.out

net.heartbeat.missing.count

net.heartbeat.missing.wait

net.heartbeat.wait

pull.trigger.dir

triggers.io

Miscellaneous

db.journalrotate.warnthresh

dm.repo.unpack

dm.resolve.attrib

dm.resolve.ignoredeleted

filesys.atomic.rename

filesys.binaryscan

filesys.checklinks

filesys.depot.min

filesys.extendlowmark

filesys.windows.lfn

lbr.autocompress

lbr.proxy.case

lbr.unloaddepot.compress

lbr.s3.multipart

lbr.s3.multipartsz

lbr.s3.uploadretries

lbr.scan.ignore_pattern

lbr.rcs.existcheck

lbr.rcs.maxlen

lbr.stat.interval

lbr.storage.allowsymlink

lbr.storage.delay

lbr.verify.in

lbr.verify.out

net.delta.transfer.minsize

P4CHANGE

P4DESCRIPTION

P4PORT

P4ROOT

push.unlocklocked

s3.credentialerror.retry

s3.error.retry

server.locks.archive

server.locks.dir

spec.hashbuckets

submit.collision.check

submit.noretransfer

submit.unlocklocked

sys.rename.max

sys.rename.wait

template.client

template.label

unicode

zerosyncPrefix

zlib.compression.level

## Explicit stop and restart

Some configurables have "See Explicit stop and restart." in the Server restart required? column. Changes to those configurables do not take effect unless you explicitly "stop" the server. The p4 admin restart command is not sufficient.

For UNIX, see Stopping the Perforce Service and Starting the Perforce Service.

For Windows, see Starting and stopping the P4 Server.

Your search for returned results