summaryrefslogtreecommitdiff
path: root/g5k
diff options
context:
space:
mode:
authorLoic Guegan <manzerberdes@gmx.com>2019-05-16 14:32:18 +0200
committerLoic Guegan <manzerberdes@gmx.com>2019-05-16 14:32:18 +0200
commit026a84902cdc22f64b53aea3678d576bc29f479b (patch)
tree5b0cb6540533337c6c331f1333ac37979ad49ae4 /g5k
parent9305e544d3c3b3ad49a47587616f2bde1dd8d323 (diff)
Update simulators
Diffstat (limited to 'g5k')
-rwxr-xr-xg5k/clients.py6
-rwxr-xr-xg5k/init-nodes.sh29
-rwxr-xr-xg5k/run-sim.sh39
3 files changed, 60 insertions, 14 deletions
diff --git a/g5k/clients.py b/g5k/clients.py
index 3f718e0..db40996 100755
--- a/g5k/clients.py
+++ b/g5k/clients.py
@@ -5,7 +5,7 @@ from subprocess import Popen
# Check script argument
if len(sys.argv) != 6:
- print("Usage: "+sys.argv[0]+" <mysqlServerIp> <nbSensors> <nbSensorsFactor> <requestPerSensor> <sensorsRequestPerSec>")
+ print("Usage: "+sys.argv[0]+" <mysqlServerIp> <nbSensors> <nbSensorsFactor> <requestPerSensor> <sendInterval>")
exit(1)
# Init script parameters
@@ -14,7 +14,7 @@ nbSensors=int(sys.argv[2])
nbSensorsFactor=int(sys.argv[3])
effectiveNbSensors=nbSensors*nbSensorsFactor
requestPerSensor=int(sys.argv[4])
-frequency=int(sys.argv[5])
+sendInterval=int(sys.argv[5])
avgSiteTemp=list()
for i in range(0,effectiveNbSensors):
avgSiteTemp.append(random.randint(-10,30))
@@ -43,6 +43,6 @@ print(" - Number of request per sensor {:>7}".format(effectiveNbSensors))
# Send data
for i in range(0, requestPerSensor):
send()
- time.sleep(1/frequency) # We assume send() take no time
+ time.sleep(sendInterval) # We assume send() take no time
diff --git a/g5k/init-nodes.sh b/g5k/init-nodes.sh
index 622e3d0..001a1e0 100755
--- a/g5k/init-nodes.sh
+++ b/g5k/init-nodes.sh
@@ -1,11 +1,18 @@
#!/bin/bash
##### Parameters #####
-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
-requestPerSensor=10 # Theorical simulation time is $requestPerSensor/$sensorsRequestPerSec
-sensorsRequestPerSec=10 # Number of request per seconds
+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
######################
@@ -28,7 +35,7 @@ sshWait () {
if [ "$1" = "subscribe" ] && [ $# -eq 1 ]
then
log "Subscribing..."
- oarsub -l slash_22=1+{"virtual!='NO' AND cluster='nova'"}/nodes=2 'sleep "10d"' # On node send request to the other
+ 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
@@ -63,7 +70,7 @@ then
# 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 &
+ 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
@@ -95,12 +102,12 @@ then
log "Simulation will start in ${delay}s"
sleep $delay
simStart=$(date "+%s")
- echo "---------- Simulation start at $simStart" >> $logFile
- $onNode python /tmp/clients.py $serverIp $nbSensors $nbSensorsFactor $requestPerSensor $sensorsRequestPerSec
+ 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" >> $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} duration:$(( simEnd - simStart ))" >> $logFile
echo "./recordEnergy.sh nova $serverNode $simStart $simEnd energy_${simStart}_${simEnd}.csv" >> $logFile
- echo "---------- Simulation end at $simEnd" >> $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 #####
diff --git a/g5k/run-sim.sh b/g5k/run-sim.sh
new file mode 100755
index 0000000..bcca92d
--- /dev/null
+++ b/g5k/run-sim.sh
@@ -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 128 1024 2048)
+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
+