qstat
In a large system, users may tend to place excessive load on the system by manual or automated use of resource manager end user client commands. A simple way of reducing this load is through the use of client command wrappers which cache data. The example script below will cache the output of the command 'qstat -f' for 60 seconds and report this info to end users.
#!/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:
Related topics
© 2012 Adaptive Computing