mirror of
https://gitlab.com/manzerbredes/paper-lowrate-iot.git
synced 2025-04-19 04:09:43 +00:00
Debug
This commit is contained in:
parent
026a84902c
commit
1ab4a6a97a
19 changed files with 95601 additions and 4 deletions
1
energyCloud/g5k/OAR.1028994.stderr
Normal file
1
energyCloud/g5k/OAR.1028994.stderr
Normal file
|
@ -0,0 +1 @@
|
|||
## OAR [2019-05-16 15:38:38] Job 1028994 KILLED ##
|
48
energyCloud/g5k/clients.py
Executable file
48
energyCloud/g5k/clients.py
Executable file
|
@ -0,0 +1,48 @@
|
|||
#!/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
|
||||
|
||||
|
15452
energyCloud/g5k/energy_1558010372_1558010680.csv
Normal file
15452
energyCloud/g5k/energy_1558010372_1558010680.csv
Normal file
File diff suppressed because it is too large
Load diff
15452
energyCloud/g5k/energy_1558010868_1558011176.csv
Normal file
15452
energyCloud/g5k/energy_1558010868_1558011176.csv
Normal file
File diff suppressed because it is too large
Load diff
11700
energyCloud/g5k/energy_1558011366_1558011674.csv
Normal file
11700
energyCloud/g5k/energy_1558011366_1558011674.csv
Normal file
File diff suppressed because it is too large
Load diff
15451
energyCloud/g5k/energy_1558011864_1558012172.csv
Normal file
15451
energyCloud/g5k/energy_1558011864_1558012172.csv
Normal file
File diff suppressed because it is too large
Load diff
16852
energyCloud/g5k/energy_1558012360_1558012696.csv
Normal file
16852
energyCloud/g5k/energy_1558012360_1558012696.csv
Normal file
File diff suppressed because it is too large
Load diff
20302
energyCloud/g5k/energy_1558012885_1558013290.csv
Normal file
20302
energyCloud/g5k/energy_1558012885_1558013290.csv
Normal file
File diff suppressed because it is too large
Load diff
153
energyCloud/g5k/init-nodes.sh
Executable file
153
energyCloud/g5k/init-nodes.sh
Executable file
|
@ -0,0 +1,153 @@
|
|||
#!/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"
|
||||
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} duration:$(( simEnd - simStart ))" >> $logFile
|
||||
echo "./recordEnergy.sh nova $(echo serverNode|grep -o ^.*[-][0-9]*) $simStart $simEnd energy_${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
|
||||
|
42
energyCloud/g5k/recordEnergy.sh
Normal file
42
energyCloud/g5k/recordEnergy.sh
Normal file
|
@ -0,0 +1,42 @@
|
|||
#!/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"
|
41
energyCloud/g5k/recordEnergy.sh~
Executable file
41
energyCloud/g5k/recordEnergy.sh~
Executable file
|
@ -0,0 +1,41 @@
|
|||
#!/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"
|
||||
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"
|
39
energyCloud/g5k/run-sim.sh
Executable file
39
energyCloud/g5k/run-sim.sh
Executable file
|
@ -0,0 +1,39 @@
|
|||
#!/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
|
||||
|
8
energyCloud/g5k/setup-mysql.sql
Normal file
8
energyCloud/g5k/setup-mysql.sql
Normal file
|
@ -0,0 +1,8 @@
|
|||
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'@'%';
|
||||
|
15
energyCloud/g5k/simLogs.txt
Normal file
15
energyCloud/g5k/simLogs.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
---------- 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)
|
||||
|
24
g5k/energyFromLogs.sh
Executable file
24
g5k/energyFromLogs.sh
Executable file
|
@ -0,0 +1,24 @@
|
|||
#!/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
|
||||
|
|
@ -77,6 +77,7 @@ then
|
|||
done
|
||||
|
||||
log "Installing mysql on $serverIp"
|
||||
serverNodeName=$(echo $serverNode|grep -o ^.*[-][0-9]*) # For logging
|
||||
onNode="ssh -q root@$serverIp" # For convenience
|
||||
|
||||
##### Server #####
|
||||
|
@ -105,8 +106,8 @@ then
|
|||
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} duration:$(( simEnd - simStart ))" >> $logFile
|
||||
echo "./recordEnergy.sh nova $serverNode $simStart $simEnd energy_${simStart}_${simEnd}.csv" >> $logFile
|
||||
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 #####
|
||||
|
|
|
@ -9,11 +9,12 @@ 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=$(expr 5 + $port) # Define the entry in the CSV that correspond to the correct energy value
|
||||
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
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ initNodes () {
|
|||
|
||||
##### Test VM RAM #####
|
||||
simKey="vmSize"
|
||||
for vmSize in $(echo 128 1024 2048)
|
||||
for vmSize in $(echo 1024 2048 4096)
|
||||
do
|
||||
initNodes deploy
|
||||
initNodes kill # Kill all vms (do not forget :D)
|
||||
|
|
15
g5k/simLogs.txt
Normal file
15
g5k/simLogs.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
---------- 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)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue