Perforce Public Knowledge Base - Various Platform Notes
Perforce Software logo
Reset Search
 

 

Article

Various Platform Notes

« Go Back

Information

 
Problem

Miscellaneous OS idiosyncrasies that affect Perforce.

Solution

This article provides additional information about using Perforce on the following platforms:

Perforce and Changes to Daylight Saving Time in 2007

Perforce relies on your computer to obtain the proper date and time, so there is nothing within Perforce to be fixed or adjusted. If your computer has been updated for Daylight Saving Time changes, Perforce automatically reflects the proper date and time. Please contact your vendor for any relevant operating system patches.

Use of NFS

To maximize performance, configure the server root ($P4ROOT) to reside on a local disk and not an NFS-mounted volume. The Perforce Server's file-locking semantics work with NFS mounts on Solaris 2.5.1 and later, but are incompatible with BSD and Linux variants. Perforce client workspaces can reside on NFS mounts without problems.

Amiga

Last update: October 2006

The Perforce Amiga client program can be run against any Perforce server on UNIX or Windows. The Perforce Server is not available on this platform.

System requirements

AmigaOS 3.1 using ixemul.library version 47. The library might be available from amiga.sourceforge.net.

Specifying file paths
The Amiga version of p4 uses UNIX path names. An Amiga path, in the format "drive:path/path/name", gets converted to and from the UNIX format "/drive/path/path/name". Make sure conversion between Amiga and UNIX path names is enabled in ixemul, and keep this conversion in mind when specifying file paths.
 

BeOS

Last update: December 1999

The Perforce BeOS client can be used on BeOS DR9 for Macintosh and Power Computing PowerPCs to access a Perforce server on any platform. This version was developed using BeOS DR9 with Freescale CodeWarrior. Run the BeOS p4 client from the shell command line in a terminal window.

Configuring the editor

The default Perforce editor is Edit, the BeOS system GUI editor. To override this default, set the $EDITOR environment variable. Be sure to set your editor for "Multiple Launch", as follows:

  1. Invoke IconWorld.
  2. Drag the Edit icon onto the IconWorld window.
  3. Change the App Info settings.
Perforce file permissions

The Be Box is meant to be used as a single-user machine and the effective user has superuser permission, which can circumvent the read-only permissions that Perforce uses to prevent outside modifications to the files it controls. To determine if files have been changed, use the p4 diff command.
 

Cygwin

If you have your Perforce depot files stored on Windows and you use the Perforce Cygwin command line client to sync files to a client computer, mount your Cygwin volume in text mode to ensure that Windows line endings (CRLF or \r\n) are preserved. If you mount your Cygwin volume in binary mode, the CR (\r) character is deleted when you sync.
 

VMS

Last update: August 2004

System requirements

The Perforce p4 command-line client is available on Alpha OpenVMS 6.1, 7.0 and 7.1 and VAX VMS 5.5. The VMS client works with any Perforce server on UNIX or Windows.

Installation

On VMS, you use logicals where Perforce normally expects environment variables, such as: P4PORT, P4CLIENT, P4USER. Enclose case-sensitive values for logicals in quotes.

To install the p4 client:

  • Run:
          fsadm -F hfs -o largefiles /dev/vg00/rlvol8
  • Remount the filesystem.
    1. Download p4.exe to your VMS host.
 

NOTE: The client program information is displayed unversioned on VMS: p4 -V displays "P4-VMS" (on other platforms it includes the version number).

Configuring the editor

By default, the VMS client uses EDIT as an editor. If the logical POSIX$SHELL is set, it is assumed that the user has the Posix environment installed so vi is used instead. To override this default, set the logical EDITOR.

VMS files and file names
  • Define a symbol for p4; for example:
          $ p4 :== $device:[directory]p4.exe

    You can put this definition into your login.com so that it takes effect every time you log in.

    • Symbolic links stored in the Perforce depot are treated as small text files on VMS, because VMS does not support symlinks.
    • Because VMS forcibly downshifts C program command line arguments, enclose references to mixed-case file names in quotes.
    • VMS assumes that a file name without a suffix inherits the suffix of a file name earlier on the command line. To overcome this behavior, Perforce appends a period (.) to ensure a null suffix for all generated local file names, and strips trailing periods from any local file argument.
    • Perforce uses the current directory for temporary files on VMS. To use the Perforce client, the current directory must be writable.
 

HPUX 11.11

Last update: September 2001

Large File Support

The file system on which the P4 depot files (P4ROOT) reside must have large file support enabled. The HPUX file system administration command for enabling this feature is fsadm. To see if your file system supports large files, first find the volume using the df command:

  % df /source/p4root
  /source/p4root  (/dev/vg00/lvol8):  206504044 blocks  18900001 i-nodes

Then use the fsadm command (using the raw device):

  % fsadm -F hfs /dev/vg00/rlvol8
  file system                 :        /dev/vg00/rlvol8

  magic number                :                 4324334
  feature bits                :                       3
  file system supports        : largefiles, longfilenames

If the output reads "nolargefiles" instead of "largefiles" you need to do the following:

  1. Unmount the filesystem.
See "man fsadm" for more details.

 

i5/OS, AS/400, OS/400

Last update: July 2012

The AS400 version of the Perforce p4 client was built on AS400 V4R4, using the Visual Age C++ compiler. The Perforce Server is not available on this platform. The ASCII/EBCDIC conversion is handled by the iconv() function, using the IBMCCSID00819 EBCDIC codepage.

[General AS400 information]

Installation

The following procedure tells you how to install Perforce on the AS400 using a Windows workstation as an intermediary.

  1. Download (as binary) the following AS400 savefile onto your Windows workstation:
          ftp://ftp.perforce.com/pub/perforce/r02.1/bin.as400/p4.zip

    Use an uncompress utility to uncompress the "Perfsavf" file. The file size is 8532480 bytes.

  2. On the AS400, create a library named PERFORCE. In the PERFORCE library, create a save file named PERFSAVE, as follows:
          CRTLIB LIB(PERFORCE)
          CRTSAVF FILE(PERFORCE/PERFSAVF)
  3. On the Windows workstation, open a DOS command box and ftp the "Perfsavf" file (as binary) to the PERFORCE/PERFSAVF savefile on your AS400:
          C:\> ftp as400hostname
          ...
          ftp> binary
          ftp> put p4 PERFORCE/PERFSAVF
          ftp> quit
  4. Back on the AS400, verify the contents of the savefile:
          DSPSAVF FILE(PERFORCE/PERFSAVF)
    The following objects are listed:
          Object      Type   Attribute  Owner       Size    Data
          PERFORCE   *LIB    PROD       LORI       73728     YES
          P4         *PGM    CPPLE      LORI     4157440     YES
          P4         *CMD               QPGMR       4096     YES
          P4SYNC     *CMD               QPGMR       4096     YES
          QCMDSRC    *FILE   PF         QPGMR      32768     YES
          QREXSRC    *FILE   PF         QPGMR      40960     YES
  5. Restore the savefile from the PERFORCE/PERFSAVF into the library PERFORCE (the same library where the PERFSAVF savefile is):
          RSTLIB SAVLIB(PERFORCE) DEV(*SAVF) SAVF(PERFORCE/PERFSAVF)
    Note: This step attempts to extract the PERFORCE library you created in step 2. The resulting error is harmless.
  6. To make the p4 command available to you, add the PERFORCE library to your library list as follows:
          ADDLIBLE PERFORCE

Now you can run the p4 command. The p4 CMD file wraps up the arguments and passes them to the p4 PGM executable.

Note: Be certain to set the P4TICKETS variable to a location and filename to avoid password errors:

  Perforce password (P4PASSWD) invalid or unset

This variable will set a default location for tickets on the IBM i Integrated File System.

If you need to convert EBCDIC to ASCII, see the IBM knowledge base article, "Enabling Text Conversion (EBCDIC to ASCII) for All Integrated File System Files Using iSeries Navigator and iSeries NetServer".

Note: Due to IBM preventing direct links to their knowledge base articles, the above link is to a search result for the IBM knowledge base search page for article number 403190036.

    Special Considerations

    Configuring the editor

    The default editor (set by P4EDITOR) is EDTF.

     

    OS/2

    Last update: December 1999

    The Perforce OS/2 command-line client is the p4.exe executable. The Perforce server is not available on this platform.

    Special considerations

    Configuring the editor

    By default, the Perforce editor is vi and the file comparison program is diff (same defaults as UNIX). To override the defaults, set the EDITOR and DIFF variables.

    Using multiple drives for the client workspace

    On OS/2, a client workspace can span multiple drives. To enable this feature, specify a client root using the keyword null. Specify the drive letter in each line of the client view. The following is a sample client specification for the client named foocli.

      Client: foocli
    
      Owner:  joe
    
      Description:
      Created by Joe
    
      Root: null
    
      Options: noallwrite noclobber nocompress crlf unlocked nomodtime normdir
    
      View:
      //depot/foo/...	//foocli/c:/projects/proj1/...
      //depot/bar/...	//foocli/e:/projects/proj2/...
    
    
    
    

    Novell File Server

    Last update: December 2006

    Do not run the Perforce Server on a Novell file system. The Perforce server creates database files with names that are not 8.3 compliant, and the Novell file system does not support such extended file names. As a result, for example, the files "db.rev," "db.revcx," and "db.review" cannot be distinguished as different files, and are overwritten and corrupted.
     

    Linux

    Update Linux to the latest recommended kernel. 

    There have been reports of a bug that affects some earlier releases of RedHat Enterprise Linux 6.5 and may affect other Linux distributions that have enabled khugepaged. The transparent huge page service (khugepaged) attempts to defragment memory usage to improve overall performance. However, there have been multiple reports of high end systems hitting 100% CPU usage even with a large number of available CPU cores. Consider, for example, this bug report at RedHat, "Bug 879801 - khugepaged eating 100% CPU".

    khugepaged can be disabled by entering these commands:

    echo 0     > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
      OR
    echo no    > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
    (depending on your O/S version; 'cat' the file to determine the appropriate format)
    
      AND
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    

    Notes:

    • After disabling Transparent Hugepages as above, performance should return to expected levels once processing of any current khugpaged activity is completed.
    • To ensure Transparent Hugepages are disabled after reboot, you need to add the above lines to the appropriate boot files. Refer to your Linux distributions documentation for information on how to do this.
    • More information on transparent huge pages can be found here: 
      https://www.kernel.org/doc/Documentation/vm/transhuge.txt
    • For heavily loaded servers, consider disabling zone reclaim mode. To disable zone reclaim mode, run: 
    echo 0 > /proc/sys/vm/zone_reclaim_mode 
     
    For more information on zone reclaim mode, see the following:

    Remote depot mounts

    With P4D 2011.1 and later, remote depot roots should be mounted statically instead of dynamically using automounter like autofs to avoid issues with the diskspace check logic (the filesys.depot.min configurable).
     

    Out of Memory (OOM) Killer

    Some newer Linux distributions (such as CentOS 6.5 or RHEL 7.0) have implemented the OOM Killer daemon by default. This can result in Perforce processes being killed unexpectedly with errors similar to:

    p4 verify -q //...
    Perforce server error: 
    Process 9858 exited on a signal 9! 
    Partner exited unexpectedly. 
    Perforce client error: 
    Partner exited unexpectedly. 
    

    This is most problematic with smaller systems, but can cause random kills across a variety of threads on a heavily used system as well. It is recommended that you supply an adequate amount of memory for your Perforce server load, and to disable the OOM killer.

    In most cases, the OOM killer can be disabled with the command:

    sudo sysctl vm.overcommit_memory=0
    

    Consult your distributions documentation for permanently disabling the OOM killer through reboots.

    Macintosh

    Platform specific notes for Macintosh can be found in Perforce Platform Notes - Apple Macintosh .
     

    Microsoft Windows

    Platform specific notes for Microsoft Windows can be found in Perforce Platform Notes - Microsoft Windows.

    Related Links

    Feedback

     

    Was this article helpful?


       

    Feedback

    Please tell us how we can make this article more useful.

    Characters Remaining: 255