Use patterns (paths, task streams)

Server performance benefits from the following.

  • Short paths and names for depot files. The file names are the leading portion of the key in several important db.* files, such as db.rev, db.revhx, and db.integed.
  • Task streams, when appropriate for smaller tasks, such as fixing a bug. Task streams are a way to keep repository metadata to a minimum. A task stream is a lightweight, short-lived stream that only promotes edited files to the repository. The Server tracks branched (copied) files in a set of shadow tables (db.revtx, db.integtx) that are removed when the task stream is deleted. See Task streams in Helix Core Command-Line (P4) Guide and p4 stream in Helix Core Command-Line (P4) Reference.
    Tip

    Minimize the frequent creation of full branches because they increase the amount of Server metadata. This results in more levels within the db.* file B-trees, more key comparisons, and more I/O requests to traverse to the leaf pages. Also, reading and writing large amounts of metadata might affect the filesystem cache to the detriment of other Server operations.

  • If you are not using task streams, consider branching only the subset of files needed for a given bug fix.
  • Consider fixing multiple bug fixes on a single branch.