summaryrefslogtreecommitdiff
path: root/g5k_bak
diff options
context:
space:
mode:
authorLoic Guegan <manzerberdes@gmx.com>2019-05-22 10:15:45 +0200
committerLoic Guegan <manzerberdes@gmx.com>2019-05-22 10:15:45 +0200
commit5a77b67d6baae0414310d29cab6f240963866062 (patch)
tree4121e3e4065872ee697fdf79033e11e9236d2cb6 /g5k_bak
parent4045a41e029ed11dde5763455095bd33c7746a72 (diff)
Clean repo, update paper
Diffstat (limited to 'g5k_bak')
-rwxr-xr-xg5k_bak/clients.py48
-rwxr-xr-xg5k_bak/energyFromLogs.sh24
-rwxr-xr-xg5k_bak/init-nodes.sh154
-rw-r--r--g5k_bak/recordEnergy.sh42
-rwxr-xr-xg5k_bak/run-sim.sh39
-rw-r--r--g5k_bak/setup-mysql.sql8
-rw-r--r--g5k_bak/simLogs.txt15
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)
-