diff --git a/sample-benchmark-project.gns3 b/sample-benchmark-project.gns3
new file mode 100644
index 0000000000000000000000000000000000000000..0c61d43299b4568fadf22b244b281728f569d59b
--- /dev/null
+++ b/sample-benchmark-project.gns3
@@ -0,0 +1,591 @@
+{
+ "auto_close": true,
+ "auto_open": false,
+ "auto_start": false,
+ "name": "bench1",
+ "project_id": "7c69e1b0-9dee-4152-8a87-c30fd05cf3ff",
+ "revision": 7,
+ "scene_height": 1000,
+ "scene_width": 2000,
+ "topology": {
+ "computes": [],
+ "drawings": [
+ {
+ "drawing_id": "7b4a4d9a-00f4-4a98-8363-af89cfb64a73",
+ "rotation": 0,
+ "svg": "<svg height=\"24\" width=\"84\"><text fill=\"#000000\" fill-opacity=\"1.0\" font-family=\"TypeWriter\" font-size=\"10.0\" font-weight=\"bold\">10.10.10.20</text></svg>",
+ "x": -188,
+ "y": -90,
+ "z": 1
+ },
+ {
+ "drawing_id": "b65d6bbd-5210-4c4b-9620-93420ae0c347",
+ "rotation": 0,
+ "svg": "<svg height=\"24\" width=\"84\"><text fill=\"#000000\" fill-opacity=\"1.0\" font-family=\"TypeWriter\" font-size=\"10.0\" font-weight=\"bold\">10.10.10.30</text></svg>",
+ "x": 269,
+ "y": -90,
+ "z": 1
+ },
+ {
+ "drawing_id": "15dd3505-e3dd-4d6f-84f2-8bf1c1cd2b7c",
+ "rotation": 0,
+ "svg": "<svg height=\"24\" width=\"84\"><text fill=\"#000000\" fill-opacity=\"1.0\" font-family=\"TypeWriter\" font-size=\"10.0\" font-weight=\"bold\">10.10.10.10</text></svg>",
+ "x": 64,
+ "y": -267,
+ "z": 1
+ },
+ {
+ "drawing_id": "0a5c95c0-7552-44c4-acde-c252528730d1",
+ "rotation": 0,
+ "svg": "<svg height=\"24\" width=\"84\"><text fill=\"#000000\" fill-opacity=\"1.0\" font-family=\"TypeWriter\" font-size=\"10.0\" font-weight=\"bold\">10.10.10.40</text></svg>",
+ "x": 57,
+ "y": 105,
+ "z": 1
+ }
+ ],
+ "links": [
+ {
+ "link_id": "7443ef05-4c91-4ac7-9aa3-39896ddf0c0b",
+ "nodes": [
+ {
+ "adapter_number": 1,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet1",
+ "x": -10,
+ "y": -35
+ },
+ "node_id": "28ca7ad5-9748-4358-b988-defb562f829e",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 1,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet1",
+ "x": -89,
+ "y": 33
+ },
+ "node_id": "e27c5394-cf7b-4c7d-9590-5257a613ff1b",
+ "port_number": 0
+ }
+ ]
+ },
+ {
+ "link_id": "43147927-b94a-496a-adc7-cc99794935e6",
+ "nodes": [
+ {
+ "adapter_number": 2,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet2",
+ "x": 70,
+ "y": -21
+ },
+ "node_id": "28ca7ad5-9748-4358-b988-defb562f829e",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 2,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet2",
+ "x": -53,
+ "y": 79
+ },
+ "node_id": "e27c5394-cf7b-4c7d-9590-5257a613ff1b",
+ "port_number": 0
+ }
+ ]
+ },
+ {
+ "link_id": "b924148f-2ea7-48c1-acb9-4de1ff0a11aa",
+ "nodes": [
+ {
+ "adapter_number": 4,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet4",
+ "x": -98,
+ "y": -20
+ },
+ "node_id": "40791294-5001-41b4-9833-b3f5d174d664",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 4,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet4",
+ "x": 20,
+ "y": 79
+ },
+ "node_id": "e27c5394-cf7b-4c7d-9590-5257a613ff1b",
+ "port_number": 0
+ }
+ ]
+ },
+ {
+ "link_id": "5a199fd9-df9f-4860-a4c8-faa0152a8200",
+ "nodes": [
+ {
+ "adapter_number": 3,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet3",
+ "x": 70,
+ "y": -4
+ },
+ "node_id": "28ca7ad5-9748-4358-b988-defb562f829e",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 1,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet1",
+ "x": -98,
+ "y": -5
+ },
+ "node_id": "40791294-5001-41b4-9833-b3f5d174d664",
+ "port_number": 0
+ }
+ ]
+ },
+ {
+ "link_id": "5ed4c020-1f92-490c-9bf8-61b2c3654927",
+ "nodes": [
+ {
+ "adapter_number": 6,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet6",
+ "x": -12,
+ "y": 55
+ },
+ "node_id": "28ca7ad5-9748-4358-b988-defb562f829e",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 2,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet2",
+ "x": -43,
+ "y": -67
+ },
+ "node_id": "5f397585-232b-4fff-9473-245b00f32dc4",
+ "port_number": 0
+ }
+ ]
+ },
+ {
+ "link_id": "6962bab8-a730-4031-9b60-6cc7db2055d7",
+ "nodes": [
+ {
+ "adapter_number": 3,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet3",
+ "x": -11,
+ "y": -31
+ },
+ "node_id": "40791294-5001-41b4-9833-b3f5d174d664",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 3,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet3",
+ "x": 63,
+ "y": 36
+ },
+ "node_id": "e27c5394-cf7b-4c7d-9590-5257a613ff1b",
+ "port_number": 0
+ }
+ ]
+ },
+ {
+ "link_id": "8822916f-bdc3-4983-b0eb-7e8baa66e96c",
+ "nodes": [
+ {
+ "adapter_number": 4,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet4",
+ "x": 71,
+ "y": 21
+ },
+ "node_id": "28ca7ad5-9748-4358-b988-defb562f829e",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 2,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet2",
+ "x": -97,
+ "y": 23
+ },
+ "node_id": "40791294-5001-41b4-9833-b3f5d174d664",
+ "port_number": 0
+ }
+ ]
+ },
+ {
+ "link_id": "c600c765-49ab-402d-9959-48ad9e4edcbf",
+ "nodes": [
+ {
+ "adapter_number": 5,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet5",
+ "x": -5,
+ "y": 60
+ },
+ "node_id": "40791294-5001-41b4-9833-b3f5d174d664",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 3,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet3",
+ "x": 63,
+ "y": -14
+ },
+ "node_id": "5f397585-232b-4fff-9473-245b00f32dc4",
+ "port_number": 0
+ }
+ ]
+ },
+ {
+ "link_id": "b6086fcd-b9a0-490e-9af6-5c9fecd867a7",
+ "nodes": [
+ {
+ "adapter_number": 6,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet6",
+ "x": -97,
+ "y": 42
+ },
+ "node_id": "40791294-5001-41b4-9833-b3f5d174d664",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 4,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet4",
+ "x": 30,
+ "y": -67
+ },
+ "node_id": "5f397585-232b-4fff-9473-245b00f32dc4",
+ "port_number": 0
+ }
+ ]
+ },
+ {
+ "link_id": "77488bcc-0a5a-4d3e-958b-71f607865659",
+ "nodes": [
+ {
+ "adapter_number": 5,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet5",
+ "x": 71,
+ "y": 42
+ },
+ "node_id": "28ca7ad5-9748-4358-b988-defb562f829e",
+ "port_number": 0
+ },
+ {
+ "adapter_number": 1,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "Ethernet1",
+ "x": -82,
+ "y": -16
+ },
+ "node_id": "5f397585-232b-4fff-9473-245b00f32dc4",
+ "port_number": 0
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "compute_id": "local",
+ "console": 10038,
+ "console_type": "telnet",
+ "first_port_name": "Management1",
+ "height": 48,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "vEOS-2",
+ "x": -56,
+ "y": -3
+ },
+ "name": "vEOS-2",
+ "node_id": "28ca7ad5-9748-4358-b988-defb562f829e",
+ "node_type": "qemu",
+ "port_name_format": "Ethernet{port1}",
+ "port_segment_size": 0,
+ "properties": {
+ "acpi_shutdown": false,
+ "adapter_type": "e1000",
+ "adapters": 13,
+ "bios_image": "",
+ "bios_image_md5sum": null,
+ "boot_priority": "c",
+ "cdrom_image": "",
+ "cdrom_image_md5sum": null,
+ "cpu_throttling": 0,
+ "cpus": 1,
+ "hda_disk_image": "Aboot-veos-serial-4.17.5M.iso",
+ "hda_disk_image_md5sum": "488ad1c435d18c69bb8d69c7806457c9",
+ "hda_disk_interface": "ide",
+ "hdb_disk_image": "vEOS-lab-4.17.5M.vmdk",
+ "hdb_disk_image_md5sum": "e49ba49e970791d92b8d5ab8286a7bbf",
+ "hdb_disk_interface": "ide",
+ "hdc_disk_image": "",
+ "hdc_disk_image_md5sum": null,
+ "hdc_disk_interface": "ide",
+ "hdd_disk_image": "",
+ "hdd_disk_image_md5sum": null,
+ "hdd_disk_interface": "ide",
+ "initrd": "",
+ "initrd_md5sum": null,
+ "kernel_command_line": "",
+ "kernel_image": "",
+ "kernel_image_md5sum": null,
+ "legacy_networking": false,
+ "linked_clone": true,
+ "mac_address": "00:85:66:0f:6c:00",
+ "options": "-nographic",
+ "platform": "x86_64",
+ "process_priority": "normal",
+ "qemu_path": "/usr/bin/qemu-system-x86_64",
+ "ram": 2048,
+ "usage": "The login is admin, with no password by default"
+ },
+ "symbol": ":/symbols/multilayer_switch.svg",
+ "width": 51,
+ "x": -104,
+ "y": -111,
+ "z": 1
+ },
+ {
+ "compute_id": "local",
+ "console": 10032,
+ "console_type": "telnet",
+ "first_port_name": "Management1",
+ "height": 48,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "vEOS-1",
+ "x": 6,
+ "y": -44
+ },
+ "name": "vEOS-1",
+ "node_id": "e27c5394-cf7b-4c7d-9590-5257a613ff1b",
+ "node_type": "qemu",
+ "port_name_format": "Ethernet{port1}",
+ "port_segment_size": 0,
+ "properties": {
+ "acpi_shutdown": false,
+ "adapter_type": "e1000",
+ "adapters": 13,
+ "bios_image": "",
+ "bios_image_md5sum": null,
+ "boot_priority": "c",
+ "cdrom_image": "",
+ "cdrom_image_md5sum": null,
+ "cpu_throttling": 0,
+ "cpus": 1,
+ "hda_disk_image": "Aboot-veos-serial-4.17.5M.iso",
+ "hda_disk_image_md5sum": "488ad1c435d18c69bb8d69c7806457c9",
+ "hda_disk_interface": "ide",
+ "hdb_disk_image": "vEOS-lab-4.17.5M.vmdk",
+ "hdb_disk_image_md5sum": "e49ba49e970791d92b8d5ab8286a7bbf",
+ "hdb_disk_interface": "ide",
+ "hdc_disk_image": "",
+ "hdc_disk_image_md5sum": null,
+ "hdc_disk_interface": "ide",
+ "hdd_disk_image": "",
+ "hdd_disk_image_md5sum": null,
+ "hdd_disk_interface": "ide",
+ "initrd": "",
+ "initrd_md5sum": null,
+ "kernel_command_line": "",
+ "kernel_image": "",
+ "kernel_image_md5sum": null,
+ "legacy_networking": false,
+ "linked_clone": true,
+ "mac_address": "00:85:66:b1:88:00",
+ "options": "-nographic",
+ "platform": "x86_64",
+ "process_priority": "normal",
+ "qemu_path": "/usr/bin/qemu-system-x86_64",
+ "ram": 2048,
+ "usage": "The login is admin, with no password by default"
+ },
+ "symbol": ":/symbols/multilayer_switch.svg",
+ "width": 51,
+ "x": 59,
+ "y": -244,
+ "z": 1
+ },
+ {
+ "compute_id": "local",
+ "console": 10035,
+ "console_type": "telnet",
+ "first_port_name": "Management1",
+ "height": 48,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "vEOS-4",
+ "x": -2,
+ "y": 46
+ },
+ "name": "vEOS-4",
+ "node_id": "5f397585-232b-4fff-9473-245b00f32dc4",
+ "node_type": "qemu",
+ "port_name_format": "Ethernet{port1}",
+ "port_segment_size": 0,
+ "properties": {
+ "acpi_shutdown": false,
+ "adapter_type": "e1000",
+ "adapters": 13,
+ "bios_image": "",
+ "bios_image_md5sum": null,
+ "boot_priority": "c",
+ "cdrom_image": "",
+ "cdrom_image_md5sum": null,
+ "cpu_throttling": 0,
+ "cpus": 1,
+ "hda_disk_image": "Aboot-veos-serial-4.17.5M.iso",
+ "hda_disk_image_md5sum": "488ad1c435d18c69bb8d69c7806457c9",
+ "hda_disk_interface": "ide",
+ "hdb_disk_image": "vEOS-lab-4.17.5M.vmdk",
+ "hdb_disk_image_md5sum": "e49ba49e970791d92b8d5ab8286a7bbf",
+ "hdb_disk_interface": "ide",
+ "hdc_disk_image": "",
+ "hdc_disk_image_md5sum": null,
+ "hdc_disk_interface": "ide",
+ "hdd_disk_image": "",
+ "hdd_disk_image_md5sum": null,
+ "hdd_disk_interface": "ide",
+ "initrd": "",
+ "initrd_md5sum": null,
+ "kernel_command_line": "",
+ "kernel_image": "",
+ "kernel_image_md5sum": null,
+ "legacy_networking": false,
+ "linked_clone": true,
+ "mac_address": "00:85:66:60:99:00",
+ "options": "-nographic",
+ "platform": "x86_64",
+ "process_priority": "normal",
+ "qemu_path": "/usr/bin/qemu-system-x86_64",
+ "ram": 2048,
+ "usage": "The login is admin, with no password by default"
+ },
+ "symbol": ":/symbols/multilayer_switch.svg",
+ "width": 51,
+ "x": 59,
+ "y": 40,
+ "z": 1
+ },
+ {
+ "compute_id": "local",
+ "console": 10029,
+ "console_type": "telnet",
+ "first_port_name": "Management1",
+ "height": 48,
+ "label": {
+ "rotation": 0,
+ "style": "font-family: TypeWriter;font-size: 10.0;font-weight: bold;fill: #000000;fill-opacity: 1.0;",
+ "text": "vEOS-3",
+ "x": 50,
+ "y": 0
+ },
+ "name": "vEOS-3",
+ "node_id": "40791294-5001-41b4-9833-b3f5d174d664",
+ "node_type": "qemu",
+ "port_name_format": "Ethernet{port1}",
+ "port_segment_size": 0,
+ "properties": {
+ "acpi_shutdown": false,
+ "adapter_type": "e1000",
+ "adapters": 13,
+ "bios_image": "",
+ "bios_image_md5sum": null,
+ "boot_priority": "c",
+ "cdrom_image": "",
+ "cdrom_image_md5sum": null,
+ "cpu_throttling": 0,
+ "cpus": 1,
+ "hda_disk_image": "Aboot-veos-serial-4.17.5M.iso",
+ "hda_disk_image_md5sum": "488ad1c435d18c69bb8d69c7806457c9",
+ "hda_disk_interface": "ide",
+ "hdb_disk_image": "vEOS-lab-4.17.5M.vmdk",
+ "hdb_disk_image_md5sum": "e49ba49e970791d92b8d5ab8286a7bbf",
+ "hdb_disk_interface": "ide",
+ "hdc_disk_image": "",
+ "hdc_disk_image_md5sum": null,
+ "hdc_disk_interface": "ide",
+ "hdd_disk_image": "",
+ "hdd_disk_image_md5sum": null,
+ "hdd_disk_interface": "ide",
+ "initrd": "",
+ "initrd_md5sum": null,
+ "kernel_command_line": "",
+ "kernel_image": "",
+ "kernel_image_md5sum": null,
+ "legacy_networking": false,
+ "linked_clone": true,
+ "mac_address": "00:85:66:30:8f:00",
+ "options": "-nographic",
+ "platform": "x86_64",
+ "process_priority": "normal",
+ "qemu_path": "/usr/bin/qemu-system-x86_64",
+ "ram": 2048,
+ "usage": "The login is admin, with no password by default"
+ },
+ "symbol": ":/symbols/multilayer_switch.svg",
+ "width": 51,
+ "x": 219,
+ "y": -111,
+ "z": 1
+ }
+ ]
+ },
+ "type": "topology",
+ "version": "2.0.3"
+}
\ No newline at end of file
diff --git a/sample-run-benchmarks.sh b/sample-run-benchmarks.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fd48762d144284594b47b0ce25698e454e2f5145
--- /dev/null
+++ b/sample-run-benchmarks.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+BENCHMARK_SCRIPT="/home/gns3/gns3-bench/gns3-bench.py"
+MAX_RUNS=10
+TOPO_NAME="bench1"
+USERNAME="admin"
+PASSWORD="$1"
+TIMEOUT=5
+
+function bench_run {
+ for run in `seq 1 $1` ; do
+ echo -e "\e[33mbechmark run: $run\e[39m"
+ until $BENCHMARK_SCRIPT $2 $3 $4 $5 $6 ; do
+ echo -e "\e[31mrun failed... retrying run: $run...\e[39m"
+ done
+ echo -e "\e[32mrun: $run finished\e[39m"
+ time top -b -n 1 | head -10
+ done
+}
+
+for number_of_concurrent_sims in `seq 1 7`; do
+ echo -e "\e[35mstarting bechmark with number_of_concurrent_sims: $number_of_concurrent_sims ($MAX_RUNS runs)\e[39m"
+ bench_run $MAX_RUNS $TOPO_NAME $number_of_concurrent_sims $USERNAME $PASSWORD $TIMEOUT
+done
+
+#bench_run 10 bench1 1 admin PASSWORD 5
+#bench_run 10 bench1 2 admin PASSWORD 5
+#bench_run 10 bench1 3 admin PASSWORD 5
diff --git a/start-bench.sh b/start-bench.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9c7fdc8cf59f76980570718694b17dd1eeefa6b7
--- /dev/null
+++ b/start-bench.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+# usage: start-bench.sh <PASSWORD>
+screen -dmS bench1 -L "/home/gns3/gns3-bench/sample-start-bench.sh" $1