README.md #1

  • //
  • guest/
  • perforce_software/
  • sdp/
  • dev/
  • Server/
  • setup/
  • README.md
  • Markdown
  • View
  • Commits
  • Open Download .zip Download (3 KB)

Best Practices Settings Guidance

Configurable Settings

The configure_new_server.sh script (and configure_new_server.bat for Windows) serve as a guide defining best-practice configurables for a production environment (or a realistic PoC).

See documentation regarding configurables: here.

Here is some insight into the thinking that goes into setting configurables in the SDP. The SDP configurables are different from P4D defaults for a variety of reasons, such as:

  • In some cases, SDP has standards related to its directory structure, for things like server.depot.root and journalPrefix.
  • In some cases, P4D defaults are (rightly) optimized for ease of installation in basic demo/PoC scenarios, where the SDP sets production-grade defaults, e.g. filesys.*.min, monitor, server, and some structured logs -- plus a recommendation for setting security.
  • In some cases, the SDP is more willing to adopt settings expected to be good for most environments (if not quite universal), e.g. setting lbr.autocompress, lbr.bufsize, net.backlog, net.autotune, net.tcpsize, etc. P4D is (rightly) more conservative when changing such defaults, perhaps requiring more proof/data, while the SDP is willing to promote settings changes ahead of P4D if folks in Engineering/Support/Consulting believe they'll be mostly good. In some cases, this may help get the more solid proof/data needed to change p4d defaults.

Other Settings

Besides configurable settings, the SDP also adjusts P4D defaults and behaviors in other ways, such as always creating 'spec' and 'unload' depots.

Window Servers

See the Windows-specific setup files in:

..\Windows\setup

In particular:

  • SDPEnv.py
  • template_configure_new_server.bat

Applying Settings to Existing Servers

As the name implies, these configure_new_sever.* scripts are intended to be run on a new server. When applied to an existing data set, it is recommended that these scripts be used as a guide. In that case, each setting can be applied manually, e.g. with p4 configure commands, creating spec/unload depots, etc. When applying to an existing setting, there are a few things to be aware of:

  • The journalPrefix and server.depot.root configurables are central to SDP operation, and must not be changed.
  • The filesys.*.min settings are key safety settings. It is OK to adjust the values to suit your environment, but they should always be set in a production environment.
  • To see how journalPrefix is set on replicas, see logic in mkrep.sh.
  • There can be only one depot of type spec or unload; check that they do not already exist (possibly with a different name).
  • While this script does not explicitly unset dm.integ.engine, we strongly recommend unsetting dm.integ.engine if it is set and P4D is 2014.1 or later. This isn't done in the script as doing so will cause a significant change in user-visible behavior if it had previously been explicitly set, e.g. to 2.
  • If you have settings on your server that had been set that are not referenced in this script, or are referenced but with different values, make a decision on what to do with each individual configurable base on merits.
Best Practices Settings Guidance
===

Configurable Settings
---

The `configure_new_server.sh` script (and `configure_new_server.bat` for Windows)
serve as a guide defining best-practice configurables for a production environment (or a realistic PoC).

See documentation regarding configurables:
[here](https://www.perforce.com/perforce/doc.current/manuals/cmdref/Content/CmdRef/configurables.configurables.html).

Here is some insight into the thinking that goes into setting configurables in the SDP.  The SDP configurables are different from P4D defaults for a variety of reasons, such as:

* In some cases, SDP has standards related to its directory structure, for
  things like `server.depot.root` and `journalPrefix`.
* In some cases, P4D defaults are (rightly) optimized for ease of installation in basic demo/PoC scenarios, where the SDP sets production-grade defaults, e.g. `filesys.*.min`, `monitor`, `server`, and some structured logs -- plus a recommendation for setting `security`.
* In some cases, the SDP is more willing to adopt settings expected to be good
  for most environments (if not quite universal), e.g. setting `lbr.autocompress`, `lbr.bufsize`, `net.backlog`, `net.autotune`, `net.tcpsize`, etc.  P4D is
  (rightly) more conservative when changing such defaults, perhaps requiring more proof/data, while the SDP is willing to promote settings changes ahead of P4D if folks in Engineering/Support/Consulting believe they'll be mostly good. In some cases, this may help get the more solid proof/data needed to change p4d defaults.

Other Settings
---

Besides configurable settings, the SDP also adjusts P4D defaults and behaviors in other ways, such as always creating 'spec' and 'unload' depots.

Window Servers
---
See the Windows-specific setup files in:

..\Windows\setup

In particular:

* `SDPEnv.py`
* `template_configure_new_server.bat`

Applying Settings to Existing Servers
---
As the name implies, these `configure_new_sever.*` scripts are intended to be run on a new server.  When applied to an existing data set, it is recommended that these scripts be used as a guide. In that case, each setting can be applied manually, e.g. with `p4 configure` commands, creating spec/unload depots, etc.  When applying to an existing setting, there are a few things to be aware of:

* The `journalPrefix` and `server.depot.root` configurables are central to SDP operation, and must not be changed.
* The `filesys.*.min` settings are key safety settings. It is OK to adjust the values to suit your environment, but they should always be set in a production environment.
* To see how journalPrefix is set on replicas, see logic in `mkrep.sh`.
* There can be only one depot of type `spec` or `unload`; check that they do not already exist (possibly with a different name).
* While this script does not explicitly unset `dm.integ.engine`, we strongly recommend unsetting `dm.integ.engine` if it is set and P4D is 2014.1 or later.  This isn't done in the script as doing so will cause a significant change in user-visible behavior if it had previously been explicitly set, e.g. to `2`. 
* If you have settings on your server that had been set that are not referenced in this script, or are referenced but with different values, make a decision on what to do with each individual configurable base on merits.

# Change User Description Committed
#2 31136 C. Thomas Tyler Added content to cover scenario where P4JOURNAL is set in db.config.

This addresses SDP-737 (Doc): In SDP Legacy Upgrade Guide, advise p4d -cunset P4JOURNAL if needed.

Also updated URL for list of configurables due to change in Perforce web site layout,
with docs moved from somewhere under www.perforce.com to somewhere under
help.perforce.com.

For example:

Old URL for configurables:
https://www.perforce.com/manuals/cmdref/Content/CmdRef/configurables.alphabetical.html

New URL for configurables:
https://help.perforce.com/helix-core/server-apps/cmdref/current/Content/CmdRef/configurables.alphabetical.html
#1 24587 C. Thomas Tyler Added net.autotune=1 setting and related comments.

Corrected misinformation in comments related to net.tcpsize configurable, and tweaked logic slightly.

Added more info in README and changed format to Markdown (renaming from .txt to .md).

Enhanced gen_default_broker_cfg.sh to detect whether net.autotune is enabled, and if so, add net.autotune to the broker configuration.

#review-24207 @nick_poole
//guest/perforce_software/sdp/dev/Server/setup/README.txt
#1 10996 Robert Cowham Remove P4 requirement for basic SDPEnv.py - moved to report_env.py instead.
Remove (oudataed) copies from OS Setup for now - duplicates cause a problem