diff options
| author | Loic Guegan <manzerberdes@gmx.com> | 2019-05-22 10:15:45 +0200 |
|---|---|---|
| committer | Loic Guegan <manzerberdes@gmx.com> | 2019-05-22 10:15:45 +0200 |
| commit | 5a77b67d6baae0414310d29cab6f240963866062 (patch) | |
| tree | 4121e3e4065872ee697fdf79033e11e9236d2cb6 /g5k_bak | |
| parent | 4045a41e029ed11dde5763455095bd33c7746a72 (diff) | |
Clean repo, update paper
Diffstat (limited to 'g5k_bak')
| -rwxr-xr-x | g5k_bak/clients.py | 48 | ||||
| -rwxr-xr-x | g5k_bak/energyFromLogs.sh | 24 | ||||
| -rwxr-xr-x | g5k_bak/init-nodes.sh | 154 | ||||
| -rw-r--r-- | g5k_bak/recordEnergy.sh | 42 | ||||
| -rwxr-xr-x | g5k_bak/run-sim.sh | 39 | ||||
| -rw-r--r-- | g5k_bak/setup-mysql.sql | 8 | ||||
| -rw-r--r-- | g5k_bak/simLogs.txt | 15 |
7 files changed, 0 insertions, 330 deletions
diff --git a/g5k_bak/clients.py b/g5k_bak/clients.py deleted file mode 100755 index db40996..0000000 --- a/g5k_bak/clients.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/python -from __future__ import division -import os,sys,random, time,datetime -from subprocess import Popen - -# Check script argument -if len(sys.argv) != 6: - print("Usage: "+sys.argv[0]+" <mysqlServerIp> <nbSensors> <nbSensorsFactor> <requestPerSensor> <sendInterval>") - exit(1) - -# Init script parameters -serverIp=sys.argv[1] -nbSensors=int(sys.argv[2]) -nbSensorsFactor=int(sys.argv[3]) -effectiveNbSensors=nbSensors*nbSensorsFactor -requestPerSensor=int(sys.argv[4]) -sendInterval=int(sys.argv[5]) -avgSiteTemp=list() -for i in range(0,effectiveNbSensors): - avgSiteTemp.append(random.randint(-10,30)) - - -def insert(sensorId, value): - """ Send value of sensorId into the database """ - stamp=int(time.mktime(datetime.datetime.today().timetuple())) - insertCMD = "mysql -u user --password=mysql --host="+serverIp+" experiment -e" - insertCMD=insertCMD.split() - insertCMD.append("INSERT INTO temperature (id,stamp,val) VALUES("+str(sensorId)+","+str(stamp)+","+str(value)+");") - Popen(insertCMD) # Run command asynchronously - -def send(): - """ Send temperature of each sensors into the database """ - for i in range(0,effectiveNbSensors): - insert(i,random.gauss(avgSiteTemp[i], 3)) - - -# Print infos -print("Launching clients with:") -print(" - Mysql Server IP {:>20}".format(serverIp)) -print(" - Number of sensors {:>18}".format(effectiveNbSensors)) -print(" - Number of request per sensor {:>7}".format(effectiveNbSensors)) - -# Send data -for i in range(0, requestPerSensor): - send() - time.sleep(sendInterval) # We assume send() take no time - - diff --git a/g5k_bak/energyFromLogs.sh b/g5k_bak/energyFromLogs.sh deleted file mode 100755 index 5b4e44c..0000000 --- a/g5k_bak/energyFromLogs.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - - -logFile="$(dirname $(readlink -f $0))"/simLogs.txt - - -getValue () { - line=$(echo "$1" | grep "Simulation para"|sed "s/Simulation parameters: //g") - key=$2 - echo "$line"|awk 'BEGIN{RS=" ";FS=":"}"'$key'"==$1{gsub("\n","",$0);print $2}' -} - -IFS=$'\n' -for cmd in $(cat $logFile|grep "Simulation parameters") -do - nodeName=$(getValue $cmd serverNodeName) - from=$(getValue $cmd startSim) - to=$(getValue $cmd endSim) - vmSize=$(getValue $cmd vmSize) - nbSensors=$(getValue $cmd nbSensors) - simKey=$(getValue $cmd simKey) - ./recordEnergy.sh nova $nodeName $from $to nova $nodeName $from $to "${simKey}_${vmSize}VMSIZE_${nbSensors}NBSENSORS_${from}${to}.csv" -done - diff --git a/g5k_bak/init-nodes.sh b/g5k_bak/init-nodes.sh deleted file mode 100755 index 3258edb..0000000 --- a/g5k_bak/init-nodes.sh +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/bash - -##### Parameters ##### -if [ -z ${nbSensors+x} ] # If nbSensors exists, so all parameters are already define -then - delay=60 # Delay before starting simulation (let CPU energy going down on the server) - nbSensors=30 # Number of sensors that will send request to de server - nbSensorsFactor=3 # nbSensors*nbSensorFactor - simulationTime=300 # Approximative - sensorsSendInterval=10 # Delay between sensors requests - vmSize=2048 # Number of alocated ram - simKey="NONE" -fi -nHours=3 # Reservation dutation -requestPerSensor=$(( simulationTime / sensorsSendInterval )) # Theorical simulation time is $requestPerSensor*$sensorsSendInterval -###################### - - -logFile="./simLogs.txt" -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 - log "Subscribing..." - oarsub -l slash_22=1+{"virtual!='NO' AND cluster='nova'"}/nodes=2,walltime=$nHours 'sleep "10d"' # On node send request to the other -elif [ "$1" = "deploy" ] && [ $# -eq 1 ] -then - # Get machine mac address - serverSubnet=$(g5k-subnets -im|sed "1q;d") - clientSubnet=$(g5k-subnets -im|sed "2q;d") - serverMac=$(echo "$serverSubnet"|sed "s/^.*\t//g") - clientMac=$(echo "$clientSubnet"|sed "s/^.*\t//g") - serverIp=$(echo "$serverSubnet"|sed "s/\t.*$//g") - clientIp=$(echo "$clientSubnet"|sed "s/\t.*$//g") - serverNode="" - clientNode="" - - # Run vms - log "Run vms..." - isServer=1 - finished=0 - for node in $(cat $OAR_NODE_FILE|uniq) - do - # Init vm images - log "Create $node vm image" - oarsh $node cp -n /grid5000/virt-images/debian9-x64-base.qcow2 /tmp/ - 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 && 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 ${vmSize}M -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" - serverNodeName=$(echo $serverNode|grep -o ^.*[-][0-9]*) # For logging - 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 - # Enable mysql connection from outside - $onNode sed -i "s/bind-address/#bind-address/g" /etc/mysql/mariadb.conf.d/50-server.cnf - $onNode systemctl restart mysql - rsync -avh setup-mysql.sql root@$serverIp:/tmp/ - # Then execute it - $onNode "mysql < /tmp/setup-mysql.sql" - - ##### Client ##### - $sshWait $clientIp - onNode="ssh -q root@$clientIp" - $onNode "apt-get update && apt-get update" - $onNode apt-get -y install mysql-server - rsync -avh clients.py root@$clientIp:/tmp/ - - ##### Start Simulation ##### - log "Simulation will start in ${delay}s" - sleep $delay - simStart=$(date "+%s") - echo "---------- Simulation (key=${simKey}) start at $simStart ($(date -d @${simStart}))" >> $logFile - $onNode python /tmp/clients.py $serverIp $nbSensors $nbSensorsFactor $requestPerSensor $sensorsSendInterval - 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 simKey:${simKey} simStart:${simStart} simEnd:${simEnd} duration:$(( simEnd - simStart )) serverNodeName:${serverNodeName} vmSize:${vmSize}" >> $logFile - echo "./recordEnergy.sh nova $serverNodeName $simStart $simEnd energy_${simKey}_${nbSensors}NS_${vmSize}vmSize_${simStart}_${simEnd}.csv" >> $logFile - echo -e "---------- Simulation (key=${simKey}) end at ${simEnd} ($(date -d @${simEnd}))\n" >> $logFile - log "Simulation end ! Please see $logFile for more infos" - ##### End Simulation ##### - - ##### Print some infos ##### - log "Network Settings:" - 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) - do - [ $isServer -eq 1 ] && { curMac=$serverMac; isServer=0; serverNode=$node; } || { curMac=$clientMac; finished=1; clientNode=$node; } - log "Killing vm on node $node" - oarsh $node pkill -9 qemu & - [ $finished -eq 1 ] && break - 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 - diff --git a/g5k_bak/recordEnergy.sh b/g5k_bak/recordEnergy.sh deleted file mode 100644 index fc935a1..0000000 --- a/g5k_bak/recordEnergy.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -# Parse argument -[ $# != 5 ] && { echo "Usage: $0 <cluster-name> <node-name> <from> <to> <output-file>"; exit 1; } - -# Init arguments -clusterName="$1" -nodeName="$2" -outputFile="$5" -wattmeter=$(curl -s https://api.grid5000.fr/stable/sites/lyon/clusters/${clusterName}/nodes/${nodeName}.json | jq -r '.sensors.power.via.pdu[0].uid') -port=$(curl -s https://api.grid5000.fr/stable/sites/lyon/pdus/${wattmeter}.json | jq -r '.ports|to_entries|map(select(.value=="'${nodeName}'"))[0].key') -energyEntry=$(( 5 + port) # Define the entry in the CSV that correspond to the correct energy value - -if [ -z $wattmeter ] || [ -z $port ] -then - echo -ne "\nCannot find energy informations (wattmeter/port) for node $nodeName\n" - echo -ne "\nCheck the node name (do not use hostname! only node name ex: nova-7)\n" - exit 1 -fi - -echo "Node ${nodeName} is connected on wattmeter ${wattmeter} on port ${port}" - -# Fetching energy and save in csv format -from=$(date -d "@$3" "+%s") -to=$(date -d "@$4" "+%s") -echo "ts,energy" > $outputFile # Write CSV header -for time in $(seq $from 3600 $to) -do - # We need gz extension if it is not the current hour - [ $(date -d "@$time" "+%Y-%m-%dT%H") != $(date "+%Y-%m-%dT%H") ] && ext='.gz' || ext='' - powerFilename=$(date -d "@$time" "+power.csv.%Y-%m-%dT%H${ext}") - url="http://wattmetre.lyon.grid5000.fr/data/${wattmeter}-log/${powerFilename}" - echo "- Fetching logs from ${url}" - - # Fetch logs data - [ ! -z $ext ] && csvContent=$(curl -s "${url}" | zcat) || csvContent=$(curl -s "${url}") - - # Parse data and extract the right values in csv format - toSave=$(echo "$csvContent" | awk -F, 'int($3)>='$from'&& int($3)<='$to'{printf "%s,%s\n",$3,$5+'$port'};') - echo "$toSave" >> $outputFile # Save data in csv -done -echo "Done" diff --git a/g5k_bak/run-sim.sh b/g5k_bak/run-sim.sh deleted file mode 100755 index ebf48af..0000000 --- a/g5k_bak/run-sim.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -# Parameters -delay=60 # Delay before starting simulation (let CPU energy going down on the server) -nbSensors=20 # Number of sensors that will send request to de server -nbSensorsFactor=3 # nbSensors*nbSensorFactor -simulationTime=300 # Approximative -sensorsSendInterval=10 # Delay between sensors requests -# requestPerSensor dynamically computed inside init-nodes -vmSize=2048 # Number of alocated ram -simKey="NONE" - -# Where script is located -simScript=$(dirname $(readlink -f "$0"))/init-nodes.sh - -# Build a function using the script -initNodes () { - source "$simScript" -} - - -##### Test VM RAM ##### -simKey="vmSize" -for vmSize in $(echo 1024 2048 4096) -do - initNodes deploy - initNodes kill # Kill all vms (do not forget :D) -done - -vmSize=2048 # Reset vmSize - -simKey="nbSensors" -##### Test number of sensors ##### -for nbSensors in $(echo 20 100 300) -do - initNodes deploy - initNodes kill # Kill all vms -done - diff --git a/g5k_bak/setup-mysql.sql b/g5k_bak/setup-mysql.sql deleted file mode 100644 index 05042a3..0000000 --- a/g5k_bak/setup-mysql.sql +++ /dev/null @@ -1,8 +0,0 @@ -create DATABASE IF NOT EXISTS experiment; -use experiment; -create TABLE IF NOT EXISTS temperature (id INTEGER,stamp INTEGER, val INTEGER); - -use mysql; -CREATE USER 'user'@'%' IDENTIFIED BY 'mysql'; -GRANT ALL ON experiment.* TO 'user'@'%'; - diff --git a/g5k_bak/simLogs.txt b/g5k_bak/simLogs.txt deleted file mode 100644 index 468fc2e..0000000 --- a/g5k_bak/simLogs.txt +++ /dev/null @@ -1,15 +0,0 @@ ----------- Simulation (key=vmSize) start at 1558010372 (Thu May 16 14:39:32 CEST 2019) -Simulation parameters: serverNode:nova-7.lyon.grid5000.fr serverIp:10.140.16.1 serverMac:00:16:3E:8C:10:01 clientNode:nova-8.lyon.grid5000.fr clientNode:nova-8.lyon.grid5000.fr clientMac:00:16:3E:8C:10:02 delay:60 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsRequestPerSec: simKey:vmSize duration:308 -./recordEnergy.sh nova nova-7.lyon.grid5000.fr 1558010372 1558010680 energy_1558010372_1558010680.csv ----------- Simulation (key=vmSize) end at 1558010680 (Thu May 16 14:44:40 CEST 2019) - ----------- Simulation (key=vmSize) start at 1558010868 (Thu May 16 14:47:48 CEST 2019) -Simulation parameters: serverNode:nova-7.lyon.grid5000.fr serverIp:10.140.16.1 serverMac:00:16:3E:8C:10:01 clientNode:nova-8.lyon.grid5000.fr clientNode:nova-8.lyon.grid5000.fr clientMac:00:16:3E:8C:10:02 delay:60 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsRequestPerSec: simKey:vmSize duration:308 -./recordEnergy.sh nova nova-7.lyon.grid5000.fr 1558010868 1558011176 energy_1558010868_1558011176.csv ----------- Simulation (key=vmSize) end at 1558011176 (Thu May 16 14:52:56 CEST 2019) - ----------- Simulation (key=vmSize) start at 1558011366 (Thu May 16 14:56:06 CEST 2019) -Simulation parameters: serverNode:nova-7.lyon.grid5000.fr serverIp:10.140.16.1 serverMac:00:16:3E:8C:10:01 clientNode:nova-8.lyon.grid5000.fr clientNode:nova-8.lyon.grid5000.fr clientMac:00:16:3E:8C:10:02 delay:60 nbSensors:20 nbSensorsFactor:3 requestPerSensors:30 sensorsRequestPerSec: simKey:vmSize duration:308 -./recordEnergy.sh nova nova-7.lyon.grid5000.fr 1558011366 1558011674 energy_1558011366_1558011674.csv ----------- Simulation (key=vmSize) end at 1558011674 (Thu May 16 15:01:14 CEST 2019) - |
