TORQUE has enhanced much of the communication found in the original OpenPBS project. This has resulted in a number of key advantages:
In most cases, enhancements made apply to all systems and no tuning is required. However, some changes have been made configurable to allow site specific modification. The configurable communication parameters are:
In very large clusters (in excess of 1,000 nodes), it may be advisable to additionally tune a number of communication layer timeouts. By default, PBS MOM daemons will timeout on inter-MOM messages after 60 seconds. In TORQUE 1.1.0p5 and higher, this can be adjusted by setting the timeout parameter in the mom_priv/config file. If 15059 errors (cannot receive message from sisters) are seen in the MOM logs, it may be necessary to increase this value.
Client-to-PBS server and MOM-to-PBS server communication timeouts are specified via the tcp_timeout server option using the qmgr command.
![]() |
On some systems, ulimit values may prevent large jobs from running. In particular, the open file descriptor limit (i.e., ulimit -n) should be set to at least the maximum job size in procs + 20. Further, there may be value in setting the fs.file-max in sysctl.conf to a high value, such as: /etc/sysctl.conf:fs.file-max = 65536 |
#!/bin/sh
# USAGE: qstat $@
CMDPATH=/usr/local/bin/qstat
CACHETIME=60
TMPFILE=/tmp/qstat.f.tmp
if [ "$1" != "-f" ] ; then
#echo "direct check (arg1=$1) "
$CMDPATH $1 $2 $3 $4
exit $?
fi
if [ -n "$2" ] ; then
#echo "direct check (arg2=$2)"
$CMDPATH $1 $2 $3 $4
exit $?
fi
if [ -f $TMPFILE ] ; then
TMPFILEMTIME=`stat -c %Z $TMPFILE`
else
TMPFILEMTIME=0
fi
NOW=`date +%s`
AGE=$(($NOW - $TMPFILEMTIME))
#echo AGE=$AGE
for i in 1 2 3;do
if [ "$AGE" -gt $CACHETIME ] ; then
#echo "cache is stale "
if [ -f $TMPFILE.1 ] ; then
#echo someone else is updating cache
sleep 5
NOW=`date +%s`
TMPFILEMTIME=`stat -c %Z $TMPFILE`
AGE=$(($NOW - $TMPFILEMTIME))
else
break;
fi
fi
done
if [ -f $TMPFILE.1 ] ; then
#echo someone else is hung
rm $TMPFILE.1
fi
if [ "$AGE" -gt $CACHETIME ] ; then
#echo updating cache
$CMDPATH -f > $TMPFILE.1
mv $TMPFILE.1 $TMPFILE
fi
#echo "using cache"
cat $TMPFILE
exit 0
The above script can easily be modified to cache any command and any combination of arguments by changing one or more of the following attributes:
For example, to cache the command pbsnodes -a, make the following changes:
![]() |
A system may be heavily loaded if it reports multiple 'End of File from addr' or 'Premature end of message' failures in the pbs_mom or pbs_server logs. |
# Don't allow the arp table to become bigger than this net.ipv4.neigh.default.gc_thresh3 = 4096 # Tell the gc when to become aggressive with arp table cleaning. # Adjust this based on size of the LAN. net.ipv4.neigh.default.gc_thresh2 = 2048 # Adjust where the gc will leave arp table alone net.ipv4.neigh.default.gc_thresh1 = 1024 # Adjust to arp table gc to clean-up more often net.ipv4.neigh.default.gc_interval = 3600 # ARP cache entry timeout net.ipv4.neigh.default.gc_stale_time = 3600
Use sysctl -p to reload this file.
The ARP cache size on other Unixes can presumably be modified in a similar way.
An alternative approach is to have a static /etc/ethers file with all hostnames and MAC addresses and load this by arp -f /etc/ethers. However, maintaining this approach is quite cumbersome when nodes get new MAC addresses (due to repairs, for example).