summaryrefslogtreecommitdiff
path: root/g5k/init-nodes.sh
diff options
context:
space:
mode:
authorLoic Guegan <manzerberdes@gmx.com>2019-04-23 16:24:43 +0200
committerLoic Guegan <manzerberdes@gmx.com>2019-04-23 16:24:43 +0200
commit39507e0bb50cc77a377a506f8aee73d7ee306b0e (patch)
tree58647510ed4d6d550f2c61c38b5122ccdf738830 /g5k/init-nodes.sh
parent5720cf71f4ecb5a54719f6957d5ad817bc4c2317 (diff)
Debug,comment and add g5k energy script
Diffstat (limited to 'g5k/init-nodes.sh')
-rwxr-xr-xg5k/init-nodes.sh61
1 files changed, 48 insertions, 13 deletions
diff --git a/g5k/init-nodes.sh b/g5k/init-nodes.sh
index 17335f6..622e3d0 100755
--- a/g5k/init-nodes.sh
+++ b/g5k/init-nodes.sh
@@ -2,8 +2,8 @@
##### Parameters #####
delay=60 # Delay before starting simulation (let CPU energy going down on the server)
-nbSensors=30
-nbSensorsFactor=3
+nbSensors=30 # Number of sensors that will send request to de server
+nbSensorsFactor=3 # nbSensors*nbSensorFactor
requestPerSensor=10 # Theorical simulation time is $requestPerSensor/$sensorsRequestPerSec
sensorsRequestPerSec=10 # Number of request per seconds
######################
@@ -14,12 +14,21 @@ log () {
echo -e "\033[0;34m$@\033[0m"
}
+sshWait () {
+ log "Waiting for for an ssh connection to a vm ($1)"
+ error=255
+ until [ $error -eq 0 ]
+ do
+ ssh -q root@$1 echo "Connected to $(hostname)"
+ error=$?
+ sleep 4
+ done
+}
if [ "$1" = "subscribe" ] && [ $# -eq 1 ]
then
- # Subscribe
log "Subscribing..."
- oarsub -l slash_22=1+{"virtual!='NO'"}/nodes=2 'sleep "10d"'
+ oarsub -l slash_22=1+{"virtual!='NO' AND cluster='nova'"}/nodes=2 'sleep "10d"' # On node send request to the other
elif [ "$1" = "deploy" ] && [ $# -eq 1 ]
then
# Get machine mac address
@@ -44,21 +53,27 @@ then
oarsh $node qemu-img create -f qcow2 -o backing_file=/tmp/debian9-x64-base.qcow2 /tmp/img.qcow2
sleep 1 # Wait for fun
+ # Build cloud init iso (to have ssh access witouth password
log "Create $node cloud-init image"
oarsh $node cp /grid5000/virt-images/cloud-init-example.sh /tmp/
oarsh $node "cd /tmp && export cloud_init_key=\$(cat ~/.ssh/id_rsa.pub) && ./cloud-init-example.sh"
- #oarsh $node "cd /tmp && sed -i \"s/public-keys/ssh_authorized_keys/g\" cloud-init-data/meta-data"
oarsh $node "cd /tmp && genisoimage -output cloud-init-data.iso -volid cidata -joliet -rock cloud-init-data/user-data cloud-init-data/meta-data"
-
+ # Refresh loop state
[ $isServer -eq 1 ] && { curMac=$serverMac; isServer=0; serverNode=$node; } || { curMac=$clientMac; finished=1; clientNode=$node; }
+
+ # Launch vm
log "Launch vm $node"
oarsh $node kvm -m 2048 -hda /tmp/img.qcow2 -netdev bridge,id=br0 -device virtio-net-pci,netdev=br0,id=nic1,mac=$curMac -cdrom /tmp/cloud-init-data.iso -display none -daemonize &
+
+ # Stop looping if we finish
[ $finished -eq 1 ] && break
done
log "Installing mysql on $serverIp"
- onNode="ssh -q root@$serverIp"
+ onNode="ssh -q root@$serverIp" # For convenience
+ ##### Server #####
+ sshWait $serverIp
# One apt-get update seems to be not enought to get mysql-server
$onNode "apt-get update && apt-get update"
$onNode apt-get -y install mysql-server
@@ -69,7 +84,8 @@ then
# Then execute it
$onNode "mysql < /tmp/setup-mysql.sql"
- # Switch to client
+ ##### Client #####
+ $sshWait $clientIp
onNode="ssh -q root@$clientIp"
$onNode "apt-get update && apt-get update"
$onNode apt-get -y install mysql-server
@@ -78,16 +94,29 @@ then
##### Start Simulation #####
log "Simulation will start in ${delay}s"
sleep $delay
- echo "Simulation start at " $(date "+%s") >> $logFile
+ simStart=$(date "+%s")
+ echo "---------- Simulation start at $simStart" >> $logFile
$onNode python /tmp/clients.py $serverIp $nbSensors $nbSensorsFactor $requestPerSensor $sensorsRequestPerSec
- echo "Simulation end at " $(date "+%s") >> $logFile
+ simEnd=$(date "+%s")
+ echo "Simulation parameters: serverNode:$serverNode serverIp:$serverIp serverMac:$serverMac clientNode:$clientNode clientNode:$clientNode clientMac:$clientMac delay:$delay nbSensors:$nbSensors nbSensorsFactor:$nbSensorsFactor requestPerSensors:$requestPerSensor sensorsRequestPerSec:$sensorsRequestPerSec" >> $logFile
+ echo "./recordEnergy.sh nova $serverNode $simStart $simEnd energy_${simStart}_${simEnd}.csv" >> $logFile
+ echo "---------- Simulation end at $simEnd" >> $logFile
+ log "Simulation end ! Please see $logFile for more infos"
##### End Simulation #####
-
+
+ ##### Print some infos #####
log "Network Settings:"
- log " - Server $serverIp $serverMac"
- log " - Client $clientIp $clientMac"
+ log " - Server $serverNode, $serverIp, $serverMac"
+ log " - Client $clientNode, $clientIp, $clientMac"
+ log "Simulation Settings:"
+ log " - Simulation delay ${delay}s"
+ log " - Number of sensors $(( nbSensors * nbSensorsFactor))"
+ log " - Number of request per sensors $requestPerSensor"
+ log " - Number of request per seconds on eachsensors $sensorsRequestPerSec"
+
elif [ "$1" = "kill" ] && [ $# -eq 1 ]
then
+ ##### Kill all kvm on the subscribed nodes #####
isServer=1
finished=0
for node in $(cat $OAR_NODE_FILE|uniq)
@@ -99,13 +128,19 @@ then
done
elif [ "$1" = "inspect" ] && [ $# -eq 2 ]
then
+ ##### Show content of the database #####
mysql --host="$2" -u user --password="mysql" experiment -e "SELECT * FROM temperature;"
elif [ "$1" = "flush" ] && [ $# -eq 2 ]
then
+ ##### Flush content of the temperature table #####
+ log "Cleaning database table..."
mysql --host="$2" -u user --password="mysql" experiment -e "TRUNCATE TABLE temperature;"
else
echo "Usage:"
echo " - $0 subscribe"
echo " - $0 deploy"
+ echo " - $0 kill"
+ echo " - $0 inspect <serverIP>"
+ echo " - $0 flush <serverIP>"
fi