Building and Installing DPCL - for advanced users

DPCL is the component responsible for supporting performance measurement gathering on clusters.  In a clustering configuration DPCL uses a client/server architecture.  A DPCL "super daemon" is created each time the user starts a performance tool. This super daemon is responsible for insuring that a "communication daemon" is running on each of the machines in the cluster. The super daemon distributes commands from the performance tool to the various communication daemons and gathers data from them. TCP/IP is the transport mechanism for this data in DPCL.

The DPCL installation trouble shooting guide provides problem solving information and tips for the installation of the cluster support component, DPCL.   A quick and dirty list of items to check off if DPCL is not working is as follows:

Step 1:  Build Dyninst and DPCL - Here is the script to build the DPCL and Dyninst
##!/bin/tcsh
################################################################################
# DPCL/Dyninst (in directory $HYBRID)
################################################################################

setenv DYNINST_ROOT "$HYBRID/dyninst"

if ((`uname` == "Linux") && (`uname -m` == "ia64")) then
    setenv PLATFORM "ia64-unknown-linux2.4"
else if (`uname` == "Linux") then
    setenv PLATFORM "i386-unknown-linux2.4"
endif

cd $DYNINST_ROOT
mkdir -p ${PLATFORM}/bin
mkdir -p ${PLATFORM}/lib
cd $DYNINST_ROOT/core
make DyninstAPI
cd $DYNINST_ROOT
install -d $ROOT/include/dyninst
install -D -m u=rw,g=r,o=r core/dyninstAPI/h/BPatch*.h $ROOT/include/dyninst
install -D ${PLATFORM}/lib/libdyninstAPI_RT.so.1 $ROOT/lib/libdyninstAPI_RT.so.1
install -D ${PLATFORM}/lib/libdyninstAPI.so $ROOT/lib/libdyninstAPI.so

cd $DYNINST_ROOT/../dpcl/src
./configure --prefix=$ROOT --includedir=$ROOT/include/dpcl --enable-md-dyninst
make
make install

unsetenv DYNINST_ROOT
unsetenv PLATFORM

cd ../../..

Step 2: Check .rhosts file

Make sure that your login specific .rhosts file has entries for all the hosts you will be accessing via DPCL.  Entries will look like this: (not the dashed lines)
----------------------------------------
hubble userid
hubble.americas.sgi.com userid
----------------------------------------

Step 3: dpcl.config file must be present

Create a file named dpcl.config in /opt/dpcl/etc that contains the following two lines: (not the dashed lines)
------------------------------
security:
method = dpcl
------------------------------


Step 4: Super Daemon entry in /etc/services

The build mentioned above should install the Super Daemon entry in /etc/services.  If it doesn't proceed with the following.

Add the DPCL Super Daemon to the /etc/services file.  The line(s) should be as follows: (not the dashed lines)  You can insert it at the end of the file just above the Local Services area.
-------------------------------------------
# dpcl Super Daemon
dpclSD 7895/tcp # DPCL Super Daemon
-------------------------------------------


Step 5:  /etc/xinetd.d/dpclSD file

Add the DPCL Super Daemon xinetd.d "dpclSD" file into the /etc/xinetd.d directory. Here is an example of the file contents needed: (not the dashed lines)
---------------------------------------------
service dpclSD
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /perftools/ROOT/bin/dpclSD
server_args = /perftools/ROOT/bin/dpcld /tmp/dpcld /tmp/dpcl
env += LD_LIBRARY_PATH=/perftools/ROOT/lib
env += DPCL_RT_LIB=/perftools/ROOT/lib/libdpclRT.so.1
env += DYNINSTAPI_RT_LIB=/perftools/ROOT/lib/libdyninstAPI_RT.so.1
}
---------------------------------------------

Change the directory patch to match that of the actual directory path of the actual DPCL build you want to run.  In this example the DPCL components are in /perftools/ROOT.


Step 6: Activate the Super Daemon

Do a: "ps -ef | grep dpcl" to see if any existing super daemons are running or if there are any hanging daemons.

The 'xinetd' daemon must be restarted: "/etc/init.d/xinetd start"at some point following Open|SpeedShop installation.  Doing so allows 'xinetd' to pick up the SuperDaemon (dpclSD) service and start 'listening' on
its port.

For Altix: 'kill -SIGHUP `cat /var/run/xinetd.pid`'.  When 'xinetd' is restarted, lines similar to the following should appear in the system file '/var/log/messages':

  .... xinetd[617]: Starting reconfiguration

.... xinetd[617]: readjusting service dpclSD


Do the following command once the xinetd daemon has been restarted, per the TroubleShooting Guide.  This will tell you if the Super Daemon is running.

"netstat -a -inet | grep dpclSD"
or
"netstat -a -inet" yields this type of list:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:32768                 *:*                   LISTEN
tcp        0      0 *:login                 *:*                     LISTEN
tcp        0      0 localhost.localdo:32769 *:*          LISTEN
...
...
tcp        0      0 *:telnet                *:*                     LISTEN
tcp        0      0 *:dpclSD            *:*                     LISTEN
tcp        0      0 *:smtp                 *:*                     LISTEN