/usr/lib/oar/detect_resources is in oar-server 2.5.2-4.1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #!/bin/bash
# $Id$
# Detect resources on a list of nodes and print corresponding OAR commands
#set -x
OPENSSH_CMD=/usr/bin/ssh
. "$OARCONFFILE" || exit 20
OARNODES="oarnodesetting"
OARPROPERTY="oarproperty"
FILE_WITH_OAR_COMMANDS_GENERATED="/tmp/oar_resources_init.txt"
# check the file with the nodes to add
if [ -z "$1" ] || [ ! -r "$1" ]
then
echo "Specify a file containing the list of nodes to add into OAR in argument of this command (must be readable by oar user)"
exit 1
fi
echo "Did you configured the OAR SSH key on all the nodes? [yes/NO] "
read l ; [ "$l" != "yes" ] && exit 2
# Check output file
if [ -e "$FILE_WITH_OAR_COMMANDS_GENERATED" ]
then
echo "Commands to run will be written into "$FILE_WITH_OAR_COMMANDS_GENERATED". Do you want to override it? [yes/NO] "
read l ; [ "$l" != "yes" ] && exit 3
rm $FILE_WITH_OAR_COMMANDS_GENERATED || exit 4
fi
# Add properties
echo "$OARPROPERTY -a cpu" > $FILE_WITH_OAR_COMMANDS_GENERATED
echo "$OARPROPERTY -a core" >> $FILE_WITH_OAR_COMMANDS_GENERATED
echo "$OARPROPERTY -c -a host" >> $FILE_WITH_OAR_COMMANDS_GENERATED
echo "$OARPROPERTY -a cpuset" >> $FILE_WITH_OAR_COMMANDS_GENERATED
echo "$OARPROPERTY -a mem" >> $FILE_WITH_OAR_COMMANDS_GENERATED
# Init CPU id
CPU=$(oarnodes --sql true | grep 'cpu=' | awk -F " cpu=" '{print $2}' | awk -F "," '{print $1}' | sort -r -n | head -1)
[ -z "$CPU" ] && CPU=0
# Init CORE id
CORE=$(oarnodes --sql true | grep 'core=' | awk -F " core=" '{print $2}' | awk -F "," '{print $1}' | sort -r -n | head -1)
[ -z "$CORE" ] && CORE=0
echo
for host in $(< $1)
do
echo -n "Checking $host ... "
# Store stderr and redirect it to /dev/null
exec 3>&2
exec 2> /dev/null
mem=$($OPENSSH_CMD $host cat /proc/meminfo | grep ^MemTotal | awk '{print $2}')
# Get CORE info in the form:
# core:cpu
# core:cpu
# core:cpu
# ...
if [ "`$OPENSSH_CMD $host cat /proc/cpuinfo|grep 'physical id'`" != "" ]
then
DATA=$($OPENSSH_CMD $host cat /proc/cpuinfo| awk '{if ($1 == "processor") core=$3; if ($1 == "physical" && $2 =="id") print $4 ":" core}'|sort -n)
else
DATA=$($OPENSSH_CMD $host cat /proc/cpuinfo| awk '{if ($1 == "processor") print $3 ":" $3}'|sort -n)
fi
# Restore stderr
exec 2>&3
if [ -z "$mem" ] || [ -z "$DATA" ]
then
echo "*** KO ***"
rm $FILE_WITH_OAR_COMMANDS_GENERATED
echo
echo "ERROR with node $host. Please check the ssh connection with oar user ($OPENSSH_CMD $host)..."
exit 5
fi
((mem = $mem / 1024))
prev_cpu="-1"
for i in $DATA
do
core=$(echo $i|awk -F: '{print $2}')
cpu=$(echo $i|awk -F: '{print $1}')
[ "$cpu" != "$prev_cpu" ] && ((CPU++))
((CORE++))
prev_cpu=$cpu
echo "oarnodesetting -a -h $host -p host=$host -p cpu=$CPU -p core=$CORE -p cpuset=$core -p mem=$mem" >> $FILE_WITH_OAR_COMMANDS_GENERATED
done
echo "OK"
done
echo
echo "If the content of '$FILE_WITH_OAR_COMMANDS_GENERATED' is OK for you then you just need to execute:"
echo " source $FILE_WITH_OAR_COMMANDS_GENERATED"
|