Brent N. Chun ~ California Institute of Technology ~ CACR


pcp is a system for replicating files on multiple nodes of a PC cluster. Replication is done by building an n-ary tree of TCP sockets and using parallelized, pipelined data transfers which use RSA authentication. For large file transfers or replication on many nodes, pcp provides highly efficient data transfers when compared to existing alternatives (e.g., NFS).


Update: PCP source code and releases are now maintained as part of the Ganglia project. The PCP source can be checked out via svn at: The source code can be browsed directly at: See the Ganglia SourceForge page for more.

Version Release Date Source RPM(s) SRPM
v0.3.4 06.04.2008 pcp-0.3.4.tar.gz pcp-0.3.4-1.i386.rpm pcp-0.3.4-1.src.rpm
v0.3.3 09.27.2004 pcp-0.3.3.tar.gz pcp-0.3.3-1.i386.rh9.rpm
v0.3.2 04.29.2002 pcp-0.3.2.tar.gz pcp-0.3.2-1.i386.rpm pcp-0.3.2-1.ia64.rpm pcp-0.3.2-1.src.rpm
v0.3.1 03.22.2002 pcp-0.3.1.tar.gz pcp-0.3.1-1.i386.rpm
v0.3.0 03.19.2002 pcp-0.3.0.tar.gz pcp-0.3.0-1.i386.rpm
v0.2 03.11.2002 pcp-0.2.tar.gz pcp-0.2-1.i386.rpm
v0.1 02.28.2002 pcp-0.1.tar.gz N/A


  1. Install authd on all nodes in the cluster. See the authd web page for installation instructions.

  2. Add the following line to /etc/services on all nodes in the cluster (not necessary on RedHat 7.3, but needed on certain distributions such as RedHat 9.0):
        pcp   2850/tcp    # Caltech PCP

  3. Install PCP on all nodes in the cluster (e.g., cluster nodes bar1, bar2, ..)

    bar1# rpm -ivh pcp-0.3.4-1.i386.rh9.rpm
    bar2# rpm -ivh pcp-0.3.4-1.i386.rh9.rpm
    bar3# ...
  4. Run the client program pcp. Note that on newer Linux kernels (e.g., the 2.4.x RedHat 9 kernel), you'll need to set the LD_ASSUME_KERNEL environment variable to "2.2.5" to avoid LinuxThreads bugs (e.g., incomplete implementation of POSIX cancellation points). In the example below, pcp copies foo.txt to /tmp/foo.txt on three machines: bar1, bar2, and bar3.

    # export LD_ASSUME_KERNEL="2.2.5"
    # pcp foo.txt /tmp/foo.txt bar1 bar2 bar3
    Write succeeded on bar1 (
    Write succeeded on bar2 (
    Write succeeded on bar3 (
The RPM install/uninstall procedures deal with installing/uninstalling of the software and the starting/stopping of the daemons. Since pcp runs via xinetd, starting/stopping of the daemons simply involves the addition/removal of a file in /etc/xinetd.d and sending SIGUSR2 to xinetd to cause xinetd to reread its configuration files.

Some older documentation on PCP (including examples of how to use PCP) can be found here.


BSD license.


I've tried to make this software easy to install and use. Send me email if you're having problems, find bugs, or have any random comments: Brent Chun. Note that pcp only works on linux at the moment. One thing that is definitely not portable is the use of per-thread uids and gids. This is not too hard to change if people really want run on other OSs.

You might also be interested in PCP's web page on freshmeat.

bnc, PGP Public Key