website: Add documentation for gem5art

Change-Id: Icc61f3a1304bb61575bb5adbb704c58a6b0f689f
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5-website/+/43685
Reviewed-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: Jason Lowe-Power <power.jg@gmail.com>
diff --git a/_data/documentation.yml b/_data/documentation.yml
index 61f0573..a090246 100755
--- a/_data/documentation.yml
+++ b/_data/documentation.yml
@@ -281,6 +281,42 @@
          id: doxygen
          url: http://doxygen.gem5.org/release/current/index.html
 
+  - title: gem5art
+    items:
+    - title: Introduction
+      id: introduction
+      url: /documentation/gem5art/introduction
+
+    - title: Details
+      id: main
+      subitems:
+        - page: Summary
+          url: /documentation/gem5art/main/summary
+        - page: Artifacts
+          url: /documentation/gem5art/main/artifacts
+        - page: Runs
+          url: /documentation/gem5art/main/run
+        - page: Tasks
+          url: /documentation/gem5art/main/tasks
+        - page: Disk Images
+          url: /documentation/gem5art/main/disks
+        - page: FAQ
+          url: /documentation/gem5art/main/faq
+
+    - title: Tutorials
+      id: tutorial
+      subitems:
+        - page: Boot Tutorial
+          url: /documentation/gem5art/tutorials/boot-tutorial
+        - page: NPB Tutorial
+          url: /documentation/gem5art/tutorials/npb-tutorial
+        - page: PARSEC Tutorial
+          url: /documentation/gem5art/tutorials/parsec-tutorial
+        - page: SPEC Tutorial
+          url: /documentation/gem5art/tutorials/spec-tutorial
+        - page: Microbench Tutorial
+          url: /documentation/gem5art/tutorials/microbench-tutorial
+
   - title: Reporting Problems
     items:
         - title: Reporting Problems
diff --git a/_pages/documentation/gem5art/introduction.md b/_pages/documentation/gem5art/introduction.md
new file mode 100644
index 0000000..30b6ead
--- /dev/null
+++ b/_pages/documentation/gem5art/introduction.md
@@ -0,0 +1,45 @@
+---
+layout: documentation
+title: Zen and the art of gem5 experiments
+doc: gem5art
+parent: gem5art
+permalink: /documentation/gem5art/introduction
+---
+
+# Zen and the art of gem5 experiments
+
+<img src="/assets/img/gem5art/gem5art.svg" alt="gem5art-logo" width="100%" style="max-width:300px;"/>
+<br/>
+
+The gem5art project is a set of Python modules to help make it easier to run experiments with the gem5 simulator.
+gem5art contains libraries for *Artifacts, Reproducibility, and Testing.*
+You can think of gem5art as a structured [protocol](https://en.wikipedia.org/wiki/Protocol_(science)) for running gem5 experiments.
+
+When running an experiment, there are inputs, steps to run the experiment, and outputs.
+gem5art tracks all of these through [Artifacts](main/artifacts).
+An artifact is an object, usually a file, which is used as part of the experiment.
+
+The gem5art project contains an interface to store all of these artifacts in a [database](main/artifacts.html#artifactdb).
+This database is mainly used to aid reproducibility, for instance, when you want to go back and re-run an experiment.
+However, it can also be used to share artifacts with others doing similar experiments (e.g., a disk image with a shared workload).
+
+The database is also used to store results from [gem5 runs](main/run).
+Given all of the input artifacts, these runs have enough information to reproduce exactly the same experimental output.
+Additionally, there is metadata associated with each gem5 run (e.g., the experiment name, the script name, script parameters, gem5 binary name, etc.) which are useful for aggregating results from many experiments.
+
+These experimental aggregates are useful for testing gem5 as well as conducting research.
+We will be using this data by aggregating the data from 100s or 1000s of gem5 experiments to determine the state of gem5's codebase at any particular time.
+For instance, as discussed in the [Linux boot tutorial](tutorials/boot-tutorial), we can use this data to determine which Linux kernels, Ubuntu versions, and boot types are currently functional in gem5.
+
+----
+
+One of the underlying themes of gem5art is that you should fully understand each piece of the experiment you're running.
+To this end, gem5art requires that every artifact for a particular experiment is *explicitly* defined.
+Additionally, we encourage the use of Python scripts at every level of experimentation from the workload and disk image creation to running gem5.
+By using Python scripts, you can both automate and document the processes for running your experiments.
+
+Many of the ideas used to develop gem5art came from our experience using gem5 and the pain points of running complex experiments.
+Jason Lowe-Power used gem5 extensively during his PhD at University of Wisconsin-Madison.
+Through this experience, he made many mistakes and lost an untold number of days trying to reproduce experiments or re-creating artifacts that were accidentally deleted or moved.
+gem5art was designed to reduce the likelihood that this happens to other researchers.
+
diff --git a/_pages/documentation/gem5art/main/main_1_summary.md b/_pages/documentation/gem5art/main/main_1_summary.md
new file mode 100644
index 0000000..d144703
--- /dev/null
+++ b/_pages/documentation/gem5art/main/main_1_summary.md
@@ -0,0 +1,61 @@
+---
+layout: documentation
+title: Summary
+doc: gem5art
+parent: main
+permalink: /documentation/gem5art/main/summary
+Authors:
+  - Ayaz Akram
+  - Jason Lowe-Power
+---
+
+# Summary
+
+The primary motivation behind gem5art is to provide an infrastructure to use a structured approach to run experiments with gem5. Particular goals of gem5art include:
+
+- structured gem5 experiments
+- easy to use
+- resource sharing
+- reproducibility
+- easy to extend
+- documentation of the performed experiments
+
+gem5art is mainly composed of the following components:
+
+- a database to store artifacts (`gem5art-artifacts`)
+- python objects to wrap gem5 experiments (`gem5art-run`)
+- a celery worker to manage gem5 jobs (`gem5art-tasks`)
+
+The process of performing experiments using gem5 can quickly become complicated due to involvement of multiple components.
+This can be intimidating for new users, and it can be difficult to manage even for experienced researchers.
+As an example, following is a diagram which shows the interaction that takes place among different components (artifacts) while running full-system experiments with gem5.
+
+
+![](/assets/img/gem5art/art.png)
+<br>
+*Figure: Flowchart of gem5 full system mode use case*
+
+Each bubble in the diagram represents a different [artifact](artifacts) which is one small part of a gem5 experiment culminating in the results from the gem5 execution.
+All of the lines show dependencies between artifacts (e.g., the disk image depends on the m5 binary).
+
+You can imagine everything in this example to be contained in a base git repository (base repo) artifact which can keep track of changes in files not tracked by other repositories.
+[Packer](https://packer.io) is a tool to generate disk images and serves as an input to the disk image artifact.
+gem5 source code repo artifact serves as an input to two other artifacts (gem5 binary and m5 utility).
+Linux source repository and base repository (specifically kernel config files) are used to build the disk image and multiple artifacts then generate the final results artifact.
+
+gem5art serves as a tool/infrastructure to streamline this entire process and keeps track of things as they change, thus leading to reproducible runs.
+Moreover, it allows to share the artifacts used in the above example, among multiple users.
+Additionally, gem5art tracks results like all other artifacts, so they can be archived and queried later to aggregate many different gem5 experiments.
+
+
+## Installing gem5art
+
+gem5art is available as a PyPI package and can be installed using pip.
+Since, gem5art requires Python 3, we recommend creating a virtual environment with Python 3 before using gem5art.
+Run the following commands to create a virtual environment and install gem5art:
+
+```sh
+virtualenv -p python3 venv
+source venv/bin/activate
+pip install gem5art-artifact gem5art-run gem5art-tasks
+```
diff --git a/_pages/documentation/gem5art/main/main_2_artifacts.md b/_pages/documentation/gem5art/main/main_2_artifacts.md
new file mode 100644
index 0000000..78be4c4
--- /dev/null
+++ b/_pages/documentation/gem5art/main/main_2_artifacts.md
@@ -0,0 +1,240 @@
+---
+layout: documentation
+title: Artifacts
+doc: gem5art
+parent: main
+permalink: /documentation/gem5art/main/artifacts
+Authors:
+  - Ayaz Akram
+  - Jason Lowe-Power
+---
+
+# Artifacts
+
+## gem5art artifacts
+
+All unique objects used during gem5 experiments are termed "artifacts" in gem5art.
+Examples of artifacts include: gem5 binary, gem5 source code repo, Linux kernel source repo, linux binary, disk image, and packer binary (used to build the disk image).
+The goal of this infrastructure is to keep a record of all the artifacts used in a particular experiment and to return the set of used artifacts when the same experiment needs to be performed in the future.
+
+The description of an artifact serves as the documentation of how that artifact was created.
+One of the goals of gem5art is for these artifacts to be self contained.
+With just the metadata stored with the artifact a third party should be able to perfectly reproduce the artifact.
+(We are still working toward this goal.
+For instance, we are looking into using docker to create artifacts to separate artifact creation from the host platform its run on.)
+
+Each artifact is characterized by a set of attributes, described below:
+
+- command: command used to build this artifact
+- typ: type of the artifact e.g. binary, git repo etc.
+- name: name of the artifact
+- cwd: current working directory, where the command to build the artifact is run
+- path: actual path of the location of the artifact
+- inputs: a list of the artifacts used to build the current artifact
+- documentation: a docstring explaining the purpose of the artifact and any other useful information that can help to reproduce the artifact
+
+Additionally, each artifact also has the following implicit information.
+
+- hash: an MD5 hash for a binary artifact or a git hash for a git artifact
+- time: time of the creation of an artifact
+- id: a UUID associated with the artifact
+- git: a dictionary containing the origin, current commit and the repo name for a git artifact (will be an empty dictionary for other types of artifacts)
+
+These attribute are not specified by the user, but are generated by gem5art automatically (when the `Artifact` object is created for the first time).
+
+An example of how a user would create a gem5 binary artifact using gem5art is shown below.
+In this example, the type, name, and documentation are up to the user of gem5art.
+You're encouraged to use names that are easy to remember when you later query the database.
+The documentation attribute should be used to completely describe the artifact that you are saving.
+
+```python
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = '''
+      Default gem5 binary compiled for the X86 ISA.
+      This was built from the main gem5 repo (gem5.googlesource.com) without
+      any modifications. We recently updated to the current gem5 master
+      which has a fix for memory channel address striping.
+    '''
+)
+```
+
+Another goal of gem5art is to enable sharing of artifacts among multiple users, which is achieved through the use of the centralized database.
+Basically, whenever a user tries to create a new artifact, the database is searched to find if the same artifact exists there.
+If it does, the user can download the matching artifact for use.
+Otherwise, the newly created artifact is uploaded to the database for later use.
+The use of database also avoids running identical experiments (by generating an error message if a user tries to execute exact run which already exists in the database).
+
+### Creating artifacts
+
+To create an `Artifact`, you must use `registerArtifact` as shown in the above example as well.
+This is a factory method which will initially create the artifact.
+
+When calling `registerArtifact`, the artifact will automatically be added to the database.
+If it already exists, a pointer to that artifact will be returned.
+
+The parameters to the `registerArtifact` function are meant for *documentation*, not as explicit directions to create the artifact from scratch.
+In the future, this feature may be added to gem5art.
+
+Note: While creating new artifacts, warning messages showing that certain attributes (except hash and id) of two artifacts don't match (when artifact similarity is checked in the code) might appear. Users should make sure that they understand the reasons of any such warnings.
+
+### Using artifacts from the database
+
+You can create an artifact with just a UUID if it is already stored in the database.
+The behavior will be the same as when creating an artifact that already exists.
+All of the properties of the artifact will be populated from the database.
+
+## ArtifactDB
+
+The particular database used in this work is [MongoDB](https://www.mongodb.com/).
+We use MongoDB since it can easily store large files (e.g., disk images), is tightly integrated with Python through [pymongo](https://api.mongodb.com/python/current/), and has an interface that is flexible as the needs of gem5art changes.
+
+Currently, it's required to run a database to use gem5.
+However, we are planning on changing this default to allow gem5art to be used standalone as well.
+
+gem5art allows you to connect to any database, but by default assumes there is a MongoDB instance running on the localhost at `mongodb://localhost:27017`.
+You can use the environment variable `GEM5ART_DB` to specify the default database to connect when running simple scripts, e.g. `GEM5ART_DB=mongodb://<remote>:27017"`.
+Additionally, you can specify the location of the database when calling `getDBConnection` in your scripts.
+
+In case no database exists or a user wants their own database, you can create a new database by creating a new directory and running the mongodb docker image.
+See the [MongoDB docker documentation](https://hub.docker.com/_/mongo) or the [MongoDB documentation](https://docs.mongodb.com/) for more information.
+
+```sh
+docker run -p 27017:27017 -v <absolute path to the created directory>:/data/db --name mongo-<some tag> -d mongo
+```
+
+This uses the official [MongoDB Docker image](https://hub.docker.com/_/mongo) to run the database at the default port on the localhost.
+If the Docker container is killed, it can be restarted with the same command line and the database should be consistent.
+
+### Connecting to an existing database
+
+By default, gem5art will assume the database is running at `mongodb://localhost:27017`, which is MongoDB's default on the localhost.
+
+The environment variable `GEM5ART_DB` can override this default.
+
+Otherwise, to programmatically set a database URI when using gem5art, you can pass a URI to the `getDatabaseConnection` function.
+
+Currently, gem5art only supports MongoDB database backends, but extending this to other databases should be straightforward.
+
+### Searching the Database
+
+gem5art provides a few convience functions for searching and accessing the database.
+These functions can be found in `artifact.common_queries`.
+
+Specifically, we provide the following functions:
+
+- `getByName`: Returns all objects mathching `name` in database.
+- `getDiskImages`: Returns a generator of disk images (type = disk image).
+- `getLinuxBinaries`: Returns a generator of Linux kernel binaries (type = kernel).
+- `getgem5Binaries`: Returns a generator of gem5 binaries (type = gem5 binary).
+
+### Downloading from the Database
+
+You can also download a file associated with an artifact using functions provided by gem5art. A good way to search and download items from the database is by using the Python interactive shell.
+You can search the database with the functions provided by the `artifact` module (e.g., `getByName`, `getByType`, etc.).
+Then, once you've found the ID of the artifact you'd like to download, you can call `downloadFile`.
+See the example below.
+
+```sh
+$ python
+Python 3.6.8 (default, Oct  7 2019, 12:59:55)
+[GCC 8.3.0] on linux
+Type "help", "copyright", "credits" or "license" for more information.
+>>> from gem5art.artifact import *
+>>> db = getDBConnection()
+>>> for i in getDiskImages(db, limit=2): print(i)
+...
+ubuntu
+    id: d4a54de8-3a1f-4d4d-9175-53c15e647afd
+    type: disk image
+    path: disk-image/ubuntu-image/ubuntu
+    inputs: packer:fe8ba737-ffd4-44fa-88b7-9cd072f82979, fs-x86-test:94092971-4277-4d38-9e4a-495a7119a5e5, m5:69dad8b1-48d0-43dd-a538-f3196a894804
+    Ubuntu with m5 binary installed and root auto login
+ubuntu
+    id: c54b8805-48d6-425d-ac81-9b1badba206e
+    type: disk image
+    path: disk-image/ubuntu-image/ubuntu
+    inputs: packer:fe8ba737-ffd4-44fa-88b7-9cd072f82979, fs-x86-test:5bfaab52-7d04-49f2-8fea-c5af8a7f34a8, m5:69dad8b1-48d0-43dd-a538-f3196a894804
+    Ubuntu with m5 binary installed and root auto login
+>>> for i in getLinuxBinaries(db, limit=2): print(i)
+...
+
+vmlinux-5.2.3
+    id: 8cfd9fbe-24d0-40b5-897e-beca3df80dd2
+    type: kernel
+    path: linux-stable/vmlinux-5.2.3
+    inputs: fs-x86-test:94092971-4277-4d38-9e4a-495a7119a5e5, linux-stable:25feca9a-3642-458e-a179-f3705266b2fe
+    Kernel binary for 5.2.3 with simple config file
+vmlinux-5.2.3
+    id: 9721d8c9-dc41-49ba-ab5c-3ed169e24166
+    type: kernel
+    path: linux-stable/vmlinux-5.2.3
+    inputs: npb:85e6dd97-c946-4596-9b52-0bb145810d68, linux-stable:25feca9a-3642-458e-a179-f3705266b2fe
+    Kernel binary for 5.2.3 with simple config file
+>>> from uuid import UUID
+>>> db.downloadFile(UUID('8cfd9fbe-24d0-40b5-897e-beca3df80dd2'), 'linux-stable/vmlinux-5.2.3')
+```
+
+For another example, assume there is a disk image named  `npb` (containing [NAS Parallel](https://www.nas.nasa.gov/) Benchmarks) in your database and you want to download the disk image to your local directory. You can do the following to download the disk image:
+
+```python
+import gem5art.artifact
+
+db = gem5art.artifact.getDBConnection()
+
+disks = gem5art.artifact.getByName(db, 'npb')
+
+for disk in disks:
+    if disk.type == 'disk image' and disk.documentation == 'npb disk image created on Nov 20':
+        db.downloadFile(disk._id, 'npb')
+```
+
+Here, we assume that there can be multiple disk images/artifacts with the name `npb` and we are only interested in downloading the npb disk image with a particular documentation ('npb disk image created on Nov 20'). Also, note that there are other ways to download files from the database (although they will eventually use the `downloadFile` function).
+
+The dual of the `downloadFile` method used above is `upload`.
+
+#### Database schema
+
+Alternative, you can use the pymongo Python module or the mongodb command line interface to interact with the database.
+See the [MongoDB documentation](https://docs.mongodb.com/) for more information on how to query the MongoDB database.
+
+gem5art has two collections.
+`artifact_database.artifacts` stores all of the metadata for the artifacts and `artifact_database.fs` is a [GridFS](https://docs.mongodb.com/manual/core/gridfs/) store for all of the files.
+The files in the GridFS use the same UUIDs as the Artifacts as their primary keys.
+
+You can list all of the details of all of the artifacts by running the following in Python.
+
+```python
+#!/usr/bin/env python3
+
+from pymongo import MongoClient
+
+db = MongoClient().artifact_database
+for i in db.artifacts.find():
+    print(i)
+```
+
+gem5art also provides a few methods to search the database for artifacts of a particular type or name. For example, to find all disk images in a database you can do the following:
+
+```python
+import gem5art.artifact
+db = gem5art.artifact.getDBConnection('mongodb://localhost')
+for i in gem5art.artifact.getDiskImages(db):
+    print(i)
+```
+
+Other similar methods include: `getLinuxBinaries()`, `getgem5Binaries()`
+
+You can use getByName() method to search database for artifacts using the name attribute. For example, to search for gem5 named artifacts:
+
+```python
+import gem5art.artifact
+db = gem5art.artifact.getDBConnection('mongodb://localhost')
+for i in gem5art.artifact.getByName(db, "gem5"):
+    print(i)
+```
diff --git a/_pages/documentation/gem5art/main/main_3_run.md b/_pages/documentation/gem5art/main/main_3_run.md
new file mode 100644
index 0000000..b02826d
--- /dev/null
+++ b/_pages/documentation/gem5art/main/main_3_run.md
@@ -0,0 +1,176 @@
+---
+layout: documentation
+title: Runs
+doc: gem5art
+parent: main
+permalink: /documentation/gem5art/main/run
+Authors:
+  - Ayaz Akram
+  - Jason Lowe-Power
+---
+
+# Run
+
+## Introduction
+
+Each gem5 experiment is wrapped inside a run object.
+These run objects contain all of the information required to execute the gem5 experiments and can optionally be executed via the gem5art tasks library (or manually with the `run()` function.). gem5Run interacts with the Artifact class of gem5art to ensure reproducibility of gem5 experiments and also stores the current gem5Run object and the output results in the database for later analysis.
+
+## SE and FS mode runs
+
+Next are two methods (for SE (system-emulation) and FS (full-system) modes of gem5) from gem5Run class which give an idea of the required arguments from a user's perspective to create a gem5Run object:
+
+```python
+
+@classmethod
+def createSERun(cls,
+                name: str,
+                gem5_binary: str,
+                run_script: str,
+                outdir: str,
+                gem5_artifact: Artifact,
+                gem5_git_artifact: Artifact,
+                run_script_git_artifact: Artifact,
+                *params: str,
+                timeout: int = 60*15) -> 'gem5Run':
+.......
+
+
+@classmethod
+def createFSRun(cls,
+                name: str,
+                gem5_binary: str,
+                run_script: str,
+                outdir: str,
+                gem5_artifact: Artifact,
+                gem5_git_artifact: Artifact,
+                run_script_git_artifact: Artifact,
+                linux_binary: str,
+                disk_image: str,
+                linux_binary_artifact: Artifact,
+                disk_image_artifact: Artifact,
+                *params: str,
+                timeout: int = 60*15) -> 'gem5Run':
+.......
+
+```
+
+For the user it is important to understand different arguments passed to run objects:
+
+- `name`: name of the run, can act as a tag to search the database to find the required runs (it is expected that user will use a unique name for different experiments)
+- `gem5_binary`: path to the actual gem5 binary to be used
+- `run_script`: path to the python run script that will be used with gem5 binary
+- `outdir`: path to the directory where gem5 results should be written
+- `gem5_artifact`: gem5 binary git artifact object
+- `gem5_git_artifact`: gem5 source git repo artifact object
+- `run_script_git_artifact`: run script artifact object
+- `linux_binary` (only full-system): path to the actual linux binary to be used (used by run script as well)
+- `disk_image` (only full-system): path to the actual disk image to be used (used by run script as well)
+- `linux_binary_artifact` (only full-system): linux binary artifact object
+- `disk_image_artifact` (only full-system): disk image artifact object
+- `params`: other params to be passed to the run script
+- `timeout`: longest time in seconds for which the current gem5 job is allowed to execute
+
+The artifact parameters (`gem5_artifact`, `gem5_git_artifact`, and `run_script_git_artifact`) are used to ensure this is reproducible run.
+Apart from the above mentioned parameters, gem5Run class also keeps track of other features of a gem5 run e.g., the start time, the end time, the current status of gem5 run, the kill reason (if the run is finished), etc.
+
+While the user can write their own run script to use with gem5 (with any command line arguments), currently when a `gem5Run` object is created for a full-system experiment using `createFSRun` method, it is assumed that the path to the `linux_binary` and `disk_image` is passed to the run script on the command line (as arguments of the `createFSRun` method).
+
+## Running an experiment
+
+The `gem5Run` object has everything needed to run one gem5 execution.
+Normally, this will be performed by using the gem5art *tasks* package.
+However, it is also possible to manually execute a gem5 run.
+
+The `run` function executes the gem5 experiment.
+It takes two optional parameters: a task associated with the run for bookkeeping and an optional directory to execute the run in.
+
+The `run` function executes the gem5 binary by using `Popen`.
+This creates another process to execute gem5.
+The `run` function is *blocking* and does not return until the child process has completed.
+
+While the child process is running, every 5 seconds the parent python process will update the status in the `info.json` file.
+
+The `info.json` file is the serialized `gem5run` object which contains all of the run information and the current status.
+
+`gem5Run` objects have 7 possible status states.
+These are currently simple strings stored in the `status` property.
+
+- `Created`: The run has been created. This is set in the constructor when either `createSRRun` or `createFSRun` is called.
+- `Begin run`: When `run()` is called, after the database is checked, we enter the `Begin run` state.
+- `Failed artifact check for ...`: The status is set to this when the artifact check fails.
+- `Spawning`: Next, just before `Popen` is called, the run enters the `Spawning` state.
+- `Running`: Once the parent process begins spinning waiting for the child to finish, the run enters the `Running` state.
+- `Finished`: When the child finished with exit code `0`, the run enters the `Finished` state.
+- `Failed`: When the child finished with a non-zero exit code, the run enters the `Failed` state.
+
+## Run Already in the Database
+
+When starting a run with gem5art, it might complain that the run already exists in the database.
+Basically, before launching a gem5 job, gem5art checks if this run matches an existing run in the database.
+In order to uniquely identify a run, a single hash is made out of:
+
+- the runscript
+- the parameters passed to the runscript
+- the artifacts of the run object which, for an SE run, include: gem5 binary artifact, gem5 source git artifact, run script (experiments repo) artifact. For an FS run, the list of artifacts also include linux binary artifact and disk image artifacts in addition to the artifacts of an SE run.
+
+If this hash already exists in the database, gem5art will not launch a new job based on this run object as a run with same parameters would have already been executed.
+In case, user still wants to launch this job, the user will have to remove the existing run object from the database.
+
+## Searching the Database to find Runs
+
+### Utility script
+
+gem5art provides the utility `gem5art-getruns` to search the database and retrieve runs.
+Based on the parameters, `gem5art-getruns` will dump the results into a file in the json format.
+
+```
+usage: gem5art-getruns [-h] [--fs-only] [--limit LIMIT] [--db-uri DB_URI]
+                       [-s SEARCH_NAME]
+                       filename
+
+Dump all runs from the database into a json file
+
+positional arguments:
+  filename              Output file name
+
+optional arguments:
+  -h, --help            show this help message and exit
+  --fs-only             Only output FS runs
+  --limit LIMIT         Limit of the number of runs to return. Default: all
+  --db-uri DB_URI       The database to connect to. Default
+                        mongodb://localhost:27017
+  -s SEARCH_NAME, --search_name SEARCH_NAME
+                        Query for the name field
+```
+
+### Manually searching the database
+
+Once you start running the experiments with gem5 and want to know the status of those runs, you can look at the gem5Run artifacts in the database.
+For this purpose, gem5art provides a method `getRuns`, which you can use as follows:
+
+```python
+import gem5art.run
+from gem5art.artifact import getDBConnection
+db = getDBConnection()
+for i in gem5art.run.getRuns(db, fs_only=False, limit=100):
+    print(i)
+```
+
+## Searching the Database to find Runs with Specific Names
+
+As discussed above, while creating a FS or SE mode Run object, the user has to pass a name field to recognize
+a particular set of runs (or experiments).
+We expect that the user will take care to use a name string which fully characterizes a set of experiments and can be thought of as a `Nonce`.
+For example, if we are running experiments to test linux kernel boot on gem5, we can use a name field `boot_tests_v1` or `boot_tests_[month_year]` (where month_year correspond to the month and year when the experiments were run).
+
+Later on, the same name can be used to search for relevant gem5 runs in the database.
+For this purpose, gem5art provides a method `getRunsByName`, which can be used as follow:
+
+```python
+import gem5art.run
+from gem5art.artifact import getDBConnection
+db = getDBConnection()
+for i in gem5art.run.getRunsByName(db, name='boot_tests_v1', fs_only=True, limit=100):
+    print(i)
+```
diff --git a/_pages/documentation/gem5art/main/main_4_tasks.md b/_pages/documentation/gem5art/main/main_4_tasks.md
new file mode 100644
index 0000000..c6ceb07
--- /dev/null
+++ b/_pages/documentation/gem5art/main/main_4_tasks.md
@@ -0,0 +1,79 @@
+---
+layout: documentation
+title: Tasks
+doc: gem5art
+parent: main
+permalink: /documentation/gem5art/main/tasks
+Authors:
+  - Ayaz Akram
+  - Jason Lowe-Power
+---
+
+# Tasks
+
+This package contains two parallel task libraries for running gem5 experiments.
+The actual gem5 experiment can be executed with the help of [Python multiprocessing support](https://docs.python.org/3/library/multiprocessing.html), [Celery](http://www.celeryproject.org/) or even without using any job manager (a job can be directly launched by calling `run()` function of gem5Run object).
+This package implicitly depends on the gem5art run package.
+
+Please cite the the [gem5art paper](https://arch.cs.ucdavis.edu/papers/2021-3-28-gem5art) when using the gem5art packages.
+This documentation can be found on the [gem5 website](http://www.gem5.org/documentation/gem5art/).
+
+## Use of Python Multiprocessing
+
+This is a simple way to run gem5 jobs using Python multiprocessing library.
+You can use the following function in your job launch script to execute gem5art run objects:
+
+```python
+run_job_pool([a list containing all run objects to execute], num_parallel_jobs = [Number of parallel jobs])
+```
+
+## Use of Celery
+
+Celery server can run many gem5 tasks asynchronously.
+Once a user creates a gem5Run object (discussed previously) while using gem5art, this object needs to be passed to a method `run_gem5_instance()` registered with Celery app, which is responsible for starting a Celery task to run gem5. The other argument needed by the `run_gem5_instance()` is the current working directory.
+
+Celery server can be started with the following command:
+
+```sh
+celery -E -A gem5art.tasks.celery worker --autoscale=[number of workers],0
+```
+
+This will start a server with events enabled that will accept gem5 tasks as defined in gem5art.
+It will autoscale from 0 to desired number of workers.
+
+Celery relies on a message broker `RabbitMQ` for communication between the client and workers.
+If not already installed, you need to install `RabbitMQ` on your system (before running celery) using:
+
+```sh
+apt-get install rabbitmq-server
+```
+
+### Monitoring Celery
+
+Celery does not explicitly show the status of the runs by default.
+[flower](https://flower.readthedocs.io/en/latest/), a Python package, is a web-based tool for monitoring and administrating Celery.
+
+To install the flower package,
+```sh
+pip install flower
+```
+
+You can monitor the celery cluster doing the following:
+
+```sh
+flower -A gem5art.tasks.celery --port=5555
+```
+This will start a webserver on port 5555.
+
+### Removing all tasks
+
+```sh
+celery -A gem5art.tasks.celery purge
+```
+
+### Viewing state of all jobs in celery
+
+```sh
+celery -A gem5art.tasks.celery events
+```
+
diff --git a/_pages/documentation/gem5art/main/main_5_disks.md b/_pages/documentation/gem5art/main/main_5_disks.md
new file mode 100644
index 0000000..a25a83d
--- /dev/null
+++ b/_pages/documentation/gem5art/main/main_5_disks.md
@@ -0,0 +1,158 @@
+---
+layout: documentation
+title: Disk Images
+doc: gem5art
+parent: main
+permalink: /documentation/gem5art/main/disks
+Authors:
+  - Hoa Nguyen
+  - Ayaz Akram
+---
+
+# Disk Images
+
+## Introduction
+This section discusses an automated way of creating gem5-compatible disk images with Ubuntu server installed. We make use of [Packer](https://www.packer.io/) which uses .json template files to build and configure a disk image. These template files can be configured to build a disk image with specific benchmarks installed.
+
+## Building a Simple Disk Image with Packer
+<a name="packerbriefly"></a>
+### a. How It Works, Briefly
+We use [Packer](https://www.packer.io/) and [QEMU](https://www.qemu.org/) to automate the process of disk creation.
+Essentially, QEMU is responsible for setting up a virtual machine and all interactions with the disk image during the building process.
+The interactions include installing Ubuntu Server to the disk image, copying files from your machine to the disk image, and running scripts on the disk image after Ubuntu is installed.
+However, we will not use QEMU directly.
+Packer provides a simpler way to interact with QEMU using a JSON script, which is more expressive than using QEMU from command line.
+<a name="dependencies"></a>
+### b. Install Required Software/Dependencies
+If not already installed, QEMU can be installed using:
+```shell
+sudo apt-get install qemu
+```
+The packer binary can be downloaded from [the official website](https://www.packer.io/downloads.html).
+For example, the following command downloads packer version 1.7.2 for Linux platforms,
+
+```sh
+wget https://releases.hashicorp.com/packer/1.7.2/packer_1.7.2_linux_amd64.zip
+unzip packer_1.7.2_linux_amd64.zip
+```
+
+<a name="customizing"></a>
+### c. Customize the Packer Script
+The default packer script `template.json` should be modified and adapted according to the required disk image and the available resources for the build process. We will rename the default template to `[disk-name].json`. The variables that should be modified appear at the end of `[disk-name].json` file, in `variables` section.
+The configuration files that we use to build the disk image, and the directory structure is shown below:
+```shell
+disk-image/
+  experiment-specific-folder/
+    [disk-name].json: packer script
+    Any experiment-specific post installation script
+
+  shared/
+    post-installation.sh: generic shell script that is executed after Ubuntu is installed
+    preseed.cfg: pre-seeded configuration to install Ubuntu
+```
+
+<a name="customizingVM"></a>
+#### i. Customizing the VM (Virtual Machine)
+In `[disk-name].json`, following variables are available to customize the VM (to be used for the disk building process):
+
+| Variable         | Purpose     | Example  |
+| ---------------- |-------------|----------|
+| [vm_cpus](https://www.packer.io/docs/builders/qemu.html#cpus) **(should be modified)** | number of host CPUs used by VM | "2": 2 CPUs are used by the VM |
+| [vm_memory](https://www.packer.io/docs/builders/qemu.html#memory) **(should be modified)** | amount of memory used by VM, in megabytes | "2048": 2 GB of RAM are used by the VM |
+| [vm_accelerator](https://www.packer.io/docs/builders/qemu.html#accelerator) **(should be modified)** | accelerator used by the VM, e.g. kvm | "kvm": kvm will be used |
+
+<a name="customizingscripts"></a>
+#### ii. Customizing the Disk Image
+In `[disk-name].json`, disk image size can be customized using following variable:
+
+| Variable        | Purpose     | Example  |
+| ---------------- |-------------|----------|
+| [image_size](https://www.packer.io/docs/builders/qemu.html#disk_size) **(should be modified)** | size of the disk image, in megabytes | "8192": the image has the size of 8 GB  |
+| [image_name] | name of the built disk image | "boot-exit"  |
+
+
+
+
+<a name="customizingscripts2"></a>
+#### iii. File Transfer
+While building a disk image, users would need to move their files (benchmarks, data sets etc.) to
+the disk image. In order to do this file transfer, in `[disk-name].json` under `provisioners`, you could add the following:
+
+```shell
+{
+    "type": "file",
+    "source": "shared/post_installation.sh",
+    "destination": "/home/gem5/",
+    "direction": "upload"
+}
+```
+The above example copies the file `shared/post_installation.sh` from the host to `/home/gem5/` in the disk image.
+This method is also capable of copying a folder from host to the disk image and vice versa.
+It is important to note that the trailing slash affects the copying process [(more details)](https://www.packer.io/docs/provisioners/file.html#directory-uploads).
+The following are some notable examples of the effect of using slash at the end of the paths.
+
+| `source`        | `destination`     | `direction`  |  `Effect`  |
+| ---------------- |-------------|----------|-----|
+| `foo.txt` | `/home/gem5/bar.txt` | `upload` | copy file (host) to file (image) |
+| `foo.txt` | `bar/` | `upload` | copy file (host) to folder (image) |
+| `/foo` | `/tmp` | `upload` | `mkdir /tmp/foo` (image);  `cp -r /foo/* (host) /tmp/foo/ (image)`; |
+| `/foo/` | `/tmp` | `upload` | `cp -r /foo/* (host) /tmp/ (image)` |
+
+If `direction` is `download`, the files will be copied from the image to the host.
+**Note**: [This is a way to run script once after installing Ubuntu without copying to the disk image](#customizingscripts3).
+
+<a name="customizingscripts3"></a>
+#### iv. Install ing Benchmark Dependencies
+To install the dependencies, we utilize the bash script `shared/post_installation.sh`, which will be run after the Ubuntu installation and file copying is done.
+For example, if we want to install `gfortran`, add the following in `scripts/post_installation.sh`:
+```shell
+echo '12345' | sudo apt-get install gfortran;
+```
+In the above example, we assume that the user password is `12345`.
+This is essentially a bash script that is executed on the VM after the file copying is done, you could modify the script as a bash script to fit any purpose.
+<a name="customizingscripts4"></a>
+#### v. Running Other Scripts on Disk Image
+In `[disk-name].json`, we could add more scripts to `provisioners`.
+Note that the files are on the host, but the effects are on the disk image.
+For example, the following example runs `shared/post_installation.sh` after Ubuntu is installed,
+```shell
+{
+    "type": "shell",
+    "execute_command": "echo '{{ user `ssh_password` }}' | {{.Vars}} sudo -E -S bash '{{.Path}}'",
+    "scripts":
+    [
+        "scripts/post-installation.sh"
+    ]
+}
+```
+<a name="buildsimple"></a>
+### d. Building the Disk Image
+<a name="simplebuild"></a>
+#### i. Building the Disk Image
+In order to build a disk image, the template file is first validated using:
+```sh
+./packer validate [disk-name].json
+```
+Then, the template file can be used to build the disk image:
+```sh
+./packer build [disk-name].json
+```
+
+On a fairly recent machine, the building process should not take more than 15 minutes to complete.
+The disk image with the user-defined name (image_name) will be produced in a folder called [image_name]-image.
+[We recommend to use a VNC viewer in order to inspect the building process](#inspect).
+<a name="inspect"></a>
+#### ii. Inspecting the Building Process
+While the building process of disk image takes place, packer will run a VNC (Virtual Network Computing) server and you will be able to see the building process by connecting to the VNC server from a VNC client. There are a plenty of choices for VNC client. When you run the packer script, it will tell you which port is used by the VNC server. For example, if it says `qemu: Connecting to VM via VNC (127.0.0.1:5932)`, the VNC port is 5932.
+To connect to VNC server from the VNC client, use the address `127.0.0.1:5932` for a port number 5932.
+If you need port forwarding to forward the VNC port from a remote machine to your local machine, use SSH tunneling
+```shell
+ssh -L 5932:127.0.0.1:5932 <username>@<host>
+```
+This command will forward port 5932 from the host machine to your machine, and then you will be able to connect to the VNC server using the address `127.0.0.1:5932` from your VNC viewer.
+
+**Note**: While packer is installing Ubuntu, the terminal screen will display "waiting for SSH" without any update for a long time.
+This is not an indicator of whether the Ubuntu installation produces any errors.
+Therefore, we strongly recommend using VNC viewer at least once to inspect the image building process.
+<a name="checking"></a>
+
diff --git a/_pages/documentation/gem5art/main/main_6_faq.md b/_pages/documentation/gem5art/main/main_6_faq.md
new file mode 100644
index 0000000..bd8fab6
--- /dev/null
+++ b/_pages/documentation/gem5art/main/main_6_faq.md
@@ -0,0 +1,78 @@
+---
+layout: documentation
+title: FAQ
+doc: gem5art
+parent: main
+permalink: /documentation/gem5art/main/faq
+---
+
+# Frequently Asked Questions
+
+**What is gem5art?**
+
+gem5art (libraries for artifacts, reproducibility and testing) is a set of python modules to do experiments with gem5 in a reproducible and structured way.
+
+**Do I need celery to run gem5 jobs using gem5art?**
+
+Celery is not required to run gem5 jobs with gem5art.
+You can use any other job scheduling tool or no tool at all.
+In order to run your job without celery, simply call the run() method of your run object once it is created.
+For example, assuming created run object (in a launch script) is called run, you can do the following:
+
+```python
+run.run()
+```
+
+**Is there a more user-friendly way to launch gem5 jobs?**
+
+You can use python multiprocessing library based function calls (provided by gem5art) to launch multiple gem5 jobs in parallel.
+Specifically, you can call the following function in your gem5art launch script:
+
+```python
+run_job_pool([a list containing all run objects to execute], num_parallel_jobs = [Number of parralel jobs])
+```
+
+**How to access/search the files/artifacts in the database?**
+
+You can use the pymongo API functions to access the files in the database.
+gem5art also provides methods that make it easy to access the entries in the database.
+You can look at the different available methods [here](artifacts.html#searching-the-database).
+
+**What if I want to re-run an experiment, using the same artifacts?**
+
+As explained in the documentation, when a new run object is created in the launch script,
+a hash is created out of the artifacts that this run is dependent on.
+This hash is used to check if a the same run exists in the database.
+One of the artifacts used to create the hash is runscript artifact (which basically is same as
+experiments repository artifact, as gem5 configuration scripts are part of the base experiments
+repository).
+The easiest way to re-run an experiment is to update the name field of your launch script and commit the changes
+in the launch script to the base experiments repository.
+Make sure to use the new name field to query the results or runs in the database.
+
+**How can I monitor the status of jobs launched using gem5art launch script?**
+
+Celery does not explicitly show the status of the runs by default.
+[flower](https://flower.readthedocs.io/en/latest/), a Python package, is a web-based tool for monitoring and administrating Celery.
+
+To install the flower package,
+```sh
+pip install flower
+```
+
+If you are using celery to run your tasks, you can use celery monitoring tool called flower.
+For this purpose, use the following command:
+
+```sh
+flower -A gem5art.tasks.celery --port=5555
+```
+
+You can access this server on your web browser using `http://localhost:5555`.
+
+Celery also generates some log files in the directory where you are running celery from.
+You can also look at those log files to know the status of your jobs.
+
+**How to contribute to gem5art?**
+
+gem5art is open-source.
+If you want to add a new feature or fix a bug, you can create a PR on the gem5art github repo.
diff --git a/_pages/documentation/gem5art/tutorials/tutorial_1_boot.md b/_pages/documentation/gem5art/tutorials/tutorial_1_boot.md
new file mode 100644
index 0000000..b7bf9d4
--- /dev/null
+++ b/_pages/documentation/gem5art/tutorials/tutorial_1_boot.md
@@ -0,0 +1,529 @@
+---
+layout: documentation
+title: Boot Tutorial
+doc: gem5art
+parent: tutorial
+permalink: /documentation/gem5art/tutorials/boot-tutorial
+Authors:
+  - Ayaz Akram
+---
+
+# Tutorial: Run Full System Linux Boot Tests
+
+## Introduction
+This tutorial explains how to use gem5art to run experiments with gem5. The specific experiment we will be doing is to test booting of various linux kernel versions and simulator configurations.
+The main steps to perform such an experiment using gem5art include: setting up the environment, building gem5, creating a disk image, compiling linux kernels, preparing gem5 run script, creating a job launch script (which will also register all of the required artifacts) and finally running this script.
+
+We assume the following directory structure to follow in this tutorial:
+
+```
+boot-tests/
+  |___ gem5/                                   # gem5 source code
+  |
+  |___ disk-image/
+  |      |___ shared/                          # Auxiliary files needed for disk creation
+  |      |___ boot-exit/
+  |            |___ boot-exit-image/           # Will be created once the disk is generated
+  |            |      |___ boot-exit           # The generated disk image
+  |            |___ boot-exit.json             # The Packer script
+  |            |___ exit.sh                    # Exits the simulated guest upon booting
+  |            |___ post-installation.sh       # Moves exit.sh to guest's .bashrc
+  |
+  |___ configs
+  |      |___ system                           # gem5 system config files
+  |      |___ run_exit.py                      # gem5 run script
+  |
+  |___ linux-configs                           # Folder with Linux kernel configuration files
+  |
+  |___ linux                                   # Linux source will be downloaded in this folder
+  |
+  |___ launch_boot_tests.py                    # script to launch jobs and register artifacts
+```
+
+## Setting up the environment
+
+First, we need to create the primary directory **boot-tests** which will contain all the created artifacts to run these tests.
+This directory also needs to be converted into a git repository.
+Through the use of boot-tests git repo, we will try to keep track of changes in those files which are not an artifact themselves or not a part of any other artifact.
+An example of such files is gem5 run and config scripts (config-boot-tests).
+We want to make sure that we can keep record of any changes in these scripts, so that a particular run of gem5 can be associated with a particular snapshot of these files.
+All such files, which are not part of other artifacts, will be a part of the experiments repo artifact (we will show how to register that artifact later in this tutorial).
+We also need to add a git remote to this repository pointing to a remote location where we want this repository to be hosted.
+
+Create the main directory named boot-tests and turn it into a git repo:
+
+```sh
+mkdir boot-tests
+cd boot-tests
+git init
+git remote add origin https://your-remote-add/boot-tests.git
+```
+
+We also need to add a .gitignore file in our git repo, to ignore tracking files we don't care about:
+
+```sh
+*.pyc
+m5out
+.vscode
+results
+venv
+disk-image/packer
+disk-image/packer_1.4.3_linux_amd64.zip
+disk-image/boot-exit/boot-exit-image/boot-exit
+disk-image/packer_cache
+gem5
+linux-stable/
+```
+
+gem5art relies on Python 3, so we suggest creating a virtual environment (inside boot-tests) before using gem5art.
+
+```sh
+virtualenv -p python3 venv
+source venv/bin/activate
+```
+
+gem5art can be installed (if not already) using pip:
+
+```sh
+pip install gem5art-artifact gem5art-run gem5art-tasks
+```
+
+## Building gem5
+
+Next, we have to clone gem5 and build it. If you want to use the exact gem5 source that was used at the time of creating this tutorial you will have to checkout the relevant commit. If you want to try with the current version of gem5 at the time of reading this tutorial, you can ignore the git checkout command.
+See the commands below:
+
+```sh
+git clone https://gem5.googlesource.com/public/gem5
+cd gem5
+git checkout v20.1.0.0
+scons build/X86/gem5.opt -j8
+```
+You can also add your changes to gem5 source before building it. Make sure to commit any changes you make to gem5 repo and documenting it while registering gem5 artifact in the launch script.
+We will look at the details of our launch script later on, but following is how we can register gem5 source and binary artifacts that we just created.
+
+```python
+gem5_repo = Artifact.registerArtifact(
+    command = 'git clone https://gem5.googlesource.com/public/gem5',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 from googlesource and checked out v20.1.0.0'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout v20.1.0.0;
+    scons build/X86/gem5.opt -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on v20.1.0.0'
+)
+```
+
+Note, that the use of git checkout command in the `command` field of the gem5_binary artifact (along with the `documentation` field) will be helpful later on to figure out exactly which gem5 source was used to create this gem5 binary.
+
+Also make sure to build the m5 utility at this point which will be moved to the disk image eventually.
+m5 utility allows to trigger simulation tasks from inside the simulated system.
+For example, it can be used to dump simulation statistics when the simulated system triggers to do so.
+We will mainly need m5 to exit the simulation when the simulated system boots linux.
+
+```sh
+cd gem5/util/m5/
+scons build/x86/out/m5
+```
+
+## Creating a disk image
+First create a disk-image folder where we will keep all disk image related files:
+
+```sh
+mkdir disk-image
+```
+
+We will follow the similar directory structure as discussed in [Disk Images](../main/disks) section.
+Add a folder named shared for config files which will be shared among all disk images (and will be kept to their defaults) and one folder named boot-exit which is specific to the disk image needed to run experiments of this tutorial.
+Add three files [boot-exit.json](https://github.com/darchr/gem5art/blob/master/docs/disks/boot-exit/boot-exit.json), [exit.sh](https://github.com/darchr/gem5art/blob/master/docs/disks/boot-exit/exit.sh) and [post-installation.sh](https://github.com/darchr/gem5art/blob/master/docs/disks/boot-exit/post-installation.sh) in boot-exit/ and [preseed.cfg](https://github.com/darchr/gem5art/blob/master/docs/disks/shared/preseed.cfg) and [serial-getty@.service](https://github.com/darchr/gem5art/blob/master/docs/disks/shared/serial-getty@.service) in shared/.
+
+**boot-exit.json** is our primary configuration file. The provisioners and variables section of this file configure the files that need to be transferred to the disk and other things like disk image's name. **post-installation.sh** (which is a script to run after Ubuntu is installed on the disk image) makes sure that the m5 binary is installed on the system and also moves the contents of our other script (**exit.sh**, which should be already transferred inside the disk image as configured in **boot-exit.json**) to **.bashrc** as **exit.sh** contains the stuff that we want to be executed as soon as the system boots. **exit.sh** just contains one command `m5 exit`, which will eventually terminate the simulation as the system boots up.
+
+Next, download packer (if not already downloaded) in the disk-image folder:
+
+```
+cd disk-image/
+wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip
+unzip packer_1.4.3_linux_amd64.zip
+```
+Now, to build the disk image, inside the disk-image folder, run:
+
+```
+./packer validate boot-exit/boot-exit.json
+
+./packer build boot-exit/boot-exit.json
+```
+
+Once this process succeeds, the disk image can be found on `boot-exit/boot-exit-image/boot-exit`.
+A disk image already created following the above instructions can be found, gzipped, [here](http://dist.gem5.org/dist/v20-1/images/x86/ubuntu-18-04/boot-exit.img.gz).
+
+
+## Compiling the linux kernel
+
+In this tutorial, we want to experiment with different linux kernels to examine the state of gem5's ability to boot different linux kernels. These tests use following five LTS (long term support) releases of the Linux kernel:
+
+- 4.4.186
+- 4.9.186
+- 4.14.134
+- 4.19.83
+- 5.4.49
+
+
+Let's use an example of kernel v5.4.49 to see how to compile the kernel.
+First, add a folder linux-configs to store linux kernel config files. The configuration files of interest are available [here](https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/boot-exit/linux-configs/).
+Then, we will get the linux source and checkout the required linux version (e.g. v5.4.49 in this case).
+
+```
+git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
+mv linux linux-stable
+cd linux-stable
+git checkout v{version-no: e.g. 5.4.49}
+```
+Compile the Linux kernel from its source (using an appropriate config file from linux-configs/):
+
+```
+cp ../linux-configs/config.{version-no: e.g. 5.4.49} .config
+make -j8
+cp vmlinux vmlinux-{version-no: e.g. 5.4.49}
+```
+
+Repeat the above process for other kernel versions that we want to use in this experiment.
+
+**Note:** The above instructions are tested with `gcc 7.5.0` and the already compiled Linux binaries can be downloaded from the following links:
+
+- [vmlinux-4.4.186](http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-4.4.186)
+- [vmlinux-4.9.186](http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-4.9.186)
+- [vmlinux-4.14.134](http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-4.14.134)
+- [vmlinux-4.19.83](http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-4.19.83)
+- [vmlinux-5.4.49](http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-5.4.49)
+
+
+## gem5 run scripts
+
+Next, we need to add gem5 run scripts. We will do that in a folder named configs-boot-tests.
+Get the run script named run_exit.py from [here](https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/boot-exit/configs/run_exit.py), and other system configuration files from
+[here](https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/boot-exit/configs/system).
+The run script (run_exit.py) takes the following arguments:
+- kernel: compiled kernel to be used for simulation
+- disk: built disk image to be used for simulation
+- cpu_type: gem5 cpu model (KVM, atomic, timing or O3)
+- mem_sys: gem5 memory system (`classic`, `MI_example`, `MESI_Two_Level`, `MOESI_CMP_directory`)
+- num_cpus: number of parallel cpus to be simulated
+- boot_type: linux kernel boot type (with init or systemd)
+
+An example use of this script is the following:
+
+```sh
+gem5/build/X86/gem5.opt configs/run_exit.py [path to the Linux kernel] [path to the disk image] kvm classic 4 init
+```
+
+## Database and Celery Server
+
+If not already running/created, you can create a database using:
+
+```sh
+`docker run -p 27017:27017 -v <absolute path to the created directory>:/data/db --name mongo-<some tag> -d mongo`
+```
+in a newly created directory.
+
+If not already installed, install `RabbitMQ` on your system (before running celery) using:
+
+```sh
+apt-get install rabbitmq-server
+```
+
+Now, run celery server using:
+
+```sh
+celery -E -A gem5art.tasks.celery worker --autoscale=[number of workers],0
+```
+
+**Note:** Celery is not required to run gem5 jobs with gem5art. You can also use python multiprocessing library based function calls (provided by gem5art) to launch these jobs in parallel (we will show how to do that later in our launch script).
+
+## Creating a launch script
+Finally, we will create a launch script with the name **launch_boot_tests.py**, which will be responsible for registering the artifacts to be used for these tests and then launching gem5 jobs.
+
+The first thing to do in the launch script is to import required modules and classes:
+
+```python
+import os
+import sys
+from uuid import UUID
+from itertools import starmap
+from itertools import product
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+import multiprocessing as mp
+```
+Next, we will register artifacts. For example, to register packer artifact we will add the following lines:
+
+```python
+packer = Artifact.registerArtifact(
+    command = '''wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip;
+    unzip packer_1.4.3_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in August/19 from hashicorp.'
+)
+```
+
+For our boot-tests repo,
+
+```python
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://your-remote-add/boot_tests.git',
+    typ = 'git repo',
+    name = 'boot_tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main experiments repo to run full system boot tests with gem5 20.1'
+)
+```
+
+Note that the name of the artifact (returned by the registerArtifact method) is totally up to the user as well as most of the other attributes of these artifacts.
+
+For all other artifacts, add following lines in launch_boot_tests.py:
+
+```python
+
+gem5_repo = Artifact.registerArtifact(
+    command = 'git clone https://gem5.googlesource.com/public/gem5',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 from googlesource and checked out v20.1.0.0'
+)
+
+m5_binary = Artifact.registerArtifact(
+    command = 'scons build/x86/out/m5',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/build/x86/out/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+
+disk_image = Artifact.registerArtifact(
+    command = './packer build boot-exit/boot-exit.json',
+    typ = 'disk image',
+    name = 'boot-disk',
+    cwd = 'disk-image',
+    path = 'disk-image/boot-exit/boot-exit-image/boot-exit',
+    inputs = [packer, experiments_repo, m5_binary,],
+    documentation = 'Ubuntu with m5 binary installed and root auto login'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout v20.1.0.0;
+    scons build/X86/gem5.opt -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on v20.1.0.0'
+)
+
+gem5_binary_MESI_Two_Level = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout v20.1.0.0;
+    scons build/X86_MESI_Two_Level/gem5.opt --default=X86 PROTOCOL=MESI_Two_Level SLICC_HTML=True -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86_MESI_Two_Level/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on v20.1.0.0'
+)
+
+gem5_binary_MOESI_CMP_directory = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout v20.1.0.0;
+    scons build/MOESI_CMP_directory/gem5.opt --default=X86 PROTOCOL=MOESI_CMP_directory -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86_MOESI_CMP_directory/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on v20.1.0.0'
+)
+
+linux_repo = Artifact.registerArtifact(
+    command = '''git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git;
+    mv linux linux-stable''',
+    typ = 'git repo',
+    name = 'linux-stable',
+    path =  'linux-stable/',
+    cwd = './',
+    documentation = 'linux kernel source code repo from June 24-2020'
+)
+
+linuxes = ['5.4.49', '4.19.83', '4.14.134', '4.9.186', '4.4.186']
+linux_binaries = {
+    version: Artifact.registerArtifact(
+                name = f'vmlinux-{version}',
+                typ = 'kernel',
+                path = f'linux-stable/vmlinux-{version}',
+                cwd = 'linux-stable/',
+                command = f'''cd linux-stable;
+                git checkout v{version};
+                cp ../linux-configs/config.{version} .config;
+                make -j8;
+                cp vmlinux vmlinux-{version};
+                ''',
+                inputs = [experiments_repo, linux_repo,],
+                documentation = f"Kernel binary for {version} with simple "
+                                 "config file",
+            )
+    for version in linuxes
+}
+```
+
+Once, all the artifacts are registered the next step is to launch all gem5 jobs. To do that, first we will create a method `createRun` to create gem5art runs based on a few arguments:
+
+```python
+def createRun(linux, boot_type, cpu, num_cpu, mem):
+
+    if mem == 'MESI_Two_Level':
+        binary_gem5 = 'gem5/build/X86_MESI_Two_Level/gem5.opt'
+        artifact_gem5 = gem5_binary_MESI_Two_Level
+    elif mem == 'MOESI_CMP_directory':
+        binary_gem5 = 'gem5/build/MOESI_CMP_directory/gem5.opt'
+        artifact_gem5 = gem5_binary_MOESI_CMP_directory
+    else:
+        binary_gem5 = 'gem5/build/X86/gem5.opt'
+        artifact_gem5 = gem5_binary
+
+    return gem5Run.createFSRun(
+        'boot experiments with gem5-20.1',
+        binary_gem5,
+        'configs-boot-tests/run_exit.py',
+        'results/run_exit/vmlinux-{}/boot-exit/{}/{}/{}/{}'.
+            format(linux, cpu, mem, num_cpu, boot_type),
+        artifact_gem5, gem5_repo, experiments_repo,
+        os.path.join('linux-stable', 'vmlinux'+'-'+linux),
+        'disk-image/boot-exit/boot-exit-image/boot-exit',
+        linux_binaries[linux], disk_image,
+        cpu, mem, num_cpu, boot_type,
+        timeout = 10*60*60 #10 hours
+        )
+```
+
+Next, initialize all the parameters to pass to `createRun` method, depending on the configuration space we want to test:
+
+```python
+if __name__ == "__main__":
+    boot_types = ['init']
+    num_cpus = ['1', '2', '4', '8']
+    cpu_types = ['kvm', 'atomic', 'simple', 'o3']
+    mem_types = ['MI_example', 'MESI_Two_Level', 'MOESI_CMP_directory']
+```
+
+Then, to run actual jobs depending on if you want to use celery or python multiprocessing library, add the following in your launch script:
+
+## If Using Celery
+
+```python
+    # For the cross product of tests, create a run object.
+    runs = starmap(createRun, product(linuxes, boot_types, cpu_types, num_cpus, mem_types))
+    # Run all of these experiments in parallel
+    for run in runs:
+        run_gem5_instance.apply_async((run, os.getcwd(),))
+```
+
+## If Using Python Multiprocessing Library:
+
+```python
+    def worker(run):
+        run.run()
+        json = run.dumpsJson()
+        print(json)
+
+    jobs = []
+    # For the cross product of tests, create a run object.
+    runs = starmap(createRun, product(linuxes, boot_types, cpu_types, num_cpus, mem_types))
+    # Run all of these experiments in parallel
+    for run in runs:
+        jobs.append(run)
+
+    with mp.Pool(mp.cpu_count() // 2) as pool:
+         pool.map(worker, jobs)
+```
+
+The above lines are responsible for looping through all possible combinations of variables involved in this experiment.
+For each combination, a gem5Run object is created and eventually passed to run_gem5_instance to be executed asynchronously if using Celery.
+In case of python multiprocessing library, these run objects are pushed to a list and then mapped to a job pool.
+Look at the definition of `createFSRun()` [here](../main/run.html) to understand the use of passed arguments.
+
+Here, we are using a timeout of 10 hours, after which the particular gem5 job will be killed (assuming that gem5 should complete the booting process of linux kernel on the given hardware resources). You can configure this time according to your settings.
+
+The complete launch script is available [here:](https://github.com/darchr/gem5art/blob/master/docs/launch-scripts/launch_boot_tests.py).
+Finally, make sure you are in python virtual env and then run the script:
+
+```python
+python launch_boot_tests.py
+```
+
+## Results
+
+Once you start running these experiments, you can access the database to check their status or to find results.
+There are different ways to do this. For example, you can use the getRuns method of gem5art as discussed in the Runs section [previously](../main/run.html#searching-the-database-to-find-runs).
+
+You can also directly access the database and access the run artifacts as follows:
+
+```python
+
+#!/usr/bin/env python3
+from pymongo import MongoClient
+
+db = MongoClient().artifact_database
+
+linuxes = ['5.4.49', '4.19.83', '4.14.134', '4.9.186', '4.4.186']
+boot_types = ['init']
+num_cpus = ['1', '2', '4', '8']
+cpu_types = ['kvm', 'atomic', 'simple', 'o3']
+mem_types = ['MI_example', 'MESI_Two_Level', 'MOESI_CMP_directory']
+
+for linux in linuxes:
+    for boot_type in boot_types:
+        for cpu in cpu_types:
+            for num_cpu in num_cpus:
+                for mem in mem_types:
+                    for i in db.artifacts.find({'outdir':'/home/username/boot_tests/results/run_exit/vmlinux-{}/boot-exit/{}/{}/{}/{}'.format(linux, cpu, mem, num_cpu, boot_type)}):print(i)
+```
+
+**Note:** Update the "outdir" path in the above lines of code to where your results are stored in your system.
+
+Following plots show the status of linux booting based on the results of the experiments of this tutorial:
+
+![](/assets/img/gem5art//boot_exit_classic_init.svg)
+![](/assets/img/gem5art//boot_exit_classic_systemd.svg)
+![](/assets/img/gem5art//boot_exit_MI_example_init.svg)
+![](/assets/img/gem5art//boot_exit_MI_example_systemd.svg)
+![](/assets/img/gem5art//boot_exit_MESI_Two_Level_init.svg)
+![](/assets/img/gem5art//boot_exit_MESI_Two_Level_systemd.svg)
+
+You can look [here](https://www.gem5.org/documentation/benchmark_status/gem5-20) for the latest status of these tests on gem5.
diff --git a/_pages/documentation/gem5art/tutorials/tutorial_2_npb.md b/_pages/documentation/gem5art/tutorials/tutorial_2_npb.md
new file mode 100644
index 0000000..fa607ff
--- /dev/null
+++ b/_pages/documentation/gem5art/tutorials/tutorial_2_npb.md
@@ -0,0 +1,648 @@
+---
+layout: documentation
+title: NPB Tutorial
+doc: gem5art
+parent: tutorial
+permalink: /documentation/gem5art/tutorials/npb-tutorial
+Authors:
+  - Ayaz Akram
+---
+
+# Tutorial: Run NAS Parallel Benchmarks with gem5
+
+## Introduction
+In this tutorial, we will use gem5art to create a disk image for NAS parallel benchmarks ([NPB](https://www.nas.nasa.gov/)) and then run these benchmarks using gem5. NPB belongs to the category of high performance computing (HPC) workloads and consist of 5 kernels and 3 pseudo applications.
+Following are their details:
+
+Kernels:
+- **IS:** Integer Sort, random memory access
+- **EP:** Embarrassingly Parallel
+- **CG:** Conjugate Gradient, irregular memory access and communication
+- **MG:** Multi-Grid on a sequence of meshes, long- and short-distance communication, memory intensive
+- **FT:** discrete 3D fast Fourier Transform, all-to-all communication
+
+Pseudo Applications:
+- **BT:** Block Tri-diagonal solver
+- **SP:** Scalar Penta-diagonal solver
+- **LU:** Lower-Upper Gauss-Seidel solver
+
+There are different classes (A,B,C,D,E and F) of the workloads based on the data size that is used with the benchmarks. Detailed discussion of the data sizes is available [here](https://www.nas.nasa.gov/publications/npb_problem_sizes.html). In this tutorial, we will use only class A of these workloads.
+
+We assume the following directory structure to follow in this tutorial:
+
+```
+npb/
+  |___ gem5/                               # gem5 source code
+  |
+  |___ disk-image/
+  |      |___ shared/                      # Auxiliary files needed for disk creation
+  |      |___ npb/
+  |            |___ npb-image/             # Will be created once the disk is generated
+  |            |      |___ npb             # The generated disk image
+  |            |___ npb.json               # The Packer script to build the disk image
+  |            |___ runscript.sh           # Executes a user provided script in simulated guest
+  |            |___ post-installation.sh   # Moves runscript.sh to guest's .bashrc
+  |            |___ npb-install.sh         # Compiles NPB inside the generated disk image
+  |            |___ npb-hooks              # The NPB source (modified to use with gem5).
+  |
+  |___ config.4.19.83                      # linux kernel configuration file
+  |
+  |___ configs
+  |      |___ system                       # gem5 system config files
+  |      |___ run_npb.py                   # gem5 run script to run NPB tests
+  |
+  |___ linux                               # Linux source and binary will live here
+  |
+  |___ launch_npb_tests.py                 # script to launch jobs and register artifacts
+```
+
+
+## Setting up the environment
+
+First, we need to create the main directory named **npb-tests** (from where we will run everything) and turn it into a git repository.
+Through the use of **npb-tests** git repo, we will try to keep track of changes in those files which are not included in any git repo otherwise.
+An example of such files is gem5 run and config scripts.
+We want to make sure that we can keep record of any changes in these scripts, so that a particular run of NPB benchmarks can be associated with a particular snapshot of these files.
+We also need to add a git remote to this repo pointing to a remote location where we want this repo to be hosted.
+
+
+```sh
+mkdir npb-tests
+cd npb-tests
+git init
+git remote add origin https://your-remote-add/npb-tests.git
+```
+
+We also need to add a .gitignore file in our git repo, to avoid tracking those files which are not important or will be tracked through other git repos:
+
+```sh
+*.pyc
+m5out
+.vscode
+results
+venv
+disk-image/packer
+disk-image/packer_1.4.3_linux_amd64.zip
+disk-image/npb/npb-image/npb
+disk-image/npb/npb-hooks
+disk-image/packer_cache
+gem5
+linux-stable/
+```
+
+gem5art relies on Python 3, so we suggest creating a virtual environment before using gem5art.
+
+```sh
+virtualenv -p python3 venv
+source venv/bin/activate
+```
+
+gem5art can be installed (if not already) using pip:
+
+```sh
+pip install gem5art-artifact gem5art-run gem5art-tasks
+```
+
+## Building gem5
+
+Next clone gem5 from googlesource:
+
+```sh
+git clone https://gem5.googlesource.com/public/gem5
+```
+
+If you want to use the exact gem5 source that was used at the time of creating this tutorial you will have to checkout the relevant commit. If you want to try with the current version of gem5 at the time of reading this tutorial, you can ignore the git checkout command.
+
+```sh
+cd gem5
+git checkout v20.1.0.0;
+scons build/X86/gem5.opt -j8
+```
+
+Also make sure to build the m5 utility which will be moved to the disk image eventually.
+m5 utility allows to trigger simulation tasks from inside the simulated system.
+For example, it can be used dump simulation statistics when the simulated system triggers to do so.
+We will need m5 mainly to exit the simulation when the simulated system will be done with the execution of a particular NPB benchmark.
+
+```sh
+cd gem5/util/m5/
+scons build/x86/out/m5
+```
+
+## Creating a disk image
+First create a disk-image folder where we will keep all disk image related files:
+
+```sh
+mkdir disk-image
+```
+
+We will follow the similar directory structure as discussed in [Disk Images](../main/disks) section.
+Add a folder named shared for config files which will be shared among all disk images (and will be kept to their defaults) and one folder named npb which will contain files configured for NPB disk image. Add [preseed.cfg](https://github.com/darchr/gem5art/blob/master/docs/disks/shared/preseed.cfg) and [serial-getty@.service](https://github.com/darchr/gem5art/blob/master/docs/disks/shared/serial-getty@.service) in shared/.
+
+In npb/ we will add the benchmark source first, which will eventually be transferred to the disk image through our npb.json file.
+
+```sh
+cd disk-image/npb
+git clone https://github.com/darchr/npb-hooks.git
+```
+
+This source of NPB has ROI (region of interest) annotations for each benchmark which will be used by gem5 to
+separate out simulation statistics of the important parts of a program from the rest of the program.
+Basically, gem5 magic instructions are used before and after the ROI which exit the guest and transfer control to gem5 run script which can then do things like dumping or resetting stats or switching to cpu of interest.
+
+Next, we will add few other files in npb/ which will be used for compilation of NPB inside the disk image and eventually running of these benchmarks with gem5.
+These files will be moved from host to the disk image using npb.json file as we will soon see.
+
+First, create a file **npb-install.sh**, which will be executed inside the disk image (once it is built) and will install NPB on the disk image:
+
+```sh
+# install build-essential (gcc and g++ included) and gfortran
+
+#Compile NPB
+
+echo "12345" | sudo apt-get install build-essential gfortran
+
+cd /home/gem5/NPB3.3-OMP/
+
+mkdir bin
+
+make suite HOOKS=1
+```
+`HOOKS=1` flag in the above make command enables the ROI annotations while compiling NPB workloads.
+We are specifically compiling OpenMP (OMP) version of class A, B, C and D of NPB workloads.
+
+To configure the benchmark build process, the source of NPB which we are using relies on modified **make.def** and **suite.def** files (build system files). Look [here](https://github.com/darchr/npb-hooks/blob/master/NPB3.3.1/NPB3.3-OMP/README.install), to understand the build process of NAS parallel benchmarks.
+**suite.def** file is used to determine which workloads (and of which class) do we want to compile when we run **make suite** command (as in the above script).
+You can look at the modified suite.def file [here](https://github.com/darchr/npb-hooks/blob/master/NPB3.3.1/NPB3.3-OMP/config/suite.def).
+
+The **make.def** file we are using add OMP flags to the compiler flags to compile OMP version of the benchmarks. We also add another flag **-DM5OP_ADDR=0xFFFF0000** to the compiler flags, which makes sure that the gem5 magic instructions added to the benchmarks will also work in KVM mode.
+You can look at the complete file [here](https://github.com/darchr/npb-hooks/blob/master/NPB3.3.1/NPB3.3-OMP/config/make.def).
+
+In npb/, create a file **post-installation.sh** and add following lines to it:
+
+```sh
+#!/bin/bash
+echo 'Post Installation Started'
+
+mv /home/gem5/serial-getty@.service /lib/systemd/system/
+
+mv /home/gem5/m5 /sbin
+ln -s /sbin/m5 /sbin/gem5
+
+# copy and run outside (host) script after booting
+cat /home/gem5/runscript.sh >> /root/.bashrc
+
+echo 'Post Installation Done'
+```
+
+This **post-installation.sh** script (which is a script to run after Ubuntu is installed on the disk image) installs m5 and copies the contents of **runscript.sh** to **.bashrc**.
+Therefore, we need to add those things in runscript.sh which we want to execute as soon as the system boots up.
+Create runscript.sh in npb/ and add following lines to it:
+
+```sh
+#!/bin/sh
+
+m5 readfile > script.sh
+if [ -s script.sh ]; then
+    # if the file is not empty, execute it
+    chmod +x script.sh
+    ./script.sh
+    m5 exit
+fi
+# otherwise, drop to the terminal
+```
+**runscript.sh** uses **m5 readfile** to read the contents of a script which is how gem5 passes scripts to the simulated system from the host system.
+The passed script will then be executed and will be responsible for running benchmark/s which we will look into more later.
+
+Finally, create **npb.json** and add following contents:
+
+```json
+{
+    "builders":
+    [
+        {
+            "type": "qemu",
+            "format": "raw",
+            "accelerator": "kvm",
+            "boot_command":
+            [
+                "{{ user `boot_command_prefix` }}",
+                "debian-installer={{ user `locale` }} auto locale={{ user `locale` }} kbd-chooser/method=us ",
+                "file=/floppy/{{ user `preseed` }} ",
+                "fb=false debconf/frontend=noninteractive ",
+                "hostname={{ user `hostname` }} ",
+                "/install/vmlinuz noapic ",
+                "initrd=/install/initrd.gz ",
+                "keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA ",
+                "keyboard-configuration/variant=USA console-setup/ask_detect=false ",
+                "passwd/user-fullname={{ user `ssh_fullname` }} ",
+                "passwd/user-password={{ user `ssh_password` }} ",
+                "passwd/user-password-again={{ user `ssh_password` }} ",
+                "passwd/username={{ user `ssh_username` }} ",
+                "-- <enter>"
+            ],
+            "cpus": "{{ user `vm_cpus`}}",
+            "disk_size": "{{ user `image_size` }}",
+            "floppy_files":
+            [
+                "shared/{{ user `preseed` }}"
+            ],
+            "headless": "{{ user `headless` }}",
+            "http_directory": "shared/",
+            "iso_checksum": "{{ user `iso_checksum` }}",
+            "iso_checksum_type": "{{ user `iso_checksum_type` }}",
+            "iso_urls": [ "{{ user `iso_url` }}" ],
+            "memory": "{{ user `vm_memory`}}",
+            "output_directory": "npb/{{ user `image_name` }}-image",
+            "qemuargs":
+            [
+                [ "-cpu", "host" ],
+                [ "-display", "none" ]
+            ],
+            "qemu_binary":"/usr/bin/qemu-system-x86_64",
+            "shutdown_command": "echo '{{ user `ssh_password` }}'|sudo -S shutdown -P now",
+            "ssh_password": "{{ user `ssh_password` }}",
+            "ssh_username": "{{ user `ssh_username` }}",
+            "ssh_wait_timeout": "60m",
+            "vm_name": "{{ user `image_name` }}"
+        }
+    ],
+    "provisioners":
+    [
+        {
+            "type": "file",
+            "source": "../gem5/util/m5/m5",
+            "destination": "/home/gem5/"
+        },
+        {
+            "type": "file",
+            "source": "shared/serial-getty@.service",
+            "destination": "/home/gem5/"
+        },
+        {
+            "type": "file",
+            "source": "npb/runscript.sh",
+            "destination": "/home/gem5/"
+        },
+        {
+            "type": "file",
+            "source": "npb/npb-hooks/NPB3.3.1/NPB3.3-OMP",
+            "destination": "/home/gem5/"
+        },
+        {
+            "type": "shell",
+            "execute_command": "echo '{{ user `ssh_password` }}' | {{.Vars}} sudo -E -S bash '{{.Path}}'",
+            "scripts":
+            [
+                "npb/post-installation.sh",
+                "npb/npb-install.sh"
+            ]
+        }
+    ],
+    "variables":
+    {
+        "boot_command_prefix": "<enter><wait><f6><esc><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs>",
+        "desktop": "false",
+        "image_size": "12000",
+        "headless": "true",
+        "iso_checksum": "34416ff83179728d54583bf3f18d42d2",
+        "iso_checksum_type": "md5",
+        "iso_name": "ubuntu-18.04.2-server-amd64.iso",
+        "iso_url": "http://old-releases.ubuntu.com/releases/18.04.2/ubuntu-18.04.2-server-amd64.iso",
+        "locale": "en_US",
+        "preseed" : "preseed.cfg",
+        "hostname": "gem5",
+        "ssh_fullname": "gem5",
+        "ssh_password": "12345",
+        "ssh_username": "gem5",
+        "vm_cpus": "16",
+        "vm_memory": "8192",
+        "image_name": "npb"
+  }
+
+}
+```
+
+**npb.json** is our primary .json configuration file. The provisioners and variables section of this file configure the files that need to be transferred to the disk and other things like disk image's name.
+
+Next, download packer (if not already downloaded) in the disk-image folder:
+
+```
+cd disk-image/
+wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip
+unzip packer_1.4.3_linux_amd64.zip
+```
+Now, to build the disk image inside the disk-image folder, run:
+
+```
+./packer validate npb/npb.json
+
+./packer build npb/npb.json
+```
+
+Once this process succeeds, the created disk image can be found on `npb/npb-image/npb`.
+A disk image already created following the above instructions can be found, gzipped, [here](http://dist.gem5.org/dist/v20-1/images/x86/ubuntu-18-04/npb.img.gz).
+
+## Compiling the linux kernel
+
+In this tutorial, we use one of the LTS (long term support) releases of linux kernel v4.19.83 with gem5 to run NAS parallel benchmarks.
+First, get the linux kernel config file from [here](https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/boot-exit/linux-configs/), and place it in npb-tests folder.
+Then, we will get the linux source of version 4.19.83:
+
+```
+git clone --branch v4.19.83 --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
+mv linux linux-stable
+cd linux-stable
+```
+Compile the linux kernel from its source (using already downloaded config file config.4.19.83):
+
+```
+cp ../config.4.19.83 .config
+make -j8
+cp vmlinux vmlinux-4.19.83
+```
+
+**Note:** The above instructions are tested with `gcc 7.5.0` and an already compiled Linux binary can be downloaded from the following link:
+
+- [vmlinux-4.19.83](http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-4.19.83)
+
+## gem5 run scripts
+
+Next, we need to add gem5 run scripts. We will do that in a folder named configs-npb-tests.
+Get the run script named run_npb.py from [here](https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/npb/configs/run_npb.py), and other system configuration files from
+[here]((https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/npb/configs/system/).
+
+The main script `run_npb.py` expects following arguments:
+
+**kernel:** path to the Linux kernel.
+
+**disk:** path to the npb disk image.
+
+**cpu:** CPU model (`kvm`, `atomic`, `timing`).
+
+**mem_sys:** memory system (`classic`, `MI_example`, `MESI_Two_Level`, `MOESI_CMP_directory`).
+
+**benchmark:** NPB benchmark to execute (`bt.A.x`, `cg.A.x`, `ep.A.x`, `ft.A.x`, `is.A.x`, `lu.A.x`, `mg.A.x`,  `sp.A.x`).
+
+**Note:**
+By default, the previously written instructions to build npb disk image will build class `A`,`B`,`C` and `D` of NPB in the disk image.
+We have only tested class `A` of the NPB.
+Replace `A` with any other class in the above listed benchmark names to test with other classes.
+
+**num_cpus:** number of CPU cores.
+
+## Database and Celery Server
+
+If not already running/created, you can create a database using:
+
+```sh
+`docker run -p 27017:27017 -v <absolute path to the created directory>:/data/db --name mongo-<some tag> -d mongo`
+```
+in a newly created directory.
+
+If not already installed, install `RabbitMQ` on your system (before running celery) using:
+
+```sh
+apt-get install rabbitmq-server
+```
+
+Now, run celery server using:
+
+```sh
+celery -E -A gem5art.tasks.celery worker --autoscale=[number of workers],0
+```
+
+**Note:** Celery is not required to run gem5 jobs with gem5art. You can also use python multiprocessing library based function calls (provided by gem5art) to launch these jobs in parallel (we will show how to do that later in our launch script).
+
+
+## Creating a launch script
+Finally, we will create a launch script with the name **launch_npb_tests.py**, which will be responsible for registering the artifacts to be used and then launching gem5 jobs.
+
+The first thing to do in the launch script is to import required modules and classes:
+
+```python
+import os
+import sys
+from uuid import UUID
+from itertools import starmap
+from itertools import product
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+import multiprocessing as mp
+```
+
+Next, we will register artifacts. For example, to register packer artifact we will add the following lines:
+
+```python
+packer = Artifact.registerArtifact(
+    command = '''wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip;
+    unzip packer_1.4.3_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in August/19 from hashicorp.'
+)
+```
+
+For our npb-tests repo,
+
+```python
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://your-remote-add/npb-tests.git',
+    typ = 'git repo',
+    name = 'npb-tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main repo to run npb with gem5'
+)
+```
+
+Note that the name of the artifact (returned by the registerArtifact method) is totally up to the user as well as most of the other attributes of these artifacts.
+
+For all other artifacts, add following lines in launch_npb_tests.py:
+
+```python
+gem5_repo = Artifact.registerArtifact(
+    command = 'git clone https://gem5.googlesource.com/public/gem5',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 from googlesource and checked out v20.1.0.0'
+)
+
+m5_binary = Artifact.registerArtifact(
+    command = 'scons build/x86/out/m5',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/build/x86/out/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+
+disk_image = Artifact.registerArtifact(
+    command = 'packer build npb.json',
+    typ = 'disk image',
+    name = 'npb',
+    cwd = 'disk-image/npb',
+    path = 'disk-image/npb/npb-image/npb',
+    inputs = [packer, experiments_repo, m5_binary,],
+    documentation = 'Ubuntu with m5 binary and NPB (with ROI annotations: darchr/npb-hooks/) installed.'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout v20.1.0.0;
+    scons build/X86/gem5.opt -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on v20.1.0.0'
+)
+
+gem5_binary_MESI_Two_Level = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout v20.1.0.0;
+    scons build/X86_MESI_Two_Level/gem5.opt --default=X86 PROTOCOL=MESI_Two_Level SLICC_HTML=True -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86_MESI_Two_Level/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on v20.1.0.0'
+)
+
+linux_repo = Artifact.registerArtifact(
+    command = '''git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git;
+    mv linux linux-stable''',
+    typ = 'git repo',
+    name = 'linux-stable',
+    path =  'linux-stable/',
+    cwd = './',
+    documentation = 'linux kernel source code repo from June 24-2020'
+)
+
+linux_binary = Artifact.registerArtifact(
+    name = 'vmlinux-4.19.83',
+    typ = 'kernel',
+    path = 'linux-stable/vmlinux-4.19.83',
+    cwd = 'linux-stable/',
+    command = '''
+    cp ../config.4.19.83 .config;
+    make -j8;
+    cp vmlinux vmlinux-4.19.83;
+    ''',
+    inputs = [experiments_repo, linux_repo,],
+    documentation = "kernel binary for v4.19.83",
+)
+```
+
+Once, all the artifacts are registered the next step is to launch all gem5 jobs. To do that, first we will create a method `createRun` to create gem5art runs based on a few arguments:
+
+
+```python
+
+def createRun(bench, clas, cpu, mem, num_cpu):
+
+    if mem == 'MESI_Two_Level':
+        binary_gem5 = 'gem5/build/X86_MESI_Two_Level/gem5.opt'
+        artifact_gem5 = gem5_binary_MESI_Two_Level
+    else:
+        binary_gem5 = 'gem5/build/X86/gem5.opt'
+        artifact_gem5 = gem5_binary
+
+    return gem5Run.createFSRun(
+        'npb with gem5-20.1',
+        binary_gem5,
+        'configs-npb-tests/run_npb.py',
+        f'''results/run_npb_multicore/{bench}/{clas}/{cpu}/{num_cpu}''',
+        artifact_gem5, gem5_repo, experiments_repo,
+        'linux-stable/vmlinux-4.19.83',
+        'disk-image/npb/npb-image/npb',
+        linux_binary, disk_image,
+        cpu, mem, bench.replace('.x', f'.{clas}.x'), num_cpu,
+        timeout = 240*60*60 #240 hours
+        )
+```
+
+Next, initialize all the parameters to pass to `createRun` method, depending on the configuration space we want to test:
+
+```python
+if __name__ == "__main__":
+    num_cpus = ['1', '8']
+    benchmarks = ['is.x', 'ep.x', 'cg.x', 'mg.x','ft.x', 'bt.x', 'sp.x', 'lu.x']
+
+    classes = ['A']
+    mem_sys = ['MESI_Two_Level']
+    cpus = ['kvm', 'timing']
+```
+
+Then, to run actual jobs depending on if you want to use celery or python multiprocessing library, add the following in your launch script:
+
+## If Using Celery
+
+```python
+    # For the cross product of tests, create a run object.
+    runs = starmap(createRun, product(benchmarks, classes, cpus, mem_sys, num_cpus))
+    # Run all of these experiments in parallel
+    for run in runs:
+        run_gem5_instance.apply_async((run, os.getcwd(),))
+```
+
+
+## If Using Python Multiprocessing Library:
+
+```python
+    def worker(run):
+        run.run()
+        json = run.dumpsJson()
+        print(json)
+
+    jobs = []
+
+    # For the cross product of tests, create a run object.
+    runs = starmap(createRun, product(benchmarks, classes, cpus, mem_sys, num_cpus))
+    # Run all of these experiments in parallel
+    for run in runs:
+        jobs.append(run)
+
+    with mp.Pool(mp.cpu_count() // 2) as pool:
+         pool.map(worker, jobs)
+```
+
+The above lines are responsible for looping through all possible combinations of variables involved in this experiment.
+For each combination, a gem5Run object is created and eventually passed to run_gem5_instance to be executed asynchronously if using Celery.
+In case of python multiprocessing library, these run objects are pushed to a list and then mapped to a job pool.
+Look at the definition of `createFSRun()` [here](../main/run.html) to understand the use of passed arguments.
+
+Here, we are using a timeout of 240 hours, after which the particular gem5 job will be killed (assuming that gem5 should complete the booting process of linux kernel on the given hardware resources). You can configure this time according to your settings.
+
+The complete launch script is available [here:](https://github.com/darchr/gem5art/blob/master/docs/launch-scripts/launch_npb_tests.py).
+Finally, make sure you are in python virtual env and then run the script:
+
+```python
+python launch_boot_tests.py
+```
+
+## Results
+
+Once you run the launch script, the declared artifacts will be registered by gem5art and stored in the database.
+Celery will run as many jobs in parallel as allowed by the user (at the time of starting the server).
+As soon as a gem5 job finishes, a compressed version of the results will be stored in the database as well.
+User can also query the database using the methods discussed in the [Artifacts](../main/artifacts), [Runs](../main/run) sections and [boot-test](boot-tutorial) tutorial previously.
+
+The status of working of the NAS parallel benchmarks on gem5 based on the results from the experiments of this tutorial is following:
+
+![](/assets/img/gem5art//npb_X86KvmCPU_MESI_Two_Level.svg)
+![](/assets/img/gem5art//npb_TimingSimpleCPU_MESI_Two_Level.svg)
+
+You can look [here](https://www.gem5.org/documentation/benchmark_status/gem5-20) for the latest status of these tests on gem5.
diff --git a/_pages/documentation/gem5art/tutorials/tutorial_3_parsec.md b/_pages/documentation/gem5art/tutorials/tutorial_3_parsec.md
new file mode 100644
index 0000000..4c1b854
--- /dev/null
+++ b/_pages/documentation/gem5art/tutorials/tutorial_3_parsec.md
@@ -0,0 +1,549 @@
+---
+layout: documentation
+title: PARSEC Tutorial
+doc: gem5art
+parent: tutorial
+permalink: /documentation/gem5art/tutorials/parsec-tutorial
+Authors:
+  - Mahyar Samani
+---
+
+# Tutorial: Run PARSEC Benchmarks with gem5
+
+## Introduction
+
+In this tutorial, we will use gem5art to create a disk image for PARSEC benchmarks ([PARSEC](https://dl.acm.org/doi/10.1145/1454115.1454128)) and then run the benchmarks using gem5.
+PARSEC is mainly designed to represent the applications that require a vast amount of shared-memory.
+
+Following are their details:
+
+Kernels:
+- **canneal:** Simulated cache-aware annealing to optimize routing cost of a chip design
+- **dedup:** Next-generation compression with data deduplication
+- **streamcluster:** Online clustering of an input stream
+
+Pseudo Applications:
+- **blackscholes:** Option pricing with Black-Scholes Partial Differential Equation (PDE)
+- **bodytrack:** Body tracking of a person
+- **facesim:** Simulates the motions of a human face
+- **ferret:** Content similarity search server
+- **fluidanimate:** Fluid dynamics for animation purposes with Smoothed Particle Hydrodynamics (SPH) method
+- **freqmine:** Frequent itemset mining
+- **raytrace:** Real-time raytracing
+- **swaptions:** Pricing of a portfolio of swaptions
+- **vips:** Image processing ([Project Website](https://github.com/libvips/libvips))
+- **x264:** H.264 video encoding ([Project Website](http://www.videolan.org/developers/x264.html))
+
+There are different sizes for possible inputs to each workload. Each size is explained below:
+- **test:** very small set of inputs just to test the functionality of the program.
+- **simdev:** small set of inputs intended to generate general behaviour of each program. Mainly used for simulators and development.
+- **simsmall, simmedium, simlarge:** variable size inputs appropriate for testing microarchitectures with simulators.
+- **native:** very large set of inputs intended for native execution.
+
+This tutorial follows the following directory structure (inside the main directory):
+
+- configs-parsec-tests: gem5 run and configuration scripts to run PARSEC
+- disk-image: contains packer script and template files used to build a disk image.
+The built disk image will be stored in the same folder
+- gem5: gem5 [source code](https://gem5.googlesource.com/public/gem5) and the compiled binary
+- linux-stable: linux kernel [source code](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git)  used for full-system experiments
+- config.4.19.83: linux kernel config file used for its compilation
+- results: directory to store the results of the experiments (generated once gem5 jobs are executed)
+- launch_parsec_tests.py:  gem5 jobs launch script (creates all of the needed artifacts as well)
+
+
+## Setting up the environment
+First, we need to create the main directory named parsec-tests (from where we will run everything) and turn it into a git repository.
+Through the use of parsec-tests git repo, we will try to keep track of changes in those files which are not included in any git repo otherwise.
+An example of such files is gem5 run and config scripts (config-parsec-tests).
+We want to make sure that we can keep record of any changes in these scripts, so that a particular run of PARSEC benchmarks can be associated with a particular snapshot of these files.
+We also need to add a git remote to this repo pointing to a remote location where we want this repo to be hosted.
+
+```sh
+mkdir parsec-tests
+cd parsec-tests
+git init
+git remote add origin https://your-remote-add/parsec-tests.git
+```
+
+We also need to add a .gitignore file in our git repo, to avoid tracking those files which are not important or will be tracked through other git repos:
+
+```sh
+*.pyc
+m5out
+.vscode
+results
+venv
+disk-image/packer
+disk-image/packer_1.4.3_linux_amd64.zip
+disk-image/parsec/parsec-image/parsec
+disk-image/parsec/
+disk-image/parsec-benchmark/
+disk-image/packer_cache
+gem5
+linux-stable/
+```
+
+gem5art relies on Python 3, so we suggest creating a virtual environment before using gem5art.
+
+```sh
+virtualenv -p python3 venv
+source venv/bin/activate
+```
+
+gem5art can be installed (if not already) using pip:
+
+```sh
+pip install gem5art-artifact gem5art-run gem5art-tasks
+```
+
+## Building gem5
+
+For instructions on how to build gem5 look [here](npb-tutorial##Building-gem5).
+
+## Creating a disk image
+First create a disk-image folder where we will keep all disk image related files:
+
+```sh
+mkdir disk-image
+```
+
+We will follow the similar directory structure as discussed in [Disk Images](../main/disks) section.
+Add a folder named shared for config files which will be shared among all disk images (and will be kept to their defaults) and one folder named parsec which will contain files configured for PARSEC disk image. Add [preseed.cfg](https://github.com/darchr/gem5art/blob/master/docs/disks/shared/preseed.cfg) and [serial-getty@.service](https://github.com/darchr/gem5art/blob/master/docs/disks/shared/serial-getty@.service) in shared/.
+
+In parsec/ we will add the benchmark source first, which will eventually be transferred to the disk image through our parsec.json file.
+
+```sh
+cd disk-image/parsec-benchmark
+git clone https://github.com/darchr/parsec-benchmark.git
+```
+
+This source of PARSEC has ROI (region of interest) annotations for each benchmark which will be used by gem5 to
+separate out simulation statistics of the important parts of a program from the rest of the program.
+Basically, gem5 magic instructions are used before and after the ROI which exit the guest and transfer control to gem5 run script which can then do things like dumping or resetting stats or switching to cpu of interest.
+
+Next, we will add few other files in parsec/ which will be used for compilation of PARSEC inside the disk image and eventually running of these benchmarks with gem5.
+These files will be moved from host to the disk image using parsec.json file as we will soon see.
+
+First, create a file parsec-install.sh, which will be executed inside the disk image (once it is built) and will install PARSEC on the disk image:
+
+```sh
+# install build-essential (gcc and g++ included) and gfortran
+
+#Compile PARSEC
+
+cd /home/gem5/
+su gem5
+echo "12345" | sudo -S apt update
+
+# Allowing services to restart while updating some
+# libraries.
+sudo apt install -y debconf-utils
+sudo debconf-get-selections | grep restart-without-asking > libs.txt
+sed -i 's/false/true/g' libs.txt
+while read line; do echo $line | sudo debconf-set-selections; done < libs.txt
+sudo rm libs.txt
+##
+
+# Installing packages needed to build PARSEC
+sudo apt install -y build-essential
+sudo apt install -y m4
+sudo apt install -y git
+sudo apt install -y python
+sudo apt install -y python-dev
+sudo apt install -y gettext
+sudo apt install -y libx11-dev
+sudo apt install -y libxext-dev
+sudo apt install -y xorg-dev
+sudo apt install -y unzip
+sudo apt install -y texinfo
+sudo apt install -y freeglut3-dev
+##
+
+# Building PARSEC
+
+echo "12345" | sudo -S chown gem5 -R parsec-benchmark/
+echo "12345" | sudo -S chgrp gem5 -R parsec-benchmark/
+cd parsec-benchmark
+./install.sh
+./get-inputs
+cd ..
+echo "12345" | sudo -S chown gem5 -R parsec-benchmark/
+echo "12345" | sudo -S chgrp gem5 -R parsec-benchmark/
+##
+```
+
+In parsec/, create a file post-installation.sh and add following lines to it:
+
+```sh
+#!/bin/bash
+echo 'Post Installation Started'
+
+mv /home/gem5/serial-getty@.service /lib/systemd/system/
+
+mv /home/gem5/m5 /sbin
+ln -s /sbin/m5 /sbin/gem5
+
+# copy and run outside (host) script after booting
+cat /home/gem5/runscript.sh >> /root/.bashrc
+
+echo 'Post Installation Done'
+```
+
+This post-installation.sh script (which is a script to run after Ubuntu is installed on the disk image) installs m5 and copies the contents of runscript.sh to .bashrc.
+Therefore, we need to add those things in runscript.sh which we want to execute as soon as the system boots up.
+Create runscript.sh in parsec/ and add following lines to it:
+
+```sh
+#!/bin/sh
+
+m5 readfile > script.sh
+if [ -s script.sh ]; then
+    # if the file is not empty, execute it
+    chmod +x script.sh
+    ./script.sh
+    m5 exit
+fi
+# otherwise, drop to the terminal
+```
+runscript.sh uses m5 readfile to read the contents of a script which is how gem5 passes scripts to the simulated system from the host system.
+The passed script will then be executed and will be responsible for running benchmark/s which we will look into more later.
+
+Finally, create parsec.json and add following contents:
+
+```json
+{
+    "builders":
+    [
+        {
+            "type": "qemu",
+            "format": "raw",
+            "accelerator": "kvm",
+            "boot_command":
+            [
+                "{{ user `boot_command_prefix` }}",
+                "debian-installer={{ user `locale` }} auto locale={{ user `locale` }} kbd-chooser/method=us ",
+                "file=/floppy/{{ user `preseed` }} ",
+                "fb=false debconf/frontend=noninteractive ",
+                "hostname={{ user `hostname` }} ",
+                "/install/vmlinuz noapic ",
+                "initrd=/install/initrd.gz ",
+                "keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA ",
+                "keyboard-configuration/variant=USA console-setup/ask_detect=false ",
+                "passwd/user-fullname={{ user `ssh_fullname` }} ",
+                "passwd/user-password={{ user `ssh_password` }} ",
+                "passwd/user-password-again={{ user `ssh_password` }} ",
+                "passwd/username={{ user `ssh_username` }} ",
+                "-- <enter>"
+            ],
+            "cpus": "{{ user `vm_cpus`}}",
+            "disk_size": "{{ user `image_size` }}",
+            "floppy_files":
+            [
+                "shared/{{ user `preseed` }}"
+            ],
+            "headless": "{{ user `headless` }}",
+            "http_directory": "shared/",
+            "iso_checksum": "{{ user `iso_checksum` }}",
+            "iso_checksum_type": "{{ user `iso_checksum_type` }}",
+            "iso_urls": [ "{{ user `iso_url` }}" ],
+            "memory": "{{ user `vm_memory`}}",
+            "output_directory": "parsec/{{ user `image_name` }}-image",
+            "qemuargs":
+            [
+                [ "-cpu", "host" ],
+                [ "-display", "none" ]
+            ],
+            "qemu_binary":"/usr/bin/qemu-system-x86_64",
+            "shutdown_command": "echo '{{ user `ssh_password` }}'|sudo -S shutdown -P now",
+            "ssh_password": "{{ user `ssh_password` }}",
+            "ssh_username": "{{ user `ssh_username` }}",
+            "ssh_wait_timeout": "60m",
+            "vm_name": "{{ user `image_name` }}"
+        }
+    ],
+    "provisioners":
+    [
+        {
+            "type": "file",
+            "source": "../gem5/util/m5/m5",
+            "destination": "/home/gem5/"
+        },
+        {
+            "type": "file",
+            "source": "shared/serial-getty@.service",
+            "destination": "/home/gem5/"
+        },
+        {
+            "type": "file",
+            "source": "parsec/runscript.sh",
+            "destination": "/home/gem5/"
+        },
+        {
+            "type": "file",
+            "source": "parsec/parsec-benchmark/",
+            "destination": "/home/gem5/"
+        },
+        {
+            "type": "shell",
+            "execute_command": "echo '{{ user `ssh_password` }}' | {{.Vars}} sudo -E -S bash '{{.Path}}'",
+            "scripts":
+            [
+                "parsce/post-installation.sh",
+                "parsec/parsec-install.sh"
+            ]
+        }
+    ],
+    "variables":
+    {
+        "boot_command_prefix": "<enter><wait><f6><esc><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs>",
+        "desktop": "false",
+        "image_size": "12000",
+        "headless": "true",
+        "iso_checksum": "34416ff83179728d54583bf3f18d42d2",
+        "iso_checksum_type": "md5",
+        "iso_name": "ubuntu-18.04.2-server-amd64.iso",
+        "iso_url": "http://old-releases.ubuntu.com/releases/18.04.2/ubuntu-18.04.2-server-amd64.iso",
+        "locale": "en_US",
+        "preseed" : "preseed.cfg",
+        "hostname": "gem5",
+        "ssh_fullname": "gem5",
+        "ssh_password": "12345",
+        "ssh_username": "gem5",
+        "vm_cpus": "16",
+        "vm_memory": "8192",
+        "image_name": "parsec"
+  }
+
+}
+```
+
+parsec.json is our primary .json configuration file. The provisioners and variables section of this file configure the files that need to be transferred to the disk and other things like disk image's name.
+
+Next, download packer (if not already downloaded) in the disk-image folder:
+
+```
+cd disk-image/
+wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip
+unzip packer_1.4.3_linux_amd64.zip
+```
+Now, to build the disk image inside the disk-image folder, run:
+
+```
+./packer validate parsec/parsec.json
+
+./packer build parsec/parsec.json
+```
+
+## Compiling the linux kernel
+
+Follow the instructions [here](npb-tutorial##Compiling-the-linux-kernel) to compile your linux kernel
+
+## gem5 run scripts
+
+Next, we need to add gem5 run scripts. We will do that in a folder named configs-parsec-tests.
+Get the run script named run_parsec.py from [here](https://github.com/darchr/gem5art-experiments/blob/master/gem5-configs/configs-parsec-tests/run_parsec.py), and other system configuration files from
+[here](https://github.com/darchr/gem5art/blob/master/docs/gem5-configs/configs-parsec-tests/system/).
+The run script (run_parsec.py) takes the following arguments:
+- kernel: compiled kernel to be used for simulation
+- disk: built disk image to be used for simulation
+- cpu: the cpu model to use (e.g. kvm or atomic)
+- benchmark: PARSEC workload to run (e.g. blackscholes, bodytrack, facesim, etc.)
+- num_cpus: number of parallel cpus to be simulated
+
+## Database and Celery Server
+
+To create a database and start a celery server follow the instructions [here](npb-tutorial##Database-and-Celery-Server).
+
+## Creating a launch script
+Finally, we will create a launch script with the name launch_parsec_tests.py, which will be responsible for registering the artifacts to be used and then launching gem5 jobs.
+
+The first thing to do in the launch script is to import required modules and classes:
+
+```python
+import os
+import sys
+from uuid import UUID
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+```
+
+Next, we will register artifacts. For example, to register packer artifact we will add the following lines:
+
+```python
+packer = Artifact.registerArtifact(
+    command = '''wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip;
+    unzip packer_1.4.3_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in August from hashicorp.'
+)
+```
+
+For our parsec-tests repo,
+
+```python
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://your-remote-add/parsec-tests.git',
+    typ = 'git repo',
+    name = 'parsec-tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main repo to run parsec with gem5'
+)
+```
+
+Note that the name of the artifact (returned by the registerArtifact method) is totally up to the user as well as most of the other attributes of these artifacts.
+
+For all other artifacts, add following lines in launch_parsec_tests.py:
+
+```python
+parsec_repo = Artifact.registerArtifact(
+    command = '''mkdir parsec-benchmark/;
+    cd parsec-benchmark;
+    git clone https://github.com/darchr/parsec-benchmark.git;''',
+    typ = 'git repo',
+    name = 'parsec_repo',
+    path =  './disk-image/parsec-benchmark/parsec-benchmark/',
+    cwd = './disk-image/',
+    documentation = 'main repo to copy parsec source to the disk-image'
+)
+
+gem5_repo = Artifact.registerArtifact(
+    command = '''
+        git clone https://gem5.googlesource.com/public/gem5;
+        cd gem5;
+        git remote add darchr https://github.com/darchr/gem5;
+        git fetch darchr;
+        git cherry-pick 6450aaa7ca9e3040fb9eecf69c51a01884ac370c;
+        git cherry-pick 3403665994b55f664f4edfc9074650aaa7ddcd2c;
+    ''',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 master branch from googlesource (Nov 18, 2019) and cherry-picked 2 commits from darchr/gem5'
+)
+
+m5_binary = Artifact.registerArtifact(
+    command = 'make -f Makefile.x86',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+
+disk_image = Artifact.registerArtifact(
+    command = './packer build parsec/parsec.json',
+    typ = 'disk image',
+    name = 'parsec',
+    cwd = 'disk-image',
+    path = 'disk-image/parsec/parsec-image/parsec',
+    inputs = [packer, experiments_repo, m5_binary, parsec_repo,],
+    documentation = 'Ubuntu with m5 binary and PARSEC installed.'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary'
+)
+
+linux_repo = Artifact.registerArtifact(
+    command = '''git clone --branch v4.19.83 --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git;
+    mv linux linux-stable''',
+    typ = 'git repo',
+    name = 'linux-stable',
+    path =  'linux-stable/',
+    cwd = './',
+    documentation = 'linux kernel source code repo'
+)
+
+linux_binary = Artifact.registerArtifact(
+    name = 'vmlinux-4.19.83',
+    typ = 'kernel',
+    path = 'linux-stable/vmlinux-4.19.83',
+    cwd = 'linux-stable/',
+    command = '''
+    cp ../config.4.19.83 .config;
+    make -j8;
+    cp vmlinux vmlinux-4.19.83;
+    ''',
+    inputs = [experiments_repo, linux_repo,],
+    documentation = "kernel binary for v4.19.83"
+)
+```
+
+Once, all of the artifacts are registered, the next step is to launch all gem5 jobs. To do that, add the following lines in your script:
+
+```python
+if __name__ == "__main__":
+    num_cpus = ['1']
+    benchmarks = ['blackscholes', 'bodytrack', 'canneal', 'dedup','facesim', 'ferret', 'fluidanimate', 'freqmine', 'raytrace', 'streamcluster', 'swaptions', 'vips', 'x264']
+
+    sizes = ['simsmall', 'simlarge', 'native']
+    cpus = ['kvm', 'timing']
+
+    for cpu in cpus:
+        for num_cpu in num_cpus:
+            for size in sizes:
+                if cpu == 'timing' and size != 'simsmall':
+                    continue
+                for bm in benchmarks:
+                    run = gem5Run.createFSRun(
+                        'parsec_tests',
+                        'gem5/build/X86/gem5.opt',
+                        'configs-parsec-tests/run_parsec.py',
+                        f'''results/run_parsec/{bm}/{size}/{cpu}/{num_cpu}''',
+                        gem5_binary, gem5_repo, experiments_repo,
+                        'linux-stable/vmlinux-4.19.83',
+                        'disk-image/parsec/parsec-image/parsec',
+                        linux_binary, disk_image,
+                        cpu, bm, size, num_cpu,
+                        timeout = 24*60*60 #24 hours
+                        )
+                    run_gem5_instance.apply_async((run, os.getcwd(), ))
+```
+The above lines are responsible for looping through all possible combinations of variables involved in this experiment.
+For each combination, a gem5Run object is created and eventually passed to run_gem5_instance to be
+executed asynchronously using Celery. Note that when using timingSimpleCPU model only size **simsmall** has been used because the other sizes take more than 24 hours to simulate.
+
+
+Finally, make sure you are in python virtual env and then run the script:
+
+```python
+python launch_parsec_tests.py
+```
+
+## Results
+
+Once you run the launch script, the declared artifacts will be registered by gem5art and stored in the database.
+Celery will run as many jobs in parallel as allowed by the user (at the time of starting the server).
+As soon as a gem5 job finishes, a compressed version of the results will be stored in the database as well.
+User can also query the database using the methods discussed in the [Artifacts](../main/artifacts), [Runs](../main/run) sections and [boot-test](boot-tutorial) tutorial previously.
+
+Here is the status of each workload after simulation:
+
+![WorkingStatusKVM](/assets/img/gem5art//WorkingStatusKVM.png)
+![WorkingStatusTiming](/assets/img/gem5art//WorkingStatusTiming.png)
+
+Below are the simulation time for KVM and TimingSimple cpu models.
+
+![SimTimeKVM](/assets/img/gem5art//SimTimeKVM.png)
+![SimTimeTiming](/assets/img/gem5art//SimTimeTiming.png)
+
+The number of instructions run on each cpu model is shown below:
+
+![InstCountKVM](/assets/img/gem5art//InstCountKVM.png)
+![InstCountTiming](/assets/img/gem5art//InstCountTiming.png)
diff --git a/_pages/documentation/gem5art/tutorials/tutorial_4_spec.md b/_pages/documentation/gem5art/tutorials/tutorial_4_spec.md
new file mode 100644
index 0000000..340f868
--- /dev/null
+++ b/_pages/documentation/gem5art/tutorials/tutorial_4_spec.md
@@ -0,0 +1,469 @@
+---
+layout: documentation
+title: SPEC Tutorial
+doc: gem5art
+parent: tutorial
+permalink: /documentation/gem5art/tutorials/spec-tutorial
+Authors:
+  - Hoa Nguyen
+---
+
+# Tutorial: Run SPEC CPU 2017 / SPEC CPU 2006 Benchmarks in Full System Mode with gem5art
+
+## Introduction
+In this tutorial, we will demonstrate how to utilize [gem5art](https://github.com/darchr/gem5art) and [gem5-resources](https://gem5.googlesource.com/public/gem5-resources/) to run [SPEC CPU 2017 benchmarks](https://www.spec.org/cpu2017/) in gem5 full system mode.
+The scripts in this tutorial work with gem5art v1.3.0, gem5 20.1.0.4, and gem5-resources 20.1.0.4.
+
+The content of this tutorial is mostly for conducting SPEC CPU 2017 experiments.
+However, due to the similarity of SPEC 2006 and SPEC 2017 resources, this tutorial also applies to conducting SPEC 2006 experiment by using `src/spec-2006` folder instead of `src/spec-2017` of gem5-resources.
+
+### gem5-resources
+[gem5-resources](https://gem5.googlesource.com/public/gem5-resources/) is an actively maintained collections of gem5-related resources that are commonly used.
+The resources include scripts, binaries and disk images for full system simulation of many commonly used benchmarks.
+This tutorial will offer guidance in utilizing gem5-resources for full system simulation.
+
+
+### gem5 Full System Mode
+Different from gem5 SE mode (system emulation mode), the FS mode (full system mode) uses an actual Linux kernel binary instead of emulating the responsibilities of a typical modern OS such as managing page tables and taking care of system calls.
+As a result, gem5 FS simulation would be more realistic compared to gem5 SE simulation, especially when the interactions between the workload and the OS are significant part of the simulation.
+
+A typical gem5 full system simulation requires a compiled Linux kernel, a disk image containing compiled benchmarks, and gem5 system configurations.
+gem5-resources typically provides all required all of the mentioned resources for every supported benchmark such that one could download the resources and run the experiment without much modification.
+However, due to license issue, gem5-resources does not provide a disk image containing SPEC CPU 2017 benchmarks.
+In this tutorial, we will provide a set of scripts that generates a disk image containing the benchmarks assuming the ISO file of the SPEC CPU 2017 benchmarks is available.
+
+### Overall Structure of the Experiment
+```
+spec-2017/
+  |___ gem5/                                   # gem5 folder
+  |
+  |___ disk-image/
+  |      |___ shared/
+  |      |___ spec-2017/
+  |             |___ spec-2017-image/
+  |             |      |___ spec-2017          # the disk image will be generated here
+  |             |___ spec-2017.json            # the Packer script
+  |             |___ cpu2017-1.1.0.iso         # SPEC 2017 ISO (add here)
+  |
+  |___ configs
+  |      |___ system/
+  |      |___ run_spec.py                      # gem5 run script
+  |
+  |___ vmlinux-4.19.83                         # Linux kernel, link to download provided below
+  |
+  |___ README.md
+
+```
+
+### An Overview of Host System - gem5 Interactions
+![**Figure 1.**](/assets/img/gem5art//spec_tutorial_figure1.png)
+A visual depict of how gem5 interacts with the host system.
+gem5 is configured to do the following: booting the Linux kernel, running the benchmark, and copying the SPEC outputs to the host system.
+However, since we are interested in getting the stats only for the benchmark, we will configure gem5 to exit after the kernel is booted, and then we reset the stats before running the benchmark.
+We use KVM CPU model in gem5 for Linux booting process to quickly boot the system, and after the process is complete, we switch to the desired detailed CPU to run the benchmark.
+Similarly, after the benchmark is complete, gem5 exits to host, which allows us to get the stats at that point.
+After that, optionally, we switch the CPU back to KVM, which allows us to quickly write the SPEC output files to the host.
+
+**Note:** gem5 will output the stats again when the gem5 run is complete.
+Therefore, we will see two sets of stats in one file in stats.txt.
+The stats of the benchmark is the the first part of stats.txt, while the second part of the file contains the stats of the benchmark AND the process of writing output files back to the host.
+We are only interested in the first part of stats.txt.
+
+## Setting up the Experiment
+In this part, we have two concurrent tasks: setting up the resources and documenting the process using gem5art.
+We will structure the [SPEC 2017 resources as laid out by gem5-resources](https://gem5.googlesource.com/public/gem5-resources/+/refs/heads/stable/src/spec-2017/).
+The script `launch_spec2017_experiment.py` will contain the documentation about the artifacts we create and will also serve as Python script that launches the experiment.
+
+### Acquiring gem5-resources and Setting up the Experiment Folder
+First, we clone the gem5-resource repo and check out the stable branch upto the `1fe56ffc94005b7fa0ae5634c6edc5e2cb0b7357` commit, which is the most recent version of gem5-resources that is compatible with gem5 20.1.0.4 as of March 2021.
+```sh
+git clone https://gem5.googlesource.com/public/gem5-resources
+cd gem5-resources
+git checkout 1fe56ffc94005b7fa0ae5634c6edc5e2cb0b7357
+```
+Since all resources related to the SPEC CPU 2006 benchmark suite are in the `src/spec-2017` and other folders in `src/` are not related to this experiment, we set the root folder of the experiment in the `src/spec-2017` folder of the cloned repo.
+To keep track of changes that are specific to `src/spec-2017`, we set up a git structure for the folder.
+Also, the git remote pointing to `origin` should also be setup as gem5art will use `origin` information.
+In the `gem5-resources` folder,
+```sh
+cd src/spec-2017
+git init
+git remote add origin https://remote-address/spec-experiment.git
+```
+We document the root folder of the experiment in `launch_spec2017_experiment.py` as follows,
+```sh
+experiments_repo = Artifact.registerArtifact(
+    command = '''
+        git clone https://gem5.googlesource.com/public/gem5-resources
+        cd gem5-resources
+        git checkout 1fe56ffc94005b7fa0ae5634c6edc5e2cb0b7357
+        cd src/spec-2017
+        git init
+        git remote add origin https://remote-address/spec-experiment.git
+    ''',
+    typ = 'git repo',
+    name = 'spec2017 Experiment',
+    path =  './',
+    cwd = './',
+    documentation = '''
+        local repo to run spec 2017 experiments with gem5 full system mode;
+        resources cloned from https://gem5.googlesource.com/public/gem5-resources upto commit 1fe56ffc94005b7fa0ae5634c6edc5e2cb0b7357 of stable branch
+    '''
+)
+```
+We use `.gitignore` file to ingore changes of certain files and folders.
+In this experiment, we will use this `.gitignore` file,
+```
+*.pyc
+m5out
+.vscode
+results
+gem5art-env
+disk-image/packer
+disk-image/packer_cache
+disk-image/spec-2017/spec-2017-image/spec-2017
+disk-image/spec-2017/cpu2017-1.1.0.iso
+gem5
+vmlinux-4.19.83
+```
+In the script above, we ignore files and folders that we use other gem5art Artifact objects to keep track of them, or the presence of those files and folders do not affect the experiment's results.
+For example, `disk-image/packer` is the path to the packer binary which generates the disk image, and newer versions `packer` probably won't affect the content of the disk image.
+Another example is that we use another gem5art Artifact object to keep track of `vmlinux-4.19.83`, so we put the name of the file in the `.gitignore` file.
+
+**Note:** You probably notice that there are more than one way of keeping track of the files in the experiment folder: either the git structure of the experiment will keep track of a file, or we can create a separate [gem5art Artifact](../main/artifacts) object to keep track of that file.
+The decision of letting the git structure or creating a new Artifact object leads to different outcomes.
+The difference lies on the type of the Artifact object (specified by the `typ` parameter): for Artifact objects that has `typ` of `git repo`, gem5art won't upload the files in the git structure to gem5art's database, instead, it will only keep track of the hash of the HEAD commit of the git structure.
+However, for Artifact's that do **not** have `typ` that is `git repo`, the file specfied in the `path` parameter will be uploaded to the database.
+
+Essentially, we tend to keep small-size files (such as scripts and texts) in a git structure, and to keep large-size files (such as gem5 binaries and disk images) in Artifact's of type `gem5 binary` or `binary`.
+Another important difference is that gem5art does **not** keep track of files in a git Artifact, while it does upload other types of Artifact to its database.
+
+### Building gem5
+In this step, we download the source code and build gem5 v20.1.0.4.
+In the root folder of the experiment,
+
+```sh
+git clone -b v20.1.0.4 https://gem5.googlesource.com/public/gem5
+cd gem5
+scons build/X86/gem5.opt -j8
+```
+
+We have two artifacts: one is the gem5 source code (the gem5 git repo), and the gem5 binary (`gem5.opt`).
+In `launch_spec2017_experiments.py`, we document the step in Artifact objects as follows,
+
+```python
+gem5_repo = Artifact.registerArtifact(
+    command = '''
+        git clone -b v20.1.0.4 https://gem5.googlesource.com/public/gem5
+        cd gem5
+        scons build/X86/gem5.opt -j8
+    ''',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 v20.1.0.4'
+)
+
+
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt -j8',
+    typ = 'gem5 binary',
+    name = 'gem5-20.1.0.4',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'compiled gem5 v20.1.0.4 binary'
+)
+```
+
+### Building m5
+m5 is a binary that facilitates the communication between the host system and the guest system (gem5).
+The use of the m5 binary will be demonstrated in the runscripts that we will describe later.
+m5 binary will be copied to the disk image so that the guest could run m5 binary during the simulation.
+m5 binary should be compiled before we build the disk image.
+
+**Note:** it's important to compile the m5 binary with `-DM5_ADDR=0xFFFF0000` as is default in the SConscript.
+This address is used by the guest binary to communicate with the simulator.
+If you change the address in the guest binary, you also have to update the simulator to use the new address.
+Additionally, when running in KVM, it is required that you use the *address* form of guest<->simulator communication
+and not the pseudo instruction form (i.e., using `-DM5_ADDR` is *required* when compiling a guest binary for which
+you want to run in KVM mode on gem5).
+
+To compile m5 binary, in the root folder of the experiment,
+
+```sh
+cd gem5/util/m5/
+scons build/x86/out/m5
+```
+
+In `launch_spec2017_experiments.py`, we document the step in an Artifact object as follows,
+
+```python
+m5_binary = Artifact.registerArtifact(
+    command = 'scons build/x86/out/m5',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/build/x86/out/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+```
+
+### Building the Disk Image
+In this step, we will build the disk image using [packer](https://www.packer.io/).
+**Note:** If you are interested in modifying the SPEC configuration file, [Appendix II](#TODO) describes how the scripts that build the disk image work.
+Also, more information about using packer and building disk images can be found [here](../main-doc/disks.md).
+
+First, we download the packer binary.
+The current version of packer as of December 2020 is 1.6.6.
+
+```sh
+cd disk-image/
+wget https://releases.hashicorp.com/packer/1.6.6/packer_1.6.6_linux_amd64.zip
+unzip packer_1.6.6_linux_amd64.zip
+rm packer_1.6.6_linux_amd64.zip
+```
+
+In `launch_spec2017_experiments.py`, we document how we obtain the binary as follows,
+
+```python
+packer = Artifact.registerArtifact(
+    command = '''
+        wget https://releases.hashicorp.com/packer/1.6.6/packer_1.6.6_linux_amd64.zip;
+        unzip packer_1.6.6_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded from https://www.packer.io/.'
+)
+```
+
+Second, we build the disk image.
+The script `disk-image/spec-2017/spec-2017.json` specifies how the disk image is built.
+In this step, we assume the SPEC 2017 ISO file is in the `disk-image/spec-2017` folder and the ISO file name is `cpu2017-1.1.0.iso`.
+The path and the name of the ISO file could be changed in the JSON file.
+
+To build the disk image, in the root folder of the experiment,
+
+```sh
+cd disk-image/
+./packer validate spec-2017/spec-2017.json # validate the script, including checking the input files
+./packer build spec-2017/spec-2017.json
+```
+
+The process should take about than an hour to complete on a fairly recent machine with a cable internet speed.
+The disk image will be in `disk-image/spec-2017/spec-2017-image/spec-2017`.
+
+**Note:** Packer will output a URL to a VNC server that could be connected to to inspect the building process.
+
+**Note:** [More about using packer and building disk images](../main/disks).
+
+Now, in `launch_spec2017_experiments.py`, we make an Artifact object of the disk image.
+
+```python
+disk_image = Artifact.registerArtifact(
+    command = './packer build spec-2017/spec-2017.json',
+    typ = 'disk image',
+    name = 'spec-2017',
+    cwd = 'disk-image/',
+    path = 'disk-image/spec-2017/spec-2017-image/spec-2017',
+    inputs = [packer, experiments_repo, m5_binary,],
+    documentation = 'Ubuntu Server with SPEC 2017 installed, m5 binary installed and root auto login'
+)
+```
+
+### Obtaining a Compiled Linux Kernel that Works with gem5
+The compiled Linux kernel binaries that is known to work with gem5 can be found here: [https://www.gem5.org/documentation/general_docs/gem5_resources/](https://www.gem5.org/documentation/general_docs/gem5_resources/).
+
+The Linux kernel configurations that are used to compile the Linux kernel binaries are documented and maintained in gem5-resources: [https://gem5.googlesource.com/public/gem5-resources/+/cee972a1727abd80924dad73d9f3b5cf0f13012d/src/linux-kernel/](https://gem5.googlesource.com/public/gem5-resources/+/cee972a1727abd80924dad73d9f3b5cf0f13012d/src/linux-kernel/).
+
+The following command downloads the compiled Linux kernel of version 4.19.83.
+In the root folder of the experiment,
+
+```sh
+wget http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-4.19.83
+```
+
+Now, `in launch_spec2017_experiments.py`, we make an Artifact object of the Linux kernel binary.
+
+```python
+linux_binary = Artifact.registerArtifact(
+    name = 'vmlinux-4.19.83',
+    typ = 'kernel',
+    path = './vmlinux-4.19.83',
+    cwd = './',
+    command = ''' wget http://dist.gem5.org/dist/v20-1/kernels/x86/static/vmlinux-4.19.83''',
+    inputs = [experiments_repo,],
+    documentation = "kernel binary for v4.19.83",
+)
+```
+
+### gem5 System Configurations
+The gem5 system configurations can be found in the `configs/` folder.
+The gem5 run script located in `configs/run_spec.py`, takes the following parameters:
+* `--kernel`: (required) the path to vmlinux file.
+* `--disk`: (required) the path to spec image.
+* `--cpu`: (required) name of the detailed CPU model.
+Currently, we are supporting the following CPU models: kvm, o3, atomic, timing.
+More CPU models could be added to getDetailedCPUModel() in run_spec.py.
+* `--benchmark`: (required) name of the SPEC CPU 2017 benchmark.
+The availability of the benchmarks could be found at the end of the tutorial.
+* `--size`: (required) size of the benchmark. There are three options: ref, train, test.
+* `--no-copy-logs`: this is an optional parameter specifying whether the spec log files should be copied to the host system.
+* `--allow-listeners`: this is an optional parameter specifying whether gem5 should open ports so that gdb or telnet could connect to. No listeners are allowed by default.
+
+We don't use another Artifact object to document this file.
+The Artifact repository object of the root folder will keep track of the changes of the script.
+
+**Note:** [The first two parameters of the gem5 run script for full system simulation should always be the path to the linux binary and the path to the disk image, in that order](../main/run)
+
+## Running the Experiment
+### Setting up the Python virtual environment
+gem5art code works with Python 3.5 or above.
+
+The following script will set up a python3 virtual environment named gem5art-env. In the root folder of the experiment,
+
+```sh
+virtualenv -p python3 gem5art-env
+```
+
+To activate the virtual environment, in the root folder of the experiment,
+
+```sh
+source gem5art-env/bin/activate
+```
+
+To install the gem5art dependency (this should be done when we are in the virtual environment),
+
+```sh
+pip install gem5art-artifact gem5art-run gem5art-tasks
+```
+
+To exit the virtual environment,
+
+```sh
+deactivate
+```
+
+**Note:** the following steps should be done while using the Python virtual environment.
+
+### Running the Database Server
+The following script will run the MongoDB database server in a docker container.
+
+```sh
+docker run -p 27017:27017 -v /path/in/host:/data/db --name mongo-1 -d mongo
+```
+
+The -p 27017:27017 option maps the port 27017 in the container to port 27017 on the host.
+The -v /path/in/host:/data/db option mounts the /data/db folder in the docker container to the folder /path/in/host in the host.
+The path of the host folder should an absoblute path, and the database files created by MongoDB will be in that folder.
+The --name mongo-1 option specifies the name of the docker container.
+We can use this name to identify to the container.
+The -d option will let the container run in the background.
+mongo is the name of [the offical mongo image](https://hub.docker.com/_/mongo).
+
+
+### Running Celery Server (optional)
+This step is only necessary if you want to use Celery to manage processes.
+Inisde the path in the host specified above,
+
+```sh
+celery -E -A gem5art.tasks.celery worker --autoscale=[number of workers],0
+```
+
+### Creating the Launch Script Running the Experiment
+Now, we can put together the run script!
+In launch_spec2017_experiments.py, we import the required modules and classes at the beginning of the file,
+
+```python
+import os
+import sys
+from uuid import UUID
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_job_pool
+```
+
+And then, we put the launch function at the end of launch_spec2017_experiments.py,
+
+```python
+if __name__ == "__main__":
+    cpus = ['kvm', 'atomic', 'o3', 'timing']
+    benchmark_sizes = {'kvm':    ['test', 'ref'],
+                       'atomic': ['test'],
+                       'o3':     ['test'],
+                       'timing': ['test']
+                      }
+    benchmarks = ["503.bwaves_r", "507.cactuBSSN_r", "508.namd_r", "510.parest_r", "511.povray_r", "519.lbm_r",
+                  "521.wrf_r", "526.blender_r", "527.cam4_r", "538.imagick_r", "544.nab_r", "549.fotonik3d_r",
+                  "554.roms_r", "997.specrand_fr", "603.bwaves_s", "607.cactuBSSN_s", "619.lbm_s", "621.wrf_s",
+                  "627.cam4_s", "628.pop2_s", "638.imagick_s", "644.nab_s", "649.fotonik3d_s", "654.roms_s",
+                  "996.specrand_fs", "500.perlbench_r", "502.gcc_r", "505.mcf_r", "520.omnetpp_r", "523.xalancbmk_r",
+                  "525.x264_r", "531.deepsjeng_r", "541.leela_r", "548.exchange2_r", "557.xz_r", "999.specrand_ir",
+                  "600.perlbench_s", "602.gcc_s", "605.mcf_s", "620.omnetpp_s", "623.xalancbmk_s", "625.x264_s",
+                  "631.deepsjeng_s", "641.leela_s", "648.exchange2_s", "657.xz_s", "998.specrand_is"]
+
+    runs = []
+    for cpu in cpus:
+        for size in benchmark_sizes[cpu]:
+            for benchmark in benchmarks:
+                run = gem5Run.createFSRun(
+                    'gem5 v20.1.0.4 spec 2017 experiment', # name
+                    'gem5/build/X86/gem5.opt', # gem5_binary
+                    'gem5-configs/run_spec.py', # run_script
+                    'results/{}/{}/{}'.format(cpu, size, benchmark), # relative_outdir
+                    gem5_binary, # gem5_artifact
+                    gem5_repo, # gem5_git_artifact
+                    run_script_repo, # run_script_git_artifact
+                    'linux-4.19.83/vmlinux-4.19.83', # linux_binary
+                    'disk-image/spec2017/spec2017-image/spec2017', # disk_image
+                    linux_binary, # linux_binary_artifact
+                    disk_image, # disk_image_artifact
+                    cpu, benchmark, size, # params
+                    timeout = 10*24*60*60 # 10 days
+                )
+                runs.append(run)
+
+
+    run_job_pool(runs)
+```
+The above launch function will run the all the available benchmarks with kvm, atomic, timing, and o3 cpus.
+For kvm, both test and ref sizes will be run, while for the rest, only benchmarks of size test will be run.
+
+Note that the line `'results/{}/{}/{}'.format(cpu, size, benchmark), # relative_outdir` specifies how the results folder is structured.
+The results folder should be carefully structured so that there does not exist two gem5 runs write to the same place.
+
+### Run the Experiment
+Having celery and mongoDB servers running, we can start the experiment.
+
+In the root folder of the experiment,
+
+```sh
+python3 launch_spec2017_experiment.py
+```
+
+**Note:** The URI to a remote database server could be specified by specifying the environment variable `GEM5ART_DB`.
+For example, if the mongo database server is running at `localhost123`, the command to run the launch script would be,
+```sh
+GEM5ART_DB="mongodb://localhost123" python3 launch_spec2017_experiment.py
+```
+
+## Appendix I. Working Status
+Not all benchmarks are compiled in the above set up as of March 2020.
+The working status of SPEC 2017 workloads is available here: [https://www.gem5.org/documentation/benchmark_status/gem5-20#spec-2017-tests](https://www.gem5.org/documentation/benchmark_status/gem5-20#spec-2017-tests).
+
+## Appendix II. Disk Image Generation Scripts
+`disk-image/spec-2017/install-spec2017.sh`: a Bash script that will be executed on the guest machine after Ubuntu Server is installed in the disk image; this script installs depedencies to compile and run SPEC workloads, mounts the SPEC ISO and installs the benchmark suite on the disk image, and creates a SPEC configuration from gcc42 template.
+
+
+`disk-image/spec-2017/post-installation.sh`: a script that will be executed on the guest machine; this script copies the `serial-getty@.service` file to the `systemd` folder, copies m5 binary to `/sbin`, and appends the content of `runscript.sh` to the disk image's `.bashrc` file, which will be executed after the booting process is done.
+
+`disk-image/spec-2017/runscript.sh`: a script that will be copied to `.bashrc` on the disk image so that the commands in this script will be run immediately after the booting process.
+
+`disk-image/spec-2017/spec-2017.json`: contains a configuration telling Packer how the disk image should be built.
+
diff --git a/_pages/documentation/gem5art/tutorials/tutorial_5_microbench.md b/_pages/documentation/gem5art/tutorials/tutorial_5_microbench.md
new file mode 100644
index 0000000..35f1146
--- /dev/null
+++ b/_pages/documentation/gem5art/tutorials/tutorial_5_microbench.md
@@ -0,0 +1,269 @@
+---
+layout: documentation
+title: Microbench Tutorial
+doc: gem5art
+parent: tutorial
+permalink: /documentation/gem5art/tutorials/microbench-tutorial
+Authors:
+  - Ayaz Akram
+  - Nadia Etemadi
+---
+
+# Tutorial: Run Microbenchmarks with gem5
+
+## Introduction
+In this tutorial, we will learn how to run some simple microbenchmarks using gem5art.
+Microbenchmarks are small benchmarks designed to test a component of a larger system.
+The particular microbenchmarks we are using in this tutorial were originally developed at the
+[University of Wisconsin-Madison](https://github.com/VerticalResearchGroup/microbench).
+This microbenchmark suite is divided into different control, execution and memory benchmarks.
+We will use system emulation (SE) mode of gem5 to run these microbenchmarks with gem5.
+
+
+This tutorial follows the following directory structure:
+
+- configs-micro-tests: the base gem5 configuration to be used to run SE mode simulations
+- gem5: gem5 [source code](https://gem5.googlesource.com/public/gem5) and the compiled binary
+
+- results: directory to store the results of the experiments (generated once gem5 jobs are executed)
+- launch_micro_tests.py: gem5 jobs launch script (creates all of the needed artifacts as well)
+
+
+## Setting up the environment
+First, we need to create the main directory named micro-tests (from where we will run everything) and turn it into a git repository like we did in the previous tutorials.
+Next, add a git remote to this repo pointing to a remote location where we want this repo to be hosted.
+
+```sh
+mkdir micro-tests
+cd micro-tests
+git init
+git remote add origin https://your-remote-add/micro-tests.git
+```
+
+We also need to add a .gitignore file in our git repo to leave unnecessary files untracked:
+
+```
+*.pyc
+m5out
+.vscode
+results
+gem5
+venv
+```
+
+Next, we will create a virtual python3 environment before using gem5art.
+
+```sh
+virtualenv -p python3 venv
+source venv/bin/activate
+```
+This virtual environment needs to be running in order to run experiments with gem5art.
+You can deactivate the environment at any time with the command `deactivate`.
+
+gem5art can be installed (if not already) using pip:
+
+```sh
+pip install gem5art-artifact gem5art-run gem5art-tasks
+```
+
+## Build gem5
+
+First clone gem5 in your micro-tests repo:
+
+```sh
+git clone https://gem5.googlesource.com/public/gem5
+cd gem5
+```
+
+Before building gem5, we need to apply a [patch](https://github.com/darchr/gem5/commit/38d07ab0251ea8f5181abc97a534bb60157b2b5d) to the source repo.
+As you will later see, we will run gem5 with various memory configs.
+**Inf** (SimpleMemory with 0ns latency) and **SingleCycle** (SimpleMemory with 1ns latency) do not use any caches.
+Therefore, to implement cacheless SimpleMemory, we need to add support of vector ports in SimpleMemory by applying this patch.
+This becomes necessary as we need to connect cpu's icache and dcache ports to the mem_ctrl port (a vector port).
+You can download and apply the patch as follows:
+
+```sh
+wget https://github.com/darchr/gem5/commit/f0a358ee08aba1563c7b5277866095b4cbb7c36d.patch
+git am f0a358ee08aba1563c7b5277866095b4cbb7c36d.patch --reject
+```
+
+Now, build gem5:
+
+```sh
+scons build/X86/gem5.opt -j8
+```
+
+## Download and compile the microbenchmarks
+Download the microbenchmarks:
+
+```sh
+git clone https://github.com/darchr/microbench.git
+```
+
+Commit the source of microbenchmarks to the micro-tests repo, so that the current version of the microbenchmarks repo becomes a part of the micro-tests repository.
+
+```sh
+git add microbench/
+git commit -m "Add microbenchmarks"
+```
+
+Compile the benchmarks:
+
+```sh
+cd microbench
+make
+```
+
+By default, these microbenchmarks are compiled for the x86 ISA, which will be our focus in this tutorial.
+You can use the following commands to compile these benchmarks for ARM and RISC-V ISAs if you wish to work with them.
+
+```sh
+make ARM
+
+make RISCV
+```
+
+## gem5 run scripts
+
+Now, we will add the gem5 run and configuration scripts to a new folder named `configs-micro-tests`.
+Get the run script named run_micro.py from [here](https://github.com/darchr/gem5art/blob/master/docs/gem5-configs/configs-micro-tests/run_micro.py), and other system configuration file from
+[here](https://github.com/darchr/gem5art/blob/master/docs/gem5-configs/configs-micro-tests/system.py).
+The run script (run_micro.py) takes the following arguments:
+- **cpu:** cpu type [**TimingSimple:** timing simple cpu model, **DerivO3:** O3 cpu model]
+- **memory:** memory type [**Inf:** 0ns latency memory, **SingleCycle:** 1ns latency memory, **SlowMemory:** 100ns latency memory. All types have infinite bandwidth. Caches are only enabled for SlowMemory.]
+- **benchmark:** benchmark binary to run with gem5
+
+
+
+## Database and Celery Server
+
+If not already running or created, you can create a database using:
+
+```sh
+docker run -p 27017:27017 -v <absolute path to the created directory>:/data/db --name mongo-<some tag> -d mongo
+```
+in a newly created directory.
+
+If not already installed, install `RabbitMQ` on your system (before running celery) using:
+
+```sh
+apt-get install rabbitmq-server
+```
+
+Now, run the celery server using:
+
+```sh
+celery -E -A gem5art.tasks.celery worker --autoscale=[number of workers],0
+```
+
+## Creating a launch script
+Next, we will create a launch script with the name `launch_micro_tests.py`, which will register the artifacts to be used and will start gem5 jobs.
+
+Like we did in previous tutorials, the first step is to import the required modules and classes:
+
+```python
+import os
+import sys
+from uuid import UUID
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+```
+
+Next, we will register the artifacts:
+
+```python
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://your-remote-add/micro-tests.git',
+    typ = 'git repo',
+    name = 'micro-tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main experiments repo to run microbenchmarks with gem5'
+)
+
+gem5_repo = Artifact.registerArtifact(
+    command = '''git clone https://gem5.googlesource.com/public/gem5;
+    cd gem5;
+    wget https://github.com/darchr/gem5/commit/38d07ab0251ea8f5181abc97a534bb60157b2b5d.patch;
+    git am 38d07ab0251ea8f5181abc97a534bb60157b2b5d.patch --reject;
+    ''',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'git repo with gem5 cloned on Nov 22 from googlesource (patch applied to support mem vector port)'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'default gem5 x86'
+)
+```
+
+The number of artifacts is less than what we had to use in previous (full-system) tutorials ([boot](boot-tutorial.md), [npb](npb-tutorial.md)), as expected.
+
+Now to run the benchmarks, we will iterate through possible cpu types, memory types and all of the microbenchmarks from the microbench repository.
+We will also register an artifact for each microbenchmark. If you want to run certain benchmarks, you can indicate which ones in the `bm_list` array.
+
+```python
+
+if __name__ == "__main__":
+
+    cpu_types = ['TimingSimple', 'DerivO3']
+    mem_types = ['Inf', 'SingleCycle', 'Slow']
+
+    bm_list = []
+
+    # iterate through files in microbench dir to
+    # create a list of all microbenchmarks
+
+    for filename in os.listdir('microbench'):
+        if os.path.isdir(f'microbench/{filename}') and filename != '.git':
+            bm_list.append(filename)
+
+    # create an artifact for each single microbenchmark
+    for bm in bm_list:
+        bm = Artifact.registerArtifact(
+        command = '''
+        cd microbench/{};
+        make X86;
+        '''.format(bm),
+        typ = 'binary',
+        name = bm,
+        cwd = 'microbench/{}'.format(bm),
+        path =  'microbench/{}/bench.X86'.format(bm),
+        inputs = [experiments_repo,],
+        documentation = 'microbenchmark ({}) binary for X86 ISA'.format(bm)
+        )
+
+    for bm in bm_list:
+        for cpu in cpu_types:
+            for mem in mem_types:
+                run = gem5Run.createSERun(
+                    'microbench_tests',
+                    'gem5/build/X86/gem5.opt',
+                    'configs-micro-tests/run_micro.py',
+                    'results/X86/run_micro/{}/{}/{}'.format(bm,cpu,mem),
+                    gem5_binary,gem5_repo,experiments_repo,
+                    cpu,mem,os.path.join('microbench',bm,'bench.X86'))
+                run.run()
+
+```
+
+Note that, in contrast to previous tutorials ([boot](boot-tutorial), [npb](npb-tutorial)), we are using `createSERun()` this time, as we want to run gem5 in SE mode.
+The full launch script is available [here](https://github.com/darchr/gem5art/blob/master/docs/launch-scripts/launch_micro_tests.py).
+
+Once you run this launch script (as shown below), your microbenchmark experiments will start running, which will simulate execution of microbenchmarks on different cpu and memory types.
+
+```python
+python launch_micro_tests.py
+```
+
+Later, you can access the database to see the status of these jobs and further analyze the results of your microbenchmark experiments. Happy experimenting!
diff --git a/assets/files/gem5art-launch-scripts/launch_boot_tests.py b/assets/files/gem5art-launch-scripts/launch_boot_tests.py
new file mode 100755
index 0000000..24dd837
--- /dev/null
+++ b/assets/files/gem5art-launch-scripts/launch_boot_tests.py
@@ -0,0 +1,178 @@
+#!/usr/bin/env python3
+
+#This is a job launch script for boot tests
+
+import os
+import sys
+from uuid import UUID
+from itertools import starmap
+from itertools import product
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+import multiprocessing as mp
+
+packer = Artifact.registerArtifact(
+    command = '''wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip;
+    unzip packer_1.4.3_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in August/19 from hashicorp.'
+)
+
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://your-remote-add/boot_tests.git',
+    typ = 'git repo',
+    name = 'boot_tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main experiments repo to run full system boot tests with gem5 20.1'
+)
+gem5_repo = Artifact.registerArtifact(
+    command = 'git clone https://gem5.googlesource.com/public/gem5',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 from googlesource and checked out release-staging-v20.1.0.0 (Sep 14, 2020)'
+)
+
+m5_binary = Artifact.registerArtifact(
+    command = 'scons build/x86/out/m5',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/build/x86/out/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+
+disk_image = Artifact.registerArtifact(
+    command = './packer build boot-exit/boot-exit.json',
+    typ = 'disk image',
+    name = 'boot-disk',
+    cwd = 'disk-image',
+    path = 'disk-image/boot-exit/boot-exit-image/boot-exit',
+    inputs = [packer, experiments_repo, m5_binary,],
+    documentation = 'Ubuntu with m5 binary installed and root auto login'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout 90a6e809629c978c2df765ebb70;
+    scons build/X86/gem5.opt -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on release-staging-v20.1.0.0 (Sep 14, 2020)'
+)
+
+gem5_binary_MESI_Two_Level = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout 90a6e809629c978c2df765ebb70;
+    scons build/X86_MESI_Two_Level/gem5.opt --default=X86 PROTOCOL=MESI_Two_Level SLICC_HTML=True -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86_MESI_Two_Level/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on release-staging-v20.1.0.0 (Sep 14, 2020)'
+)
+
+gem5_binary_MOESI_CMP_directory = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout 90a6e809629c978c2df765ebb70;
+    scons build/MOESI_CMP_directory/gem5.opt --default=X86 PROTOCOL=MOESI_CMP_directory -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86_MOESI_CMP_directory/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on release-staging-v20.1.0.0 (Sep 14, 2020)'
+)
+
+linux_repo = Artifact.registerArtifact(
+    command = '''git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git;
+    mv linux linux-stable''',
+    typ = 'git repo',
+    name = 'linux-stable',
+    path =  'linux-stable/',
+    cwd = './',
+    documentation = 'linux kernel source code repo from June 24-2020'
+)
+
+linuxes = ['5.4.49', '4.19.83', '4.14.134', '4.9.186', '4.4.186']
+linux_binaries = {
+    version: Artifact.registerArtifact(
+                name = f'vmlinux-{version}',
+                typ = 'kernel',
+                path = f'linux-stable/vmlinux-{version}',
+                cwd = 'linux-stable/',
+                command = f'''cd linux-stable;
+                git checkout v{version};
+                cp ../linux-configs/config.{version} .config;
+                make -j8;
+                cp vmlinux vmlinux-{version};
+                ''',
+                inputs = [experiments_repo, linux_repo,],
+                documentation = f"Kernel binary for {version} with simple "
+                                 "config file",
+            )
+    for version in linuxes
+}
+
+def worker(run):
+    run.run()
+    json = run.dumpsJson()
+    print(json)
+
+if __name__ == "__main__":
+    boot_types = ['init']
+    num_cpus = ['1', '2', '4', '8']
+    cpu_types = ['kvm', 'atomic', 'simple', 'o3']
+    mem_types = ['MI_example', 'MESI_Two_Level', 'MOESI_CMP_directory']
+
+    def createRun(linux, boot_type, cpu, num_cpu, mem):
+
+        if mem == 'MESI_Two_Level':
+            binary_gem5 = 'gem5/build/X86_MESI_Two_Level/gem5.opt'
+            artifact_gem5 = gem5_binary_MESI_Two_Level
+        elif mem == 'MOESI_CMP_directory':
+            binary_gem5 = 'gem5/build/MOESI_CMP_directory/gem5.opt'
+            artifact_gem5 = gem5_binary_MOESI_CMP_directory
+        else:
+            binary_gem5 = 'gem5/build/X86/gem5.opt'
+            artifact_gem5 = gem5_binary
+
+        return gem5Run.createFSRun(
+            'boot experiments with gem5-20.1 (timeout reruns)',
+            binary_gem5,
+            'configs-boot-tests/run_exit.py',
+            'results/run_exit/vmlinux-{}/boot-exit/{}/{}/{}/{}'.
+                format(linux, cpu, mem, num_cpu, boot_type),
+            artifact_gem5, gem5_repo, experiments_repo,
+            os.path.join('linux-stable', 'vmlinux'+'-'+linux),
+            'disk-image/boot-exit/boot-exit-image/boot-exit',
+            linux_binaries[linux], disk_image,
+            cpu, mem, num_cpu, boot_type,
+            timeout = 24*60*60 #10 hours
+            )
+
+    jobs = []
+    # For the cross product of tests, create a run object.
+    runs = starmap(createRun, product(linuxes, boot_types, cpu_types, num_cpus, mem_types))
+    # Run all of these experiments in parallel
+    for run in runs:
+        jobs.append(run)
+
+    with mp.Pool(mp.cpu_count() // 2) as pool:
+         pool.map(worker, jobs)
\ No newline at end of file
diff --git a/assets/files/gem5art-launch-scripts/launch_micro_tests.py b/assets/files/gem5art-launch-scripts/launch_micro_tests.py
new file mode 100755
index 0000000..fbca44e
--- /dev/null
+++ b/assets/files/gem5art-launch-scripts/launch_micro_tests.py
@@ -0,0 +1,84 @@
+#!/usr/bin/env python3
+
+#This is a job launch script for boot tests
+
+import os
+import sys
+from uuid import UUID
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://your-remote-add/micro-tests.git',
+    typ = 'git repo',
+    name = 'micro-tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main experiments repo to run microbenchmarks with gem5'
+)
+
+gem5_repo = Artifact.registerArtifact(
+    command = '''git clone https://gem5.googlesource.com/public/gem5;
+    cd gem5;
+    wget https://github.com/darchr/gem5/commit/38d07ab0251ea8f5181abc97a534bb60157b2b5d.patch;
+    git am 38d07ab0251ea8f5181abc97a534bb60157b2b5d.patch --reject;
+    ''',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'git repo with gem5 cloned on Nov 22 from googlesource (patch applied to support mem vector port)'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'default gem5 x86'
+)
+
+if __name__ == "__main__":
+
+    cpu_types = ['TimingSimple', 'DerivO3']
+    mem_types = ['Inf', 'SingleCycle', 'Slow']
+
+    bm_list = []
+
+    # iterate through files in microbench dir to
+    # create a list of all microbenchmarks
+
+    for filename in os.listdir('microbench'):
+        if os.path.isdir(f'microbench/{filename}') and filename != '.git':
+            bm_list.append(filename)
+
+    # create an artifact for each single microbenchmark
+    for bm in bm_list:
+        bm = Artifact.registerArtifact(
+        command = '''
+        cd microbench/{};
+        make X86;
+        '''.format(bm),
+        typ = 'binary',
+        name = bm,
+        cwd = 'microbench/{}'.format(bm),
+        path =  'microbench/{}/bench.X86'.format(bm),
+        inputs = [experiments_repo,],
+        documentation = 'microbenchmark ({}) binary for X86 ISA'.format(bm)
+        )
+
+    for bm in bm_list:
+        for cpu in cpu_types:
+            for mem in mem_types:
+                run = gem5Run.createSERun(
+                    'microbench_tests',
+                    'gem5/build/X86/gem5.opt',
+                    'configs-micro-tests/run_micro.py',
+                    'results/X86/run_micro/{}/{}/{}'.format(bm,cpu,mem),
+                    gem5_binary,gem5_repo,experiments_repo,
+                    cpu,mem,os.path.join('microbench',bm,'bench.X86'))
+                run_gem5_instance.apply_async((run, os.getcwd()))
diff --git a/assets/files/gem5art-launch-scripts/launch_microbench_test.py b/assets/files/gem5art-launch-scripts/launch_microbench_test.py
new file mode 100755
index 0000000..72e1dd7
--- /dev/null
+++ b/assets/files/gem5art-launch-scripts/launch_microbench_test.py
@@ -0,0 +1,214 @@
+#!/usr/bin/env python3
+
+#This is a job launch script
+
+import os
+import sys
+from uuid import UUID
+
+from gem5art.artifact.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art import tasks
+
+"""packer = Artifact.registerArtifact(
+    command = '''wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip;
+    unzip packer_1.4.3_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in August from hashicorp.'
+)"""
+
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://github.com/darchr/microbenchmark-experiments.git',
+    typ = 'git repo',
+    name = 'microbenchmark-tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main experiments repo to run microbenchmarks with gem5'
+)
+
+gem5_repo = Artifact.registerArtifact(
+    command = 'git clone https://github.com/darchr/gem5',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'git repo with gem5 master branch on Sep 23rd'
+)
+
+m5_binary = Artifact.registerArtifact(
+    command = 'make -f Makefile.x86',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+
+"""disk_image = Artifact.registerArtifact(
+    command = 'packer build template.json',
+    typ = 'disk image',
+    name = 'boot-disk',
+    cwd = 'disk-image',
+    path = 'disk-image/boot-exit/boot-exit-image/boot-exit',
+    inputs = [packer, experiments_repo, m5_binary,],
+    documentation = 'Ubuntu with m5 binary installed and root auto login'
+)"""
+
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt',
+    typ = 'binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'default gem5 x86'
+)
+
+"""linux_repo = Artifact.registerArtifact(
+    command = '''git clone https://github.com/torvalds/linux.git;
+    mv linux linux-stable''',
+    typ = 'git repo',
+    name = 'linux-stable',
+    path =  'linux-stable/',
+    cwd = './',
+    documentation = 'linux kernel source code repo from Sep 23rd'
+)"""
+
+#linuxes = ['5.2.3']#, '4.14.134', '4.9.186', '4.4.186']
+"""linux_binaries = {
+    version: Artifact.registerArtifact(
+                name = f'vmlinux-{version}',
+                typ = 'kernel',
+                path = f'linux-stable/vmlinux-{version}',
+                cwd = 'linux-stable/',
+                command = f'''git checkout v{version};
+                cp ../linux-configs/config.{version} .config;
+                make -j8;
+                cp vmlinux vmlinux-{version};
+                '''.format(v='5.2.3'),
+                inputs = [experiments_repo, linux_repo,],
+                documentation = f"Kernel binary for {version} with simple "
+                                 "config file",
+            )
+    for version in linuxes
+}"""
+
+if __name__ == "__main__":
+    #boot_types = ['init']#, 'systemd']
+    num_cpus = ['1']#, '2', '4', '8']
+    cpu_types = ['kvm']#, 'atomic', 'simple', 'o3']
+    mem_types = ['classic']#, 'ruby']
+    #configuration needed to run
+    config='config1' #'config2''config3'
+    #type of benchmark
+    benchmark='microbenchmark'
+    #benchmark list to run
+    Controlbenchmarks=('MC','MCS')
+    bm_list=[]
+    bm_list=list(Controlbenchmarks)
+
+    #Architecture to run with.
+    arch='X86' #'ARM'
+    if arch =='X86':
+        bm='bench.X86'
+    elif arch =='ARM':
+        bm='bench.ARM'
+
+    #For configuration 2:
+    #Branchpredictors with a cpu
+    Simple_configs=('Simple_Local', 'Simple_BiMode', 'Simple_Tournament', 'Simple_LTAGE')
+    DefaultO3_configs=('DefaultO3_Local' ,'DefaultO3_BiMode', 'DefaultO3_Tournament','DefaultO3_LTAGE')
+    Minor_configs=('Minor_Local', 'Minor_BiMode', 'Minor_Tournament', 'Minor_LTAGE')
+    cpu_bp='simple'
+    
+    #For configuration 3:
+    #Cache_type:
+    cache_type = 'L1_cache' #'L2_cahe'
+    #L1Cache_sizes.
+    L1D = ['32kB','128kB','64kB']
+    #L2Cache_sizes.
+    L2C = ['1MB','512kB']
+
+    if config == 'config1':
+        if benchmark == 'microbenchmark':
+            for mem in mem_types:
+                for bms  in bm_list:
+                    for cpu in cpu_types:
+                            run = gem5Run.createSERun(
+                                'gem5/build/X86/gem5.opt',
+                                'configs-boot-tests/run_config1.py',
+                                gem5_binary, gem5_repo, experiments_repo,
+                                cpu, mem, '../benchmarks/microbench/bms/bm'
+                                    )
+                            run_gem5_instance.apply_async((run,))
+        elif benchmark == 'spec':
+            for mem in mem_types:
+                for bms  in bm_list:
+                    for cpu in cpu_types:
+                            run = gem5Run.createSERun(
+                                'gem5/build/X86/gem5.opt',
+                                'configs-boot-tests/run_spec.py',
+                                gem5_binary, gem5_repo, experiments_repo,
+                                cpu, mem, '../benchmarks/microbench/bms/bm'
+                                    )
+                            run_gem5_instance.apply_async((run,))
+
+    elif config == 'config2':
+        for mem in mem_types:
+            for bms in bm_list:
+                if cpu_bp == 'simple':
+                    for config_cpu in Simple_configs:
+                        run = gem5Run.createSERun(
+                                'gem5/build/X86/gem5.opt',
+                                'configs-boot-tests/run_spec.py',
+                                gem5_binary, gem5_repo, experiments_repo,
+                                config_cpu, mem, '../benchmarks/microbench/bms/bm'
+                                    )
+                        run_gem5_instance.apply_async((run,))
+                elif cpu_bp == 'o3':
+                    for config_cpu in Simple_configs:
+                        run = gem5Run.createSERun(
+                                'gem5/build/X86/gem5.opt',
+                                'configs-boot-tests/run_spec.py',
+                                gem5_binary, gem5_repo, experiments_repo,
+                                config_cpu, mem, '../benchmarks/microbench/bms/bm'
+                                    )
+                        run_gem5_instance.apply_async((run,))
+            
+
+    elif config =='config3':
+        for mem in mem_types:
+            for bms  in bm_list:
+                for cpu in cpu_types:
+                        if cache_type=='L1_cache':
+                            for size in L1D:
+                                run = gem5Run.createSERun(
+                                'gem5/build/X86/gem5.opt',
+                                'configs-boot-tests/run_config1.py',
+                                gem5_binary, gem5_repo, experiments_repo,
+                                cpu, mem, '..benchmarks/microbench/bms/bm', 
+                                    )
+                                run_gem5_instance.apply_async((run,))
+                        elif cache_type=='L2_cache':
+                            for size in L2C:
+                                run = gem5Run.createSERun(
+                                'gem5/build/X86/gem5.opt',
+                                'configs-boot-tests/run_config1.py',
+                                gem5_binary,gem5_repo, experiment_repo,
+                                cpu,mrm, '..benchmarks.microbench/bms/bm'
+                                    )
+                                run_gem5_instance.apply_asynch((run,))
+
+                
+
+    
+
+
+
+    
+
diff --git a/assets/files/gem5art-launch-scripts/launch_microbenchmark.py b/assets/files/gem5art-launch-scripts/launch_microbenchmark.py
new file mode 100755
index 0000000..fb8d2be
--- /dev/null
+++ b/assets/files/gem5art-launch-scripts/launch_microbenchmark.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python3
+
+#This is a job launch script for boot tests
+
+import os
+import sys
+from uuid import UUID
+
+from gem5art.artifact.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+
+"""packer = Artifact.registerArtifact(
+    command = '''wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip;
+    unzip packer_1.4.3_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in August from hashicorp.'
+)"""
+
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://github.com/darchr/microbenchmark-experiments.git',
+    typ = 'git repo',
+    name = 'microbenchmark-tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main experiments repo to run microbenchmarks with gem5'
+)
+
+gem5_repo = Artifact.registerArtifact(
+    command = 'git clone https://github.com/darchr/gem5',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'git repo with gem5 master branch on Sep 23rd'
+)
+
+m5_binary = Artifact.registerArtifact(
+    command = 'make -f Makefile.x86',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+
+"""disk_image = Artifact.registerArtifact(
+    command = 'packer build template.json',
+    typ = 'disk image',
+    name = 'boot-disk',
+    cwd = 'disk-image',
+    path = 'disk-image/boot-exit/boot-exit-image/boot-exit',
+    inputs = [packer, experiments_repo, m5_binary,],
+    documentation = 'Ubuntu with m5 binary installed and root auto login'
+)"""
+
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'default gem5 x86'
+)
+
+"""linux_repo = Artifact.registerArtifact(
+    command = '''git clone https://github.com/torvalds/linux.git;
+    mv linux linux-stable''',
+    typ = 'git repo',
+    name = 'linux-stable',
+    path =  'linux-stable/',
+    cwd = './',
+    documentation = 'linux kernel source code repo from Sep 23rd'
+)"""
+
+"""linuxes = ['5.2.3', '4.14.134', '4.9.186', '4.4.186']
+linux_binaries = {
+    version: Artifact.registerArtifact(
+                name = f'vmlinux-{version}',
+                typ = 'kernel',
+                path = f'linux-stable/vmlinux-{version}',
+                cwd = 'linux-stable/',
+                command = f'''git checkout v{version};
+                cp ../linux-configs/config.{version} .config;
+                make -j8;
+                cp vmlinux vmlinux-{version};
+                '''.format(v='5.2.3'),
+                inputs = [experiments_repo, linux_repo,],
+                documentation = f"Kernel binary for {version} with simple "
+                                 "config file",
+            )
+    for version in linuxes
+}"""
+
+if __name__ == "__main__":
+    boot_types = ['init', 'systemd']
+    num_cpus = ['1', '2', '4', '8']
+    cpu_types = ['Simple'] 
+    #mem_types = ['classic']#, 'ruby']
+    mem_types = ['Slow']# [SingleCycle][Inf]
+    bm_list =['MC','MCS','CCa','CCe','CCh','CCh_st']
+
+    #Architecture to run with.
+    arch='X86' #'ARM'
+    if arch =='X86':
+        bm='bench.X86'
+    elif arch =='ARM':
+        bm='bench.ARM'
+    path = 'microbench'
+
+    for bms in bm_list:
+        for cpu in cpu_types:
+            for mem in mem_types:
+                run = gem5Run.createSERun(
+                    'gem5/build/X86/gem5.opt',
+                    'configs-boot-tests/run_config1.py',
+                    gem5_binary, gem5_repo, experiments_repo,
+                    cpu, mem, os.path.join(path,bms,bm))
+                #run_gem5_instance.apply_async((run,))
+                run.run()   
diff --git a/assets/files/gem5art-launch-scripts/launch_npb_tests.py b/assets/files/gem5art-launch-scripts/launch_npb_tests.py
new file mode 100755
index 0000000..463976c
--- /dev/null
+++ b/assets/files/gem5art-launch-scripts/launch_npb_tests.py
@@ -0,0 +1,147 @@
+import os
+import sys
+from uuid import UUID
+from itertools import starmap
+from itertools import product
+
+from gem5art.artifact.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+
+packer = Artifact.registerArtifact(
+    command = '''wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip;
+    unzip packer_1.4.3_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in August/19 from hashicorp.'
+)
+
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://your-remote-add/npb-tests.git',
+    typ = 'git repo',
+    name = 'npb_tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main repo to run npb multicore tests with gem5 20.1'
+)
+
+gem5_repo = Artifact.registerArtifact(
+    command = 'git clone https://gem5.googlesource.com/public/gem5',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 from googlesource and checked out v20.1.0.0'
+)
+
+m5_binary = Artifact.registerArtifact(
+    command = 'scons build/x86/out/m5',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/build/x86/out/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility with gem5-20.1'
+)
+
+disk_image = Artifact.registerArtifact(
+    command = './packer build npb/npb.json',
+    typ = 'disk image',
+    name = 'npb',
+    cwd = 'disk-image',
+    path = 'disk-image/npb/npb-image/npb',
+    inputs = [packer, experiments_repo, m5_binary,],
+    documentation = 'Ubuntu with m5 binary and NPB (with ROI annotations: darchr/npb-hooks/master) installed.'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout v20.1.0.0;
+    scons build/X86/gem5.opt -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on v20.1.0.0'
+)
+
+gem5_binary_MESI_Two_Level = Artifact.registerArtifact(
+    command = '''cd gem5;
+    git checkout v20.1.0.0;
+    scons build/X86_MESI_Two_Level/gem5.opt --default=X86 PROTOCOL=MESI_Two_Level SLICC_HTML=True -j8
+    ''',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86_MESI_Two_Level/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary based on v20.1.0.0'
+)
+
+linux_repo = Artifact.registerArtifact(
+    command = '''git clone --branch v4.19.83 --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git;
+    mv linux linux-stable''',
+    typ = 'git repo',
+    name = 'linux-stable',
+    path =  'linux-stable/',
+    cwd = './',
+    documentation = 'linux kernel source code repo'
+)
+
+linux_binary = Artifact.registerArtifact(
+    name = 'vmlinux-4.19.83',
+    typ = 'kernel',
+    path = 'linux-stable/vmlinux-4.19.83',
+    cwd = 'linux-stable/',
+    command = '''
+    cp ../config.4.19.83 .config;
+    make -j8;
+    cp vmlinux vmlinux-4.19.83;
+    ''',
+    inputs = [experiments_repo, linux_repo,],
+    documentation = "kernel binary for v4.19.83",
+)
+
+
+if __name__ == "__main__":
+    num_cpus = ['1', '8']
+    benchmarks = ['is.x', 'ep.x', 'cg.x', 'mg.x','ft.x', 'bt.x', 'sp.x', 'lu.x']
+
+    classes = ['A']
+    mem_sys = ['MESI_Two_Level']
+    cpus = ['kvm', 'timing']
+
+
+    def createRun(bench, clas, cpu, mem, num_cpu):
+
+        if mem == 'MESI_Two_Level':
+            binary_gem5 = 'gem5/build/X86_MESI_Two_Level/gem5.opt'
+            artifact_gem5 = gem5_binary_MESI_Two_Level
+        else:
+            binary_gem5 = 'gem5/build/X86/gem5.opt'
+            artifact_gem5 = gem5_binary
+
+        return gem5Run.createFSRun(
+            'npb with gem5-20.1',
+            binary_gem5,
+            'configs-npb-tests-gem5-20.1/run_npb.py',
+            f'''results/run_npb_multicore/{bench}/{clas}/{cpu}/{num_cpu}''',
+            artifact_gem5, gem5_repo, experiments_repo,
+            'linux-stable/vmlinux-4.19.83',
+            'disk-image/npb/npb-image/npb',
+            linux_binary, disk_image,
+            cpu, mem, bench.replace('.x', f'.{clas}.x'), num_cpu,
+            timeout = 240*60*60 #240 hours
+            )
+
+
+    # For the cross product of tests, create a run object.
+    runs = starmap(createRun, product(benchmarks, classes, cpus, mem_sys, num_cpus))
+    # Run all of these experiments in parallel
+    for run in runs:
+        run_gem5_instance.apply_async((run, os.getcwd(),))
diff --git a/assets/files/gem5art-launch-scripts/launch_parsec_tests.py b/assets/files/gem5art-launch-scripts/launch_parsec_tests.py
new file mode 100644
index 0000000..1c761e8
--- /dev/null
+++ b/assets/files/gem5art-launch-scripts/launch_parsec_tests.py
@@ -0,0 +1,136 @@
+import os
+import sys
+from uuid import UUID
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+
+packer = Artifact.registerArtifact(
+    command = '''wget https://releases.hashicorp.com/packer/1.4.3/packer_1.4.3_linux_amd64.zip;
+    unzip packer_1.4.3_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in August from hashicorp.'
+)
+
+experiments_repo = Artifact.registerArtifact(
+    command = 'git clone https://github.com/darchr/gem5art-experiments.git',
+    typ = 'git repo',
+    name = 'parsec_tests',
+    path =  './',
+    cwd = '../',
+    documentation = 'main repo to run parsec tests with gem5'
+)
+
+parsec_repo = Artifact.registerArtifact(
+    command = '''mkdir parsec-benchmark/;
+    cd parsec-benchmark;
+    git clone https://github.com/darchr/parsec-benchmark.git;''',
+    typ = 'git repo',
+    name = 'parsec_repo',
+    path =  './disk-image/parsec-benchmark/parsec-benchmark/',
+    cwd = './disk-image/',
+    documentation = 'main repo to copy parsec source to the disk-image'
+)
+
+gem5_repo = Artifact.registerArtifact(
+    command = '''
+        git clone https://gem5.googlesource.com/public/gem5;
+        cd gem5;
+        git remote add darchr https://github.com/darchr/gem5;
+        git fetch darchr;
+        git cherry-pick 6450aaa7ca9e3040fb9eecf69c51a01884ac370c;
+        git cherry-pick 3403665994b55f664f4edfc9074650aaa7ddcd2c;
+    ''',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 master branch from googlesource (Nov 18, 2019) and cherry-picked 2 commits from darchr/gem5'
+)
+
+m5_binary = Artifact.registerArtifact(
+    command = 'make -f Makefile.x86',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+
+disk_image = Artifact.registerArtifact(
+    command = './packer build parsec/parsec.json',
+    typ = 'disk image',
+    name = 'parsec',
+    cwd = 'disk-image',
+    path = 'disk-image/parsec/parsec-image/parsec',
+    inputs = [packer, experiments_repo, m5_binary, parsec_repo,],
+    documentation = 'Ubuntu with m5 binary and PARSEC installed.'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt',
+    typ = 'gem5 binary',
+    name = 'gem5',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'gem5 binary'
+)
+
+linux_repo = Artifact.registerArtifact(
+    command = '''git clone --branch v4.19.83 --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git;
+    mv linux linux-stable''',
+    typ = 'git repo',
+    name = 'linux-stable',
+    path =  'linux-stable/',
+    cwd = './',
+    documentation = 'linux kernel source code repo'
+)
+
+linux_binary = Artifact.registerArtifact(
+    name = 'vmlinux-4.19.83',
+    typ = 'kernel',
+    path = 'linux-stable/vmlinux-4.19.83',
+    cwd = 'linux-stable/',
+    command = '''
+    cp ../config.4.19.83 .config;
+    make -j8;
+    cp vmlinux vmlinux-4.19.83;
+    ''',
+    inputs = [experiments_repo, linux_repo,],
+    documentation = "kernel binary for v4.19.83"
+)
+
+
+if __name__ == "__main__":
+    num_cpus = ['1']
+    benchmarks = ['blackscholes', 'bodytrack', 'canneal', 'dedup','facesim', 'ferret', 'fluidanimate', 'freqmine', 'raytrace', 'streamcluster', 'swaptions', 'vips', 'x264']
+
+    sizes = ['simsmall', 'simlarge', 'native']
+    cpus = ['kvm', 'timing']
+
+    for cpu in cpus:
+        for num_cpu in num_cpus:
+            for size in sizes:
+                if cpu == 'timing' and size != 'simsmall':
+                    continue
+                for bm in benchmarks:
+                    run = gem5Run.createFSRun(
+                        'parsec_tests',    
+                        'gem5/build/X86/gem5.opt',
+                        'configs-parsec-tests/run_parsec.py',
+                        f'''results/run_parsec/{bm}/{size}/{cpu}/{num_cpu}''',
+                        gem5_binary, gem5_repo, experiments_repo,
+                        'linux-stable/vmlinux-4.19.83',
+                        'disk-image/parsec/parsec-image/parsec',
+                        linux_binary, disk_image,
+                        cpu, bm, size, num_cpu,
+                        timeout = 24*60*60 #24 hours
+                        )
+                    run_gem5_instance.apply_async((run, os.getcwd(), ))
diff --git a/assets/files/gem5art-launch-scripts/launch_spec2006_experiments.py b/assets/files/gem5art-launch-scripts/launch_spec2006_experiments.py
new file mode 100644
index 0000000..f8b0ae2
--- /dev/null
+++ b/assets/files/gem5art-launch-scripts/launch_spec2006_experiments.py
@@ -0,0 +1,152 @@
+import os
+import sys
+from uuid import UUID
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+
+experiments_repo = Artifact.registerArtifact(
+    command = '',
+    typ = 'git repo',
+    name = 'experiment',
+    path =  './',
+    cwd = './',
+    documentation = 'local repo to run spec 2006 experiments with gem5'
+)
+
+gem5_repo = Artifact.registerArtifact(
+    command = '''
+        git clone -b v19.0.0.0 https://gem5.googlesource.com/public/gem5
+        cd gem5
+        scons build/X86/gem5.opt -j8
+    ''',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 v19'
+)
+
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt -j8',
+    typ = 'gem5 binary',
+    name = 'gem5-19',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    documentation = 'compiled gem5 v19 binary'
+)
+
+m5_binary = Artifact.registerArtifact(
+    command = 'make -f Makefile.x86',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+
+packer = Artifact.registerArtifact(
+    command = '''
+        wget https://releases.hashicorp.com/packer/1.4.5/packer_1.4.5_linux_amd64.zip;
+        unzip packer_1.4.5_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in November from hashicorp.'
+)
+
+disk_image = Artifact.registerArtifact(
+    command = './packer build spec2006/spec2006.json',
+    typ = 'disk image',
+    name = 'spec2006',
+    cwd = 'disk-image/',
+    path = 'disk-image/spec2006/spec2006-image/spec2006',
+    inputs = [packer, experiments_repo, m5_binary,],
+    documentation = 'Ubuntu Server with SPEC 2006 installed, m5 binary installed and root auto login'
+)
+
+linux_repo = Artifact.registerArtifact(
+    command = '''
+        git clone git clone --branch v4.19.83 --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/;
+        mv linux linux-4.19.83
+    ''',
+    typ = 'git repo',
+    name = 'linux-4.19.83',
+    path =  'linux-4.19.83',
+    cwd = './',
+    documentation = 'Linux kernel 4.19 source code repo obtained in November'
+)
+
+linux_binary = Artifact.registerArtifact(
+    name = 'vmlinux-4.19.83',
+    typ = 'kernel',
+    path = 'linux-4.19.83/vmlinux-4.19.83',
+    cwd = './',
+    command = '''
+        cp linux-configs/config.4.19.83 linux-4.19.83/.config
+        cd linux-4.19.83
+        make -j8
+        cp vmlinux vmlinux-4.19.83
+    ''',
+    inputs = [experiments_repo, linux_repo,],
+    documentation = "kernel binary for v4.19.83",
+)
+
+run_script_repo = Artifact.registerArtifact(
+    command = '''
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/gem5-configs/configs-spec-tests/run_spec.py
+        mkdir -p system
+        cd system
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/gem5-configs/configs-spec-tests/system/__init__.py
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/gem5-configs/configs-spec-tests/system/caches.py
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/gem5-configs/configs-spec-tests/system/fs_tools.py
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/gem5-configs/configs-spec-tests/system/system.py
+    ''',
+    typ = 'git repo',
+    name = 'gem5-configs',
+    path =  'gem5-configs',
+    cwd = './',
+    documentation = 'gem5 run scripts made specifically for SPEC benchmarks'
+)
+
+
+if __name__ == "__main__":
+    cpus = ['kvm', 'atomic', 'o3', 'timing']
+    benchmark_sizes = {'kvm':    ['test', 'ref'],
+                       'atomic': ['test'],
+                       'o3':     ['test'],
+                       'timing': ['test']
+                      }
+    benchmarks = ['401.bzip2','403.gcc','410.bwaves','416.gamess','429.mcf',
+                  '433.milc','434.zeusmp','435.gromacs','436.cactusADM',
+                  '437.leslie3d','444.namd','445.gobmk','453.povray',
+                  '454.calculix','456.hmmer','458.sjeng','459.GemsFDTD',
+                  '462.libquantum','464.h264ref','465.tonto','470.lbm',
+                  '471.omnetpp','473.astar','481.wrf','482.sphinx3',
+                  '998.specrand','999.specrand']
+    # unavailable benchmarks: 400.perlbench,447.dealII,450.soplex,483.xalancbmk
+
+    for cpu in cpus:
+        for size in benchmark_sizes[cpu]:
+            for benchmark in benchmarks:
+                run = gem5Run.createFSRun(
+                    'gem5 19 spec 2006 experiment', # name
+                    'gem5/build/X86/gem5.opt', # gem5_binary
+                    'gem5-configs/run_spec.py', # run_script
+                    'results/{}/{}/{}'.format(cpu, size, benchmark), # relative_outdir
+                    gem5_binary, # gem5_artifact
+                    gem5_repo, # gem5_git_artifact
+                    run_script_repo, # run_script_git_artifact
+                    'linux-4.19.83/vmlinux-4.19.83', # linux_binary
+                    'disk-image/spec2006/spec2006-image/spec2006', # disk_image
+                    linux_binary, # linux_binary_artifact
+                    disk_image, # disk_image_artifact
+                    cpu, benchmark, size, # params
+                    timeout = 5 * 24 * 60 * 60 # 5 days
+                )
+                run_gem5_instance.apply_async((run,))
diff --git a/assets/files/gem5art-launch-scripts/launch_spec2017_experiments.py b/assets/files/gem5art-launch-scripts/launch_spec2017_experiments.py
new file mode 100644
index 0000000..16846e0
--- /dev/null
+++ b/assets/files/gem5art-launch-scripts/launch_spec2017_experiments.py
@@ -0,0 +1,156 @@
+import os
+import sys
+from uuid import UUID
+
+from gem5art.artifact import Artifact
+from gem5art.run import gem5Run
+from gem5art.tasks.tasks import run_gem5_instance
+
+
+experiments_repo = Artifact.registerArtifact(
+    command = '',
+    typ = 'git repo',
+    name = 'experiment',
+    path =  './',
+    cwd = './',
+    documentation = 'local repo to run spec 2017 experiments with gem5'
+)
+
+gem5_repo = Artifact.registerArtifact(
+    command = '''
+        git clone -b v19.0.0.0 https://gem5.googlesource.com/public/gem5
+        cd gem5
+        scons build/X86/gem5.opt -j8
+    ''',
+    typ = 'git repo',
+    name = 'gem5',
+    path =  'gem5/',
+    cwd = './',
+    documentation = 'cloned gem5 v19'
+)
+
+
+gem5_binary = Artifact.registerArtifact(
+    command = 'scons build/X86/gem5.opt -j8',
+    typ = 'gem5 binary',
+    name = 'gem5-19',
+    cwd = 'gem5/',
+    path =  'gem5/build/X86/gem5.opt',
+    inputs = [gem5_repo,],
+    
+
+m5_binary = Artifact.registerArtifact(
+    command = 'make -f Makefile.x86',
+    typ = 'binary',
+    name = 'm5',
+    path =  'gem5/util/m5/m5',
+    cwd = 'gem5/util/m5',
+    inputs = [gem5_repo,],
+    documentation = 'm5 utility'
+)
+
+packer = Artifact.registerArtifact(
+    command = '''
+        wget https://releases.hashicorp.com/packer/1.4.5/packer_1.4.5_linux_amd64.zip;
+        unzip packer_1.4.5_linux_amd64.zip;
+    ''',
+    typ = 'binary',
+    name = 'packer',
+    path =  'disk-image/packer',
+    cwd = 'disk-image',
+    documentation = 'Program to build disk images. Downloaded sometime in November from hashicorp.'
+)
+
+disk_image = Artifact.registerArtifact(
+    command = './packer build spec2017/spec2017.json',
+    typ = 'disk image',
+    name = 'spec2017',
+    cwd = 'disk-image/',
+    path = 'disk-image/spec2017/spec2017-image/spec2017',
+    inputs = [packer, experiments_repo, m5_binary,],
+    documentation = 'Ubuntu Server with SPEC 2017 installed, m5 binary installed and root auto login'
+)
+
+linux_repo = Artifact.registerArtifact(
+    command = '''
+        git clone git clone --branch v4.19.83 --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/;
+        mv linux linux-4.19.83
+    ''',
+    typ = 'git repo',
+    name = 'linux-4.19.83',
+    path =  'linux-4.19.83',
+    cwd = './',
+    documentation = 'Linux kernel 4.19 source code repo obtained in November'
+)
+
+linux_binary = Artifact.registerArtifact(
+    name = 'vmlinux-4.19.83',
+    typ = 'kernel',
+    path = 'linux-4.19.83/vmlinux-4.19.83',
+    cwd = './',
+    command = '''
+        cp linux-configs/config.4.19.83 linux-4.19.83/.config
+        cd linux-4.19.83
+        make -j8
+        cp vmlinux vmlinux-4.19.83
+    ''',
+    inputs = [experiments_repo, linux_repo,],
+    documentation = "kernel binary for v4.19.83",
+)
+
+run_script_repo = Artifact.registerArtifact(
+    command = '''
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/configs-spec-tests/run_spec.py
+        mkdir -p system
+        cd system
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/gem5-configs/configs-spec-tests/system/__init__.py
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/gem5-configs/configs-spec-tests/system/caches.py
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/gem5-configs/configs-spec-tests/system/fs_tools.py
+        wget https://raw.githubusercontent.com/darchr/gem5art/master/docs/gem5-configs/configs-spec-tests/system/system.py
+    ''',
+    typ = 'git repo',
+    name = 'gem5-configs',
+    path =  'gem5-configs',
+    cwd = './',
+    documentation = 'gem5 run scripts made specifically for SPEC benchmarks'
+)
+
+if __name__ == "__main__":
+    cpus = ['kvm', 'atomic', 'o3', 'timing']
+    benchmark_sizes = {'kvm':    ['test', 'ref'],
+                       'atomic': ['test'],
+                       'o3':     ['test'],
+                       'timing': ['test']
+                      }
+
+    benchmarks = ["503.bwaves_r", "507.cactuBSSN_r", "508.namd_r", "510.parest_r", "511.povray_r", "519.lbm_r",
+                  "521.wrf_r", "526.blender_r", "527.cam4_r", "538.imagick_r", "544.nab_r", "549.fotonik3d_r",
+                  "554.roms_r", "997.specrand_fr", "603.bwaves_s", "607.cactuBSSN_s", "619.lbm_s", "621.wrf_s",
+                  "627.cam4_s", "628.pop2_s", "638.imagick_s", "644.nab_s", "649.fotonik3d_s", "654.roms_s",
+                  "996.specrand_fs", "500.perlbench_r", "502.gcc_r", "505.mcf_r", "520.omnetpp_r", "523.xalancbmk_r",
+                  "525.x264_r", "531.deepsjeng_r", "541.leela_r", "548.exchange2_r", "557.xz_r", "999.specrand_ir",
+                  "600.perlbench_s", "602.gcc_s", "605.mcf_s", "620.omnetpp_s", "623.xalancbmk_s", "625.x264_s",
+                  "631.deepsjeng_s", "641.leela_s", "648.exchange2_s", "657.xz_s", "998.specrand_is"]
+
+    for cpu in cpus:
+        for size in benchmark_sizes[cpu]:
+            for benchmark in benchmarks:
+                run = gem5Run.createFSRun(
+                    'gem5 19 spec 2017 experiments', # name
+                    'gem5/build/X86/gem5.opt', # gem5_binary
+                    'gem5-configs/run_spec.py', # run_script
+                    'results/{}/{}/{}'.format(cpu, size, benchmark), # relative_outdir
+                    gem5_binary, # gem5_artifact
+                    gem5_repo, # gem5_git_artifact
+                    run_script_repo, # run_script_git_artifact
+                    'linux-4.19.83/vmlinux-4.19.83', # linux_binary
+                    'disk-image/spec2017/spec2017-image/spec2017', # disk_image
+                    linux_binary, # linux_binary_artifact
+                    disk_image, # disk_image_artifact
+                    cpu, benchmark, size, # params
+                    "-z",
+                    timeout = 5 * 24 * 60 * 60 # 5 days
+                )
+                run_gem5_instance.apply_async((run,))
+
+
diff --git a/assets/img/gem5art/InstCountKVM.png b/assets/img/gem5art/InstCountKVM.png
new file mode 100755
index 0000000..caabefe
--- /dev/null
+++ b/assets/img/gem5art/InstCountKVM.png
Binary files differ
diff --git a/assets/img/gem5art/InstCountTiming.png b/assets/img/gem5art/InstCountTiming.png
new file mode 100755
index 0000000..e635748
--- /dev/null
+++ b/assets/img/gem5art/InstCountTiming.png
Binary files differ
diff --git a/assets/img/gem5art/SimTimeKVM.png b/assets/img/gem5art/SimTimeKVM.png
new file mode 100755
index 0000000..093ff23
--- /dev/null
+++ b/assets/img/gem5art/SimTimeKVM.png
Binary files differ
diff --git a/assets/img/gem5art/SimTimeTiming.png b/assets/img/gem5art/SimTimeTiming.png
new file mode 100755
index 0000000..a438859
--- /dev/null
+++ b/assets/img/gem5art/SimTimeTiming.png
Binary files differ
diff --git a/assets/img/gem5art/WorkingStatusKVM.png b/assets/img/gem5art/WorkingStatusKVM.png
new file mode 100755
index 0000000..dfa2531
--- /dev/null
+++ b/assets/img/gem5art/WorkingStatusKVM.png
Binary files differ
diff --git a/assets/img/gem5art/WorkingStatusTiming.png b/assets/img/gem5art/WorkingStatusTiming.png
new file mode 100755
index 0000000..dcf27d8
--- /dev/null
+++ b/assets/img/gem5art/WorkingStatusTiming.png
Binary files differ
diff --git a/assets/img/gem5art/art.png b/assets/img/gem5art/art.png
new file mode 100755
index 0000000..42c2680
--- /dev/null
+++ b/assets/img/gem5art/art.png
Binary files differ
diff --git a/assets/img/gem5art/boot_classic_init b/assets/img/gem5art/boot_classic_init
new file mode 100644
index 0000000..970a902
--- /dev/null
+++ b/assets/img/gem5art/boot_classic_init
Binary files differ
diff --git a/assets/img/gem5art/boot_classic_systemd b/assets/img/gem5art/boot_classic_systemd
new file mode 100644
index 0000000..a647e65
--- /dev/null
+++ b/assets/img/gem5art/boot_classic_systemd
Binary files differ
diff --git a/assets/img/gem5art/boot_exit_MESI_Two_Level_init.svg b/assets/img/gem5art/boot_exit_MESI_Two_Level_init.svg
new file mode 100644
index 0000000..7216261
--- /dev/null
+++ b/assets/img/gem5art/boot_exit_MESI_Two_Level_init.svg
@@ -0,0 +1,2913 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with matplotlib (https://matplotlib.org/) -->
+<svg height="288pt" version="1.1" viewBox="0 0 936 288" width="936pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+  <rdf:RDF xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+   <cc:Work>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:date>2020-10-10T15:39:34.155691</dc:date>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Matplotlib v3.3.2, https://matplotlib.org/</dc:title>
+     </cc:Agent>
+    </dc:creator>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <defs>
+  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="patch_1">
+   <path d="M 0 288 
+L 936 288 
+L 936 0 
+L 0 0 
+z
+" style="fill:none;"/>
+  </g>
+  <g id="axes_1">
+   <g id="patch_2">
+    <path d="M 124.55 208.21868 
+L 925.2 208.21868 
+L 925.2 30.8 
+L 124.55 30.8 
+z
+" style="fill:#ffffff;"/>
+   </g>
+   <g id="patch_3">
+    <path clip-path="url(#p8db3b597f4)" d="M 108.537 208.21868 
+L 140.563 208.21868 
+L 140.563 180.923498 
+L 108.537 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_4">
+    <path clip-path="url(#p8db3b597f4)" d="M 140.563 208.21868 
+L 172.589 208.21868 
+L 172.589 180.923498 
+L 140.563 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_5">
+    <path clip-path="url(#p8db3b597f4)" d="M 172.589 208.21868 
+L 204.615 208.21868 
+L 204.615 180.923498 
+L 172.589 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_6">
+    <path clip-path="url(#p8db3b597f4)" d="M 204.615 208.21868 
+L 236.641 208.21868 
+L 236.641 180.923498 
+L 204.615 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_7">
+    <path clip-path="url(#p8db3b597f4)" d="M 236.641 208.21868 
+L 268.667 208.21868 
+L 268.667 180.923498 
+L 236.641 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_8">
+    <path clip-path="url(#p8db3b597f4)" d="M 268.667 208.21868 
+L 300.693 208.21868 
+L 300.693 180.923498 
+L 268.667 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_9">
+    <path clip-path="url(#p8db3b597f4)" d="M 300.693 208.21868 
+L 332.719 208.21868 
+L 332.719 180.923498 
+L 300.693 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_10">
+    <path clip-path="url(#p8db3b597f4)" d="M 332.719 208.21868 
+L 364.745 208.21868 
+L 364.745 180.923498 
+L 332.719 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_11">
+    <path clip-path="url(#p8db3b597f4)" d="M 364.745 208.21868 
+L 396.771 208.21868 
+L 396.771 180.923498 
+L 364.745 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_12">
+    <path clip-path="url(#p8db3b597f4)" d="M 396.771 208.21868 
+L 428.797 208.21868 
+L 428.797 180.923498 
+L 396.771 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_13">
+    <path clip-path="url(#p8db3b597f4)" d="M 428.797 208.21868 
+L 460.823 208.21868 
+L 460.823 180.923498 
+L 428.797 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_14">
+    <path clip-path="url(#p8db3b597f4)" d="M 460.823 208.21868 
+L 492.849 208.21868 
+L 492.849 180.923498 
+L 460.823 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_15">
+    <path clip-path="url(#p8db3b597f4)" d="M 492.849 208.21868 
+L 524.875 208.21868 
+L 524.875 180.923498 
+L 492.849 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_16">
+    <path clip-path="url(#p8db3b597f4)" d="M 524.875 208.21868 
+L 556.901 208.21868 
+L 556.901 180.923498 
+L 524.875 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_17">
+    <path clip-path="url(#p8db3b597f4)" d="M 556.901 208.21868 
+L 588.927 208.21868 
+L 588.927 180.923498 
+L 556.901 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_18">
+    <path clip-path="url(#p8db3b597f4)" d="M 588.927 208.21868 
+L 620.953 208.21868 
+L 620.953 180.923498 
+L 588.927 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_19">
+    <path clip-path="url(#p8db3b597f4)" d="M 620.953 208.21868 
+L 652.979 208.21868 
+L 652.979 180.923498 
+L 620.953 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_20">
+    <path clip-path="url(#p8db3b597f4)" d="M 652.979 208.21868 
+L 685.005 208.21868 
+L 685.005 180.923498 
+L 652.979 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_21">
+    <path clip-path="url(#p8db3b597f4)" d="M 685.005 208.21868 
+L 717.031 208.21868 
+L 717.031 180.923498 
+L 685.005 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_22">
+    <path clip-path="url(#p8db3b597f4)" d="M 717.031 208.21868 
+L 749.057 208.21868 
+L 749.057 180.923498 
+L 717.031 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_23">
+    <path clip-path="url(#p8db3b597f4)" d="M 749.057 208.21868 
+L 781.083 208.21868 
+L 781.083 180.923498 
+L 749.057 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_24">
+    <path clip-path="url(#p8db3b597f4)" d="M 781.083 208.21868 
+L 813.109 208.21868 
+L 813.109 180.923498 
+L 781.083 180.923498 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_25">
+    <path clip-path="url(#p8db3b597f4)" d="M 813.109 208.21868 
+L 845.135 208.21868 
+L 845.135 180.923498 
+L 813.109 180.923498 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_26">
+    <path clip-path="url(#p8db3b597f4)" d="M 845.135 208.21868 
+L 877.161 208.21868 
+L 877.161 180.923498 
+L 845.135 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_27">
+    <path clip-path="url(#p8db3b597f4)" d="M 877.161 208.21868 
+L 909.187 208.21868 
+L 909.187 180.923498 
+L 877.161 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_28">
+    <path clip-path="url(#p8db3b597f4)" d="M 909.187 208.21868 
+L 941.213 208.21868 
+L 941.213 180.923498 
+L 909.187 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_29">
+    <path clip-path="url(#p8db3b597f4)" d="M 108.537 180.923498 
+L 140.563 180.923498 
+L 140.563 153.628317 
+L 108.537 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_30">
+    <path clip-path="url(#p8db3b597f4)" d="M 140.563 180.923498 
+L 172.589 180.923498 
+L 172.589 153.628317 
+L 140.563 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_31">
+    <path clip-path="url(#p8db3b597f4)" d="M 172.589 180.923498 
+L 204.615 180.923498 
+L 204.615 153.628317 
+L 172.589 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_32">
+    <path clip-path="url(#p8db3b597f4)" d="M 204.615 180.923498 
+L 236.641 180.923498 
+L 236.641 153.628317 
+L 204.615 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_33">
+    <path clip-path="url(#p8db3b597f4)" d="M 236.641 180.923498 
+L 268.667 180.923498 
+L 268.667 153.628317 
+L 236.641 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_34">
+    <path clip-path="url(#p8db3b597f4)" d="M 268.667 180.923498 
+L 300.693 180.923498 
+L 300.693 153.628317 
+L 268.667 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_35">
+    <path clip-path="url(#p8db3b597f4)" d="M 300.693 180.923498 
+L 332.719 180.923498 
+L 332.719 153.628317 
+L 300.693 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_36">
+    <path clip-path="url(#p8db3b597f4)" d="M 332.719 180.923498 
+L 364.745 180.923498 
+L 364.745 153.628317 
+L 332.719 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_37">
+    <path clip-path="url(#p8db3b597f4)" d="M 364.745 180.923498 
+L 396.771 180.923498 
+L 396.771 153.628317 
+L 364.745 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_38">
+    <path clip-path="url(#p8db3b597f4)" d="M 396.771 180.923498 
+L 428.797 180.923498 
+L 428.797 153.628317 
+L 396.771 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_39">
+    <path clip-path="url(#p8db3b597f4)" d="M 428.797 180.923498 
+L 460.823 180.923498 
+L 460.823 153.628317 
+L 428.797 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_40">
+    <path clip-path="url(#p8db3b597f4)" d="M 460.823 180.923498 
+L 492.849 180.923498 
+L 492.849 153.628317 
+L 460.823 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_41">
+    <path clip-path="url(#p8db3b597f4)" d="M 492.849 180.923498 
+L 524.875 180.923498 
+L 524.875 153.628317 
+L 492.849 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_42">
+    <path clip-path="url(#p8db3b597f4)" d="M 524.875 180.923498 
+L 556.901 180.923498 
+L 556.901 153.628317 
+L 524.875 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_43">
+    <path clip-path="url(#p8db3b597f4)" d="M 556.901 180.923498 
+L 588.927 180.923498 
+L 588.927 153.628317 
+L 556.901 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_44">
+    <path clip-path="url(#p8db3b597f4)" d="M 588.927 180.923498 
+L 620.953 180.923498 
+L 620.953 153.628317 
+L 588.927 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_45">
+    <path clip-path="url(#p8db3b597f4)" d="M 620.953 180.923498 
+L 652.979 180.923498 
+L 652.979 153.628317 
+L 620.953 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_46">
+    <path clip-path="url(#p8db3b597f4)" d="M 652.979 180.923498 
+L 685.005 180.923498 
+L 685.005 153.628317 
+L 652.979 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_47">
+    <path clip-path="url(#p8db3b597f4)" d="M 685.005 180.923498 
+L 717.031 180.923498 
+L 717.031 153.628317 
+L 685.005 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_48">
+    <path clip-path="url(#p8db3b597f4)" d="M 717.031 180.923498 
+L 749.057 180.923498 
+L 749.057 153.628317 
+L 717.031 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_49">
+    <path clip-path="url(#p8db3b597f4)" d="M 749.057 180.923498 
+L 781.083 180.923498 
+L 781.083 153.628317 
+L 749.057 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_50">
+    <path clip-path="url(#p8db3b597f4)" d="M 781.083 180.923498 
+L 813.109 180.923498 
+L 813.109 153.628317 
+L 781.083 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_51">
+    <path clip-path="url(#p8db3b597f4)" d="M 813.109 180.923498 
+L 845.135 180.923498 
+L 845.135 153.628317 
+L 813.109 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_52">
+    <path clip-path="url(#p8db3b597f4)" d="M 845.135 180.923498 
+L 877.161 180.923498 
+L 877.161 153.628317 
+L 845.135 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_53">
+    <path clip-path="url(#p8db3b597f4)" d="M 877.161 180.923498 
+L 909.187 180.923498 
+L 909.187 153.628317 
+L 877.161 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_54">
+    <path clip-path="url(#p8db3b597f4)" d="M 909.187 180.923498 
+L 941.213 180.923498 
+L 941.213 153.628317 
+L 909.187 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_55">
+    <path clip-path="url(#p8db3b597f4)" d="M 108.537 153.628317 
+L 140.563 153.628317 
+L 140.563 126.333135 
+L 108.537 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_56">
+    <path clip-path="url(#p8db3b597f4)" d="M 140.563 153.628317 
+L 172.589 153.628317 
+L 172.589 126.333135 
+L 140.563 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_57">
+    <path clip-path="url(#p8db3b597f4)" d="M 172.589 153.628317 
+L 204.615 153.628317 
+L 204.615 126.333135 
+L 172.589 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_58">
+    <path clip-path="url(#p8db3b597f4)" d="M 204.615 153.628317 
+L 236.641 153.628317 
+L 236.641 126.333135 
+L 204.615 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_59">
+    <path clip-path="url(#p8db3b597f4)" d="M 236.641 153.628317 
+L 268.667 153.628317 
+L 268.667 126.333135 
+L 236.641 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_60">
+    <path clip-path="url(#p8db3b597f4)" d="M 268.667 153.628317 
+L 300.693 153.628317 
+L 300.693 126.333135 
+L 268.667 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_61">
+    <path clip-path="url(#p8db3b597f4)" d="M 300.693 153.628317 
+L 332.719 153.628317 
+L 332.719 126.333135 
+L 300.693 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_62">
+    <path clip-path="url(#p8db3b597f4)" d="M 332.719 153.628317 
+L 364.745 153.628317 
+L 364.745 126.333135 
+L 332.719 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_63">
+    <path clip-path="url(#p8db3b597f4)" d="M 364.745 153.628317 
+L 396.771 153.628317 
+L 396.771 126.333135 
+L 364.745 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_64">
+    <path clip-path="url(#p8db3b597f4)" d="M 396.771 153.628317 
+L 428.797 153.628317 
+L 428.797 126.333135 
+L 396.771 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_65">
+    <path clip-path="url(#p8db3b597f4)" d="M 428.797 153.628317 
+L 460.823 153.628317 
+L 460.823 126.333135 
+L 428.797 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_66">
+    <path clip-path="url(#p8db3b597f4)" d="M 460.823 153.628317 
+L 492.849 153.628317 
+L 492.849 126.333135 
+L 460.823 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_67">
+    <path clip-path="url(#p8db3b597f4)" d="M 492.849 153.628317 
+L 524.875 153.628317 
+L 524.875 126.333135 
+L 492.849 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_68">
+    <path clip-path="url(#p8db3b597f4)" d="M 524.875 153.628317 
+L 556.901 153.628317 
+L 556.901 126.333135 
+L 524.875 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_69">
+    <path clip-path="url(#p8db3b597f4)" d="M 556.901 153.628317 
+L 588.927 153.628317 
+L 588.927 126.333135 
+L 556.901 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_70">
+    <path clip-path="url(#p8db3b597f4)" d="M 588.927 153.628317 
+L 620.953 153.628317 
+L 620.953 126.333135 
+L 588.927 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_71">
+    <path clip-path="url(#p8db3b597f4)" d="M 620.953 153.628317 
+L 652.979 153.628317 
+L 652.979 126.333135 
+L 620.953 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_72">
+    <path clip-path="url(#p8db3b597f4)" d="M 652.979 153.628317 
+L 685.005 153.628317 
+L 685.005 126.333135 
+L 652.979 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_73">
+    <path clip-path="url(#p8db3b597f4)" d="M 685.005 153.628317 
+L 717.031 153.628317 
+L 717.031 126.333135 
+L 685.005 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_74">
+    <path clip-path="url(#p8db3b597f4)" d="M 717.031 153.628317 
+L 749.057 153.628317 
+L 749.057 126.333135 
+L 717.031 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_75">
+    <path clip-path="url(#p8db3b597f4)" d="M 749.057 153.628317 
+L 781.083 153.628317 
+L 781.083 126.333135 
+L 749.057 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_76">
+    <path clip-path="url(#p8db3b597f4)" d="M 781.083 153.628317 
+L 813.109 153.628317 
+L 813.109 126.333135 
+L 781.083 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_77">
+    <path clip-path="url(#p8db3b597f4)" d="M 813.109 153.628317 
+L 845.135 153.628317 
+L 845.135 126.333135 
+L 813.109 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_78">
+    <path clip-path="url(#p8db3b597f4)" d="M 845.135 153.628317 
+L 877.161 153.628317 
+L 877.161 126.333135 
+L 845.135 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_79">
+    <path clip-path="url(#p8db3b597f4)" d="M 877.161 153.628317 
+L 909.187 153.628317 
+L 909.187 126.333135 
+L 877.161 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_80">
+    <path clip-path="url(#p8db3b597f4)" d="M 909.187 153.628317 
+L 941.213 153.628317 
+L 941.213 126.333135 
+L 909.187 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_81">
+    <path clip-path="url(#p8db3b597f4)" d="M 108.537 126.333135 
+L 140.563 126.333135 
+L 140.563 99.037954 
+L 108.537 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_82">
+    <path clip-path="url(#p8db3b597f4)" d="M 140.563 126.333135 
+L 172.589 126.333135 
+L 172.589 99.037954 
+L 140.563 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_83">
+    <path clip-path="url(#p8db3b597f4)" d="M 172.589 126.333135 
+L 204.615 126.333135 
+L 204.615 99.037954 
+L 172.589 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_84">
+    <path clip-path="url(#p8db3b597f4)" d="M 204.615 126.333135 
+L 236.641 126.333135 
+L 236.641 99.037954 
+L 204.615 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_85">
+    <path clip-path="url(#p8db3b597f4)" d="M 236.641 126.333135 
+L 268.667 126.333135 
+L 268.667 99.037954 
+L 236.641 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_86">
+    <path clip-path="url(#p8db3b597f4)" d="M 268.667 126.333135 
+L 300.693 126.333135 
+L 300.693 99.037954 
+L 268.667 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_87">
+    <path clip-path="url(#p8db3b597f4)" d="M 300.693 126.333135 
+L 332.719 126.333135 
+L 332.719 99.037954 
+L 300.693 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_88">
+    <path clip-path="url(#p8db3b597f4)" d="M 332.719 126.333135 
+L 364.745 126.333135 
+L 364.745 99.037954 
+L 332.719 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_89">
+    <path clip-path="url(#p8db3b597f4)" d="M 364.745 126.333135 
+L 396.771 126.333135 
+L 396.771 99.037954 
+L 364.745 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_90">
+    <path clip-path="url(#p8db3b597f4)" d="M 396.771 126.333135 
+L 428.797 126.333135 
+L 428.797 99.037954 
+L 396.771 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_91">
+    <path clip-path="url(#p8db3b597f4)" d="M 428.797 126.333135 
+L 460.823 126.333135 
+L 460.823 99.037954 
+L 428.797 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_92">
+    <path clip-path="url(#p8db3b597f4)" d="M 460.823 126.333135 
+L 492.849 126.333135 
+L 492.849 99.037954 
+L 460.823 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_93">
+    <path clip-path="url(#p8db3b597f4)" d="M 492.849 126.333135 
+L 524.875 126.333135 
+L 524.875 99.037954 
+L 492.849 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_94">
+    <path clip-path="url(#p8db3b597f4)" d="M 524.875 126.333135 
+L 556.901 126.333135 
+L 556.901 99.037954 
+L 524.875 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_95">
+    <path clip-path="url(#p8db3b597f4)" d="M 556.901 126.333135 
+L 588.927 126.333135 
+L 588.927 99.037954 
+L 556.901 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_96">
+    <path clip-path="url(#p8db3b597f4)" d="M 588.927 126.333135 
+L 620.953 126.333135 
+L 620.953 99.037954 
+L 588.927 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_97">
+    <path clip-path="url(#p8db3b597f4)" d="M 620.953 126.333135 
+L 652.979 126.333135 
+L 652.979 99.037954 
+L 620.953 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_98">
+    <path clip-path="url(#p8db3b597f4)" d="M 652.979 126.333135 
+L 685.005 126.333135 
+L 685.005 99.037954 
+L 652.979 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_99">
+    <path clip-path="url(#p8db3b597f4)" d="M 685.005 126.333135 
+L 717.031 126.333135 
+L 717.031 99.037954 
+L 685.005 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_100">
+    <path clip-path="url(#p8db3b597f4)" d="M 717.031 126.333135 
+L 749.057 126.333135 
+L 749.057 99.037954 
+L 717.031 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_101">
+    <path clip-path="url(#p8db3b597f4)" d="M 749.057 126.333135 
+L 781.083 126.333135 
+L 781.083 99.037954 
+L 749.057 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_102">
+    <path clip-path="url(#p8db3b597f4)" d="M 781.083 126.333135 
+L 813.109 126.333135 
+L 813.109 99.037954 
+L 781.083 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_103">
+    <path clip-path="url(#p8db3b597f4)" d="M 813.109 126.333135 
+L 845.135 126.333135 
+L 845.135 99.037954 
+L 813.109 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_104">
+    <path clip-path="url(#p8db3b597f4)" d="M 845.135 126.333135 
+L 877.161 126.333135 
+L 877.161 99.037954 
+L 845.135 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_105">
+    <path clip-path="url(#p8db3b597f4)" d="M 877.161 126.333135 
+L 909.187 126.333135 
+L 909.187 99.037954 
+L 877.161 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_106">
+    <path clip-path="url(#p8db3b597f4)" d="M 909.187 126.333135 
+L 941.213 126.333135 
+L 941.213 99.037954 
+L 909.187 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_107">
+    <path clip-path="url(#p8db3b597f4)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#008000;"/>
+   </g>
+   <g id="patch_108">
+    <path clip-path="url(#p8db3b597f4)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ff0000;"/>
+   </g>
+   <g id="patch_109">
+    <path clip-path="url(#p8db3b597f4)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#0000ff;"/>
+   </g>
+   <g id="patch_110">
+    <path clip-path="url(#p8db3b597f4)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ffff00;"/>
+   </g>
+   <g id="patch_111">
+    <path clip-path="url(#p8db3b597f4)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ffa500;"/>
+   </g>
+   <g id="patch_112">
+    <path clip-path="url(#p8db3b597f4)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#808080;"/>
+   </g>
+   <g id="patch_113">
+    <path clip-path="url(#p8db3b597f4)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:url(#h5e823a5e2e);"/>
+   </g>
+   <g id="patch_114">
+    <path clip-path="url(#p8db3b597f4)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ffffff;"/>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 
+L 0 3.5 
+" id="m7cb7a00a80" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="156.576" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <!-- 1 CPU -->
+      <g transform="translate(150.482064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 12.40625 8.296875 
+L 28.515625 8.296875 
+L 28.515625 63.921875 
+L 10.984375 60.40625 
+L 10.984375 69.390625 
+L 28.421875 72.90625 
+L 38.28125 72.90625 
+L 38.28125 8.296875 
+L 54.390625 8.296875 
+L 54.390625 0 
+L 12.40625 0 
+z
+" id="DejaVuSans-49"/>
+        <path id="DejaVuSans-32"/>
+        <path d="M 64.40625 67.28125 
+L 64.40625 56.890625 
+Q 59.421875 61.53125 53.78125 63.8125 
+Q 48.140625 66.109375 41.796875 66.109375 
+Q 29.296875 66.109375 22.65625 58.46875 
+Q 16.015625 50.828125 16.015625 36.375 
+Q 16.015625 21.96875 22.65625 14.328125 
+Q 29.296875 6.6875 41.796875 6.6875 
+Q 48.140625 6.6875 53.78125 8.984375 
+Q 59.421875 11.28125 64.40625 15.921875 
+L 64.40625 5.609375 
+Q 59.234375 2.09375 53.4375 0.328125 
+Q 47.65625 -1.421875 41.21875 -1.421875 
+Q 24.65625 -1.421875 15.125 8.703125 
+Q 5.609375 18.84375 5.609375 36.375 
+Q 5.609375 53.953125 15.125 64.078125 
+Q 24.65625 74.21875 41.21875 74.21875 
+Q 47.75 74.21875 53.53125 72.484375 
+Q 59.328125 70.75 64.40625 67.28125 
+z
+" id="DejaVuSans-67"/>
+        <path d="M 19.671875 64.796875 
+L 19.671875 37.40625 
+L 32.078125 37.40625 
+Q 38.96875 37.40625 42.71875 40.96875 
+Q 46.484375 44.53125 46.484375 51.125 
+Q 46.484375 57.671875 42.71875 61.234375 
+Q 38.96875 64.796875 32.078125 64.796875 
+z
+M 9.8125 72.90625 
+L 32.078125 72.90625 
+Q 44.34375 72.90625 50.609375 67.359375 
+Q 56.890625 61.8125 56.890625 51.125 
+Q 56.890625 40.328125 50.609375 34.8125 
+Q 44.34375 29.296875 32.078125 29.296875 
+L 19.671875 29.296875 
+L 19.671875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-80"/>
+        <path d="M 8.6875 72.90625 
+L 18.609375 72.90625 
+L 18.609375 28.609375 
+Q 18.609375 16.890625 22.84375 11.734375 
+Q 27.09375 6.59375 36.625 6.59375 
+Q 46.09375 6.59375 50.34375 11.734375 
+Q 54.59375 16.890625 54.59375 28.609375 
+L 54.59375 72.90625 
+L 64.5 72.90625 
+L 64.5 27.390625 
+Q 64.5 13.140625 57.4375 5.859375 
+Q 50.390625 -1.421875 36.625 -1.421875 
+Q 22.796875 -1.421875 15.734375 5.859375 
+Q 8.6875 13.140625 8.6875 27.390625 
+z
+" id="DejaVuSans-85"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="188.602" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <!-- 2 CPUs -->
+      <g transform="translate(180.945252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 19.1875 8.296875 
+L 53.609375 8.296875 
+L 53.609375 0 
+L 7.328125 0 
+L 7.328125 8.296875 
+Q 12.9375 14.109375 22.625 23.890625 
+Q 32.328125 33.6875 34.8125 36.53125 
+Q 39.546875 41.84375 41.421875 45.53125 
+Q 43.3125 49.21875 43.3125 52.78125 
+Q 43.3125 58.59375 39.234375 62.25 
+Q 35.15625 65.921875 28.609375 65.921875 
+Q 23.96875 65.921875 18.8125 64.3125 
+Q 13.671875 62.703125 7.8125 59.421875 
+L 7.8125 69.390625 
+Q 13.765625 71.78125 18.9375 73 
+Q 24.125 74.21875 28.421875 74.21875 
+Q 39.75 74.21875 46.484375 68.546875 
+Q 53.21875 62.890625 53.21875 53.421875 
+Q 53.21875 48.921875 51.53125 44.890625 
+Q 49.859375 40.875 45.40625 35.40625 
+Q 44.1875 33.984375 37.640625 27.21875 
+Q 31.109375 20.453125 19.1875 8.296875 
+z
+" id="DejaVuSans-50"/>
+        <path d="M 44.28125 53.078125 
+L 44.28125 44.578125 
+Q 40.484375 46.53125 36.375 47.5 
+Q 32.28125 48.484375 27.875 48.484375 
+Q 21.1875 48.484375 17.84375 46.4375 
+Q 14.5 44.390625 14.5 40.28125 
+Q 14.5 37.15625 16.890625 35.375 
+Q 19.28125 33.59375 26.515625 31.984375 
+L 29.59375 31.296875 
+Q 39.15625 29.25 43.1875 25.515625 
+Q 47.21875 21.78125 47.21875 15.09375 
+Q 47.21875 7.46875 41.1875 3.015625 
+Q 35.15625 -1.421875 24.609375 -1.421875 
+Q 20.21875 -1.421875 15.453125 -0.5625 
+Q 10.6875 0.296875 5.421875 2 
+L 5.421875 11.28125 
+Q 10.40625 8.6875 15.234375 7.390625 
+Q 20.0625 6.109375 24.8125 6.109375 
+Q 31.15625 6.109375 34.5625 8.28125 
+Q 37.984375 10.453125 37.984375 14.40625 
+Q 37.984375 18.0625 35.515625 20.015625 
+Q 33.0625 21.96875 24.703125 23.78125 
+L 21.578125 24.515625 
+Q 13.234375 26.265625 9.515625 29.90625 
+Q 5.8125 33.546875 5.8125 39.890625 
+Q 5.8125 47.609375 11.28125 51.796875 
+Q 16.75 56 26.8125 56 
+Q 31.78125 56 36.171875 55.265625 
+Q 40.578125 54.546875 44.28125 53.078125 
+z
+" id="DejaVuSans-115"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="220.628" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <!-- 4 CPUs -->
+      <g transform="translate(212.971252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 37.796875 64.3125 
+L 12.890625 25.390625 
+L 37.796875 25.390625 
+z
+M 35.203125 72.90625 
+L 47.609375 72.90625 
+L 47.609375 25.390625 
+L 58.015625 25.390625 
+L 58.015625 17.1875 
+L 47.609375 17.1875 
+L 47.609375 0 
+L 37.796875 0 
+L 37.796875 17.1875 
+L 4.890625 17.1875 
+L 4.890625 26.703125 
+z
+" id="DejaVuSans-52"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="252.654" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <!-- 8 CPUs -->
+      <g transform="translate(244.997252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 31.78125 34.625 
+Q 24.75 34.625 20.71875 30.859375 
+Q 16.703125 27.09375 16.703125 20.515625 
+Q 16.703125 13.921875 20.71875 10.15625 
+Q 24.75 6.390625 31.78125 6.390625 
+Q 38.8125 6.390625 42.859375 10.171875 
+Q 46.921875 13.96875 46.921875 20.515625 
+Q 46.921875 27.09375 42.890625 30.859375 
+Q 38.875 34.625 31.78125 34.625 
+z
+M 21.921875 38.8125 
+Q 15.578125 40.375 12.03125 44.71875 
+Q 8.5 49.078125 8.5 55.328125 
+Q 8.5 64.0625 14.71875 69.140625 
+Q 20.953125 74.21875 31.78125 74.21875 
+Q 42.671875 74.21875 48.875 69.140625 
+Q 55.078125 64.0625 55.078125 55.328125 
+Q 55.078125 49.078125 51.53125 44.71875 
+Q 48 40.375 41.703125 38.8125 
+Q 48.828125 37.15625 52.796875 32.3125 
+Q 56.78125 27.484375 56.78125 20.515625 
+Q 56.78125 9.90625 50.3125 4.234375 
+Q 43.84375 -1.421875 31.78125 -1.421875 
+Q 19.734375 -1.421875 13.25 4.234375 
+Q 6.78125 9.90625 6.78125 20.515625 
+Q 6.78125 27.484375 10.78125 32.3125 
+Q 14.796875 37.15625 21.921875 38.8125 
+z
+M 18.3125 54.390625 
+Q 18.3125 48.734375 21.84375 45.5625 
+Q 25.390625 42.390625 31.78125 42.390625 
+Q 38.140625 42.390625 41.71875 45.5625 
+Q 45.3125 48.734375 45.3125 54.390625 
+Q 45.3125 60.0625 41.71875 63.234375 
+Q 38.140625 66.40625 31.78125 66.40625 
+Q 25.390625 66.40625 21.84375 63.234375 
+Q 18.3125 60.0625 18.3125 54.390625 
+z
+" id="DejaVuSans-56"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="316.706" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <!-- 1 CPU -->
+      <g transform="translate(310.612064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_6">
+     <g id="line2d_6">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="348.732" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <!-- 2 CPUs -->
+      <g transform="translate(341.075252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_7">
+     <g id="line2d_7">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="380.758" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_7">
+      <!-- 4 CPUs -->
+      <g transform="translate(373.101252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_8">
+     <g id="line2d_8">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="412.784" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_8">
+      <!-- 8 CPUs -->
+      <g transform="translate(405.127252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_9">
+     <g id="line2d_9">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="476.836" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <!-- 1 CPU -->
+      <g transform="translate(470.742064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_10">
+     <g id="line2d_10">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="508.862" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_10">
+      <!-- 2 CPUs -->
+      <g transform="translate(501.205252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_11">
+     <g id="line2d_11">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="540.888" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_11">
+      <!-- 4 CPUs -->
+      <g transform="translate(533.231252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_12">
+     <g id="line2d_12">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="572.914" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_12">
+      <!-- 8 CPUs -->
+      <g transform="translate(565.257252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_13">
+     <g id="line2d_13">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="636.966" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_13">
+      <!-- 1 CPU -->
+      <g transform="translate(630.872064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_14">
+     <g id="line2d_14">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="668.992" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_14">
+      <!-- 2 CPUs -->
+      <g transform="translate(661.335252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_15">
+     <g id="line2d_15">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="701.018" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_15">
+      <!-- 4 CPUs -->
+      <g transform="translate(693.361252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_16">
+     <g id="line2d_16">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="733.044" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_16">
+      <!-- 8 CPUs -->
+      <g transform="translate(725.387252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_17">
+     <g id="line2d_17">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="797.096" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_17">
+      <!-- 1 CPU -->
+      <g transform="translate(791.002064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_18">
+     <g id="line2d_18">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="829.122" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_18">
+      <!-- 2 CPUs -->
+      <g transform="translate(821.465252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_19">
+     <g id="line2d_19">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="861.148" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_19">
+      <!-- 4 CPUs -->
+      <g transform="translate(853.491252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_20">
+     <g id="line2d_20">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="893.174" xlink:href="#m7cb7a00a80" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_20">
+      <!-- 8 CPUs -->
+      <g transform="translate(885.517252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="text_21">
+     <!-- Number of CPUs, per each Linux kernel version -->
+     <g transform="translate(347.978125 272.880716)scale(0.15 -0.15)">
+      <defs>
+       <path d="M 9.8125 72.90625 
+L 23.09375 72.90625 
+L 55.421875 11.921875 
+L 55.421875 72.90625 
+L 64.984375 72.90625 
+L 64.984375 0 
+L 51.703125 0 
+L 19.390625 60.984375 
+L 19.390625 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-78"/>
+       <path d="M 8.5 21.578125 
+L 8.5 54.6875 
+L 17.484375 54.6875 
+L 17.484375 21.921875 
+Q 17.484375 14.15625 20.5 10.265625 
+Q 23.53125 6.390625 29.59375 6.390625 
+Q 36.859375 6.390625 41.078125 11.03125 
+Q 45.3125 15.671875 45.3125 23.6875 
+L 45.3125 54.6875 
+L 54.296875 54.6875 
+L 54.296875 0 
+L 45.3125 0 
+L 45.3125 8.40625 
+Q 42.046875 3.421875 37.71875 1 
+Q 33.40625 -1.421875 27.6875 -1.421875 
+Q 18.265625 -1.421875 13.375 4.4375 
+Q 8.5 10.296875 8.5 21.578125 
+z
+M 31.109375 56 
+z
+" id="DejaVuSans-117"/>
+       <path d="M 52 44.1875 
+Q 55.375 50.25 60.0625 53.125 
+Q 64.75 56 71.09375 56 
+Q 79.640625 56 84.28125 50.015625 
+Q 88.921875 44.046875 88.921875 33.015625 
+L 88.921875 0 
+L 79.890625 0 
+L 79.890625 32.71875 
+Q 79.890625 40.578125 77.09375 44.375 
+Q 74.3125 48.1875 68.609375 48.1875 
+Q 61.625 48.1875 57.5625 43.546875 
+Q 53.515625 38.921875 53.515625 30.90625 
+L 53.515625 0 
+L 44.484375 0 
+L 44.484375 32.71875 
+Q 44.484375 40.625 41.703125 44.40625 
+Q 38.921875 48.1875 33.109375 48.1875 
+Q 26.21875 48.1875 22.15625 43.53125 
+Q 18.109375 38.875 18.109375 30.90625 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.1875 
+Q 21.1875 51.21875 25.484375 53.609375 
+Q 29.78125 56 35.6875 56 
+Q 41.65625 56 45.828125 52.96875 
+Q 50 49.953125 52 44.1875 
+z
+" id="DejaVuSans-109"/>
+       <path d="M 48.6875 27.296875 
+Q 48.6875 37.203125 44.609375 42.84375 
+Q 40.53125 48.484375 33.40625 48.484375 
+Q 26.265625 48.484375 22.1875 42.84375 
+Q 18.109375 37.203125 18.109375 27.296875 
+Q 18.109375 17.390625 22.1875 11.75 
+Q 26.265625 6.109375 33.40625 6.109375 
+Q 40.53125 6.109375 44.609375 11.75 
+Q 48.6875 17.390625 48.6875 27.296875 
+z
+M 18.109375 46.390625 
+Q 20.953125 51.265625 25.265625 53.625 
+Q 29.59375 56 35.59375 56 
+Q 45.5625 56 51.78125 48.09375 
+Q 58.015625 40.1875 58.015625 27.296875 
+Q 58.015625 14.40625 51.78125 6.484375 
+Q 45.5625 -1.421875 35.59375 -1.421875 
+Q 29.59375 -1.421875 25.265625 0.953125 
+Q 20.953125 3.328125 18.109375 8.203125 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 75.984375 
+L 18.109375 75.984375 
+z
+" id="DejaVuSans-98"/>
+       <path d="M 56.203125 29.59375 
+L 56.203125 25.203125 
+L 14.890625 25.203125 
+Q 15.484375 15.921875 20.484375 11.0625 
+Q 25.484375 6.203125 34.421875 6.203125 
+Q 39.59375 6.203125 44.453125 7.46875 
+Q 49.3125 8.734375 54.109375 11.28125 
+L 54.109375 2.78125 
+Q 49.265625 0.734375 44.1875 -0.34375 
+Q 39.109375 -1.421875 33.890625 -1.421875 
+Q 20.796875 -1.421875 13.15625 6.1875 
+Q 5.515625 13.8125 5.515625 26.8125 
+Q 5.515625 40.234375 12.765625 48.109375 
+Q 20.015625 56 32.328125 56 
+Q 43.359375 56 49.78125 48.890625 
+Q 56.203125 41.796875 56.203125 29.59375 
+z
+M 47.21875 32.234375 
+Q 47.125 39.59375 43.09375 43.984375 
+Q 39.0625 48.390625 32.421875 48.390625 
+Q 24.90625 48.390625 20.390625 44.140625 
+Q 15.875 39.890625 15.1875 32.171875 
+z
+" id="DejaVuSans-101"/>
+       <path d="M 41.109375 46.296875 
+Q 39.59375 47.171875 37.8125 47.578125 
+Q 36.03125 48 33.890625 48 
+Q 26.265625 48 22.1875 43.046875 
+Q 18.109375 38.09375 18.109375 28.8125 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.1875 
+Q 20.953125 51.171875 25.484375 53.578125 
+Q 30.03125 56 36.53125 56 
+Q 37.453125 56 38.578125 55.875 
+Q 39.703125 55.765625 41.0625 55.515625 
+z
+" id="DejaVuSans-114"/>
+       <path d="M 30.609375 48.390625 
+Q 23.390625 48.390625 19.1875 42.75 
+Q 14.984375 37.109375 14.984375 27.296875 
+Q 14.984375 17.484375 19.15625 11.84375 
+Q 23.34375 6.203125 30.609375 6.203125 
+Q 37.796875 6.203125 41.984375 11.859375 
+Q 46.1875 17.53125 46.1875 27.296875 
+Q 46.1875 37.015625 41.984375 42.703125 
+Q 37.796875 48.390625 30.609375 48.390625 
+z
+M 30.609375 56 
+Q 42.328125 56 49.015625 48.375 
+Q 55.71875 40.765625 55.71875 27.296875 
+Q 55.71875 13.875 49.015625 6.21875 
+Q 42.328125 -1.421875 30.609375 -1.421875 
+Q 18.84375 -1.421875 12.171875 6.21875 
+Q 5.515625 13.875 5.515625 27.296875 
+Q 5.515625 40.765625 12.171875 48.375 
+Q 18.84375 56 30.609375 56 
+z
+" id="DejaVuSans-111"/>
+       <path d="M 37.109375 75.984375 
+L 37.109375 68.5 
+L 28.515625 68.5 
+Q 23.6875 68.5 21.796875 66.546875 
+Q 19.921875 64.59375 19.921875 59.515625 
+L 19.921875 54.6875 
+L 34.71875 54.6875 
+L 34.71875 47.703125 
+L 19.921875 47.703125 
+L 19.921875 0 
+L 10.890625 0 
+L 10.890625 47.703125 
+L 2.296875 47.703125 
+L 2.296875 54.6875 
+L 10.890625 54.6875 
+L 10.890625 58.5 
+Q 10.890625 67.625 15.140625 71.796875 
+Q 19.390625 75.984375 28.609375 75.984375 
+z
+" id="DejaVuSans-102"/>
+       <path d="M 11.71875 12.40625 
+L 22.015625 12.40625 
+L 22.015625 4 
+L 14.015625 -11.625 
+L 7.71875 -11.625 
+L 11.71875 4 
+z
+" id="DejaVuSans-44"/>
+       <path d="M 18.109375 8.203125 
+L 18.109375 -20.796875 
+L 9.078125 -20.796875 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.390625 
+Q 20.953125 51.265625 25.265625 53.625 
+Q 29.59375 56 35.59375 56 
+Q 45.5625 56 51.78125 48.09375 
+Q 58.015625 40.1875 58.015625 27.296875 
+Q 58.015625 14.40625 51.78125 6.484375 
+Q 45.5625 -1.421875 35.59375 -1.421875 
+Q 29.59375 -1.421875 25.265625 0.953125 
+Q 20.953125 3.328125 18.109375 8.203125 
+z
+M 48.6875 27.296875 
+Q 48.6875 37.203125 44.609375 42.84375 
+Q 40.53125 48.484375 33.40625 48.484375 
+Q 26.265625 48.484375 22.1875 42.84375 
+Q 18.109375 37.203125 18.109375 27.296875 
+Q 18.109375 17.390625 22.1875 11.75 
+Q 26.265625 6.109375 33.40625 6.109375 
+Q 40.53125 6.109375 44.609375 11.75 
+Q 48.6875 17.390625 48.6875 27.296875 
+z
+" id="DejaVuSans-112"/>
+       <path d="M 34.28125 27.484375 
+Q 23.390625 27.484375 19.1875 25 
+Q 14.984375 22.515625 14.984375 16.5 
+Q 14.984375 11.71875 18.140625 8.90625 
+Q 21.296875 6.109375 26.703125 6.109375 
+Q 34.1875 6.109375 38.703125 11.40625 
+Q 43.21875 16.703125 43.21875 25.484375 
+L 43.21875 27.484375 
+z
+M 52.203125 31.203125 
+L 52.203125 0 
+L 43.21875 0 
+L 43.21875 8.296875 
+Q 40.140625 3.328125 35.546875 0.953125 
+Q 30.953125 -1.421875 24.3125 -1.421875 
+Q 15.921875 -1.421875 10.953125 3.296875 
+Q 6 8.015625 6 15.921875 
+Q 6 25.140625 12.171875 29.828125 
+Q 18.359375 34.515625 30.609375 34.515625 
+L 43.21875 34.515625 
+L 43.21875 35.40625 
+Q 43.21875 41.609375 39.140625 45 
+Q 35.0625 48.390625 27.6875 48.390625 
+Q 23 48.390625 18.546875 47.265625 
+Q 14.109375 46.140625 10.015625 43.890625 
+L 10.015625 52.203125 
+Q 14.9375 54.109375 19.578125 55.046875 
+Q 24.21875 56 28.609375 56 
+Q 40.484375 56 46.34375 49.84375 
+Q 52.203125 43.703125 52.203125 31.203125 
+z
+" id="DejaVuSans-97"/>
+       <path d="M 48.78125 52.59375 
+L 48.78125 44.1875 
+Q 44.96875 46.296875 41.140625 47.34375 
+Q 37.3125 48.390625 33.40625 48.390625 
+Q 24.65625 48.390625 19.8125 42.84375 
+Q 14.984375 37.3125 14.984375 27.296875 
+Q 14.984375 17.28125 19.8125 11.734375 
+Q 24.65625 6.203125 33.40625 6.203125 
+Q 37.3125 6.203125 41.140625 7.25 
+Q 44.96875 8.296875 48.78125 10.40625 
+L 48.78125 2.09375 
+Q 45.015625 0.34375 40.984375 -0.53125 
+Q 36.96875 -1.421875 32.421875 -1.421875 
+Q 20.0625 -1.421875 12.78125 6.34375 
+Q 5.515625 14.109375 5.515625 27.296875 
+Q 5.515625 40.671875 12.859375 48.328125 
+Q 20.21875 56 33.015625 56 
+Q 37.15625 56 41.109375 55.140625 
+Q 45.0625 54.296875 48.78125 52.59375 
+z
+" id="DejaVuSans-99"/>
+       <path d="M 54.890625 33.015625 
+L 54.890625 0 
+L 45.90625 0 
+L 45.90625 32.71875 
+Q 45.90625 40.484375 42.875 44.328125 
+Q 39.84375 48.1875 33.796875 48.1875 
+Q 26.515625 48.1875 22.3125 43.546875 
+Q 18.109375 38.921875 18.109375 30.90625 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 75.984375 
+L 18.109375 75.984375 
+L 18.109375 46.1875 
+Q 21.34375 51.125 25.703125 53.5625 
+Q 30.078125 56 35.796875 56 
+Q 45.21875 56 50.046875 50.171875 
+Q 54.890625 44.34375 54.890625 33.015625 
+z
+" id="DejaVuSans-104"/>
+       <path d="M 9.8125 72.90625 
+L 19.671875 72.90625 
+L 19.671875 8.296875 
+L 55.171875 8.296875 
+L 55.171875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-76"/>
+       <path d="M 9.421875 54.6875 
+L 18.40625 54.6875 
+L 18.40625 0 
+L 9.421875 0 
+z
+M 9.421875 75.984375 
+L 18.40625 75.984375 
+L 18.40625 64.59375 
+L 9.421875 64.59375 
+z
+" id="DejaVuSans-105"/>
+       <path d="M 54.890625 33.015625 
+L 54.890625 0 
+L 45.90625 0 
+L 45.90625 32.71875 
+Q 45.90625 40.484375 42.875 44.328125 
+Q 39.84375 48.1875 33.796875 48.1875 
+Q 26.515625 48.1875 22.3125 43.546875 
+Q 18.109375 38.921875 18.109375 30.90625 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.1875 
+Q 21.34375 51.125 25.703125 53.5625 
+Q 30.078125 56 35.796875 56 
+Q 45.21875 56 50.046875 50.171875 
+Q 54.890625 44.34375 54.890625 33.015625 
+z
+" id="DejaVuSans-110"/>
+       <path d="M 54.890625 54.6875 
+L 35.109375 28.078125 
+L 55.90625 0 
+L 45.3125 0 
+L 29.390625 21.484375 
+L 13.484375 0 
+L 2.875 0 
+L 24.125 28.609375 
+L 4.6875 54.6875 
+L 15.28125 54.6875 
+L 29.78125 35.203125 
+L 44.28125 54.6875 
+z
+" id="DejaVuSans-120"/>
+       <path d="M 9.078125 75.984375 
+L 18.109375 75.984375 
+L 18.109375 31.109375 
+L 44.921875 54.6875 
+L 56.390625 54.6875 
+L 27.390625 29.109375 
+L 57.625 0 
+L 45.90625 0 
+L 18.109375 26.703125 
+L 18.109375 0 
+L 9.078125 0 
+z
+" id="DejaVuSans-107"/>
+       <path d="M 9.421875 75.984375 
+L 18.40625 75.984375 
+L 18.40625 0 
+L 9.421875 0 
+z
+" id="DejaVuSans-108"/>
+       <path d="M 2.984375 54.6875 
+L 12.5 54.6875 
+L 29.59375 8.796875 
+L 46.6875 54.6875 
+L 56.203125 54.6875 
+L 35.6875 0 
+L 23.484375 0 
+z
+" id="DejaVuSans-118"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-78"/>
+      <use x="74.804688" xlink:href="#DejaVuSans-117"/>
+      <use x="138.183594" xlink:href="#DejaVuSans-109"/>
+      <use x="235.595703" xlink:href="#DejaVuSans-98"/>
+      <use x="299.072266" xlink:href="#DejaVuSans-101"/>
+      <use x="360.595703" xlink:href="#DejaVuSans-114"/>
+      <use x="401.708984" xlink:href="#DejaVuSans-32"/>
+      <use x="433.496094" xlink:href="#DejaVuSans-111"/>
+      <use x="494.677734" xlink:href="#DejaVuSans-102"/>
+      <use x="529.882812" xlink:href="#DejaVuSans-32"/>
+      <use x="561.669922" xlink:href="#DejaVuSans-67"/>
+      <use x="631.494141" xlink:href="#DejaVuSans-80"/>
+      <use x="691.796875" xlink:href="#DejaVuSans-85"/>
+      <use x="764.990234" xlink:href="#DejaVuSans-115"/>
+      <use x="817.089844" xlink:href="#DejaVuSans-44"/>
+      <use x="848.876953" xlink:href="#DejaVuSans-32"/>
+      <use x="880.664062" xlink:href="#DejaVuSans-112"/>
+      <use x="944.140625" xlink:href="#DejaVuSans-101"/>
+      <use x="1005.664062" xlink:href="#DejaVuSans-114"/>
+      <use x="1046.777344" xlink:href="#DejaVuSans-32"/>
+      <use x="1078.564453" xlink:href="#DejaVuSans-101"/>
+      <use x="1140.087891" xlink:href="#DejaVuSans-97"/>
+      <use x="1201.367188" xlink:href="#DejaVuSans-99"/>
+      <use x="1256.347656" xlink:href="#DejaVuSans-104"/>
+      <use x="1319.726562" xlink:href="#DejaVuSans-32"/>
+      <use x="1351.513672" xlink:href="#DejaVuSans-76"/>
+      <use x="1407.226562" xlink:href="#DejaVuSans-105"/>
+      <use x="1435.009766" xlink:href="#DejaVuSans-110"/>
+      <use x="1498.388672" xlink:href="#DejaVuSans-117"/>
+      <use x="1561.767578" xlink:href="#DejaVuSans-120"/>
+      <use x="1620.947266" xlink:href="#DejaVuSans-32"/>
+      <use x="1652.734375" xlink:href="#DejaVuSans-107"/>
+      <use x="1707.019531" xlink:href="#DejaVuSans-101"/>
+      <use x="1768.542969" xlink:href="#DejaVuSans-114"/>
+      <use x="1807.90625" xlink:href="#DejaVuSans-110"/>
+      <use x="1871.285156" xlink:href="#DejaVuSans-101"/>
+      <use x="1932.808594" xlink:href="#DejaVuSans-108"/>
+      <use x="1960.591797" xlink:href="#DejaVuSans-32"/>
+      <use x="1992.378906" xlink:href="#DejaVuSans-118"/>
+      <use x="2051.558594" xlink:href="#DejaVuSans-101"/>
+      <use x="2113.082031" xlink:href="#DejaVuSans-114"/>
+      <use x="2154.195312" xlink:href="#DejaVuSans-115"/>
+      <use x="2206.294922" xlink:href="#DejaVuSans-105"/>
+      <use x="2234.078125" xlink:href="#DejaVuSans-111"/>
+      <use x="2295.259766" xlink:href="#DejaVuSans-110"/>
+     </g>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_21">
+      <defs>
+       <path d="M 0 0 
+L -3.5 0 
+" id="m45e7f18d57" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m45e7f18d57" y="194.571089"/>
+      </g>
+     </g>
+     <g id="text_22">
+      <!-- X86KvmCPU -->
+      <g transform="translate(43.001875 199.130152)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 6.296875 72.90625 
+L 16.890625 72.90625 
+L 35.015625 45.796875 
+L 53.21875 72.90625 
+L 63.8125 72.90625 
+L 40.375 37.890625 
+L 65.375 0 
+L 54.78125 0 
+L 34.28125 31 
+L 13.625 0 
+L 2.984375 0 
+L 29 38.921875 
+z
+" id="DejaVuSans-88"/>
+        <path d="M 33.015625 40.375 
+Q 26.375 40.375 22.484375 35.828125 
+Q 18.609375 31.296875 18.609375 23.390625 
+Q 18.609375 15.53125 22.484375 10.953125 
+Q 26.375 6.390625 33.015625 6.390625 
+Q 39.65625 6.390625 43.53125 10.953125 
+Q 47.40625 15.53125 47.40625 23.390625 
+Q 47.40625 31.296875 43.53125 35.828125 
+Q 39.65625 40.375 33.015625 40.375 
+z
+M 52.59375 71.296875 
+L 52.59375 62.3125 
+Q 48.875 64.0625 45.09375 64.984375 
+Q 41.3125 65.921875 37.59375 65.921875 
+Q 27.828125 65.921875 22.671875 59.328125 
+Q 17.53125 52.734375 16.796875 39.40625 
+Q 19.671875 43.65625 24.015625 45.921875 
+Q 28.375 48.1875 33.59375 48.1875 
+Q 44.578125 48.1875 50.953125 41.515625 
+Q 57.328125 34.859375 57.328125 23.390625 
+Q 57.328125 12.15625 50.6875 5.359375 
+Q 44.046875 -1.421875 33.015625 -1.421875 
+Q 20.359375 -1.421875 13.671875 8.265625 
+Q 6.984375 17.96875 6.984375 36.375 
+Q 6.984375 53.65625 15.1875 63.9375 
+Q 23.390625 74.21875 37.203125 74.21875 
+Q 40.921875 74.21875 44.703125 73.484375 
+Q 48.484375 72.75 52.59375 71.296875 
+z
+" id="DejaVuSans-54"/>
+        <path d="M 9.8125 72.90625 
+L 19.671875 72.90625 
+L 19.671875 42.09375 
+L 52.390625 72.90625 
+L 65.09375 72.90625 
+L 28.90625 38.921875 
+L 67.671875 0 
+L 54.6875 0 
+L 19.671875 35.109375 
+L 19.671875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-75"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-88"/>
+       <use x="68.505859" xlink:href="#DejaVuSans-56"/>
+       <use x="132.128906" xlink:href="#DejaVuSans-54"/>
+       <use x="195.751953" xlink:href="#DejaVuSans-75"/>
+       <use x="261.328125" xlink:href="#DejaVuSans-118"/>
+       <use x="320.507812" xlink:href="#DejaVuSans-109"/>
+       <use x="417.919922" xlink:href="#DejaVuSans-67"/>
+       <use x="487.744141" xlink:href="#DejaVuSans-80"/>
+       <use x="548.046875" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_22">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m45e7f18d57" y="167.275908"/>
+      </g>
+     </g>
+     <g id="text_23">
+      <!-- AtomicSimpleCPU -->
+      <g transform="translate(10.51 171.83497)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 34.1875 63.1875 
+L 20.796875 26.90625 
+L 47.609375 26.90625 
+z
+M 28.609375 72.90625 
+L 39.796875 72.90625 
+L 67.578125 0 
+L 57.328125 0 
+L 50.6875 18.703125 
+L 17.828125 18.703125 
+L 11.1875 0 
+L 0.78125 0 
+z
+" id="DejaVuSans-65"/>
+        <path d="M 18.3125 70.21875 
+L 18.3125 54.6875 
+L 36.8125 54.6875 
+L 36.8125 47.703125 
+L 18.3125 47.703125 
+L 18.3125 18.015625 
+Q 18.3125 11.328125 20.140625 9.421875 
+Q 21.96875 7.515625 27.59375 7.515625 
+L 36.8125 7.515625 
+L 36.8125 0 
+L 27.59375 0 
+Q 17.1875 0 13.234375 3.875 
+Q 9.28125 7.765625 9.28125 18.015625 
+L 9.28125 47.703125 
+L 2.6875 47.703125 
+L 2.6875 54.6875 
+L 9.28125 54.6875 
+L 9.28125 70.21875 
+z
+" id="DejaVuSans-116"/>
+        <path d="M 53.515625 70.515625 
+L 53.515625 60.890625 
+Q 47.90625 63.578125 42.921875 64.890625 
+Q 37.9375 66.21875 33.296875 66.21875 
+Q 25.25 66.21875 20.875 63.09375 
+Q 16.5 59.96875 16.5 54.203125 
+Q 16.5 49.359375 19.40625 46.890625 
+Q 22.3125 44.4375 30.421875 42.921875 
+L 36.375 41.703125 
+Q 47.40625 39.59375 52.65625 34.296875 
+Q 57.90625 29 57.90625 20.125 
+Q 57.90625 9.515625 50.796875 4.046875 
+Q 43.703125 -1.421875 29.984375 -1.421875 
+Q 24.8125 -1.421875 18.96875 -0.25 
+Q 13.140625 0.921875 6.890625 3.21875 
+L 6.890625 13.375 
+Q 12.890625 10.015625 18.65625 8.296875 
+Q 24.421875 6.59375 29.984375 6.59375 
+Q 38.421875 6.59375 43.015625 9.90625 
+Q 47.609375 13.234375 47.609375 19.390625 
+Q 47.609375 24.75 44.3125 27.78125 
+Q 41.015625 30.8125 33.5 32.328125 
+L 27.484375 33.5 
+Q 16.453125 35.6875 11.515625 40.375 
+Q 6.59375 45.0625 6.59375 53.421875 
+Q 6.59375 63.09375 13.40625 68.65625 
+Q 20.21875 74.21875 32.171875 74.21875 
+Q 37.3125 74.21875 42.625 73.28125 
+Q 47.953125 72.359375 53.515625 70.515625 
+z
+" id="DejaVuSans-83"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-65"/>
+       <use x="66.658203" xlink:href="#DejaVuSans-116"/>
+       <use x="105.867188" xlink:href="#DejaVuSans-111"/>
+       <use x="167.048828" xlink:href="#DejaVuSans-109"/>
+       <use x="264.460938" xlink:href="#DejaVuSans-105"/>
+       <use x="292.244141" xlink:href="#DejaVuSans-99"/>
+       <use x="347.224609" xlink:href="#DejaVuSans-83"/>
+       <use x="410.701172" xlink:href="#DejaVuSans-105"/>
+       <use x="438.484375" xlink:href="#DejaVuSans-109"/>
+       <use x="535.896484" xlink:href="#DejaVuSans-112"/>
+       <use x="599.373047" xlink:href="#DejaVuSans-108"/>
+       <use x="627.15625" xlink:href="#DejaVuSans-101"/>
+       <use x="688.679688" xlink:href="#DejaVuSans-67"/>
+       <use x="758.503906" xlink:href="#DejaVuSans-80"/>
+       <use x="818.806641" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_3">
+     <g id="line2d_23">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m45e7f18d57" y="139.980726"/>
+      </g>
+     </g>
+     <g id="text_24">
+      <!-- TimingSimpleCPU -->
+      <g transform="translate(11.6425 144.539789)scale(0.12 -0.12)">
+       <defs>
+        <path d="M -0.296875 72.90625 
+L 61.375 72.90625 
+L 61.375 64.59375 
+L 35.5 64.59375 
+L 35.5 0 
+L 25.59375 0 
+L 25.59375 64.59375 
+L -0.296875 64.59375 
+z
+" id="DejaVuSans-84"/>
+        <path d="M 45.40625 27.984375 
+Q 45.40625 37.75 41.375 43.109375 
+Q 37.359375 48.484375 30.078125 48.484375 
+Q 22.859375 48.484375 18.828125 43.109375 
+Q 14.796875 37.75 14.796875 27.984375 
+Q 14.796875 18.265625 18.828125 12.890625 
+Q 22.859375 7.515625 30.078125 7.515625 
+Q 37.359375 7.515625 41.375 12.890625 
+Q 45.40625 18.265625 45.40625 27.984375 
+z
+M 54.390625 6.78125 
+Q 54.390625 -7.171875 48.1875 -13.984375 
+Q 42 -20.796875 29.203125 -20.796875 
+Q 24.46875 -20.796875 20.265625 -20.09375 
+Q 16.0625 -19.390625 12.109375 -17.921875 
+L 12.109375 -9.1875 
+Q 16.0625 -11.328125 19.921875 -12.34375 
+Q 23.78125 -13.375 27.78125 -13.375 
+Q 36.625 -13.375 41.015625 -8.765625 
+Q 45.40625 -4.15625 45.40625 5.171875 
+L 45.40625 9.625 
+Q 42.625 4.78125 38.28125 2.390625 
+Q 33.9375 0 27.875 0 
+Q 17.828125 0 11.671875 7.65625 
+Q 5.515625 15.328125 5.515625 27.984375 
+Q 5.515625 40.671875 11.671875 48.328125 
+Q 17.828125 56 27.875 56 
+Q 33.9375 56 38.28125 53.609375 
+Q 42.625 51.21875 45.40625 46.390625 
+L 45.40625 54.6875 
+L 54.390625 54.6875 
+z
+" id="DejaVuSans-103"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-84"/>
+       <use x="57.958984" xlink:href="#DejaVuSans-105"/>
+       <use x="85.742188" xlink:href="#DejaVuSans-109"/>
+       <use x="183.154297" xlink:href="#DejaVuSans-105"/>
+       <use x="210.9375" xlink:href="#DejaVuSans-110"/>
+       <use x="274.316406" xlink:href="#DejaVuSans-103"/>
+       <use x="337.792969" xlink:href="#DejaVuSans-83"/>
+       <use x="401.269531" xlink:href="#DejaVuSans-105"/>
+       <use x="429.052734" xlink:href="#DejaVuSans-109"/>
+       <use x="526.464844" xlink:href="#DejaVuSans-112"/>
+       <use x="589.941406" xlink:href="#DejaVuSans-108"/>
+       <use x="617.724609" xlink:href="#DejaVuSans-101"/>
+       <use x="679.248047" xlink:href="#DejaVuSans-67"/>
+       <use x="749.072266" xlink:href="#DejaVuSans-80"/>
+       <use x="809.375" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_4">
+     <g id="line2d_24">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m45e7f18d57" y="112.685545"/>
+      </g>
+     </g>
+     <g id="text_25">
+      <!-- DerivO3CPU -->
+      <g transform="translate(44.078125 117.244607)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 19.671875 64.796875 
+L 19.671875 8.109375 
+L 31.59375 8.109375 
+Q 46.6875 8.109375 53.6875 14.9375 
+Q 60.6875 21.78125 60.6875 36.53125 
+Q 60.6875 51.171875 53.6875 57.984375 
+Q 46.6875 64.796875 31.59375 64.796875 
+z
+M 9.8125 72.90625 
+L 30.078125 72.90625 
+Q 51.265625 72.90625 61.171875 64.09375 
+Q 71.09375 55.28125 71.09375 36.53125 
+Q 71.09375 17.671875 61.125 8.828125 
+Q 51.171875 0 30.078125 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-68"/>
+        <path d="M 39.40625 66.21875 
+Q 28.65625 66.21875 22.328125 58.203125 
+Q 16.015625 50.203125 16.015625 36.375 
+Q 16.015625 22.609375 22.328125 14.59375 
+Q 28.65625 6.59375 39.40625 6.59375 
+Q 50.140625 6.59375 56.421875 14.59375 
+Q 62.703125 22.609375 62.703125 36.375 
+Q 62.703125 50.203125 56.421875 58.203125 
+Q 50.140625 66.21875 39.40625 66.21875 
+z
+M 39.40625 74.21875 
+Q 54.734375 74.21875 63.90625 63.9375 
+Q 73.09375 53.65625 73.09375 36.375 
+Q 73.09375 19.140625 63.90625 8.859375 
+Q 54.734375 -1.421875 39.40625 -1.421875 
+Q 24.03125 -1.421875 14.8125 8.828125 
+Q 5.609375 19.09375 5.609375 36.375 
+Q 5.609375 53.65625 14.8125 63.9375 
+Q 24.03125 74.21875 39.40625 74.21875 
+z
+" id="DejaVuSans-79"/>
+        <path d="M 40.578125 39.3125 
+Q 47.65625 37.796875 51.625 33 
+Q 55.609375 28.21875 55.609375 21.1875 
+Q 55.609375 10.40625 48.1875 4.484375 
+Q 40.765625 -1.421875 27.09375 -1.421875 
+Q 22.515625 -1.421875 17.65625 -0.515625 
+Q 12.796875 0.390625 7.625 2.203125 
+L 7.625 11.71875 
+Q 11.71875 9.328125 16.59375 8.109375 
+Q 21.484375 6.890625 26.8125 6.890625 
+Q 36.078125 6.890625 40.9375 10.546875 
+Q 45.796875 14.203125 45.796875 21.1875 
+Q 45.796875 27.640625 41.28125 31.265625 
+Q 36.765625 34.90625 28.71875 34.90625 
+L 20.21875 34.90625 
+L 20.21875 43.015625 
+L 29.109375 43.015625 
+Q 36.375 43.015625 40.234375 45.921875 
+Q 44.09375 48.828125 44.09375 54.296875 
+Q 44.09375 59.90625 40.109375 62.90625 
+Q 36.140625 65.921875 28.71875 65.921875 
+Q 24.65625 65.921875 20.015625 65.03125 
+Q 15.375 64.15625 9.8125 62.3125 
+L 9.8125 71.09375 
+Q 15.4375 72.65625 20.34375 73.4375 
+Q 25.25 74.21875 29.59375 74.21875 
+Q 40.828125 74.21875 47.359375 69.109375 
+Q 53.90625 64.015625 53.90625 55.328125 
+Q 53.90625 49.265625 50.4375 45.09375 
+Q 46.96875 40.921875 40.578125 39.3125 
+z
+" id="DejaVuSans-51"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-68"/>
+       <use x="77.001953" xlink:href="#DejaVuSans-101"/>
+       <use x="138.525391" xlink:href="#DejaVuSans-114"/>
+       <use x="179.638672" xlink:href="#DejaVuSans-105"/>
+       <use x="207.421875" xlink:href="#DejaVuSans-118"/>
+       <use x="266.601562" xlink:href="#DejaVuSans-79"/>
+       <use x="345.3125" xlink:href="#DejaVuSans-51"/>
+       <use x="408.935547" xlink:href="#DejaVuSans-67"/>
+       <use x="478.759766" xlink:href="#DejaVuSans-80"/>
+       <use x="539.0625" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+   </g>
+   <g id="patch_115">
+    <path d="M 124.55 208.21868 
+L 124.55 30.8 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_116">
+    <path d="M 925.2 208.21868 
+L 925.2 30.8 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_117">
+    <path d="M 124.55 208.21868 
+L 925.2 208.21868 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_118">
+    <path d="M 124.55 30.8 
+L 925.2 30.8 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="text_26">
+    <!-- vmlinux-4.4.186 -->
+    <g transform="translate(143.425547 94.988462)scale(0.15 -0.15)">
+     <defs>
+      <path d="M 4.890625 31.390625 
+L 31.203125 31.390625 
+L 31.203125 23.390625 
+L 4.890625 23.390625 
+z
+" id="DejaVuSans-45"/>
+      <path d="M 10.6875 12.40625 
+L 21 12.40625 
+L 21 0 
+L 10.6875 0 
+z
+" id="DejaVuSans-46"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-52"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-46"/>
+     <use x="625" xlink:href="#DejaVuSans-49"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-56"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-54"/>
+    </g>
+   </g>
+   <g id="text_27">
+    <!-- vmlinux-4.9.186 -->
+    <g transform="translate(303.555547 94.988462)scale(0.15 -0.15)">
+     <defs>
+      <path d="M 10.984375 1.515625 
+L 10.984375 10.5 
+Q 14.703125 8.734375 18.5 7.8125 
+Q 22.3125 6.890625 25.984375 6.890625 
+Q 35.75 6.890625 40.890625 13.453125 
+Q 46.046875 20.015625 46.78125 33.40625 
+Q 43.953125 29.203125 39.59375 26.953125 
+Q 35.25 24.703125 29.984375 24.703125 
+Q 19.046875 24.703125 12.671875 31.3125 
+Q 6.296875 37.9375 6.296875 49.421875 
+Q 6.296875 60.640625 12.9375 67.421875 
+Q 19.578125 74.21875 30.609375 74.21875 
+Q 43.265625 74.21875 49.921875 64.515625 
+Q 56.59375 54.828125 56.59375 36.375 
+Q 56.59375 19.140625 48.40625 8.859375 
+Q 40.234375 -1.421875 26.421875 -1.421875 
+Q 22.703125 -1.421875 18.890625 -0.6875 
+Q 15.09375 0.046875 10.984375 1.515625 
+z
+M 30.609375 32.421875 
+Q 37.25 32.421875 41.125 36.953125 
+Q 45.015625 41.5 45.015625 49.421875 
+Q 45.015625 57.28125 41.125 61.84375 
+Q 37.25 66.40625 30.609375 66.40625 
+Q 23.96875 66.40625 20.09375 61.84375 
+Q 16.21875 57.28125 16.21875 49.421875 
+Q 16.21875 41.5 20.09375 36.953125 
+Q 23.96875 32.421875 30.609375 32.421875 
+z
+" id="DejaVuSans-57"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-57"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-46"/>
+     <use x="625" xlink:href="#DejaVuSans-49"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-56"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-54"/>
+    </g>
+   </g>
+   <g id="text_28">
+    <!-- vmlinux-4.14.134 -->
+    <g transform="translate(458.913672 94.988462)scale(0.15 -0.15)">
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-49"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-52"/>
+     <use x="656.835938" xlink:href="#DejaVuSans-46"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-49"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-51"/>
+     <use x="815.869141" xlink:href="#DejaVuSans-52"/>
+    </g>
+   </g>
+   <g id="text_29">
+    <!-- vmlinux-4.19.83 -->
+    <g transform="translate(623.815547 94.988462)scale(0.15 -0.15)">
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-49"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-57"/>
+     <use x="656.835938" xlink:href="#DejaVuSans-46"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-56"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-51"/>
+    </g>
+   </g>
+   <g id="text_30">
+    <!-- vmlinux-5.4.49 -->
+    <g transform="translate(788.717422 94.988462)scale(0.15 -0.15)">
+     <defs>
+      <path d="M 10.796875 72.90625 
+L 49.515625 72.90625 
+L 49.515625 64.59375 
+L 19.828125 64.59375 
+L 19.828125 46.734375 
+Q 21.96875 47.46875 24.109375 47.828125 
+Q 26.265625 48.1875 28.421875 48.1875 
+Q 40.625 48.1875 47.75 41.5 
+Q 54.890625 34.8125 54.890625 23.390625 
+Q 54.890625 11.625 47.5625 5.09375 
+Q 40.234375 -1.421875 26.90625 -1.421875 
+Q 22.3125 -1.421875 17.546875 -0.640625 
+Q 12.796875 0.140625 7.71875 1.703125 
+L 7.71875 11.625 
+Q 12.109375 9.234375 16.796875 8.0625 
+Q 21.484375 6.890625 26.703125 6.890625 
+Q 35.15625 6.890625 40.078125 11.328125 
+Q 45.015625 15.765625 45.015625 23.390625 
+Q 45.015625 31 40.078125 35.4375 
+Q 35.15625 39.890625 26.703125 39.890625 
+Q 22.75 39.890625 18.8125 39.015625 
+Q 14.890625 38.140625 10.796875 36.28125 
+z
+" id="DejaVuSans-53"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-53"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-52"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-46"/>
+     <use x="625" xlink:href="#DejaVuSans-52"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-57"/>
+    </g>
+   </g>
+   <g id="text_31">
+    <!-- Memory: MESI_Two_Level, Boot Type: init -->
+    <g transform="translate(341.480312 24.8)scale(0.18 -0.18)">
+     <defs>
+      <path d="M 9.8125 72.90625 
+L 24.515625 72.90625 
+L 43.109375 23.296875 
+L 61.8125 72.90625 
+L 76.515625 72.90625 
+L 76.515625 0 
+L 66.890625 0 
+L 66.890625 64.015625 
+L 48.09375 14.015625 
+L 38.1875 14.015625 
+L 19.390625 64.015625 
+L 19.390625 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-77"/>
+      <path d="M 32.171875 -5.078125 
+Q 28.375 -14.84375 24.75 -17.8125 
+Q 21.140625 -20.796875 15.09375 -20.796875 
+L 7.90625 -20.796875 
+L 7.90625 -13.28125 
+L 13.1875 -13.28125 
+Q 16.890625 -13.28125 18.9375 -11.515625 
+Q 21 -9.765625 23.484375 -3.21875 
+L 25.09375 0.875 
+L 2.984375 54.6875 
+L 12.5 54.6875 
+L 29.59375 11.921875 
+L 46.6875 54.6875 
+L 56.203125 54.6875 
+z
+" id="DejaVuSans-121"/>
+      <path d="M 11.71875 12.40625 
+L 22.015625 12.40625 
+L 22.015625 0 
+L 11.71875 0 
+z
+M 11.71875 51.703125 
+L 22.015625 51.703125 
+L 22.015625 39.3125 
+L 11.71875 39.3125 
+z
+" id="DejaVuSans-58"/>
+      <path d="M 9.8125 72.90625 
+L 55.90625 72.90625 
+L 55.90625 64.59375 
+L 19.671875 64.59375 
+L 19.671875 43.015625 
+L 54.390625 43.015625 
+L 54.390625 34.71875 
+L 19.671875 34.71875 
+L 19.671875 8.296875 
+L 56.78125 8.296875 
+L 56.78125 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-69"/>
+      <path d="M 9.8125 72.90625 
+L 19.671875 72.90625 
+L 19.671875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-73"/>
+      <path d="M 50.984375 -16.609375 
+L 50.984375 -23.578125 
+L -0.984375 -23.578125 
+L -0.984375 -16.609375 
+z
+" id="DejaVuSans-95"/>
+      <path d="M 4.203125 54.6875 
+L 13.1875 54.6875 
+L 24.421875 12.015625 
+L 35.59375 54.6875 
+L 46.1875 54.6875 
+L 57.421875 12.015625 
+L 68.609375 54.6875 
+L 77.59375 54.6875 
+L 63.28125 0 
+L 52.6875 0 
+L 40.921875 44.828125 
+L 29.109375 0 
+L 18.5 0 
+z
+" id="DejaVuSans-119"/>
+      <path d="M 19.671875 34.8125 
+L 19.671875 8.109375 
+L 35.5 8.109375 
+Q 43.453125 8.109375 47.28125 11.40625 
+Q 51.125 14.703125 51.125 21.484375 
+Q 51.125 28.328125 47.28125 31.5625 
+Q 43.453125 34.8125 35.5 34.8125 
+z
+M 19.671875 64.796875 
+L 19.671875 42.828125 
+L 34.28125 42.828125 
+Q 41.5 42.828125 45.03125 45.53125 
+Q 48.578125 48.25 48.578125 53.8125 
+Q 48.578125 59.328125 45.03125 62.0625 
+Q 41.5 64.796875 34.28125 64.796875 
+z
+M 9.8125 72.90625 
+L 35.015625 72.90625 
+Q 46.296875 72.90625 52.390625 68.21875 
+Q 58.5 63.53125 58.5 54.890625 
+Q 58.5 48.1875 55.375 44.234375 
+Q 52.25 40.28125 46.1875 39.3125 
+Q 53.46875 37.75 57.5 32.78125 
+Q 61.53125 27.828125 61.53125 20.40625 
+Q 61.53125 10.640625 54.890625 5.3125 
+Q 48.25 0 35.984375 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-66"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-77"/>
+     <use x="86.279297" xlink:href="#DejaVuSans-101"/>
+     <use x="147.802734" xlink:href="#DejaVuSans-109"/>
+     <use x="245.214844" xlink:href="#DejaVuSans-111"/>
+     <use x="306.396484" xlink:href="#DejaVuSans-114"/>
+     <use x="347.509766" xlink:href="#DejaVuSans-121"/>
+     <use x="399.439453" xlink:href="#DejaVuSans-58"/>
+     <use x="433.130859" xlink:href="#DejaVuSans-32"/>
+     <use x="464.917969" xlink:href="#DejaVuSans-77"/>
+     <use x="551.197266" xlink:href="#DejaVuSans-69"/>
+     <use x="614.380859" xlink:href="#DejaVuSans-83"/>
+     <use x="677.857422" xlink:href="#DejaVuSans-73"/>
+     <use x="707.349609" xlink:href="#DejaVuSans-95"/>
+     <use x="757.349609" xlink:href="#DejaVuSans-84"/>
+     <use x="801.933594" xlink:href="#DejaVuSans-119"/>
+     <use x="883.720703" xlink:href="#DejaVuSans-111"/>
+     <use x="944.902344" xlink:href="#DejaVuSans-95"/>
+     <use x="994.902344" xlink:href="#DejaVuSans-76"/>
+     <use x="1048.865234" xlink:href="#DejaVuSans-101"/>
+     <use x="1110.388672" xlink:href="#DejaVuSans-118"/>
+     <use x="1169.568359" xlink:href="#DejaVuSans-101"/>
+     <use x="1231.091797" xlink:href="#DejaVuSans-108"/>
+     <use x="1258.875" xlink:href="#DejaVuSans-44"/>
+     <use x="1290.662109" xlink:href="#DejaVuSans-32"/>
+     <use x="1322.449219" xlink:href="#DejaVuSans-66"/>
+     <use x="1391.052734" xlink:href="#DejaVuSans-111"/>
+     <use x="1452.234375" xlink:href="#DejaVuSans-111"/>
+     <use x="1513.416016" xlink:href="#DejaVuSans-116"/>
+     <use x="1552.625" xlink:href="#DejaVuSans-32"/>
+     <use x="1584.412109" xlink:href="#DejaVuSans-84"/>
+     <use x="1629.871094" xlink:href="#DejaVuSans-121"/>
+     <use x="1689.050781" xlink:href="#DejaVuSans-112"/>
+     <use x="1752.527344" xlink:href="#DejaVuSans-101"/>
+     <use x="1814.050781" xlink:href="#DejaVuSans-58"/>
+     <use x="1847.742188" xlink:href="#DejaVuSans-32"/>
+     <use x="1879.529297" xlink:href="#DejaVuSans-105"/>
+     <use x="1907.3125" xlink:href="#DejaVuSans-110"/>
+     <use x="1970.691406" xlink:href="#DejaVuSans-105"/>
+     <use x="1998.474609" xlink:href="#DejaVuSans-116"/>
+    </g>
+   </g>
+   <g id="legend_1">
+    <g id="patch_119">
+     <path d="M 247.105 50.718125 
+L 271.105 50.718125 
+L 271.105 42.318125 
+L 247.105 42.318125 
+z
+" style="fill:#008000;"/>
+    </g>
+    <g id="text_32">
+     <!-- succeeded -->
+     <g transform="translate(280.705 50.718125)scale(0.12 -0.12)">
+      <defs>
+       <path d="M 45.40625 46.390625 
+L 45.40625 75.984375 
+L 54.390625 75.984375 
+L 54.390625 0 
+L 45.40625 0 
+L 45.40625 8.203125 
+Q 42.578125 3.328125 38.25 0.953125 
+Q 33.9375 -1.421875 27.875 -1.421875 
+Q 17.96875 -1.421875 11.734375 6.484375 
+Q 5.515625 14.40625 5.515625 27.296875 
+Q 5.515625 40.1875 11.734375 48.09375 
+Q 17.96875 56 27.875 56 
+Q 33.9375 56 38.25 53.625 
+Q 42.578125 51.265625 45.40625 46.390625 
+z
+M 14.796875 27.296875 
+Q 14.796875 17.390625 18.875 11.75 
+Q 22.953125 6.109375 30.078125 6.109375 
+Q 37.203125 6.109375 41.296875 11.75 
+Q 45.40625 17.390625 45.40625 27.296875 
+Q 45.40625 37.203125 41.296875 42.84375 
+Q 37.203125 48.484375 30.078125 48.484375 
+Q 22.953125 48.484375 18.875 42.84375 
+Q 14.796875 37.203125 14.796875 27.296875 
+z
+" id="DejaVuSans-100"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-115"/>
+      <use x="52.099609" xlink:href="#DejaVuSans-117"/>
+      <use x="115.478516" xlink:href="#DejaVuSans-99"/>
+      <use x="170.458984" xlink:href="#DejaVuSans-99"/>
+      <use x="225.439453" xlink:href="#DejaVuSans-101"/>
+      <use x="286.962891" xlink:href="#DejaVuSans-101"/>
+      <use x="348.486328" xlink:href="#DejaVuSans-100"/>
+      <use x="411.962891" xlink:href="#DejaVuSans-101"/>
+      <use x="473.486328" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_120">
+     <path d="M 247.105 68.331875 
+L 271.105 68.331875 
+L 271.105 59.931875 
+L 247.105 59.931875 
+z
+" style="fill:#ff0000;"/>
+    </g>
+    <g id="text_33">
+     <!-- gem5 crashed -->
+     <g transform="translate(280.705 68.331875)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-103"/>
+      <use x="63.476562" xlink:href="#DejaVuSans-101"/>
+      <use x="125" xlink:href="#DejaVuSans-109"/>
+      <use x="222.412109" xlink:href="#DejaVuSans-53"/>
+      <use x="286.035156" xlink:href="#DejaVuSans-32"/>
+      <use x="317.822266" xlink:href="#DejaVuSans-99"/>
+      <use x="372.802734" xlink:href="#DejaVuSans-114"/>
+      <use x="413.916016" xlink:href="#DejaVuSans-97"/>
+      <use x="475.195312" xlink:href="#DejaVuSans-115"/>
+      <use x="527.294922" xlink:href="#DejaVuSans-104"/>
+      <use x="590.673828" xlink:href="#DejaVuSans-101"/>
+      <use x="652.197266" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_121">
+     <path d="M 390.5875 50.718125 
+L 414.5875 50.718125 
+L 414.5875 42.318125 
+L 390.5875 42.318125 
+z
+" style="fill:#0000ff;"/>
+    </g>
+    <g id="text_34">
+     <!-- workload crashed -->
+     <g transform="translate(424.1875 50.718125)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-119"/>
+      <use x="81.787109" xlink:href="#DejaVuSans-111"/>
+      <use x="142.96875" xlink:href="#DejaVuSans-114"/>
+      <use x="184.082031" xlink:href="#DejaVuSans-107"/>
+      <use x="241.992188" xlink:href="#DejaVuSans-108"/>
+      <use x="269.775391" xlink:href="#DejaVuSans-111"/>
+      <use x="330.957031" xlink:href="#DejaVuSans-97"/>
+      <use x="392.236328" xlink:href="#DejaVuSans-100"/>
+      <use x="455.712891" xlink:href="#DejaVuSans-32"/>
+      <use x="487.5" xlink:href="#DejaVuSans-99"/>
+      <use x="542.480469" xlink:href="#DejaVuSans-114"/>
+      <use x="583.59375" xlink:href="#DejaVuSans-97"/>
+      <use x="644.873047" xlink:href="#DejaVuSans-115"/>
+      <use x="696.972656" xlink:href="#DejaVuSans-104"/>
+      <use x="760.351562" xlink:href="#DejaVuSans-101"/>
+      <use x="821.875" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_122">
+     <path d="M 390.5875 68.331875 
+L 414.5875 68.331875 
+L 414.5875 59.931875 
+L 390.5875 59.931875 
+z
+" style="fill:#ffff00;"/>
+    </g>
+    <g id="text_35">
+     <!-- timed out (10 hours) -->
+     <g transform="translate(424.1875 68.331875)scale(0.12 -0.12)">
+      <defs>
+       <path d="M 31 75.875 
+Q 24.46875 64.65625 21.28125 53.65625 
+Q 18.109375 42.671875 18.109375 31.390625 
+Q 18.109375 20.125 21.3125 9.0625 
+Q 24.515625 -2 31 -13.1875 
+L 23.1875 -13.1875 
+Q 15.875 -1.703125 12.234375 9.375 
+Q 8.59375 20.453125 8.59375 31.390625 
+Q 8.59375 42.28125 12.203125 53.3125 
+Q 15.828125 64.359375 23.1875 75.875 
+z
+" id="DejaVuSans-40"/>
+       <path d="M 31.78125 66.40625 
+Q 24.171875 66.40625 20.328125 58.90625 
+Q 16.5 51.421875 16.5 36.375 
+Q 16.5 21.390625 20.328125 13.890625 
+Q 24.171875 6.390625 31.78125 6.390625 
+Q 39.453125 6.390625 43.28125 13.890625 
+Q 47.125 21.390625 47.125 36.375 
+Q 47.125 51.421875 43.28125 58.90625 
+Q 39.453125 66.40625 31.78125 66.40625 
+z
+M 31.78125 74.21875 
+Q 44.046875 74.21875 50.515625 64.515625 
+Q 56.984375 54.828125 56.984375 36.375 
+Q 56.984375 17.96875 50.515625 8.265625 
+Q 44.046875 -1.421875 31.78125 -1.421875 
+Q 19.53125 -1.421875 13.0625 8.265625 
+Q 6.59375 17.96875 6.59375 36.375 
+Q 6.59375 54.828125 13.0625 64.515625 
+Q 19.53125 74.21875 31.78125 74.21875 
+z
+" id="DejaVuSans-48"/>
+       <path d="M 8.015625 75.875 
+L 15.828125 75.875 
+Q 23.140625 64.359375 26.78125 53.3125 
+Q 30.421875 42.28125 30.421875 31.390625 
+Q 30.421875 20.453125 26.78125 9.375 
+Q 23.140625 -1.703125 15.828125 -13.1875 
+L 8.015625 -13.1875 
+Q 14.5 -2 17.703125 9.0625 
+Q 20.90625 20.125 20.90625 31.390625 
+Q 20.90625 42.671875 17.703125 53.65625 
+Q 14.5 64.65625 8.015625 75.875 
+z
+" id="DejaVuSans-41"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-116"/>
+      <use x="39.208984" xlink:href="#DejaVuSans-105"/>
+      <use x="66.992188" xlink:href="#DejaVuSans-109"/>
+      <use x="164.404297" xlink:href="#DejaVuSans-101"/>
+      <use x="225.927734" xlink:href="#DejaVuSans-100"/>
+      <use x="289.404297" xlink:href="#DejaVuSans-32"/>
+      <use x="321.191406" xlink:href="#DejaVuSans-111"/>
+      <use x="382.373047" xlink:href="#DejaVuSans-117"/>
+      <use x="445.751953" xlink:href="#DejaVuSans-116"/>
+      <use x="484.960938" xlink:href="#DejaVuSans-32"/>
+      <use x="516.748047" xlink:href="#DejaVuSans-40"/>
+      <use x="555.761719" xlink:href="#DejaVuSans-49"/>
+      <use x="619.384766" xlink:href="#DejaVuSans-48"/>
+      <use x="683.007812" xlink:href="#DejaVuSans-32"/>
+      <use x="714.794922" xlink:href="#DejaVuSans-104"/>
+      <use x="778.173828" xlink:href="#DejaVuSans-111"/>
+      <use x="839.355469" xlink:href="#DejaVuSans-117"/>
+      <use x="902.734375" xlink:href="#DejaVuSans-114"/>
+      <use x="943.847656" xlink:href="#DejaVuSans-115"/>
+      <use x="995.947266" xlink:href="#DejaVuSans-41"/>
+     </g>
+    </g>
+    <g id="patch_123">
+     <path d="M 572.38 50.718125 
+L 596.38 50.718125 
+L 596.38 42.318125 
+L 572.38 42.318125 
+z
+" style="fill:#ffa500;"/>
+    </g>
+    <g id="text_36">
+     <!-- kernel panic -->
+     <g transform="translate(605.98 50.718125)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-107"/>
+      <use x="54.285156" xlink:href="#DejaVuSans-101"/>
+      <use x="115.808594" xlink:href="#DejaVuSans-114"/>
+      <use x="155.171875" xlink:href="#DejaVuSans-110"/>
+      <use x="218.550781" xlink:href="#DejaVuSans-101"/>
+      <use x="280.074219" xlink:href="#DejaVuSans-108"/>
+      <use x="307.857422" xlink:href="#DejaVuSans-32"/>
+      <use x="339.644531" xlink:href="#DejaVuSans-112"/>
+      <use x="403.121094" xlink:href="#DejaVuSans-97"/>
+      <use x="464.400391" xlink:href="#DejaVuSans-110"/>
+      <use x="527.779297" xlink:href="#DejaVuSans-105"/>
+      <use x="555.5625" xlink:href="#DejaVuSans-99"/>
+     </g>
+    </g>
+    <g id="patch_124">
+     <path d="M 572.38 68.331875 
+L 596.38 68.331875 
+L 596.38 59.931875 
+L 572.38 59.931875 
+z
+" style="fill:#808080;"/>
+    </g>
+    <g id="text_37">
+     <!-- not supported -->
+     <g transform="translate(605.98 68.331875)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-110"/>
+      <use x="63.378906" xlink:href="#DejaVuSans-111"/>
+      <use x="124.560547" xlink:href="#DejaVuSans-116"/>
+      <use x="163.769531" xlink:href="#DejaVuSans-32"/>
+      <use x="195.556641" xlink:href="#DejaVuSans-115"/>
+      <use x="247.65625" xlink:href="#DejaVuSans-117"/>
+      <use x="311.035156" xlink:href="#DejaVuSans-112"/>
+      <use x="374.511719" xlink:href="#DejaVuSans-112"/>
+      <use x="437.988281" xlink:href="#DejaVuSans-111"/>
+      <use x="499.169922" xlink:href="#DejaVuSans-114"/>
+      <use x="540.283203" xlink:href="#DejaVuSans-116"/>
+      <use x="579.492188" xlink:href="#DejaVuSans-101"/>
+      <use x="641.015625" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_125">
+     <path d="M 714.52 50.718125 
+L 738.52 50.718125 
+L 738.52 42.318125 
+L 714.52 42.318125 
+z
+" style="fill:url(#h5e823a5e2e);"/>
+    </g>
+    <g id="text_38">
+     <!-- unknown -->
+     <g transform="translate(748.12 50.718125)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-117"/>
+      <use x="63.378906" xlink:href="#DejaVuSans-110"/>
+      <use x="126.757812" xlink:href="#DejaVuSans-107"/>
+      <use x="184.667969" xlink:href="#DejaVuSans-110"/>
+      <use x="248.046875" xlink:href="#DejaVuSans-111"/>
+      <use x="309.228516" xlink:href="#DejaVuSans-119"/>
+      <use x="391.015625" xlink:href="#DejaVuSans-110"/>
+     </g>
+    </g>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="p8db3b597f4">
+   <rect height="177.41868" width="800.65" x="124.55" y="30.8"/>
+  </clipPath>
+ </defs>
+ <defs>
+  <pattern height="72" id="h5e823a5e2e" patternUnits="userSpaceOnUse" width="72" x="0" y="0">
+   <rect fill="#ffffff" height="73" width="73" x="0" y="0"/>
+   <path d="M -36 36 
+L 36 108 
+M -33 33 
+L 39 105 
+M -30 30 
+L 42 102 
+M -27 27 
+L 45 99 
+M -24 24 
+L 48 96 
+M -21 21 
+L 51 93 
+M -18 18 
+L 54 90 
+M -15 15 
+L 57 87 
+M -12 12 
+L 60 84 
+M -9 9 
+L 63 81 
+M -6 6 
+L 66 78 
+M -3 3 
+L 69 75 
+M 0 0 
+L 72 72 
+M 3 -3 
+L 75 69 
+M 6 -6 
+L 78 66 
+M 9 -9 
+L 81 63 
+M 12 -12 
+L 84 60 
+M 15 -15 
+L 87 57 
+M 18 -18 
+L 90 54 
+M 21 -21 
+L 93 51 
+M 24 -24 
+L 96 48 
+M 27 -27 
+L 99 45 
+M 30 -30 
+L 102 42 
+M 33 -33 
+L 105 39 
+M 36 -36 
+L 108 36 
+" style="fill:#000000;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1.0;"/>
+  </pattern>
+ </defs>
+</svg>
diff --git a/assets/img/gem5art/boot_exit_MESI_Two_Level_systemd.svg b/assets/img/gem5art/boot_exit_MESI_Two_Level_systemd.svg
new file mode 100644
index 0000000..a41099e
--- /dev/null
+++ b/assets/img/gem5art/boot_exit_MESI_Two_Level_systemd.svg
@@ -0,0 +1,2914 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with matplotlib (https://matplotlib.org/) -->
+<svg height="288pt" version="1.1" viewBox="0 0 936 288" width="936pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+  <rdf:RDF xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+   <cc:Work>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:date>2020-10-10T15:39:34.776381</dc:date>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Matplotlib v3.3.2, https://matplotlib.org/</dc:title>
+     </cc:Agent>
+    </dc:creator>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <defs>
+  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="patch_1">
+   <path d="M 0 288 
+L 936 288 
+L 936 0 
+L 0 0 
+z
+" style="fill:none;"/>
+  </g>
+  <g id="axes_1">
+   <g id="patch_2">
+    <path d="M 124.55 208.21868 
+L 925.2 208.21868 
+L 925.2 30.8 
+L 124.55 30.8 
+z
+" style="fill:#ffffff;"/>
+   </g>
+   <g id="patch_3">
+    <path clip-path="url(#p831f1017bc)" d="M 108.537 208.21868 
+L 140.563 208.21868 
+L 140.563 180.923498 
+L 108.537 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_4">
+    <path clip-path="url(#p831f1017bc)" d="M 140.563 208.21868 
+L 172.589 208.21868 
+L 172.589 180.923498 
+L 140.563 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_5">
+    <path clip-path="url(#p831f1017bc)" d="M 172.589 208.21868 
+L 204.615 208.21868 
+L 204.615 180.923498 
+L 172.589 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_6">
+    <path clip-path="url(#p831f1017bc)" d="M 204.615 208.21868 
+L 236.641 208.21868 
+L 236.641 180.923498 
+L 204.615 180.923498 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_7">
+    <path clip-path="url(#p831f1017bc)" d="M 236.641 208.21868 
+L 268.667 208.21868 
+L 268.667 180.923498 
+L 236.641 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_8">
+    <path clip-path="url(#p831f1017bc)" d="M 268.667 208.21868 
+L 300.693 208.21868 
+L 300.693 180.923498 
+L 268.667 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_9">
+    <path clip-path="url(#p831f1017bc)" d="M 300.693 208.21868 
+L 332.719 208.21868 
+L 332.719 180.923498 
+L 300.693 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_10">
+    <path clip-path="url(#p831f1017bc)" d="M 332.719 208.21868 
+L 364.745 208.21868 
+L 364.745 180.923498 
+L 332.719 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_11">
+    <path clip-path="url(#p831f1017bc)" d="M 364.745 208.21868 
+L 396.771 208.21868 
+L 396.771 180.923498 
+L 364.745 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_12">
+    <path clip-path="url(#p831f1017bc)" d="M 396.771 208.21868 
+L 428.797 208.21868 
+L 428.797 180.923498 
+L 396.771 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_13">
+    <path clip-path="url(#p831f1017bc)" d="M 428.797 208.21868 
+L 460.823 208.21868 
+L 460.823 180.923498 
+L 428.797 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_14">
+    <path clip-path="url(#p831f1017bc)" d="M 460.823 208.21868 
+L 492.849 208.21868 
+L 492.849 180.923498 
+L 460.823 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_15">
+    <path clip-path="url(#p831f1017bc)" d="M 492.849 208.21868 
+L 524.875 208.21868 
+L 524.875 180.923498 
+L 492.849 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_16">
+    <path clip-path="url(#p831f1017bc)" d="M 524.875 208.21868 
+L 556.901 208.21868 
+L 556.901 180.923498 
+L 524.875 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_17">
+    <path clip-path="url(#p831f1017bc)" d="M 556.901 208.21868 
+L 588.927 208.21868 
+L 588.927 180.923498 
+L 556.901 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_18">
+    <path clip-path="url(#p831f1017bc)" d="M 588.927 208.21868 
+L 620.953 208.21868 
+L 620.953 180.923498 
+L 588.927 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_19">
+    <path clip-path="url(#p831f1017bc)" d="M 620.953 208.21868 
+L 652.979 208.21868 
+L 652.979 180.923498 
+L 620.953 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_20">
+    <path clip-path="url(#p831f1017bc)" d="M 652.979 208.21868 
+L 685.005 208.21868 
+L 685.005 180.923498 
+L 652.979 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_21">
+    <path clip-path="url(#p831f1017bc)" d="M 685.005 208.21868 
+L 717.031 208.21868 
+L 717.031 180.923498 
+L 685.005 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_22">
+    <path clip-path="url(#p831f1017bc)" d="M 717.031 208.21868 
+L 749.057 208.21868 
+L 749.057 180.923498 
+L 717.031 180.923498 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_23">
+    <path clip-path="url(#p831f1017bc)" d="M 749.057 208.21868 
+L 781.083 208.21868 
+L 781.083 180.923498 
+L 749.057 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_24">
+    <path clip-path="url(#p831f1017bc)" d="M 781.083 208.21868 
+L 813.109 208.21868 
+L 813.109 180.923498 
+L 781.083 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_25">
+    <path clip-path="url(#p831f1017bc)" d="M 813.109 208.21868 
+L 845.135 208.21868 
+L 845.135 180.923498 
+L 813.109 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_26">
+    <path clip-path="url(#p831f1017bc)" d="M 845.135 208.21868 
+L 877.161 208.21868 
+L 877.161 180.923498 
+L 845.135 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_27">
+    <path clip-path="url(#p831f1017bc)" d="M 877.161 208.21868 
+L 909.187 208.21868 
+L 909.187 180.923498 
+L 877.161 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_28">
+    <path clip-path="url(#p831f1017bc)" d="M 909.187 208.21868 
+L 941.213 208.21868 
+L 941.213 180.923498 
+L 909.187 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_29">
+    <path clip-path="url(#p831f1017bc)" d="M 108.537 180.923498 
+L 140.563 180.923498 
+L 140.563 153.628317 
+L 108.537 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_30">
+    <path clip-path="url(#p831f1017bc)" d="M 140.563 180.923498 
+L 172.589 180.923498 
+L 172.589 153.628317 
+L 140.563 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_31">
+    <path clip-path="url(#p831f1017bc)" d="M 172.589 180.923498 
+L 204.615 180.923498 
+L 204.615 153.628317 
+L 172.589 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_32">
+    <path clip-path="url(#p831f1017bc)" d="M 204.615 180.923498 
+L 236.641 180.923498 
+L 236.641 153.628317 
+L 204.615 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_33">
+    <path clip-path="url(#p831f1017bc)" d="M 236.641 180.923498 
+L 268.667 180.923498 
+L 268.667 153.628317 
+L 236.641 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_34">
+    <path clip-path="url(#p831f1017bc)" d="M 268.667 180.923498 
+L 300.693 180.923498 
+L 300.693 153.628317 
+L 268.667 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_35">
+    <path clip-path="url(#p831f1017bc)" d="M 300.693 180.923498 
+L 332.719 180.923498 
+L 332.719 153.628317 
+L 300.693 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_36">
+    <path clip-path="url(#p831f1017bc)" d="M 332.719 180.923498 
+L 364.745 180.923498 
+L 364.745 153.628317 
+L 332.719 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_37">
+    <path clip-path="url(#p831f1017bc)" d="M 364.745 180.923498 
+L 396.771 180.923498 
+L 396.771 153.628317 
+L 364.745 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_38">
+    <path clip-path="url(#p831f1017bc)" d="M 396.771 180.923498 
+L 428.797 180.923498 
+L 428.797 153.628317 
+L 396.771 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_39">
+    <path clip-path="url(#p831f1017bc)" d="M 428.797 180.923498 
+L 460.823 180.923498 
+L 460.823 153.628317 
+L 428.797 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_40">
+    <path clip-path="url(#p831f1017bc)" d="M 460.823 180.923498 
+L 492.849 180.923498 
+L 492.849 153.628317 
+L 460.823 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_41">
+    <path clip-path="url(#p831f1017bc)" d="M 492.849 180.923498 
+L 524.875 180.923498 
+L 524.875 153.628317 
+L 492.849 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_42">
+    <path clip-path="url(#p831f1017bc)" d="M 524.875 180.923498 
+L 556.901 180.923498 
+L 556.901 153.628317 
+L 524.875 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_43">
+    <path clip-path="url(#p831f1017bc)" d="M 556.901 180.923498 
+L 588.927 180.923498 
+L 588.927 153.628317 
+L 556.901 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_44">
+    <path clip-path="url(#p831f1017bc)" d="M 588.927 180.923498 
+L 620.953 180.923498 
+L 620.953 153.628317 
+L 588.927 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_45">
+    <path clip-path="url(#p831f1017bc)" d="M 620.953 180.923498 
+L 652.979 180.923498 
+L 652.979 153.628317 
+L 620.953 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_46">
+    <path clip-path="url(#p831f1017bc)" d="M 652.979 180.923498 
+L 685.005 180.923498 
+L 685.005 153.628317 
+L 652.979 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_47">
+    <path clip-path="url(#p831f1017bc)" d="M 685.005 180.923498 
+L 717.031 180.923498 
+L 717.031 153.628317 
+L 685.005 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_48">
+    <path clip-path="url(#p831f1017bc)" d="M 717.031 180.923498 
+L 749.057 180.923498 
+L 749.057 153.628317 
+L 717.031 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_49">
+    <path clip-path="url(#p831f1017bc)" d="M 749.057 180.923498 
+L 781.083 180.923498 
+L 781.083 153.628317 
+L 749.057 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_50">
+    <path clip-path="url(#p831f1017bc)" d="M 781.083 180.923498 
+L 813.109 180.923498 
+L 813.109 153.628317 
+L 781.083 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_51">
+    <path clip-path="url(#p831f1017bc)" d="M 813.109 180.923498 
+L 845.135 180.923498 
+L 845.135 153.628317 
+L 813.109 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_52">
+    <path clip-path="url(#p831f1017bc)" d="M 845.135 180.923498 
+L 877.161 180.923498 
+L 877.161 153.628317 
+L 845.135 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_53">
+    <path clip-path="url(#p831f1017bc)" d="M 877.161 180.923498 
+L 909.187 180.923498 
+L 909.187 153.628317 
+L 877.161 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_54">
+    <path clip-path="url(#p831f1017bc)" d="M 909.187 180.923498 
+L 941.213 180.923498 
+L 941.213 153.628317 
+L 909.187 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_55">
+    <path clip-path="url(#p831f1017bc)" d="M 108.537 153.628317 
+L 140.563 153.628317 
+L 140.563 126.333135 
+L 108.537 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_56">
+    <path clip-path="url(#p831f1017bc)" d="M 140.563 153.628317 
+L 172.589 153.628317 
+L 172.589 126.333135 
+L 140.563 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_57">
+    <path clip-path="url(#p831f1017bc)" d="M 172.589 153.628317 
+L 204.615 153.628317 
+L 204.615 126.333135 
+L 172.589 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_58">
+    <path clip-path="url(#p831f1017bc)" d="M 204.615 153.628317 
+L 236.641 153.628317 
+L 236.641 126.333135 
+L 204.615 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_59">
+    <path clip-path="url(#p831f1017bc)" d="M 236.641 153.628317 
+L 268.667 153.628317 
+L 268.667 126.333135 
+L 236.641 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_60">
+    <path clip-path="url(#p831f1017bc)" d="M 268.667 153.628317 
+L 300.693 153.628317 
+L 300.693 126.333135 
+L 268.667 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_61">
+    <path clip-path="url(#p831f1017bc)" d="M 300.693 153.628317 
+L 332.719 153.628317 
+L 332.719 126.333135 
+L 300.693 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_62">
+    <path clip-path="url(#p831f1017bc)" d="M 332.719 153.628317 
+L 364.745 153.628317 
+L 364.745 126.333135 
+L 332.719 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_63">
+    <path clip-path="url(#p831f1017bc)" d="M 364.745 153.628317 
+L 396.771 153.628317 
+L 396.771 126.333135 
+L 364.745 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_64">
+    <path clip-path="url(#p831f1017bc)" d="M 396.771 153.628317 
+L 428.797 153.628317 
+L 428.797 126.333135 
+L 396.771 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_65">
+    <path clip-path="url(#p831f1017bc)" d="M 428.797 153.628317 
+L 460.823 153.628317 
+L 460.823 126.333135 
+L 428.797 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_66">
+    <path clip-path="url(#p831f1017bc)" d="M 460.823 153.628317 
+L 492.849 153.628317 
+L 492.849 126.333135 
+L 460.823 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_67">
+    <path clip-path="url(#p831f1017bc)" d="M 492.849 153.628317 
+L 524.875 153.628317 
+L 524.875 126.333135 
+L 492.849 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_68">
+    <path clip-path="url(#p831f1017bc)" d="M 524.875 153.628317 
+L 556.901 153.628317 
+L 556.901 126.333135 
+L 524.875 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_69">
+    <path clip-path="url(#p831f1017bc)" d="M 556.901 153.628317 
+L 588.927 153.628317 
+L 588.927 126.333135 
+L 556.901 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_70">
+    <path clip-path="url(#p831f1017bc)" d="M 588.927 153.628317 
+L 620.953 153.628317 
+L 620.953 126.333135 
+L 588.927 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_71">
+    <path clip-path="url(#p831f1017bc)" d="M 620.953 153.628317 
+L 652.979 153.628317 
+L 652.979 126.333135 
+L 620.953 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_72">
+    <path clip-path="url(#p831f1017bc)" d="M 652.979 153.628317 
+L 685.005 153.628317 
+L 685.005 126.333135 
+L 652.979 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_73">
+    <path clip-path="url(#p831f1017bc)" d="M 685.005 153.628317 
+L 717.031 153.628317 
+L 717.031 126.333135 
+L 685.005 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_74">
+    <path clip-path="url(#p831f1017bc)" d="M 717.031 153.628317 
+L 749.057 153.628317 
+L 749.057 126.333135 
+L 717.031 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_75">
+    <path clip-path="url(#p831f1017bc)" d="M 749.057 153.628317 
+L 781.083 153.628317 
+L 781.083 126.333135 
+L 749.057 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_76">
+    <path clip-path="url(#p831f1017bc)" d="M 781.083 153.628317 
+L 813.109 153.628317 
+L 813.109 126.333135 
+L 781.083 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_77">
+    <path clip-path="url(#p831f1017bc)" d="M 813.109 153.628317 
+L 845.135 153.628317 
+L 845.135 126.333135 
+L 813.109 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_78">
+    <path clip-path="url(#p831f1017bc)" d="M 845.135 153.628317 
+L 877.161 153.628317 
+L 877.161 126.333135 
+L 845.135 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_79">
+    <path clip-path="url(#p831f1017bc)" d="M 877.161 153.628317 
+L 909.187 153.628317 
+L 909.187 126.333135 
+L 877.161 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_80">
+    <path clip-path="url(#p831f1017bc)" d="M 909.187 153.628317 
+L 941.213 153.628317 
+L 941.213 126.333135 
+L 909.187 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_81">
+    <path clip-path="url(#p831f1017bc)" d="M 108.537 126.333135 
+L 140.563 126.333135 
+L 140.563 99.037954 
+L 108.537 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_82">
+    <path clip-path="url(#p831f1017bc)" d="M 140.563 126.333135 
+L 172.589 126.333135 
+L 172.589 99.037954 
+L 140.563 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_83">
+    <path clip-path="url(#p831f1017bc)" d="M 172.589 126.333135 
+L 204.615 126.333135 
+L 204.615 99.037954 
+L 172.589 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_84">
+    <path clip-path="url(#p831f1017bc)" d="M 204.615 126.333135 
+L 236.641 126.333135 
+L 236.641 99.037954 
+L 204.615 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_85">
+    <path clip-path="url(#p831f1017bc)" d="M 236.641 126.333135 
+L 268.667 126.333135 
+L 268.667 99.037954 
+L 236.641 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_86">
+    <path clip-path="url(#p831f1017bc)" d="M 268.667 126.333135 
+L 300.693 126.333135 
+L 300.693 99.037954 
+L 268.667 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_87">
+    <path clip-path="url(#p831f1017bc)" d="M 300.693 126.333135 
+L 332.719 126.333135 
+L 332.719 99.037954 
+L 300.693 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_88">
+    <path clip-path="url(#p831f1017bc)" d="M 332.719 126.333135 
+L 364.745 126.333135 
+L 364.745 99.037954 
+L 332.719 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_89">
+    <path clip-path="url(#p831f1017bc)" d="M 364.745 126.333135 
+L 396.771 126.333135 
+L 396.771 99.037954 
+L 364.745 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_90">
+    <path clip-path="url(#p831f1017bc)" d="M 396.771 126.333135 
+L 428.797 126.333135 
+L 428.797 99.037954 
+L 396.771 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_91">
+    <path clip-path="url(#p831f1017bc)" d="M 428.797 126.333135 
+L 460.823 126.333135 
+L 460.823 99.037954 
+L 428.797 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_92">
+    <path clip-path="url(#p831f1017bc)" d="M 460.823 126.333135 
+L 492.849 126.333135 
+L 492.849 99.037954 
+L 460.823 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_93">
+    <path clip-path="url(#p831f1017bc)" d="M 492.849 126.333135 
+L 524.875 126.333135 
+L 524.875 99.037954 
+L 492.849 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_94">
+    <path clip-path="url(#p831f1017bc)" d="M 524.875 126.333135 
+L 556.901 126.333135 
+L 556.901 99.037954 
+L 524.875 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_95">
+    <path clip-path="url(#p831f1017bc)" d="M 556.901 126.333135 
+L 588.927 126.333135 
+L 588.927 99.037954 
+L 556.901 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_96">
+    <path clip-path="url(#p831f1017bc)" d="M 588.927 126.333135 
+L 620.953 126.333135 
+L 620.953 99.037954 
+L 588.927 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_97">
+    <path clip-path="url(#p831f1017bc)" d="M 620.953 126.333135 
+L 652.979 126.333135 
+L 652.979 99.037954 
+L 620.953 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_98">
+    <path clip-path="url(#p831f1017bc)" d="M 652.979 126.333135 
+L 685.005 126.333135 
+L 685.005 99.037954 
+L 652.979 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_99">
+    <path clip-path="url(#p831f1017bc)" d="M 685.005 126.333135 
+L 717.031 126.333135 
+L 717.031 99.037954 
+L 685.005 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_100">
+    <path clip-path="url(#p831f1017bc)" d="M 717.031 126.333135 
+L 749.057 126.333135 
+L 749.057 99.037954 
+L 717.031 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_101">
+    <path clip-path="url(#p831f1017bc)" d="M 749.057 126.333135 
+L 781.083 126.333135 
+L 781.083 99.037954 
+L 749.057 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_102">
+    <path clip-path="url(#p831f1017bc)" d="M 781.083 126.333135 
+L 813.109 126.333135 
+L 813.109 99.037954 
+L 781.083 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_103">
+    <path clip-path="url(#p831f1017bc)" d="M 813.109 126.333135 
+L 845.135 126.333135 
+L 845.135 99.037954 
+L 813.109 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_104">
+    <path clip-path="url(#p831f1017bc)" d="M 845.135 126.333135 
+L 877.161 126.333135 
+L 877.161 99.037954 
+L 845.135 99.037954 
+z
+" style="fill:url(#h96950f951d);"/>
+   </g>
+   <g id="patch_105">
+    <path clip-path="url(#p831f1017bc)" d="M 877.161 126.333135 
+L 909.187 126.333135 
+L 909.187 99.037954 
+L 877.161 99.037954 
+z
+" style="fill:url(#h96950f951d);"/>
+   </g>
+   <g id="patch_106">
+    <path clip-path="url(#p831f1017bc)" d="M 909.187 126.333135 
+L 941.213 126.333135 
+L 941.213 99.037954 
+L 909.187 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_107">
+    <path clip-path="url(#p831f1017bc)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#008000;"/>
+   </g>
+   <g id="patch_108">
+    <path clip-path="url(#p831f1017bc)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ff0000;"/>
+   </g>
+   <g id="patch_109">
+    <path clip-path="url(#p831f1017bc)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#0000ff;"/>
+   </g>
+   <g id="patch_110">
+    <path clip-path="url(#p831f1017bc)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ffff00;"/>
+   </g>
+   <g id="patch_111">
+    <path clip-path="url(#p831f1017bc)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ffa500;"/>
+   </g>
+   <g id="patch_112">
+    <path clip-path="url(#p831f1017bc)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#808080;"/>
+   </g>
+   <g id="patch_113">
+    <path clip-path="url(#p831f1017bc)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:url(#h96950f951d);"/>
+   </g>
+   <g id="patch_114">
+    <path clip-path="url(#p831f1017bc)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ffffff;"/>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 
+L 0 3.5 
+" id="m06a3102aa7" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="156.576" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <!-- 1 CPU -->
+      <g transform="translate(150.482064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 12.40625 8.296875 
+L 28.515625 8.296875 
+L 28.515625 63.921875 
+L 10.984375 60.40625 
+L 10.984375 69.390625 
+L 28.421875 72.90625 
+L 38.28125 72.90625 
+L 38.28125 8.296875 
+L 54.390625 8.296875 
+L 54.390625 0 
+L 12.40625 0 
+z
+" id="DejaVuSans-49"/>
+        <path id="DejaVuSans-32"/>
+        <path d="M 64.40625 67.28125 
+L 64.40625 56.890625 
+Q 59.421875 61.53125 53.78125 63.8125 
+Q 48.140625 66.109375 41.796875 66.109375 
+Q 29.296875 66.109375 22.65625 58.46875 
+Q 16.015625 50.828125 16.015625 36.375 
+Q 16.015625 21.96875 22.65625 14.328125 
+Q 29.296875 6.6875 41.796875 6.6875 
+Q 48.140625 6.6875 53.78125 8.984375 
+Q 59.421875 11.28125 64.40625 15.921875 
+L 64.40625 5.609375 
+Q 59.234375 2.09375 53.4375 0.328125 
+Q 47.65625 -1.421875 41.21875 -1.421875 
+Q 24.65625 -1.421875 15.125 8.703125 
+Q 5.609375 18.84375 5.609375 36.375 
+Q 5.609375 53.953125 15.125 64.078125 
+Q 24.65625 74.21875 41.21875 74.21875 
+Q 47.75 74.21875 53.53125 72.484375 
+Q 59.328125 70.75 64.40625 67.28125 
+z
+" id="DejaVuSans-67"/>
+        <path d="M 19.671875 64.796875 
+L 19.671875 37.40625 
+L 32.078125 37.40625 
+Q 38.96875 37.40625 42.71875 40.96875 
+Q 46.484375 44.53125 46.484375 51.125 
+Q 46.484375 57.671875 42.71875 61.234375 
+Q 38.96875 64.796875 32.078125 64.796875 
+z
+M 9.8125 72.90625 
+L 32.078125 72.90625 
+Q 44.34375 72.90625 50.609375 67.359375 
+Q 56.890625 61.8125 56.890625 51.125 
+Q 56.890625 40.328125 50.609375 34.8125 
+Q 44.34375 29.296875 32.078125 29.296875 
+L 19.671875 29.296875 
+L 19.671875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-80"/>
+        <path d="M 8.6875 72.90625 
+L 18.609375 72.90625 
+L 18.609375 28.609375 
+Q 18.609375 16.890625 22.84375 11.734375 
+Q 27.09375 6.59375 36.625 6.59375 
+Q 46.09375 6.59375 50.34375 11.734375 
+Q 54.59375 16.890625 54.59375 28.609375 
+L 54.59375 72.90625 
+L 64.5 72.90625 
+L 64.5 27.390625 
+Q 64.5 13.140625 57.4375 5.859375 
+Q 50.390625 -1.421875 36.625 -1.421875 
+Q 22.796875 -1.421875 15.734375 5.859375 
+Q 8.6875 13.140625 8.6875 27.390625 
+z
+" id="DejaVuSans-85"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="188.602" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <!-- 2 CPUs -->
+      <g transform="translate(180.945252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 19.1875 8.296875 
+L 53.609375 8.296875 
+L 53.609375 0 
+L 7.328125 0 
+L 7.328125 8.296875 
+Q 12.9375 14.109375 22.625 23.890625 
+Q 32.328125 33.6875 34.8125 36.53125 
+Q 39.546875 41.84375 41.421875 45.53125 
+Q 43.3125 49.21875 43.3125 52.78125 
+Q 43.3125 58.59375 39.234375 62.25 
+Q 35.15625 65.921875 28.609375 65.921875 
+Q 23.96875 65.921875 18.8125 64.3125 
+Q 13.671875 62.703125 7.8125 59.421875 
+L 7.8125 69.390625 
+Q 13.765625 71.78125 18.9375 73 
+Q 24.125 74.21875 28.421875 74.21875 
+Q 39.75 74.21875 46.484375 68.546875 
+Q 53.21875 62.890625 53.21875 53.421875 
+Q 53.21875 48.921875 51.53125 44.890625 
+Q 49.859375 40.875 45.40625 35.40625 
+Q 44.1875 33.984375 37.640625 27.21875 
+Q 31.109375 20.453125 19.1875 8.296875 
+z
+" id="DejaVuSans-50"/>
+        <path d="M 44.28125 53.078125 
+L 44.28125 44.578125 
+Q 40.484375 46.53125 36.375 47.5 
+Q 32.28125 48.484375 27.875 48.484375 
+Q 21.1875 48.484375 17.84375 46.4375 
+Q 14.5 44.390625 14.5 40.28125 
+Q 14.5 37.15625 16.890625 35.375 
+Q 19.28125 33.59375 26.515625 31.984375 
+L 29.59375 31.296875 
+Q 39.15625 29.25 43.1875 25.515625 
+Q 47.21875 21.78125 47.21875 15.09375 
+Q 47.21875 7.46875 41.1875 3.015625 
+Q 35.15625 -1.421875 24.609375 -1.421875 
+Q 20.21875 -1.421875 15.453125 -0.5625 
+Q 10.6875 0.296875 5.421875 2 
+L 5.421875 11.28125 
+Q 10.40625 8.6875 15.234375 7.390625 
+Q 20.0625 6.109375 24.8125 6.109375 
+Q 31.15625 6.109375 34.5625 8.28125 
+Q 37.984375 10.453125 37.984375 14.40625 
+Q 37.984375 18.0625 35.515625 20.015625 
+Q 33.0625 21.96875 24.703125 23.78125 
+L 21.578125 24.515625 
+Q 13.234375 26.265625 9.515625 29.90625 
+Q 5.8125 33.546875 5.8125 39.890625 
+Q 5.8125 47.609375 11.28125 51.796875 
+Q 16.75 56 26.8125 56 
+Q 31.78125 56 36.171875 55.265625 
+Q 40.578125 54.546875 44.28125 53.078125 
+z
+" id="DejaVuSans-115"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="220.628" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <!-- 4 CPUs -->
+      <g transform="translate(212.971252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 37.796875 64.3125 
+L 12.890625 25.390625 
+L 37.796875 25.390625 
+z
+M 35.203125 72.90625 
+L 47.609375 72.90625 
+L 47.609375 25.390625 
+L 58.015625 25.390625 
+L 58.015625 17.1875 
+L 47.609375 17.1875 
+L 47.609375 0 
+L 37.796875 0 
+L 37.796875 17.1875 
+L 4.890625 17.1875 
+L 4.890625 26.703125 
+z
+" id="DejaVuSans-52"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="252.654" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <!-- 8 CPUs -->
+      <g transform="translate(244.997252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 31.78125 34.625 
+Q 24.75 34.625 20.71875 30.859375 
+Q 16.703125 27.09375 16.703125 20.515625 
+Q 16.703125 13.921875 20.71875 10.15625 
+Q 24.75 6.390625 31.78125 6.390625 
+Q 38.8125 6.390625 42.859375 10.171875 
+Q 46.921875 13.96875 46.921875 20.515625 
+Q 46.921875 27.09375 42.890625 30.859375 
+Q 38.875 34.625 31.78125 34.625 
+z
+M 21.921875 38.8125 
+Q 15.578125 40.375 12.03125 44.71875 
+Q 8.5 49.078125 8.5 55.328125 
+Q 8.5 64.0625 14.71875 69.140625 
+Q 20.953125 74.21875 31.78125 74.21875 
+Q 42.671875 74.21875 48.875 69.140625 
+Q 55.078125 64.0625 55.078125 55.328125 
+Q 55.078125 49.078125 51.53125 44.71875 
+Q 48 40.375 41.703125 38.8125 
+Q 48.828125 37.15625 52.796875 32.3125 
+Q 56.78125 27.484375 56.78125 20.515625 
+Q 56.78125 9.90625 50.3125 4.234375 
+Q 43.84375 -1.421875 31.78125 -1.421875 
+Q 19.734375 -1.421875 13.25 4.234375 
+Q 6.78125 9.90625 6.78125 20.515625 
+Q 6.78125 27.484375 10.78125 32.3125 
+Q 14.796875 37.15625 21.921875 38.8125 
+z
+M 18.3125 54.390625 
+Q 18.3125 48.734375 21.84375 45.5625 
+Q 25.390625 42.390625 31.78125 42.390625 
+Q 38.140625 42.390625 41.71875 45.5625 
+Q 45.3125 48.734375 45.3125 54.390625 
+Q 45.3125 60.0625 41.71875 63.234375 
+Q 38.140625 66.40625 31.78125 66.40625 
+Q 25.390625 66.40625 21.84375 63.234375 
+Q 18.3125 60.0625 18.3125 54.390625 
+z
+" id="DejaVuSans-56"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="316.706" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <!-- 1 CPU -->
+      <g transform="translate(310.612064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_6">
+     <g id="line2d_6">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="348.732" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <!-- 2 CPUs -->
+      <g transform="translate(341.075252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_7">
+     <g id="line2d_7">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="380.758" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_7">
+      <!-- 4 CPUs -->
+      <g transform="translate(373.101252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_8">
+     <g id="line2d_8">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="412.784" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_8">
+      <!-- 8 CPUs -->
+      <g transform="translate(405.127252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_9">
+     <g id="line2d_9">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="476.836" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <!-- 1 CPU -->
+      <g transform="translate(470.742064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_10">
+     <g id="line2d_10">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="508.862" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_10">
+      <!-- 2 CPUs -->
+      <g transform="translate(501.205252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_11">
+     <g id="line2d_11">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="540.888" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_11">
+      <!-- 4 CPUs -->
+      <g transform="translate(533.231252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_12">
+     <g id="line2d_12">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="572.914" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_12">
+      <!-- 8 CPUs -->
+      <g transform="translate(565.257252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_13">
+     <g id="line2d_13">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="636.966" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_13">
+      <!-- 1 CPU -->
+      <g transform="translate(630.872064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_14">
+     <g id="line2d_14">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="668.992" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_14">
+      <!-- 2 CPUs -->
+      <g transform="translate(661.335252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_15">
+     <g id="line2d_15">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="701.018" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_15">
+      <!-- 4 CPUs -->
+      <g transform="translate(693.361252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_16">
+     <g id="line2d_16">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="733.044" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_16">
+      <!-- 8 CPUs -->
+      <g transform="translate(725.387252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_17">
+     <g id="line2d_17">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="797.096" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_17">
+      <!-- 1 CPU -->
+      <g transform="translate(791.002064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_18">
+     <g id="line2d_18">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="829.122" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_18">
+      <!-- 2 CPUs -->
+      <g transform="translate(821.465252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_19">
+     <g id="line2d_19">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="861.148" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_19">
+      <!-- 4 CPUs -->
+      <g transform="translate(853.491252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_20">
+     <g id="line2d_20">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="893.174" xlink:href="#m06a3102aa7" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_20">
+      <!-- 8 CPUs -->
+      <g transform="translate(885.517252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="text_21">
+     <!-- Number of CPUs, per each Linux kernel version -->
+     <g transform="translate(347.978125 272.880716)scale(0.15 -0.15)">
+      <defs>
+       <path d="M 9.8125 72.90625 
+L 23.09375 72.90625 
+L 55.421875 11.921875 
+L 55.421875 72.90625 
+L 64.984375 72.90625 
+L 64.984375 0 
+L 51.703125 0 
+L 19.390625 60.984375 
+L 19.390625 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-78"/>
+       <path d="M 8.5 21.578125 
+L 8.5 54.6875 
+L 17.484375 54.6875 
+L 17.484375 21.921875 
+Q 17.484375 14.15625 20.5 10.265625 
+Q 23.53125 6.390625 29.59375 6.390625 
+Q 36.859375 6.390625 41.078125 11.03125 
+Q 45.3125 15.671875 45.3125 23.6875 
+L 45.3125 54.6875 
+L 54.296875 54.6875 
+L 54.296875 0 
+L 45.3125 0 
+L 45.3125 8.40625 
+Q 42.046875 3.421875 37.71875 1 
+Q 33.40625 -1.421875 27.6875 -1.421875 
+Q 18.265625 -1.421875 13.375 4.4375 
+Q 8.5 10.296875 8.5 21.578125 
+z
+M 31.109375 56 
+z
+" id="DejaVuSans-117"/>
+       <path d="M 52 44.1875 
+Q 55.375 50.25 60.0625 53.125 
+Q 64.75 56 71.09375 56 
+Q 79.640625 56 84.28125 50.015625 
+Q 88.921875 44.046875 88.921875 33.015625 
+L 88.921875 0 
+L 79.890625 0 
+L 79.890625 32.71875 
+Q 79.890625 40.578125 77.09375 44.375 
+Q 74.3125 48.1875 68.609375 48.1875 
+Q 61.625 48.1875 57.5625 43.546875 
+Q 53.515625 38.921875 53.515625 30.90625 
+L 53.515625 0 
+L 44.484375 0 
+L 44.484375 32.71875 
+Q 44.484375 40.625 41.703125 44.40625 
+Q 38.921875 48.1875 33.109375 48.1875 
+Q 26.21875 48.1875 22.15625 43.53125 
+Q 18.109375 38.875 18.109375 30.90625 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.1875 
+Q 21.1875 51.21875 25.484375 53.609375 
+Q 29.78125 56 35.6875 56 
+Q 41.65625 56 45.828125 52.96875 
+Q 50 49.953125 52 44.1875 
+z
+" id="DejaVuSans-109"/>
+       <path d="M 48.6875 27.296875 
+Q 48.6875 37.203125 44.609375 42.84375 
+Q 40.53125 48.484375 33.40625 48.484375 
+Q 26.265625 48.484375 22.1875 42.84375 
+Q 18.109375 37.203125 18.109375 27.296875 
+Q 18.109375 17.390625 22.1875 11.75 
+Q 26.265625 6.109375 33.40625 6.109375 
+Q 40.53125 6.109375 44.609375 11.75 
+Q 48.6875 17.390625 48.6875 27.296875 
+z
+M 18.109375 46.390625 
+Q 20.953125 51.265625 25.265625 53.625 
+Q 29.59375 56 35.59375 56 
+Q 45.5625 56 51.78125 48.09375 
+Q 58.015625 40.1875 58.015625 27.296875 
+Q 58.015625 14.40625 51.78125 6.484375 
+Q 45.5625 -1.421875 35.59375 -1.421875 
+Q 29.59375 -1.421875 25.265625 0.953125 
+Q 20.953125 3.328125 18.109375 8.203125 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 75.984375 
+L 18.109375 75.984375 
+z
+" id="DejaVuSans-98"/>
+       <path d="M 56.203125 29.59375 
+L 56.203125 25.203125 
+L 14.890625 25.203125 
+Q 15.484375 15.921875 20.484375 11.0625 
+Q 25.484375 6.203125 34.421875 6.203125 
+Q 39.59375 6.203125 44.453125 7.46875 
+Q 49.3125 8.734375 54.109375 11.28125 
+L 54.109375 2.78125 
+Q 49.265625 0.734375 44.1875 -0.34375 
+Q 39.109375 -1.421875 33.890625 -1.421875 
+Q 20.796875 -1.421875 13.15625 6.1875 
+Q 5.515625 13.8125 5.515625 26.8125 
+Q 5.515625 40.234375 12.765625 48.109375 
+Q 20.015625 56 32.328125 56 
+Q 43.359375 56 49.78125 48.890625 
+Q 56.203125 41.796875 56.203125 29.59375 
+z
+M 47.21875 32.234375 
+Q 47.125 39.59375 43.09375 43.984375 
+Q 39.0625 48.390625 32.421875 48.390625 
+Q 24.90625 48.390625 20.390625 44.140625 
+Q 15.875 39.890625 15.1875 32.171875 
+z
+" id="DejaVuSans-101"/>
+       <path d="M 41.109375 46.296875 
+Q 39.59375 47.171875 37.8125 47.578125 
+Q 36.03125 48 33.890625 48 
+Q 26.265625 48 22.1875 43.046875 
+Q 18.109375 38.09375 18.109375 28.8125 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.1875 
+Q 20.953125 51.171875 25.484375 53.578125 
+Q 30.03125 56 36.53125 56 
+Q 37.453125 56 38.578125 55.875 
+Q 39.703125 55.765625 41.0625 55.515625 
+z
+" id="DejaVuSans-114"/>
+       <path d="M 30.609375 48.390625 
+Q 23.390625 48.390625 19.1875 42.75 
+Q 14.984375 37.109375 14.984375 27.296875 
+Q 14.984375 17.484375 19.15625 11.84375 
+Q 23.34375 6.203125 30.609375 6.203125 
+Q 37.796875 6.203125 41.984375 11.859375 
+Q 46.1875 17.53125 46.1875 27.296875 
+Q 46.1875 37.015625 41.984375 42.703125 
+Q 37.796875 48.390625 30.609375 48.390625 
+z
+M 30.609375 56 
+Q 42.328125 56 49.015625 48.375 
+Q 55.71875 40.765625 55.71875 27.296875 
+Q 55.71875 13.875 49.015625 6.21875 
+Q 42.328125 -1.421875 30.609375 -1.421875 
+Q 18.84375 -1.421875 12.171875 6.21875 
+Q 5.515625 13.875 5.515625 27.296875 
+Q 5.515625 40.765625 12.171875 48.375 
+Q 18.84375 56 30.609375 56 
+z
+" id="DejaVuSans-111"/>
+       <path d="M 37.109375 75.984375 
+L 37.109375 68.5 
+L 28.515625 68.5 
+Q 23.6875 68.5 21.796875 66.546875 
+Q 19.921875 64.59375 19.921875 59.515625 
+L 19.921875 54.6875 
+L 34.71875 54.6875 
+L 34.71875 47.703125 
+L 19.921875 47.703125 
+L 19.921875 0 
+L 10.890625 0 
+L 10.890625 47.703125 
+L 2.296875 47.703125 
+L 2.296875 54.6875 
+L 10.890625 54.6875 
+L 10.890625 58.5 
+Q 10.890625 67.625 15.140625 71.796875 
+Q 19.390625 75.984375 28.609375 75.984375 
+z
+" id="DejaVuSans-102"/>
+       <path d="M 11.71875 12.40625 
+L 22.015625 12.40625 
+L 22.015625 4 
+L 14.015625 -11.625 
+L 7.71875 -11.625 
+L 11.71875 4 
+z
+" id="DejaVuSans-44"/>
+       <path d="M 18.109375 8.203125 
+L 18.109375 -20.796875 
+L 9.078125 -20.796875 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.390625 
+Q 20.953125 51.265625 25.265625 53.625 
+Q 29.59375 56 35.59375 56 
+Q 45.5625 56 51.78125 48.09375 
+Q 58.015625 40.1875 58.015625 27.296875 
+Q 58.015625 14.40625 51.78125 6.484375 
+Q 45.5625 -1.421875 35.59375 -1.421875 
+Q 29.59375 -1.421875 25.265625 0.953125 
+Q 20.953125 3.328125 18.109375 8.203125 
+z
+M 48.6875 27.296875 
+Q 48.6875 37.203125 44.609375 42.84375 
+Q 40.53125 48.484375 33.40625 48.484375 
+Q 26.265625 48.484375 22.1875 42.84375 
+Q 18.109375 37.203125 18.109375 27.296875 
+Q 18.109375 17.390625 22.1875 11.75 
+Q 26.265625 6.109375 33.40625 6.109375 
+Q 40.53125 6.109375 44.609375 11.75 
+Q 48.6875 17.390625 48.6875 27.296875 
+z
+" id="DejaVuSans-112"/>
+       <path d="M 34.28125 27.484375 
+Q 23.390625 27.484375 19.1875 25 
+Q 14.984375 22.515625 14.984375 16.5 
+Q 14.984375 11.71875 18.140625 8.90625 
+Q 21.296875 6.109375 26.703125 6.109375 
+Q 34.1875 6.109375 38.703125 11.40625 
+Q 43.21875 16.703125 43.21875 25.484375 
+L 43.21875 27.484375 
+z
+M 52.203125 31.203125 
+L 52.203125 0 
+L 43.21875 0 
+L 43.21875 8.296875 
+Q 40.140625 3.328125 35.546875 0.953125 
+Q 30.953125 -1.421875 24.3125 -1.421875 
+Q 15.921875 -1.421875 10.953125 3.296875 
+Q 6 8.015625 6 15.921875 
+Q 6 25.140625 12.171875 29.828125 
+Q 18.359375 34.515625 30.609375 34.515625 
+L 43.21875 34.515625 
+L 43.21875 35.40625 
+Q 43.21875 41.609375 39.140625 45 
+Q 35.0625 48.390625 27.6875 48.390625 
+Q 23 48.390625 18.546875 47.265625 
+Q 14.109375 46.140625 10.015625 43.890625 
+L 10.015625 52.203125 
+Q 14.9375 54.109375 19.578125 55.046875 
+Q 24.21875 56 28.609375 56 
+Q 40.484375 56 46.34375 49.84375 
+Q 52.203125 43.703125 52.203125 31.203125 
+z
+" id="DejaVuSans-97"/>
+       <path d="M 48.78125 52.59375 
+L 48.78125 44.1875 
+Q 44.96875 46.296875 41.140625 47.34375 
+Q 37.3125 48.390625 33.40625 48.390625 
+Q 24.65625 48.390625 19.8125 42.84375 
+Q 14.984375 37.3125 14.984375 27.296875 
+Q 14.984375 17.28125 19.8125 11.734375 
+Q 24.65625 6.203125 33.40625 6.203125 
+Q 37.3125 6.203125 41.140625 7.25 
+Q 44.96875 8.296875 48.78125 10.40625 
+L 48.78125 2.09375 
+Q 45.015625 0.34375 40.984375 -0.53125 
+Q 36.96875 -1.421875 32.421875 -1.421875 
+Q 20.0625 -1.421875 12.78125 6.34375 
+Q 5.515625 14.109375 5.515625 27.296875 
+Q 5.515625 40.671875 12.859375 48.328125 
+Q 20.21875 56 33.015625 56 
+Q 37.15625 56 41.109375 55.140625 
+Q 45.0625 54.296875 48.78125 52.59375 
+z
+" id="DejaVuSans-99"/>
+       <path d="M 54.890625 33.015625 
+L 54.890625 0 
+L 45.90625 0 
+L 45.90625 32.71875 
+Q 45.90625 40.484375 42.875 44.328125 
+Q 39.84375 48.1875 33.796875 48.1875 
+Q 26.515625 48.1875 22.3125 43.546875 
+Q 18.109375 38.921875 18.109375 30.90625 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 75.984375 
+L 18.109375 75.984375 
+L 18.109375 46.1875 
+Q 21.34375 51.125 25.703125 53.5625 
+Q 30.078125 56 35.796875 56 
+Q 45.21875 56 50.046875 50.171875 
+Q 54.890625 44.34375 54.890625 33.015625 
+z
+" id="DejaVuSans-104"/>
+       <path d="M 9.8125 72.90625 
+L 19.671875 72.90625 
+L 19.671875 8.296875 
+L 55.171875 8.296875 
+L 55.171875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-76"/>
+       <path d="M 9.421875 54.6875 
+L 18.40625 54.6875 
+L 18.40625 0 
+L 9.421875 0 
+z
+M 9.421875 75.984375 
+L 18.40625 75.984375 
+L 18.40625 64.59375 
+L 9.421875 64.59375 
+z
+" id="DejaVuSans-105"/>
+       <path d="M 54.890625 33.015625 
+L 54.890625 0 
+L 45.90625 0 
+L 45.90625 32.71875 
+Q 45.90625 40.484375 42.875 44.328125 
+Q 39.84375 48.1875 33.796875 48.1875 
+Q 26.515625 48.1875 22.3125 43.546875 
+Q 18.109375 38.921875 18.109375 30.90625 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.1875 
+Q 21.34375 51.125 25.703125 53.5625 
+Q 30.078125 56 35.796875 56 
+Q 45.21875 56 50.046875 50.171875 
+Q 54.890625 44.34375 54.890625 33.015625 
+z
+" id="DejaVuSans-110"/>
+       <path d="M 54.890625 54.6875 
+L 35.109375 28.078125 
+L 55.90625 0 
+L 45.3125 0 
+L 29.390625 21.484375 
+L 13.484375 0 
+L 2.875 0 
+L 24.125 28.609375 
+L 4.6875 54.6875 
+L 15.28125 54.6875 
+L 29.78125 35.203125 
+L 44.28125 54.6875 
+z
+" id="DejaVuSans-120"/>
+       <path d="M 9.078125 75.984375 
+L 18.109375 75.984375 
+L 18.109375 31.109375 
+L 44.921875 54.6875 
+L 56.390625 54.6875 
+L 27.390625 29.109375 
+L 57.625 0 
+L 45.90625 0 
+L 18.109375 26.703125 
+L 18.109375 0 
+L 9.078125 0 
+z
+" id="DejaVuSans-107"/>
+       <path d="M 9.421875 75.984375 
+L 18.40625 75.984375 
+L 18.40625 0 
+L 9.421875 0 
+z
+" id="DejaVuSans-108"/>
+       <path d="M 2.984375 54.6875 
+L 12.5 54.6875 
+L 29.59375 8.796875 
+L 46.6875 54.6875 
+L 56.203125 54.6875 
+L 35.6875 0 
+L 23.484375 0 
+z
+" id="DejaVuSans-118"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-78"/>
+      <use x="74.804688" xlink:href="#DejaVuSans-117"/>
+      <use x="138.183594" xlink:href="#DejaVuSans-109"/>
+      <use x="235.595703" xlink:href="#DejaVuSans-98"/>
+      <use x="299.072266" xlink:href="#DejaVuSans-101"/>
+      <use x="360.595703" xlink:href="#DejaVuSans-114"/>
+      <use x="401.708984" xlink:href="#DejaVuSans-32"/>
+      <use x="433.496094" xlink:href="#DejaVuSans-111"/>
+      <use x="494.677734" xlink:href="#DejaVuSans-102"/>
+      <use x="529.882812" xlink:href="#DejaVuSans-32"/>
+      <use x="561.669922" xlink:href="#DejaVuSans-67"/>
+      <use x="631.494141" xlink:href="#DejaVuSans-80"/>
+      <use x="691.796875" xlink:href="#DejaVuSans-85"/>
+      <use x="764.990234" xlink:href="#DejaVuSans-115"/>
+      <use x="817.089844" xlink:href="#DejaVuSans-44"/>
+      <use x="848.876953" xlink:href="#DejaVuSans-32"/>
+      <use x="880.664062" xlink:href="#DejaVuSans-112"/>
+      <use x="944.140625" xlink:href="#DejaVuSans-101"/>
+      <use x="1005.664062" xlink:href="#DejaVuSans-114"/>
+      <use x="1046.777344" xlink:href="#DejaVuSans-32"/>
+      <use x="1078.564453" xlink:href="#DejaVuSans-101"/>
+      <use x="1140.087891" xlink:href="#DejaVuSans-97"/>
+      <use x="1201.367188" xlink:href="#DejaVuSans-99"/>
+      <use x="1256.347656" xlink:href="#DejaVuSans-104"/>
+      <use x="1319.726562" xlink:href="#DejaVuSans-32"/>
+      <use x="1351.513672" xlink:href="#DejaVuSans-76"/>
+      <use x="1407.226562" xlink:href="#DejaVuSans-105"/>
+      <use x="1435.009766" xlink:href="#DejaVuSans-110"/>
+      <use x="1498.388672" xlink:href="#DejaVuSans-117"/>
+      <use x="1561.767578" xlink:href="#DejaVuSans-120"/>
+      <use x="1620.947266" xlink:href="#DejaVuSans-32"/>
+      <use x="1652.734375" xlink:href="#DejaVuSans-107"/>
+      <use x="1707.019531" xlink:href="#DejaVuSans-101"/>
+      <use x="1768.542969" xlink:href="#DejaVuSans-114"/>
+      <use x="1807.90625" xlink:href="#DejaVuSans-110"/>
+      <use x="1871.285156" xlink:href="#DejaVuSans-101"/>
+      <use x="1932.808594" xlink:href="#DejaVuSans-108"/>
+      <use x="1960.591797" xlink:href="#DejaVuSans-32"/>
+      <use x="1992.378906" xlink:href="#DejaVuSans-118"/>
+      <use x="2051.558594" xlink:href="#DejaVuSans-101"/>
+      <use x="2113.082031" xlink:href="#DejaVuSans-114"/>
+      <use x="2154.195312" xlink:href="#DejaVuSans-115"/>
+      <use x="2206.294922" xlink:href="#DejaVuSans-105"/>
+      <use x="2234.078125" xlink:href="#DejaVuSans-111"/>
+      <use x="2295.259766" xlink:href="#DejaVuSans-110"/>
+     </g>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_21">
+      <defs>
+       <path d="M 0 0 
+L -3.5 0 
+" id="m7cab13a36b" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m7cab13a36b" y="194.571089"/>
+      </g>
+     </g>
+     <g id="text_22">
+      <!-- X86KvmCPU -->
+      <g transform="translate(43.001875 199.130152)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 6.296875 72.90625 
+L 16.890625 72.90625 
+L 35.015625 45.796875 
+L 53.21875 72.90625 
+L 63.8125 72.90625 
+L 40.375 37.890625 
+L 65.375 0 
+L 54.78125 0 
+L 34.28125 31 
+L 13.625 0 
+L 2.984375 0 
+L 29 38.921875 
+z
+" id="DejaVuSans-88"/>
+        <path d="M 33.015625 40.375 
+Q 26.375 40.375 22.484375 35.828125 
+Q 18.609375 31.296875 18.609375 23.390625 
+Q 18.609375 15.53125 22.484375 10.953125 
+Q 26.375 6.390625 33.015625 6.390625 
+Q 39.65625 6.390625 43.53125 10.953125 
+Q 47.40625 15.53125 47.40625 23.390625 
+Q 47.40625 31.296875 43.53125 35.828125 
+Q 39.65625 40.375 33.015625 40.375 
+z
+M 52.59375 71.296875 
+L 52.59375 62.3125 
+Q 48.875 64.0625 45.09375 64.984375 
+Q 41.3125 65.921875 37.59375 65.921875 
+Q 27.828125 65.921875 22.671875 59.328125 
+Q 17.53125 52.734375 16.796875 39.40625 
+Q 19.671875 43.65625 24.015625 45.921875 
+Q 28.375 48.1875 33.59375 48.1875 
+Q 44.578125 48.1875 50.953125 41.515625 
+Q 57.328125 34.859375 57.328125 23.390625 
+Q 57.328125 12.15625 50.6875 5.359375 
+Q 44.046875 -1.421875 33.015625 -1.421875 
+Q 20.359375 -1.421875 13.671875 8.265625 
+Q 6.984375 17.96875 6.984375 36.375 
+Q 6.984375 53.65625 15.1875 63.9375 
+Q 23.390625 74.21875 37.203125 74.21875 
+Q 40.921875 74.21875 44.703125 73.484375 
+Q 48.484375 72.75 52.59375 71.296875 
+z
+" id="DejaVuSans-54"/>
+        <path d="M 9.8125 72.90625 
+L 19.671875 72.90625 
+L 19.671875 42.09375 
+L 52.390625 72.90625 
+L 65.09375 72.90625 
+L 28.90625 38.921875 
+L 67.671875 0 
+L 54.6875 0 
+L 19.671875 35.109375 
+L 19.671875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-75"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-88"/>
+       <use x="68.505859" xlink:href="#DejaVuSans-56"/>
+       <use x="132.128906" xlink:href="#DejaVuSans-54"/>
+       <use x="195.751953" xlink:href="#DejaVuSans-75"/>
+       <use x="261.328125" xlink:href="#DejaVuSans-118"/>
+       <use x="320.507812" xlink:href="#DejaVuSans-109"/>
+       <use x="417.919922" xlink:href="#DejaVuSans-67"/>
+       <use x="487.744141" xlink:href="#DejaVuSans-80"/>
+       <use x="548.046875" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_22">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m7cab13a36b" y="167.275908"/>
+      </g>
+     </g>
+     <g id="text_23">
+      <!-- AtomicSimpleCPU -->
+      <g transform="translate(10.51 171.83497)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 34.1875 63.1875 
+L 20.796875 26.90625 
+L 47.609375 26.90625 
+z
+M 28.609375 72.90625 
+L 39.796875 72.90625 
+L 67.578125 0 
+L 57.328125 0 
+L 50.6875 18.703125 
+L 17.828125 18.703125 
+L 11.1875 0 
+L 0.78125 0 
+z
+" id="DejaVuSans-65"/>
+        <path d="M 18.3125 70.21875 
+L 18.3125 54.6875 
+L 36.8125 54.6875 
+L 36.8125 47.703125 
+L 18.3125 47.703125 
+L 18.3125 18.015625 
+Q 18.3125 11.328125 20.140625 9.421875 
+Q 21.96875 7.515625 27.59375 7.515625 
+L 36.8125 7.515625 
+L 36.8125 0 
+L 27.59375 0 
+Q 17.1875 0 13.234375 3.875 
+Q 9.28125 7.765625 9.28125 18.015625 
+L 9.28125 47.703125 
+L 2.6875 47.703125 
+L 2.6875 54.6875 
+L 9.28125 54.6875 
+L 9.28125 70.21875 
+z
+" id="DejaVuSans-116"/>
+        <path d="M 53.515625 70.515625 
+L 53.515625 60.890625 
+Q 47.90625 63.578125 42.921875 64.890625 
+Q 37.9375 66.21875 33.296875 66.21875 
+Q 25.25 66.21875 20.875 63.09375 
+Q 16.5 59.96875 16.5 54.203125 
+Q 16.5 49.359375 19.40625 46.890625 
+Q 22.3125 44.4375 30.421875 42.921875 
+L 36.375 41.703125 
+Q 47.40625 39.59375 52.65625 34.296875 
+Q 57.90625 29 57.90625 20.125 
+Q 57.90625 9.515625 50.796875 4.046875 
+Q 43.703125 -1.421875 29.984375 -1.421875 
+Q 24.8125 -1.421875 18.96875 -0.25 
+Q 13.140625 0.921875 6.890625 3.21875 
+L 6.890625 13.375 
+Q 12.890625 10.015625 18.65625 8.296875 
+Q 24.421875 6.59375 29.984375 6.59375 
+Q 38.421875 6.59375 43.015625 9.90625 
+Q 47.609375 13.234375 47.609375 19.390625 
+Q 47.609375 24.75 44.3125 27.78125 
+Q 41.015625 30.8125 33.5 32.328125 
+L 27.484375 33.5 
+Q 16.453125 35.6875 11.515625 40.375 
+Q 6.59375 45.0625 6.59375 53.421875 
+Q 6.59375 63.09375 13.40625 68.65625 
+Q 20.21875 74.21875 32.171875 74.21875 
+Q 37.3125 74.21875 42.625 73.28125 
+Q 47.953125 72.359375 53.515625 70.515625 
+z
+" id="DejaVuSans-83"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-65"/>
+       <use x="66.658203" xlink:href="#DejaVuSans-116"/>
+       <use x="105.867188" xlink:href="#DejaVuSans-111"/>
+       <use x="167.048828" xlink:href="#DejaVuSans-109"/>
+       <use x="264.460938" xlink:href="#DejaVuSans-105"/>
+       <use x="292.244141" xlink:href="#DejaVuSans-99"/>
+       <use x="347.224609" xlink:href="#DejaVuSans-83"/>
+       <use x="410.701172" xlink:href="#DejaVuSans-105"/>
+       <use x="438.484375" xlink:href="#DejaVuSans-109"/>
+       <use x="535.896484" xlink:href="#DejaVuSans-112"/>
+       <use x="599.373047" xlink:href="#DejaVuSans-108"/>
+       <use x="627.15625" xlink:href="#DejaVuSans-101"/>
+       <use x="688.679688" xlink:href="#DejaVuSans-67"/>
+       <use x="758.503906" xlink:href="#DejaVuSans-80"/>
+       <use x="818.806641" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_3">
+     <g id="line2d_23">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m7cab13a36b" y="139.980726"/>
+      </g>
+     </g>
+     <g id="text_24">
+      <!-- TimingSimpleCPU -->
+      <g transform="translate(11.6425 144.539789)scale(0.12 -0.12)">
+       <defs>
+        <path d="M -0.296875 72.90625 
+L 61.375 72.90625 
+L 61.375 64.59375 
+L 35.5 64.59375 
+L 35.5 0 
+L 25.59375 0 
+L 25.59375 64.59375 
+L -0.296875 64.59375 
+z
+" id="DejaVuSans-84"/>
+        <path d="M 45.40625 27.984375 
+Q 45.40625 37.75 41.375 43.109375 
+Q 37.359375 48.484375 30.078125 48.484375 
+Q 22.859375 48.484375 18.828125 43.109375 
+Q 14.796875 37.75 14.796875 27.984375 
+Q 14.796875 18.265625 18.828125 12.890625 
+Q 22.859375 7.515625 30.078125 7.515625 
+Q 37.359375 7.515625 41.375 12.890625 
+Q 45.40625 18.265625 45.40625 27.984375 
+z
+M 54.390625 6.78125 
+Q 54.390625 -7.171875 48.1875 -13.984375 
+Q 42 -20.796875 29.203125 -20.796875 
+Q 24.46875 -20.796875 20.265625 -20.09375 
+Q 16.0625 -19.390625 12.109375 -17.921875 
+L 12.109375 -9.1875 
+Q 16.0625 -11.328125 19.921875 -12.34375 
+Q 23.78125 -13.375 27.78125 -13.375 
+Q 36.625 -13.375 41.015625 -8.765625 
+Q 45.40625 -4.15625 45.40625 5.171875 
+L 45.40625 9.625 
+Q 42.625 4.78125 38.28125 2.390625 
+Q 33.9375 0 27.875 0 
+Q 17.828125 0 11.671875 7.65625 
+Q 5.515625 15.328125 5.515625 27.984375 
+Q 5.515625 40.671875 11.671875 48.328125 
+Q 17.828125 56 27.875 56 
+Q 33.9375 56 38.28125 53.609375 
+Q 42.625 51.21875 45.40625 46.390625 
+L 45.40625 54.6875 
+L 54.390625 54.6875 
+z
+" id="DejaVuSans-103"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-84"/>
+       <use x="57.958984" xlink:href="#DejaVuSans-105"/>
+       <use x="85.742188" xlink:href="#DejaVuSans-109"/>
+       <use x="183.154297" xlink:href="#DejaVuSans-105"/>
+       <use x="210.9375" xlink:href="#DejaVuSans-110"/>
+       <use x="274.316406" xlink:href="#DejaVuSans-103"/>
+       <use x="337.792969" xlink:href="#DejaVuSans-83"/>
+       <use x="401.269531" xlink:href="#DejaVuSans-105"/>
+       <use x="429.052734" xlink:href="#DejaVuSans-109"/>
+       <use x="526.464844" xlink:href="#DejaVuSans-112"/>
+       <use x="589.941406" xlink:href="#DejaVuSans-108"/>
+       <use x="617.724609" xlink:href="#DejaVuSans-101"/>
+       <use x="679.248047" xlink:href="#DejaVuSans-67"/>
+       <use x="749.072266" xlink:href="#DejaVuSans-80"/>
+       <use x="809.375" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_4">
+     <g id="line2d_24">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m7cab13a36b" y="112.685545"/>
+      </g>
+     </g>
+     <g id="text_25">
+      <!-- DerivO3CPU -->
+      <g transform="translate(44.078125 117.244607)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 19.671875 64.796875 
+L 19.671875 8.109375 
+L 31.59375 8.109375 
+Q 46.6875 8.109375 53.6875 14.9375 
+Q 60.6875 21.78125 60.6875 36.53125 
+Q 60.6875 51.171875 53.6875 57.984375 
+Q 46.6875 64.796875 31.59375 64.796875 
+z
+M 9.8125 72.90625 
+L 30.078125 72.90625 
+Q 51.265625 72.90625 61.171875 64.09375 
+Q 71.09375 55.28125 71.09375 36.53125 
+Q 71.09375 17.671875 61.125 8.828125 
+Q 51.171875 0 30.078125 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-68"/>
+        <path d="M 39.40625 66.21875 
+Q 28.65625 66.21875 22.328125 58.203125 
+Q 16.015625 50.203125 16.015625 36.375 
+Q 16.015625 22.609375 22.328125 14.59375 
+Q 28.65625 6.59375 39.40625 6.59375 
+Q 50.140625 6.59375 56.421875 14.59375 
+Q 62.703125 22.609375 62.703125 36.375 
+Q 62.703125 50.203125 56.421875 58.203125 
+Q 50.140625 66.21875 39.40625 66.21875 
+z
+M 39.40625 74.21875 
+Q 54.734375 74.21875 63.90625 63.9375 
+Q 73.09375 53.65625 73.09375 36.375 
+Q 73.09375 19.140625 63.90625 8.859375 
+Q 54.734375 -1.421875 39.40625 -1.421875 
+Q 24.03125 -1.421875 14.8125 8.828125 
+Q 5.609375 19.09375 5.609375 36.375 
+Q 5.609375 53.65625 14.8125 63.9375 
+Q 24.03125 74.21875 39.40625 74.21875 
+z
+" id="DejaVuSans-79"/>
+        <path d="M 40.578125 39.3125 
+Q 47.65625 37.796875 51.625 33 
+Q 55.609375 28.21875 55.609375 21.1875 
+Q 55.609375 10.40625 48.1875 4.484375 
+Q 40.765625 -1.421875 27.09375 -1.421875 
+Q 22.515625 -1.421875 17.65625 -0.515625 
+Q 12.796875 0.390625 7.625 2.203125 
+L 7.625 11.71875 
+Q 11.71875 9.328125 16.59375 8.109375 
+Q 21.484375 6.890625 26.8125 6.890625 
+Q 36.078125 6.890625 40.9375 10.546875 
+Q 45.796875 14.203125 45.796875 21.1875 
+Q 45.796875 27.640625 41.28125 31.265625 
+Q 36.765625 34.90625 28.71875 34.90625 
+L 20.21875 34.90625 
+L 20.21875 43.015625 
+L 29.109375 43.015625 
+Q 36.375 43.015625 40.234375 45.921875 
+Q 44.09375 48.828125 44.09375 54.296875 
+Q 44.09375 59.90625 40.109375 62.90625 
+Q 36.140625 65.921875 28.71875 65.921875 
+Q 24.65625 65.921875 20.015625 65.03125 
+Q 15.375 64.15625 9.8125 62.3125 
+L 9.8125 71.09375 
+Q 15.4375 72.65625 20.34375 73.4375 
+Q 25.25 74.21875 29.59375 74.21875 
+Q 40.828125 74.21875 47.359375 69.109375 
+Q 53.90625 64.015625 53.90625 55.328125 
+Q 53.90625 49.265625 50.4375 45.09375 
+Q 46.96875 40.921875 40.578125 39.3125 
+z
+" id="DejaVuSans-51"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-68"/>
+       <use x="77.001953" xlink:href="#DejaVuSans-101"/>
+       <use x="138.525391" xlink:href="#DejaVuSans-114"/>
+       <use x="179.638672" xlink:href="#DejaVuSans-105"/>
+       <use x="207.421875" xlink:href="#DejaVuSans-118"/>
+       <use x="266.601562" xlink:href="#DejaVuSans-79"/>
+       <use x="345.3125" xlink:href="#DejaVuSans-51"/>
+       <use x="408.935547" xlink:href="#DejaVuSans-67"/>
+       <use x="478.759766" xlink:href="#DejaVuSans-80"/>
+       <use x="539.0625" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+   </g>
+   <g id="patch_115">
+    <path d="M 124.55 208.21868 
+L 124.55 30.8 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_116">
+    <path d="M 925.2 208.21868 
+L 925.2 30.8 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_117">
+    <path d="M 124.55 208.21868 
+L 925.2 208.21868 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_118">
+    <path d="M 124.55 30.8 
+L 925.2 30.8 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="text_26">
+    <!-- vmlinux-4.4.186 -->
+    <g transform="translate(143.425547 94.988462)scale(0.15 -0.15)">
+     <defs>
+      <path d="M 4.890625 31.390625 
+L 31.203125 31.390625 
+L 31.203125 23.390625 
+L 4.890625 23.390625 
+z
+" id="DejaVuSans-45"/>
+      <path d="M 10.6875 12.40625 
+L 21 12.40625 
+L 21 0 
+L 10.6875 0 
+z
+" id="DejaVuSans-46"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-52"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-46"/>
+     <use x="625" xlink:href="#DejaVuSans-49"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-56"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-54"/>
+    </g>
+   </g>
+   <g id="text_27">
+    <!-- vmlinux-4.9.186 -->
+    <g transform="translate(303.555547 94.988462)scale(0.15 -0.15)">
+     <defs>
+      <path d="M 10.984375 1.515625 
+L 10.984375 10.5 
+Q 14.703125 8.734375 18.5 7.8125 
+Q 22.3125 6.890625 25.984375 6.890625 
+Q 35.75 6.890625 40.890625 13.453125 
+Q 46.046875 20.015625 46.78125 33.40625 
+Q 43.953125 29.203125 39.59375 26.953125 
+Q 35.25 24.703125 29.984375 24.703125 
+Q 19.046875 24.703125 12.671875 31.3125 
+Q 6.296875 37.9375 6.296875 49.421875 
+Q 6.296875 60.640625 12.9375 67.421875 
+Q 19.578125 74.21875 30.609375 74.21875 
+Q 43.265625 74.21875 49.921875 64.515625 
+Q 56.59375 54.828125 56.59375 36.375 
+Q 56.59375 19.140625 48.40625 8.859375 
+Q 40.234375 -1.421875 26.421875 -1.421875 
+Q 22.703125 -1.421875 18.890625 -0.6875 
+Q 15.09375 0.046875 10.984375 1.515625 
+z
+M 30.609375 32.421875 
+Q 37.25 32.421875 41.125 36.953125 
+Q 45.015625 41.5 45.015625 49.421875 
+Q 45.015625 57.28125 41.125 61.84375 
+Q 37.25 66.40625 30.609375 66.40625 
+Q 23.96875 66.40625 20.09375 61.84375 
+Q 16.21875 57.28125 16.21875 49.421875 
+Q 16.21875 41.5 20.09375 36.953125 
+Q 23.96875 32.421875 30.609375 32.421875 
+z
+" id="DejaVuSans-57"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-57"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-46"/>
+     <use x="625" xlink:href="#DejaVuSans-49"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-56"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-54"/>
+    </g>
+   </g>
+   <g id="text_28">
+    <!-- vmlinux-4.14.134 -->
+    <g transform="translate(458.913672 94.988462)scale(0.15 -0.15)">
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-49"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-52"/>
+     <use x="656.835938" xlink:href="#DejaVuSans-46"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-49"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-51"/>
+     <use x="815.869141" xlink:href="#DejaVuSans-52"/>
+    </g>
+   </g>
+   <g id="text_29">
+    <!-- vmlinux-4.19.83 -->
+    <g transform="translate(623.815547 94.988462)scale(0.15 -0.15)">
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-49"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-57"/>
+     <use x="656.835938" xlink:href="#DejaVuSans-46"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-56"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-51"/>
+    </g>
+   </g>
+   <g id="text_30">
+    <!-- vmlinux-5.4.49 -->
+    <g transform="translate(788.717422 94.988462)scale(0.15 -0.15)">
+     <defs>
+      <path d="M 10.796875 72.90625 
+L 49.515625 72.90625 
+L 49.515625 64.59375 
+L 19.828125 64.59375 
+L 19.828125 46.734375 
+Q 21.96875 47.46875 24.109375 47.828125 
+Q 26.265625 48.1875 28.421875 48.1875 
+Q 40.625 48.1875 47.75 41.5 
+Q 54.890625 34.8125 54.890625 23.390625 
+Q 54.890625 11.625 47.5625 5.09375 
+Q 40.234375 -1.421875 26.90625 -1.421875 
+Q 22.3125 -1.421875 17.546875 -0.640625 
+Q 12.796875 0.140625 7.71875 1.703125 
+L 7.71875 11.625 
+Q 12.109375 9.234375 16.796875 8.0625 
+Q 21.484375 6.890625 26.703125 6.890625 
+Q 35.15625 6.890625 40.078125 11.328125 
+Q 45.015625 15.765625 45.015625 23.390625 
+Q 45.015625 31 40.078125 35.4375 
+Q 35.15625 39.890625 26.703125 39.890625 
+Q 22.75 39.890625 18.8125 39.015625 
+Q 14.890625 38.140625 10.796875 36.28125 
+z
+" id="DejaVuSans-53"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-53"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-52"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-46"/>
+     <use x="625" xlink:href="#DejaVuSans-52"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-57"/>
+    </g>
+   </g>
+   <g id="text_31">
+    <!-- Memory: MESI_Two_Level, Boot Type: systemd -->
+    <g transform="translate(317.462969 24.8)scale(0.18 -0.18)">
+     <defs>
+      <path d="M 9.8125 72.90625 
+L 24.515625 72.90625 
+L 43.109375 23.296875 
+L 61.8125 72.90625 
+L 76.515625 72.90625 
+L 76.515625 0 
+L 66.890625 0 
+L 66.890625 64.015625 
+L 48.09375 14.015625 
+L 38.1875 14.015625 
+L 19.390625 64.015625 
+L 19.390625 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-77"/>
+      <path d="M 32.171875 -5.078125 
+Q 28.375 -14.84375 24.75 -17.8125 
+Q 21.140625 -20.796875 15.09375 -20.796875 
+L 7.90625 -20.796875 
+L 7.90625 -13.28125 
+L 13.1875 -13.28125 
+Q 16.890625 -13.28125 18.9375 -11.515625 
+Q 21 -9.765625 23.484375 -3.21875 
+L 25.09375 0.875 
+L 2.984375 54.6875 
+L 12.5 54.6875 
+L 29.59375 11.921875 
+L 46.6875 54.6875 
+L 56.203125 54.6875 
+z
+" id="DejaVuSans-121"/>
+      <path d="M 11.71875 12.40625 
+L 22.015625 12.40625 
+L 22.015625 0 
+L 11.71875 0 
+z
+M 11.71875 51.703125 
+L 22.015625 51.703125 
+L 22.015625 39.3125 
+L 11.71875 39.3125 
+z
+" id="DejaVuSans-58"/>
+      <path d="M 9.8125 72.90625 
+L 55.90625 72.90625 
+L 55.90625 64.59375 
+L 19.671875 64.59375 
+L 19.671875 43.015625 
+L 54.390625 43.015625 
+L 54.390625 34.71875 
+L 19.671875 34.71875 
+L 19.671875 8.296875 
+L 56.78125 8.296875 
+L 56.78125 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-69"/>
+      <path d="M 9.8125 72.90625 
+L 19.671875 72.90625 
+L 19.671875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-73"/>
+      <path d="M 50.984375 -16.609375 
+L 50.984375 -23.578125 
+L -0.984375 -23.578125 
+L -0.984375 -16.609375 
+z
+" id="DejaVuSans-95"/>
+      <path d="M 4.203125 54.6875 
+L 13.1875 54.6875 
+L 24.421875 12.015625 
+L 35.59375 54.6875 
+L 46.1875 54.6875 
+L 57.421875 12.015625 
+L 68.609375 54.6875 
+L 77.59375 54.6875 
+L 63.28125 0 
+L 52.6875 0 
+L 40.921875 44.828125 
+L 29.109375 0 
+L 18.5 0 
+z
+" id="DejaVuSans-119"/>
+      <path d="M 19.671875 34.8125 
+L 19.671875 8.109375 
+L 35.5 8.109375 
+Q 43.453125 8.109375 47.28125 11.40625 
+Q 51.125 14.703125 51.125 21.484375 
+Q 51.125 28.328125 47.28125 31.5625 
+Q 43.453125 34.8125 35.5 34.8125 
+z
+M 19.671875 64.796875 
+L 19.671875 42.828125 
+L 34.28125 42.828125 
+Q 41.5 42.828125 45.03125 45.53125 
+Q 48.578125 48.25 48.578125 53.8125 
+Q 48.578125 59.328125 45.03125 62.0625 
+Q 41.5 64.796875 34.28125 64.796875 
+z
+M 9.8125 72.90625 
+L 35.015625 72.90625 
+Q 46.296875 72.90625 52.390625 68.21875 
+Q 58.5 63.53125 58.5 54.890625 
+Q 58.5 48.1875 55.375 44.234375 
+Q 52.25 40.28125 46.1875 39.3125 
+Q 53.46875 37.75 57.5 32.78125 
+Q 61.53125 27.828125 61.53125 20.40625 
+Q 61.53125 10.640625 54.890625 5.3125 
+Q 48.25 0 35.984375 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-66"/>
+      <path d="M 45.40625 46.390625 
+L 45.40625 75.984375 
+L 54.390625 75.984375 
+L 54.390625 0 
+L 45.40625 0 
+L 45.40625 8.203125 
+Q 42.578125 3.328125 38.25 0.953125 
+Q 33.9375 -1.421875 27.875 -1.421875 
+Q 17.96875 -1.421875 11.734375 6.484375 
+Q 5.515625 14.40625 5.515625 27.296875 
+Q 5.515625 40.1875 11.734375 48.09375 
+Q 17.96875 56 27.875 56 
+Q 33.9375 56 38.25 53.625 
+Q 42.578125 51.265625 45.40625 46.390625 
+z
+M 14.796875 27.296875 
+Q 14.796875 17.390625 18.875 11.75 
+Q 22.953125 6.109375 30.078125 6.109375 
+Q 37.203125 6.109375 41.296875 11.75 
+Q 45.40625 17.390625 45.40625 27.296875 
+Q 45.40625 37.203125 41.296875 42.84375 
+Q 37.203125 48.484375 30.078125 48.484375 
+Q 22.953125 48.484375 18.875 42.84375 
+Q 14.796875 37.203125 14.796875 27.296875 
+z
+" id="DejaVuSans-100"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-77"/>
+     <use x="86.279297" xlink:href="#DejaVuSans-101"/>
+     <use x="147.802734" xlink:href="#DejaVuSans-109"/>
+     <use x="245.214844" xlink:href="#DejaVuSans-111"/>
+     <use x="306.396484" xlink:href="#DejaVuSans-114"/>
+     <use x="347.509766" xlink:href="#DejaVuSans-121"/>
+     <use x="399.439453" xlink:href="#DejaVuSans-58"/>
+     <use x="433.130859" xlink:href="#DejaVuSans-32"/>
+     <use x="464.917969" xlink:href="#DejaVuSans-77"/>
+     <use x="551.197266" xlink:href="#DejaVuSans-69"/>
+     <use x="614.380859" xlink:href="#DejaVuSans-83"/>
+     <use x="677.857422" xlink:href="#DejaVuSans-73"/>
+     <use x="707.349609" xlink:href="#DejaVuSans-95"/>
+     <use x="757.349609" xlink:href="#DejaVuSans-84"/>
+     <use x="801.933594" xlink:href="#DejaVuSans-119"/>
+     <use x="883.720703" xlink:href="#DejaVuSans-111"/>
+     <use x="944.902344" xlink:href="#DejaVuSans-95"/>
+     <use x="994.902344" xlink:href="#DejaVuSans-76"/>
+     <use x="1048.865234" xlink:href="#DejaVuSans-101"/>
+     <use x="1110.388672" xlink:href="#DejaVuSans-118"/>
+     <use x="1169.568359" xlink:href="#DejaVuSans-101"/>
+     <use x="1231.091797" xlink:href="#DejaVuSans-108"/>
+     <use x="1258.875" xlink:href="#DejaVuSans-44"/>
+     <use x="1290.662109" xlink:href="#DejaVuSans-32"/>
+     <use x="1322.449219" xlink:href="#DejaVuSans-66"/>
+     <use x="1391.052734" xlink:href="#DejaVuSans-111"/>
+     <use x="1452.234375" xlink:href="#DejaVuSans-111"/>
+     <use x="1513.416016" xlink:href="#DejaVuSans-116"/>
+     <use x="1552.625" xlink:href="#DejaVuSans-32"/>
+     <use x="1584.412109" xlink:href="#DejaVuSans-84"/>
+     <use x="1629.871094" xlink:href="#DejaVuSans-121"/>
+     <use x="1689.050781" xlink:href="#DejaVuSans-112"/>
+     <use x="1752.527344" xlink:href="#DejaVuSans-101"/>
+     <use x="1814.050781" xlink:href="#DejaVuSans-58"/>
+     <use x="1847.742188" xlink:href="#DejaVuSans-32"/>
+     <use x="1879.529297" xlink:href="#DejaVuSans-115"/>
+     <use x="1931.628906" xlink:href="#DejaVuSans-121"/>
+     <use x="1990.808594" xlink:href="#DejaVuSans-115"/>
+     <use x="2042.908203" xlink:href="#DejaVuSans-116"/>
+     <use x="2082.117188" xlink:href="#DejaVuSans-101"/>
+     <use x="2143.640625" xlink:href="#DejaVuSans-109"/>
+     <use x="2241.052734" xlink:href="#DejaVuSans-100"/>
+    </g>
+   </g>
+   <g id="legend_1">
+    <g id="patch_119">
+     <path d="M 247.105 50.718125 
+L 271.105 50.718125 
+L 271.105 42.318125 
+L 247.105 42.318125 
+z
+" style="fill:#008000;"/>
+    </g>
+    <g id="text_32">
+     <!-- succeeded -->
+     <g transform="translate(280.705 50.718125)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-115"/>
+      <use x="52.099609" xlink:href="#DejaVuSans-117"/>
+      <use x="115.478516" xlink:href="#DejaVuSans-99"/>
+      <use x="170.458984" xlink:href="#DejaVuSans-99"/>
+      <use x="225.439453" xlink:href="#DejaVuSans-101"/>
+      <use x="286.962891" xlink:href="#DejaVuSans-101"/>
+      <use x="348.486328" xlink:href="#DejaVuSans-100"/>
+      <use x="411.962891" xlink:href="#DejaVuSans-101"/>
+      <use x="473.486328" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_120">
+     <path d="M 247.105 68.331875 
+L 271.105 68.331875 
+L 271.105 59.931875 
+L 247.105 59.931875 
+z
+" style="fill:#ff0000;"/>
+    </g>
+    <g id="text_33">
+     <!-- gem5 crashed -->
+     <g transform="translate(280.705 68.331875)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-103"/>
+      <use x="63.476562" xlink:href="#DejaVuSans-101"/>
+      <use x="125" xlink:href="#DejaVuSans-109"/>
+      <use x="222.412109" xlink:href="#DejaVuSans-53"/>
+      <use x="286.035156" xlink:href="#DejaVuSans-32"/>
+      <use x="317.822266" xlink:href="#DejaVuSans-99"/>
+      <use x="372.802734" xlink:href="#DejaVuSans-114"/>
+      <use x="413.916016" xlink:href="#DejaVuSans-97"/>
+      <use x="475.195312" xlink:href="#DejaVuSans-115"/>
+      <use x="527.294922" xlink:href="#DejaVuSans-104"/>
+      <use x="590.673828" xlink:href="#DejaVuSans-101"/>
+      <use x="652.197266" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_121">
+     <path d="M 390.5875 50.718125 
+L 414.5875 50.718125 
+L 414.5875 42.318125 
+L 390.5875 42.318125 
+z
+" style="fill:#0000ff;"/>
+    </g>
+    <g id="text_34">
+     <!-- workload crashed -->
+     <g transform="translate(424.1875 50.718125)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-119"/>
+      <use x="81.787109" xlink:href="#DejaVuSans-111"/>
+      <use x="142.96875" xlink:href="#DejaVuSans-114"/>
+      <use x="184.082031" xlink:href="#DejaVuSans-107"/>
+      <use x="241.992188" xlink:href="#DejaVuSans-108"/>
+      <use x="269.775391" xlink:href="#DejaVuSans-111"/>
+      <use x="330.957031" xlink:href="#DejaVuSans-97"/>
+      <use x="392.236328" xlink:href="#DejaVuSans-100"/>
+      <use x="455.712891" xlink:href="#DejaVuSans-32"/>
+      <use x="487.5" xlink:href="#DejaVuSans-99"/>
+      <use x="542.480469" xlink:href="#DejaVuSans-114"/>
+      <use x="583.59375" xlink:href="#DejaVuSans-97"/>
+      <use x="644.873047" xlink:href="#DejaVuSans-115"/>
+      <use x="696.972656" xlink:href="#DejaVuSans-104"/>
+      <use x="760.351562" xlink:href="#DejaVuSans-101"/>
+      <use x="821.875" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_122">
+     <path d="M 390.5875 68.331875 
+L 414.5875 68.331875 
+L 414.5875 59.931875 
+L 390.5875 59.931875 
+z
+" style="fill:#ffff00;"/>
+    </g>
+    <g id="text_35">
+     <!-- timed out (10 hours) -->
+     <g transform="translate(424.1875 68.331875)scale(0.12 -0.12)">
+      <defs>
+       <path d="M 31 75.875 
+Q 24.46875 64.65625 21.28125 53.65625 
+Q 18.109375 42.671875 18.109375 31.390625 
+Q 18.109375 20.125 21.3125 9.0625 
+Q 24.515625 -2 31 -13.1875 
+L 23.1875 -13.1875 
+Q 15.875 -1.703125 12.234375 9.375 
+Q 8.59375 20.453125 8.59375 31.390625 
+Q 8.59375 42.28125 12.203125 53.3125 
+Q 15.828125 64.359375 23.1875 75.875 
+z
+" id="DejaVuSans-40"/>
+       <path d="M 31.78125 66.40625 
+Q 24.171875 66.40625 20.328125 58.90625 
+Q 16.5 51.421875 16.5 36.375 
+Q 16.5 21.390625 20.328125 13.890625 
+Q 24.171875 6.390625 31.78125 6.390625 
+Q 39.453125 6.390625 43.28125 13.890625 
+Q 47.125 21.390625 47.125 36.375 
+Q 47.125 51.421875 43.28125 58.90625 
+Q 39.453125 66.40625 31.78125 66.40625 
+z
+M 31.78125 74.21875 
+Q 44.046875 74.21875 50.515625 64.515625 
+Q 56.984375 54.828125 56.984375 36.375 
+Q 56.984375 17.96875 50.515625 8.265625 
+Q 44.046875 -1.421875 31.78125 -1.421875 
+Q 19.53125 -1.421875 13.0625 8.265625 
+Q 6.59375 17.96875 6.59375 36.375 
+Q 6.59375 54.828125 13.0625 64.515625 
+Q 19.53125 74.21875 31.78125 74.21875 
+z
+" id="DejaVuSans-48"/>
+       <path d="M 8.015625 75.875 
+L 15.828125 75.875 
+Q 23.140625 64.359375 26.78125 53.3125 
+Q 30.421875 42.28125 30.421875 31.390625 
+Q 30.421875 20.453125 26.78125 9.375 
+Q 23.140625 -1.703125 15.828125 -13.1875 
+L 8.015625 -13.1875 
+Q 14.5 -2 17.703125 9.0625 
+Q 20.90625 20.125 20.90625 31.390625 
+Q 20.90625 42.671875 17.703125 53.65625 
+Q 14.5 64.65625 8.015625 75.875 
+z
+" id="DejaVuSans-41"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-116"/>
+      <use x="39.208984" xlink:href="#DejaVuSans-105"/>
+      <use x="66.992188" xlink:href="#DejaVuSans-109"/>
+      <use x="164.404297" xlink:href="#DejaVuSans-101"/>
+      <use x="225.927734" xlink:href="#DejaVuSans-100"/>
+      <use x="289.404297" xlink:href="#DejaVuSans-32"/>
+      <use x="321.191406" xlink:href="#DejaVuSans-111"/>
+      <use x="382.373047" xlink:href="#DejaVuSans-117"/>
+      <use x="445.751953" xlink:href="#DejaVuSans-116"/>
+      <use x="484.960938" xlink:href="#DejaVuSans-32"/>
+      <use x="516.748047" xlink:href="#DejaVuSans-40"/>
+      <use x="555.761719" xlink:href="#DejaVuSans-49"/>
+      <use x="619.384766" xlink:href="#DejaVuSans-48"/>
+      <use x="683.007812" xlink:href="#DejaVuSans-32"/>
+      <use x="714.794922" xlink:href="#DejaVuSans-104"/>
+      <use x="778.173828" xlink:href="#DejaVuSans-111"/>
+      <use x="839.355469" xlink:href="#DejaVuSans-117"/>
+      <use x="902.734375" xlink:href="#DejaVuSans-114"/>
+      <use x="943.847656" xlink:href="#DejaVuSans-115"/>
+      <use x="995.947266" xlink:href="#DejaVuSans-41"/>
+     </g>
+    </g>
+    <g id="patch_123">
+     <path d="M 572.38 50.718125 
+L 596.38 50.718125 
+L 596.38 42.318125 
+L 572.38 42.318125 
+z
+" style="fill:#ffa500;"/>
+    </g>
+    <g id="text_36">
+     <!-- kernel panic -->
+     <g transform="translate(605.98 50.718125)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-107"/>
+      <use x="54.285156" xlink:href="#DejaVuSans-101"/>
+      <use x="115.808594" xlink:href="#DejaVuSans-114"/>
+      <use x="155.171875" xlink:href="#DejaVuSans-110"/>
+      <use x="218.550781" xlink:href="#DejaVuSans-101"/>
+      <use x="280.074219" xlink:href="#DejaVuSans-108"/>
+      <use x="307.857422" xlink:href="#DejaVuSans-32"/>
+      <use x="339.644531" xlink:href="#DejaVuSans-112"/>
+      <use x="403.121094" xlink:href="#DejaVuSans-97"/>
+      <use x="464.400391" xlink:href="#DejaVuSans-110"/>
+      <use x="527.779297" xlink:href="#DejaVuSans-105"/>
+      <use x="555.5625" xlink:href="#DejaVuSans-99"/>
+     </g>
+    </g>
+    <g id="patch_124">
+     <path d="M 572.38 68.331875 
+L 596.38 68.331875 
+L 596.38 59.931875 
+L 572.38 59.931875 
+z
+" style="fill:#808080;"/>
+    </g>
+    <g id="text_37">
+     <!-- not supported -->
+     <g transform="translate(605.98 68.331875)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-110"/>
+      <use x="63.378906" xlink:href="#DejaVuSans-111"/>
+      <use x="124.560547" xlink:href="#DejaVuSans-116"/>
+      <use x="163.769531" xlink:href="#DejaVuSans-32"/>
+      <use x="195.556641" xlink:href="#DejaVuSans-115"/>
+      <use x="247.65625" xlink:href="#DejaVuSans-117"/>
+      <use x="311.035156" xlink:href="#DejaVuSans-112"/>
+      <use x="374.511719" xlink:href="#DejaVuSans-112"/>
+      <use x="437.988281" xlink:href="#DejaVuSans-111"/>
+      <use x="499.169922" xlink:href="#DejaVuSans-114"/>
+      <use x="540.283203" xlink:href="#DejaVuSans-116"/>
+      <use x="579.492188" xlink:href="#DejaVuSans-101"/>
+      <use x="641.015625" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_125">
+     <path d="M 714.52 50.718125 
+L 738.52 50.718125 
+L 738.52 42.318125 
+L 714.52 42.318125 
+z
+" style="fill:url(#h96950f951d);"/>
+    </g>
+    <g id="text_38">
+     <!-- unknown -->
+     <g transform="translate(748.12 50.718125)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-117"/>
+      <use x="63.378906" xlink:href="#DejaVuSans-110"/>
+      <use x="126.757812" xlink:href="#DejaVuSans-107"/>
+      <use x="184.667969" xlink:href="#DejaVuSans-110"/>
+      <use x="248.046875" xlink:href="#DejaVuSans-111"/>
+      <use x="309.228516" xlink:href="#DejaVuSans-119"/>
+      <use x="391.015625" xlink:href="#DejaVuSans-110"/>
+     </g>
+    </g>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="p831f1017bc">
+   <rect height="177.41868" width="800.65" x="124.55" y="30.8"/>
+  </clipPath>
+ </defs>
+ <defs>
+  <pattern height="72" id="h96950f951d" patternUnits="userSpaceOnUse" width="72" x="0" y="0">
+   <rect fill="#ffffff" height="73" width="73" x="0" y="0"/>
+   <path d="M -36 36 
+L 36 108 
+M -33 33 
+L 39 105 
+M -30 30 
+L 42 102 
+M -27 27 
+L 45 99 
+M -24 24 
+L 48 96 
+M -21 21 
+L 51 93 
+M -18 18 
+L 54 90 
+M -15 15 
+L 57 87 
+M -12 12 
+L 60 84 
+M -9 9 
+L 63 81 
+M -6 6 
+L 66 78 
+M -3 3 
+L 69 75 
+M 0 0 
+L 72 72 
+M 3 -3 
+L 75 69 
+M 6 -6 
+L 78 66 
+M 9 -9 
+L 81 63 
+M 12 -12 
+L 84 60 
+M 15 -15 
+L 87 57 
+M 18 -18 
+L 90 54 
+M 21 -21 
+L 93 51 
+M 24 -24 
+L 96 48 
+M 27 -27 
+L 99 45 
+M 30 -30 
+L 102 42 
+M 33 -33 
+L 105 39 
+M 36 -36 
+L 108 36 
+" style="fill:#000000;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1.0;"/>
+  </pattern>
+ </defs>
+</svg>
diff --git a/assets/img/gem5art/boot_exit_MI_example_init.svg b/assets/img/gem5art/boot_exit_MI_example_init.svg
new file mode 100644
index 0000000..bf72c69
--- /dev/null
+++ b/assets/img/gem5art/boot_exit_MI_example_init.svg
@@ -0,0 +1,2897 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with matplotlib (https://matplotlib.org/) -->
+<svg height="288pt" version="1.1" viewBox="0 0 936 288" width="936pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+  <rdf:RDF xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+   <cc:Work>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:date>2020-10-10T15:39:32.867303</dc:date>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Matplotlib v3.3.2, https://matplotlib.org/</dc:title>
+     </cc:Agent>
+    </dc:creator>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <defs>
+  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="patch_1">
+   <path d="M 0 288 
+L 936 288 
+L 936 0 
+L 0 0 
+z
+" style="fill:none;"/>
+  </g>
+  <g id="axes_1">
+   <g id="patch_2">
+    <path d="M 124.55 208.21868 
+L 925.2 208.21868 
+L 925.2 30.8 
+L 124.55 30.8 
+z
+" style="fill:#ffffff;"/>
+   </g>
+   <g id="patch_3">
+    <path clip-path="url(#p1f78705495)" d="M 108.537 208.21868 
+L 140.563 208.21868 
+L 140.563 180.923498 
+L 108.537 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_4">
+    <path clip-path="url(#p1f78705495)" d="M 140.563 208.21868 
+L 172.589 208.21868 
+L 172.589 180.923498 
+L 140.563 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_5">
+    <path clip-path="url(#p1f78705495)" d="M 172.589 208.21868 
+L 204.615 208.21868 
+L 204.615 180.923498 
+L 172.589 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_6">
+    <path clip-path="url(#p1f78705495)" d="M 204.615 208.21868 
+L 236.641 208.21868 
+L 236.641 180.923498 
+L 204.615 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_7">
+    <path clip-path="url(#p1f78705495)" d="M 236.641 208.21868 
+L 268.667 208.21868 
+L 268.667 180.923498 
+L 236.641 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_8">
+    <path clip-path="url(#p1f78705495)" d="M 268.667 208.21868 
+L 300.693 208.21868 
+L 300.693 180.923498 
+L 268.667 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_9">
+    <path clip-path="url(#p1f78705495)" d="M 300.693 208.21868 
+L 332.719 208.21868 
+L 332.719 180.923498 
+L 300.693 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_10">
+    <path clip-path="url(#p1f78705495)" d="M 332.719 208.21868 
+L 364.745 208.21868 
+L 364.745 180.923498 
+L 332.719 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_11">
+    <path clip-path="url(#p1f78705495)" d="M 364.745 208.21868 
+L 396.771 208.21868 
+L 396.771 180.923498 
+L 364.745 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_12">
+    <path clip-path="url(#p1f78705495)" d="M 396.771 208.21868 
+L 428.797 208.21868 
+L 428.797 180.923498 
+L 396.771 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_13">
+    <path clip-path="url(#p1f78705495)" d="M 428.797 208.21868 
+L 460.823 208.21868 
+L 460.823 180.923498 
+L 428.797 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_14">
+    <path clip-path="url(#p1f78705495)" d="M 460.823 208.21868 
+L 492.849 208.21868 
+L 492.849 180.923498 
+L 460.823 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_15">
+    <path clip-path="url(#p1f78705495)" d="M 492.849 208.21868 
+L 524.875 208.21868 
+L 524.875 180.923498 
+L 492.849 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_16">
+    <path clip-path="url(#p1f78705495)" d="M 524.875 208.21868 
+L 556.901 208.21868 
+L 556.901 180.923498 
+L 524.875 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_17">
+    <path clip-path="url(#p1f78705495)" d="M 556.901 208.21868 
+L 588.927 208.21868 
+L 588.927 180.923498 
+L 556.901 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_18">
+    <path clip-path="url(#p1f78705495)" d="M 588.927 208.21868 
+L 620.953 208.21868 
+L 620.953 180.923498 
+L 588.927 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_19">
+    <path clip-path="url(#p1f78705495)" d="M 620.953 208.21868 
+L 652.979 208.21868 
+L 652.979 180.923498 
+L 620.953 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_20">
+    <path clip-path="url(#p1f78705495)" d="M 652.979 208.21868 
+L 685.005 208.21868 
+L 685.005 180.923498 
+L 652.979 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_21">
+    <path clip-path="url(#p1f78705495)" d="M 685.005 208.21868 
+L 717.031 208.21868 
+L 717.031 180.923498 
+L 685.005 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_22">
+    <path clip-path="url(#p1f78705495)" d="M 717.031 208.21868 
+L 749.057 208.21868 
+L 749.057 180.923498 
+L 717.031 180.923498 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_23">
+    <path clip-path="url(#p1f78705495)" d="M 749.057 208.21868 
+L 781.083 208.21868 
+L 781.083 180.923498 
+L 749.057 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_24">
+    <path clip-path="url(#p1f78705495)" d="M 781.083 208.21868 
+L 813.109 208.21868 
+L 813.109 180.923498 
+L 781.083 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_25">
+    <path clip-path="url(#p1f78705495)" d="M 813.109 208.21868 
+L 845.135 208.21868 
+L 845.135 180.923498 
+L 813.109 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_26">
+    <path clip-path="url(#p1f78705495)" d="M 845.135 208.21868 
+L 877.161 208.21868 
+L 877.161 180.923498 
+L 845.135 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_27">
+    <path clip-path="url(#p1f78705495)" d="M 877.161 208.21868 
+L 909.187 208.21868 
+L 909.187 180.923498 
+L 877.161 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_28">
+    <path clip-path="url(#p1f78705495)" d="M 909.187 208.21868 
+L 941.213 208.21868 
+L 941.213 180.923498 
+L 909.187 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_29">
+    <path clip-path="url(#p1f78705495)" d="M 108.537 180.923498 
+L 140.563 180.923498 
+L 140.563 153.628317 
+L 108.537 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_30">
+    <path clip-path="url(#p1f78705495)" d="M 140.563 180.923498 
+L 172.589 180.923498 
+L 172.589 153.628317 
+L 140.563 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_31">
+    <path clip-path="url(#p1f78705495)" d="M 172.589 180.923498 
+L 204.615 180.923498 
+L 204.615 153.628317 
+L 172.589 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_32">
+    <path clip-path="url(#p1f78705495)" d="M 204.615 180.923498 
+L 236.641 180.923498 
+L 236.641 153.628317 
+L 204.615 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_33">
+    <path clip-path="url(#p1f78705495)" d="M 236.641 180.923498 
+L 268.667 180.923498 
+L 268.667 153.628317 
+L 236.641 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_34">
+    <path clip-path="url(#p1f78705495)" d="M 268.667 180.923498 
+L 300.693 180.923498 
+L 300.693 153.628317 
+L 268.667 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_35">
+    <path clip-path="url(#p1f78705495)" d="M 300.693 180.923498 
+L 332.719 180.923498 
+L 332.719 153.628317 
+L 300.693 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_36">
+    <path clip-path="url(#p1f78705495)" d="M 332.719 180.923498 
+L 364.745 180.923498 
+L 364.745 153.628317 
+L 332.719 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_37">
+    <path clip-path="url(#p1f78705495)" d="M 364.745 180.923498 
+L 396.771 180.923498 
+L 396.771 153.628317 
+L 364.745 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_38">
+    <path clip-path="url(#p1f78705495)" d="M 396.771 180.923498 
+L 428.797 180.923498 
+L 428.797 153.628317 
+L 396.771 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_39">
+    <path clip-path="url(#p1f78705495)" d="M 428.797 180.923498 
+L 460.823 180.923498 
+L 460.823 153.628317 
+L 428.797 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_40">
+    <path clip-path="url(#p1f78705495)" d="M 460.823 180.923498 
+L 492.849 180.923498 
+L 492.849 153.628317 
+L 460.823 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_41">
+    <path clip-path="url(#p1f78705495)" d="M 492.849 180.923498 
+L 524.875 180.923498 
+L 524.875 153.628317 
+L 492.849 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_42">
+    <path clip-path="url(#p1f78705495)" d="M 524.875 180.923498 
+L 556.901 180.923498 
+L 556.901 153.628317 
+L 524.875 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_43">
+    <path clip-path="url(#p1f78705495)" d="M 556.901 180.923498 
+L 588.927 180.923498 
+L 588.927 153.628317 
+L 556.901 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_44">
+    <path clip-path="url(#p1f78705495)" d="M 588.927 180.923498 
+L 620.953 180.923498 
+L 620.953 153.628317 
+L 588.927 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_45">
+    <path clip-path="url(#p1f78705495)" d="M 620.953 180.923498 
+L 652.979 180.923498 
+L 652.979 153.628317 
+L 620.953 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_46">
+    <path clip-path="url(#p1f78705495)" d="M 652.979 180.923498 
+L 685.005 180.923498 
+L 685.005 153.628317 
+L 652.979 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_47">
+    <path clip-path="url(#p1f78705495)" d="M 685.005 180.923498 
+L 717.031 180.923498 
+L 717.031 153.628317 
+L 685.005 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_48">
+    <path clip-path="url(#p1f78705495)" d="M 717.031 180.923498 
+L 749.057 180.923498 
+L 749.057 153.628317 
+L 717.031 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_49">
+    <path clip-path="url(#p1f78705495)" d="M 749.057 180.923498 
+L 781.083 180.923498 
+L 781.083 153.628317 
+L 749.057 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_50">
+    <path clip-path="url(#p1f78705495)" d="M 781.083 180.923498 
+L 813.109 180.923498 
+L 813.109 153.628317 
+L 781.083 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_51">
+    <path clip-path="url(#p1f78705495)" d="M 813.109 180.923498 
+L 845.135 180.923498 
+L 845.135 153.628317 
+L 813.109 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_52">
+    <path clip-path="url(#p1f78705495)" d="M 845.135 180.923498 
+L 877.161 180.923498 
+L 877.161 153.628317 
+L 845.135 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_53">
+    <path clip-path="url(#p1f78705495)" d="M 877.161 180.923498 
+L 909.187 180.923498 
+L 909.187 153.628317 
+L 877.161 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_54">
+    <path clip-path="url(#p1f78705495)" d="M 909.187 180.923498 
+L 941.213 180.923498 
+L 941.213 153.628317 
+L 909.187 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_55">
+    <path clip-path="url(#p1f78705495)" d="M 108.537 153.628317 
+L 140.563 153.628317 
+L 140.563 126.333135 
+L 108.537 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_56">
+    <path clip-path="url(#p1f78705495)" d="M 140.563 153.628317 
+L 172.589 153.628317 
+L 172.589 126.333135 
+L 140.563 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_57">
+    <path clip-path="url(#p1f78705495)" d="M 172.589 153.628317 
+L 204.615 153.628317 
+L 204.615 126.333135 
+L 172.589 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_58">
+    <path clip-path="url(#p1f78705495)" d="M 204.615 153.628317 
+L 236.641 153.628317 
+L 236.641 126.333135 
+L 204.615 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_59">
+    <path clip-path="url(#p1f78705495)" d="M 236.641 153.628317 
+L 268.667 153.628317 
+L 268.667 126.333135 
+L 236.641 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_60">
+    <path clip-path="url(#p1f78705495)" d="M 268.667 153.628317 
+L 300.693 153.628317 
+L 300.693 126.333135 
+L 268.667 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_61">
+    <path clip-path="url(#p1f78705495)" d="M 300.693 153.628317 
+L 332.719 153.628317 
+L 332.719 126.333135 
+L 300.693 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_62">
+    <path clip-path="url(#p1f78705495)" d="M 332.719 153.628317 
+L 364.745 153.628317 
+L 364.745 126.333135 
+L 332.719 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_63">
+    <path clip-path="url(#p1f78705495)" d="M 364.745 153.628317 
+L 396.771 153.628317 
+L 396.771 126.333135 
+L 364.745 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_64">
+    <path clip-path="url(#p1f78705495)" d="M 396.771 153.628317 
+L 428.797 153.628317 
+L 428.797 126.333135 
+L 396.771 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_65">
+    <path clip-path="url(#p1f78705495)" d="M 428.797 153.628317 
+L 460.823 153.628317 
+L 460.823 126.333135 
+L 428.797 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_66">
+    <path clip-path="url(#p1f78705495)" d="M 460.823 153.628317 
+L 492.849 153.628317 
+L 492.849 126.333135 
+L 460.823 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_67">
+    <path clip-path="url(#p1f78705495)" d="M 492.849 153.628317 
+L 524.875 153.628317 
+L 524.875 126.333135 
+L 492.849 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_68">
+    <path clip-path="url(#p1f78705495)" d="M 524.875 153.628317 
+L 556.901 153.628317 
+L 556.901 126.333135 
+L 524.875 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_69">
+    <path clip-path="url(#p1f78705495)" d="M 556.901 153.628317 
+L 588.927 153.628317 
+L 588.927 126.333135 
+L 556.901 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_70">
+    <path clip-path="url(#p1f78705495)" d="M 588.927 153.628317 
+L 620.953 153.628317 
+L 620.953 126.333135 
+L 588.927 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_71">
+    <path clip-path="url(#p1f78705495)" d="M 620.953 153.628317 
+L 652.979 153.628317 
+L 652.979 126.333135 
+L 620.953 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_72">
+    <path clip-path="url(#p1f78705495)" d="M 652.979 153.628317 
+L 685.005 153.628317 
+L 685.005 126.333135 
+L 652.979 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_73">
+    <path clip-path="url(#p1f78705495)" d="M 685.005 153.628317 
+L 717.031 153.628317 
+L 717.031 126.333135 
+L 685.005 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_74">
+    <path clip-path="url(#p1f78705495)" d="M 717.031 153.628317 
+L 749.057 153.628317 
+L 749.057 126.333135 
+L 717.031 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_75">
+    <path clip-path="url(#p1f78705495)" d="M 749.057 153.628317 
+L 781.083 153.628317 
+L 781.083 126.333135 
+L 749.057 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_76">
+    <path clip-path="url(#p1f78705495)" d="M 781.083 153.628317 
+L 813.109 153.628317 
+L 813.109 126.333135 
+L 781.083 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_77">
+    <path clip-path="url(#p1f78705495)" d="M 813.109 153.628317 
+L 845.135 153.628317 
+L 845.135 126.333135 
+L 813.109 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_78">
+    <path clip-path="url(#p1f78705495)" d="M 845.135 153.628317 
+L 877.161 153.628317 
+L 877.161 126.333135 
+L 845.135 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_79">
+    <path clip-path="url(#p1f78705495)" d="M 877.161 153.628317 
+L 909.187 153.628317 
+L 909.187 126.333135 
+L 877.161 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_80">
+    <path clip-path="url(#p1f78705495)" d="M 909.187 153.628317 
+L 941.213 153.628317 
+L 941.213 126.333135 
+L 909.187 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_81">
+    <path clip-path="url(#p1f78705495)" d="M 108.537 126.333135 
+L 140.563 126.333135 
+L 140.563 99.037954 
+L 108.537 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_82">
+    <path clip-path="url(#p1f78705495)" d="M 140.563 126.333135 
+L 172.589 126.333135 
+L 172.589 99.037954 
+L 140.563 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_83">
+    <path clip-path="url(#p1f78705495)" d="M 172.589 126.333135 
+L 204.615 126.333135 
+L 204.615 99.037954 
+L 172.589 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_84">
+    <path clip-path="url(#p1f78705495)" d="M 204.615 126.333135 
+L 236.641 126.333135 
+L 236.641 99.037954 
+L 204.615 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_85">
+    <path clip-path="url(#p1f78705495)" d="M 236.641 126.333135 
+L 268.667 126.333135 
+L 268.667 99.037954 
+L 236.641 99.037954 
+z
+" style="fill:#ff0000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_86">
+    <path clip-path="url(#p1f78705495)" d="M 268.667 126.333135 
+L 300.693 126.333135 
+L 300.693 99.037954 
+L 268.667 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_87">
+    <path clip-path="url(#p1f78705495)" d="M 300.693 126.333135 
+L 332.719 126.333135 
+L 332.719 99.037954 
+L 300.693 99.037954 
+z
+" style="fill:#ff0000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_88">
+    <path clip-path="url(#p1f78705495)" d="M 332.719 126.333135 
+L 364.745 126.333135 
+L 364.745 99.037954 
+L 332.719 99.037954 
+z
+" style="fill:#ff0000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_89">
+    <path clip-path="url(#p1f78705495)" d="M 364.745 126.333135 
+L 396.771 126.333135 
+L 396.771 99.037954 
+L 364.745 99.037954 
+z
+" style="fill:#ff0000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_90">
+    <path clip-path="url(#p1f78705495)" d="M 396.771 126.333135 
+L 428.797 126.333135 
+L 428.797 99.037954 
+L 396.771 99.037954 
+z
+" style="fill:#ff0000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_91">
+    <path clip-path="url(#p1f78705495)" d="M 428.797 126.333135 
+L 460.823 126.333135 
+L 460.823 99.037954 
+L 428.797 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_92">
+    <path clip-path="url(#p1f78705495)" d="M 460.823 126.333135 
+L 492.849 126.333135 
+L 492.849 99.037954 
+L 460.823 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_93">
+    <path clip-path="url(#p1f78705495)" d="M 492.849 126.333135 
+L 524.875 126.333135 
+L 524.875 99.037954 
+L 492.849 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_94">
+    <path clip-path="url(#p1f78705495)" d="M 524.875 126.333135 
+L 556.901 126.333135 
+L 556.901 99.037954 
+L 524.875 99.037954 
+z
+" style="fill:#ffa500;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_95">
+    <path clip-path="url(#p1f78705495)" d="M 556.901 126.333135 
+L 588.927 126.333135 
+L 588.927 99.037954 
+L 556.901 99.037954 
+z
+" style="fill:#ffff00;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_96">
+    <path clip-path="url(#p1f78705495)" d="M 588.927 126.333135 
+L 620.953 126.333135 
+L 620.953 99.037954 
+L 588.927 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_97">
+    <path clip-path="url(#p1f78705495)" d="M 620.953 126.333135 
+L 652.979 126.333135 
+L 652.979 99.037954 
+L 620.953 99.037954 
+z
+" style="fill:#ff0000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_98">
+    <path clip-path="url(#p1f78705495)" d="M 652.979 126.333135 
+L 685.005 126.333135 
+L 685.005 99.037954 
+L 652.979 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_99">
+    <path clip-path="url(#p1f78705495)" d="M 685.005 126.333135 
+L 717.031 126.333135 
+L 717.031 99.037954 
+L 685.005 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_100">
+    <path clip-path="url(#p1f78705495)" d="M 717.031 126.333135 
+L 749.057 126.333135 
+L 749.057 99.037954 
+L 717.031 99.037954 
+z
+" style="fill:#ff0000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_101">
+    <path clip-path="url(#p1f78705495)" d="M 749.057 126.333135 
+L 781.083 126.333135 
+L 781.083 99.037954 
+L 749.057 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_102">
+    <path clip-path="url(#p1f78705495)" d="M 781.083 126.333135 
+L 813.109 126.333135 
+L 813.109 99.037954 
+L 781.083 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_103">
+    <path clip-path="url(#p1f78705495)" d="M 813.109 126.333135 
+L 845.135 126.333135 
+L 845.135 99.037954 
+L 813.109 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_104">
+    <path clip-path="url(#p1f78705495)" d="M 845.135 126.333135 
+L 877.161 126.333135 
+L 877.161 99.037954 
+L 845.135 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_105">
+    <path clip-path="url(#p1f78705495)" d="M 877.161 126.333135 
+L 909.187 126.333135 
+L 909.187 99.037954 
+L 877.161 99.037954 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_106">
+    <path clip-path="url(#p1f78705495)" d="M 909.187 126.333135 
+L 941.213 126.333135 
+L 941.213 99.037954 
+L 909.187 99.037954 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_107">
+    <path clip-path="url(#p1f78705495)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#008000;"/>
+   </g>
+   <g id="patch_108">
+    <path clip-path="url(#p1f78705495)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ff0000;"/>
+   </g>
+   <g id="patch_109">
+    <path clip-path="url(#p1f78705495)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#0000ff;"/>
+   </g>
+   <g id="patch_110">
+    <path clip-path="url(#p1f78705495)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ffff00;"/>
+   </g>
+   <g id="patch_111">
+    <path clip-path="url(#p1f78705495)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ffa500;"/>
+   </g>
+   <g id="patch_112">
+    <path clip-path="url(#p1f78705495)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#808080;"/>
+   </g>
+   <g id="patch_113">
+    <path clip-path="url(#p1f78705495)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:url(#h66913a7079);"/>
+   </g>
+   <g id="patch_114">
+    <path clip-path="url(#p1f78705495)" d="M 111.7396 208.21868 
+L 137.3604 208.21868 
+L 137.3604 208.21868 
+L 111.7396 208.21868 
+z
+" style="fill:#ffffff;"/>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 
+L 0 3.5 
+" id="m0d0072156a" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="156.576" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <!-- 1 CPU -->
+      <g transform="translate(150.482064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 12.40625 8.296875 
+L 28.515625 8.296875 
+L 28.515625 63.921875 
+L 10.984375 60.40625 
+L 10.984375 69.390625 
+L 28.421875 72.90625 
+L 38.28125 72.90625 
+L 38.28125 8.296875 
+L 54.390625 8.296875 
+L 54.390625 0 
+L 12.40625 0 
+z
+" id="DejaVuSans-49"/>
+        <path id="DejaVuSans-32"/>
+        <path d="M 64.40625 67.28125 
+L 64.40625 56.890625 
+Q 59.421875 61.53125 53.78125 63.8125 
+Q 48.140625 66.109375 41.796875 66.109375 
+Q 29.296875 66.109375 22.65625 58.46875 
+Q 16.015625 50.828125 16.015625 36.375 
+Q 16.015625 21.96875 22.65625 14.328125 
+Q 29.296875 6.6875 41.796875 6.6875 
+Q 48.140625 6.6875 53.78125 8.984375 
+Q 59.421875 11.28125 64.40625 15.921875 
+L 64.40625 5.609375 
+Q 59.234375 2.09375 53.4375 0.328125 
+Q 47.65625 -1.421875 41.21875 -1.421875 
+Q 24.65625 -1.421875 15.125 8.703125 
+Q 5.609375 18.84375 5.609375 36.375 
+Q 5.609375 53.953125 15.125 64.078125 
+Q 24.65625 74.21875 41.21875 74.21875 
+Q 47.75 74.21875 53.53125 72.484375 
+Q 59.328125 70.75 64.40625 67.28125 
+z
+" id="DejaVuSans-67"/>
+        <path d="M 19.671875 64.796875 
+L 19.671875 37.40625 
+L 32.078125 37.40625 
+Q 38.96875 37.40625 42.71875 40.96875 
+Q 46.484375 44.53125 46.484375 51.125 
+Q 46.484375 57.671875 42.71875 61.234375 
+Q 38.96875 64.796875 32.078125 64.796875 
+z
+M 9.8125 72.90625 
+L 32.078125 72.90625 
+Q 44.34375 72.90625 50.609375 67.359375 
+Q 56.890625 61.8125 56.890625 51.125 
+Q 56.890625 40.328125 50.609375 34.8125 
+Q 44.34375 29.296875 32.078125 29.296875 
+L 19.671875 29.296875 
+L 19.671875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-80"/>
+        <path d="M 8.6875 72.90625 
+L 18.609375 72.90625 
+L 18.609375 28.609375 
+Q 18.609375 16.890625 22.84375 11.734375 
+Q 27.09375 6.59375 36.625 6.59375 
+Q 46.09375 6.59375 50.34375 11.734375 
+Q 54.59375 16.890625 54.59375 28.609375 
+L 54.59375 72.90625 
+L 64.5 72.90625 
+L 64.5 27.390625 
+Q 64.5 13.140625 57.4375 5.859375 
+Q 50.390625 -1.421875 36.625 -1.421875 
+Q 22.796875 -1.421875 15.734375 5.859375 
+Q 8.6875 13.140625 8.6875 27.390625 
+z
+" id="DejaVuSans-85"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="188.602" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <!-- 2 CPUs -->
+      <g transform="translate(180.945252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 19.1875 8.296875 
+L 53.609375 8.296875 
+L 53.609375 0 
+L 7.328125 0 
+L 7.328125 8.296875 
+Q 12.9375 14.109375 22.625 23.890625 
+Q 32.328125 33.6875 34.8125 36.53125 
+Q 39.546875 41.84375 41.421875 45.53125 
+Q 43.3125 49.21875 43.3125 52.78125 
+Q 43.3125 58.59375 39.234375 62.25 
+Q 35.15625 65.921875 28.609375 65.921875 
+Q 23.96875 65.921875 18.8125 64.3125 
+Q 13.671875 62.703125 7.8125 59.421875 
+L 7.8125 69.390625 
+Q 13.765625 71.78125 18.9375 73 
+Q 24.125 74.21875 28.421875 74.21875 
+Q 39.75 74.21875 46.484375 68.546875 
+Q 53.21875 62.890625 53.21875 53.421875 
+Q 53.21875 48.921875 51.53125 44.890625 
+Q 49.859375 40.875 45.40625 35.40625 
+Q 44.1875 33.984375 37.640625 27.21875 
+Q 31.109375 20.453125 19.1875 8.296875 
+z
+" id="DejaVuSans-50"/>
+        <path d="M 44.28125 53.078125 
+L 44.28125 44.578125 
+Q 40.484375 46.53125 36.375 47.5 
+Q 32.28125 48.484375 27.875 48.484375 
+Q 21.1875 48.484375 17.84375 46.4375 
+Q 14.5 44.390625 14.5 40.28125 
+Q 14.5 37.15625 16.890625 35.375 
+Q 19.28125 33.59375 26.515625 31.984375 
+L 29.59375 31.296875 
+Q 39.15625 29.25 43.1875 25.515625 
+Q 47.21875 21.78125 47.21875 15.09375 
+Q 47.21875 7.46875 41.1875 3.015625 
+Q 35.15625 -1.421875 24.609375 -1.421875 
+Q 20.21875 -1.421875 15.453125 -0.5625 
+Q 10.6875 0.296875 5.421875 2 
+L 5.421875 11.28125 
+Q 10.40625 8.6875 15.234375 7.390625 
+Q 20.0625 6.109375 24.8125 6.109375 
+Q 31.15625 6.109375 34.5625 8.28125 
+Q 37.984375 10.453125 37.984375 14.40625 
+Q 37.984375 18.0625 35.515625 20.015625 
+Q 33.0625 21.96875 24.703125 23.78125 
+L 21.578125 24.515625 
+Q 13.234375 26.265625 9.515625 29.90625 
+Q 5.8125 33.546875 5.8125 39.890625 
+Q 5.8125 47.609375 11.28125 51.796875 
+Q 16.75 56 26.8125 56 
+Q 31.78125 56 36.171875 55.265625 
+Q 40.578125 54.546875 44.28125 53.078125 
+z
+" id="DejaVuSans-115"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="220.628" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <!-- 4 CPUs -->
+      <g transform="translate(212.971252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 37.796875 64.3125 
+L 12.890625 25.390625 
+L 37.796875 25.390625 
+z
+M 35.203125 72.90625 
+L 47.609375 72.90625 
+L 47.609375 25.390625 
+L 58.015625 25.390625 
+L 58.015625 17.1875 
+L 47.609375 17.1875 
+L 47.609375 0 
+L 37.796875 0 
+L 37.796875 17.1875 
+L 4.890625 17.1875 
+L 4.890625 26.703125 
+z
+" id="DejaVuSans-52"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="252.654" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <!-- 8 CPUs -->
+      <g transform="translate(244.997252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 31.78125 34.625 
+Q 24.75 34.625 20.71875 30.859375 
+Q 16.703125 27.09375 16.703125 20.515625 
+Q 16.703125 13.921875 20.71875 10.15625 
+Q 24.75 6.390625 31.78125 6.390625 
+Q 38.8125 6.390625 42.859375 10.171875 
+Q 46.921875 13.96875 46.921875 20.515625 
+Q 46.921875 27.09375 42.890625 30.859375 
+Q 38.875 34.625 31.78125 34.625 
+z
+M 21.921875 38.8125 
+Q 15.578125 40.375 12.03125 44.71875 
+Q 8.5 49.078125 8.5 55.328125 
+Q 8.5 64.0625 14.71875 69.140625 
+Q 20.953125 74.21875 31.78125 74.21875 
+Q 42.671875 74.21875 48.875 69.140625 
+Q 55.078125 64.0625 55.078125 55.328125 
+Q 55.078125 49.078125 51.53125 44.71875 
+Q 48 40.375 41.703125 38.8125 
+Q 48.828125 37.15625 52.796875 32.3125 
+Q 56.78125 27.484375 56.78125 20.515625 
+Q 56.78125 9.90625 50.3125 4.234375 
+Q 43.84375 -1.421875 31.78125 -1.421875 
+Q 19.734375 -1.421875 13.25 4.234375 
+Q 6.78125 9.90625 6.78125 20.515625 
+Q 6.78125 27.484375 10.78125 32.3125 
+Q 14.796875 37.15625 21.921875 38.8125 
+z
+M 18.3125 54.390625 
+Q 18.3125 48.734375 21.84375 45.5625 
+Q 25.390625 42.390625 31.78125 42.390625 
+Q 38.140625 42.390625 41.71875 45.5625 
+Q 45.3125 48.734375 45.3125 54.390625 
+Q 45.3125 60.0625 41.71875 63.234375 
+Q 38.140625 66.40625 31.78125 66.40625 
+Q 25.390625 66.40625 21.84375 63.234375 
+Q 18.3125 60.0625 18.3125 54.390625 
+z
+" id="DejaVuSans-56"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="316.706" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <!-- 1 CPU -->
+      <g transform="translate(310.612064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_6">
+     <g id="line2d_6">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="348.732" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <!-- 2 CPUs -->
+      <g transform="translate(341.075252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_7">
+     <g id="line2d_7">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="380.758" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_7">
+      <!-- 4 CPUs -->
+      <g transform="translate(373.101252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_8">
+     <g id="line2d_8">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="412.784" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_8">
+      <!-- 8 CPUs -->
+      <g transform="translate(405.127252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_9">
+     <g id="line2d_9">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="476.836" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <!-- 1 CPU -->
+      <g transform="translate(470.742064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_10">
+     <g id="line2d_10">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="508.862" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_10">
+      <!-- 2 CPUs -->
+      <g transform="translate(501.205252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_11">
+     <g id="line2d_11">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="540.888" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_11">
+      <!-- 4 CPUs -->
+      <g transform="translate(533.231252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_12">
+     <g id="line2d_12">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="572.914" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_12">
+      <!-- 8 CPUs -->
+      <g transform="translate(565.257252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_13">
+     <g id="line2d_13">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="636.966" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_13">
+      <!-- 1 CPU -->
+      <g transform="translate(630.872064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_14">
+     <g id="line2d_14">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="668.992" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_14">
+      <!-- 2 CPUs -->
+      <g transform="translate(661.335252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_15">
+     <g id="line2d_15">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="701.018" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_15">
+      <!-- 4 CPUs -->
+      <g transform="translate(693.361252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_16">
+     <g id="line2d_16">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="733.044" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_16">
+      <!-- 8 CPUs -->
+      <g transform="translate(725.387252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_17">
+     <g id="line2d_17">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="797.096" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_17">
+      <!-- 1 CPU -->
+      <g transform="translate(791.002064 250.821505)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-49"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_18">
+     <g id="line2d_18">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="829.122" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_18">
+      <!-- 2 CPUs -->
+      <g transform="translate(821.465252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-50"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_19">
+     <g id="line2d_19">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="861.148" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_19">
+      <!-- 4 CPUs -->
+      <g transform="translate(853.491252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-52"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="xtick_20">
+     <g id="line2d_20">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="893.174" xlink:href="#m0d0072156a" y="208.21868"/>
+      </g>
+     </g>
+     <g id="text_20">
+      <!-- 8 CPUs -->
+      <g transform="translate(885.517252 256.235247)rotate(-60)scale(0.12 -0.12)">
+       <use xlink:href="#DejaVuSans-56"/>
+       <use x="63.623047" xlink:href="#DejaVuSans-32"/>
+       <use x="95.410156" xlink:href="#DejaVuSans-67"/>
+       <use x="165.234375" xlink:href="#DejaVuSans-80"/>
+       <use x="225.537109" xlink:href="#DejaVuSans-85"/>
+       <use x="298.730469" xlink:href="#DejaVuSans-115"/>
+      </g>
+     </g>
+    </g>
+    <g id="text_21">
+     <!-- Number of CPUs, per each Linux kernel version -->
+     <g transform="translate(347.978125 272.880716)scale(0.15 -0.15)">
+      <defs>
+       <path d="M 9.8125 72.90625 
+L 23.09375 72.90625 
+L 55.421875 11.921875 
+L 55.421875 72.90625 
+L 64.984375 72.90625 
+L 64.984375 0 
+L 51.703125 0 
+L 19.390625 60.984375 
+L 19.390625 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-78"/>
+       <path d="M 8.5 21.578125 
+L 8.5 54.6875 
+L 17.484375 54.6875 
+L 17.484375 21.921875 
+Q 17.484375 14.15625 20.5 10.265625 
+Q 23.53125 6.390625 29.59375 6.390625 
+Q 36.859375 6.390625 41.078125 11.03125 
+Q 45.3125 15.671875 45.3125 23.6875 
+L 45.3125 54.6875 
+L 54.296875 54.6875 
+L 54.296875 0 
+L 45.3125 0 
+L 45.3125 8.40625 
+Q 42.046875 3.421875 37.71875 1 
+Q 33.40625 -1.421875 27.6875 -1.421875 
+Q 18.265625 -1.421875 13.375 4.4375 
+Q 8.5 10.296875 8.5 21.578125 
+z
+M 31.109375 56 
+z
+" id="DejaVuSans-117"/>
+       <path d="M 52 44.1875 
+Q 55.375 50.25 60.0625 53.125 
+Q 64.75 56 71.09375 56 
+Q 79.640625 56 84.28125 50.015625 
+Q 88.921875 44.046875 88.921875 33.015625 
+L 88.921875 0 
+L 79.890625 0 
+L 79.890625 32.71875 
+Q 79.890625 40.578125 77.09375 44.375 
+Q 74.3125 48.1875 68.609375 48.1875 
+Q 61.625 48.1875 57.5625 43.546875 
+Q 53.515625 38.921875 53.515625 30.90625 
+L 53.515625 0 
+L 44.484375 0 
+L 44.484375 32.71875 
+Q 44.484375 40.625 41.703125 44.40625 
+Q 38.921875 48.1875 33.109375 48.1875 
+Q 26.21875 48.1875 22.15625 43.53125 
+Q 18.109375 38.875 18.109375 30.90625 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.1875 
+Q 21.1875 51.21875 25.484375 53.609375 
+Q 29.78125 56 35.6875 56 
+Q 41.65625 56 45.828125 52.96875 
+Q 50 49.953125 52 44.1875 
+z
+" id="DejaVuSans-109"/>
+       <path d="M 48.6875 27.296875 
+Q 48.6875 37.203125 44.609375 42.84375 
+Q 40.53125 48.484375 33.40625 48.484375 
+Q 26.265625 48.484375 22.1875 42.84375 
+Q 18.109375 37.203125 18.109375 27.296875 
+Q 18.109375 17.390625 22.1875 11.75 
+Q 26.265625 6.109375 33.40625 6.109375 
+Q 40.53125 6.109375 44.609375 11.75 
+Q 48.6875 17.390625 48.6875 27.296875 
+z
+M 18.109375 46.390625 
+Q 20.953125 51.265625 25.265625 53.625 
+Q 29.59375 56 35.59375 56 
+Q 45.5625 56 51.78125 48.09375 
+Q 58.015625 40.1875 58.015625 27.296875 
+Q 58.015625 14.40625 51.78125 6.484375 
+Q 45.5625 -1.421875 35.59375 -1.421875 
+Q 29.59375 -1.421875 25.265625 0.953125 
+Q 20.953125 3.328125 18.109375 8.203125 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 75.984375 
+L 18.109375 75.984375 
+z
+" id="DejaVuSans-98"/>
+       <path d="M 56.203125 29.59375 
+L 56.203125 25.203125 
+L 14.890625 25.203125 
+Q 15.484375 15.921875 20.484375 11.0625 
+Q 25.484375 6.203125 34.421875 6.203125 
+Q 39.59375 6.203125 44.453125 7.46875 
+Q 49.3125 8.734375 54.109375 11.28125 
+L 54.109375 2.78125 
+Q 49.265625 0.734375 44.1875 -0.34375 
+Q 39.109375 -1.421875 33.890625 -1.421875 
+Q 20.796875 -1.421875 13.15625 6.1875 
+Q 5.515625 13.8125 5.515625 26.8125 
+Q 5.515625 40.234375 12.765625 48.109375 
+Q 20.015625 56 32.328125 56 
+Q 43.359375 56 49.78125 48.890625 
+Q 56.203125 41.796875 56.203125 29.59375 
+z
+M 47.21875 32.234375 
+Q 47.125 39.59375 43.09375 43.984375 
+Q 39.0625 48.390625 32.421875 48.390625 
+Q 24.90625 48.390625 20.390625 44.140625 
+Q 15.875 39.890625 15.1875 32.171875 
+z
+" id="DejaVuSans-101"/>
+       <path d="M 41.109375 46.296875 
+Q 39.59375 47.171875 37.8125 47.578125 
+Q 36.03125 48 33.890625 48 
+Q 26.265625 48 22.1875 43.046875 
+Q 18.109375 38.09375 18.109375 28.8125 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.1875 
+Q 20.953125 51.171875 25.484375 53.578125 
+Q 30.03125 56 36.53125 56 
+Q 37.453125 56 38.578125 55.875 
+Q 39.703125 55.765625 41.0625 55.515625 
+z
+" id="DejaVuSans-114"/>
+       <path d="M 30.609375 48.390625 
+Q 23.390625 48.390625 19.1875 42.75 
+Q 14.984375 37.109375 14.984375 27.296875 
+Q 14.984375 17.484375 19.15625 11.84375 
+Q 23.34375 6.203125 30.609375 6.203125 
+Q 37.796875 6.203125 41.984375 11.859375 
+Q 46.1875 17.53125 46.1875 27.296875 
+Q 46.1875 37.015625 41.984375 42.703125 
+Q 37.796875 48.390625 30.609375 48.390625 
+z
+M 30.609375 56 
+Q 42.328125 56 49.015625 48.375 
+Q 55.71875 40.765625 55.71875 27.296875 
+Q 55.71875 13.875 49.015625 6.21875 
+Q 42.328125 -1.421875 30.609375 -1.421875 
+Q 18.84375 -1.421875 12.171875 6.21875 
+Q 5.515625 13.875 5.515625 27.296875 
+Q 5.515625 40.765625 12.171875 48.375 
+Q 18.84375 56 30.609375 56 
+z
+" id="DejaVuSans-111"/>
+       <path d="M 37.109375 75.984375 
+L 37.109375 68.5 
+L 28.515625 68.5 
+Q 23.6875 68.5 21.796875 66.546875 
+Q 19.921875 64.59375 19.921875 59.515625 
+L 19.921875 54.6875 
+L 34.71875 54.6875 
+L 34.71875 47.703125 
+L 19.921875 47.703125 
+L 19.921875 0 
+L 10.890625 0 
+L 10.890625 47.703125 
+L 2.296875 47.703125 
+L 2.296875 54.6875 
+L 10.890625 54.6875 
+L 10.890625 58.5 
+Q 10.890625 67.625 15.140625 71.796875 
+Q 19.390625 75.984375 28.609375 75.984375 
+z
+" id="DejaVuSans-102"/>
+       <path d="M 11.71875 12.40625 
+L 22.015625 12.40625 
+L 22.015625 4 
+L 14.015625 -11.625 
+L 7.71875 -11.625 
+L 11.71875 4 
+z
+" id="DejaVuSans-44"/>
+       <path d="M 18.109375 8.203125 
+L 18.109375 -20.796875 
+L 9.078125 -20.796875 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.390625 
+Q 20.953125 51.265625 25.265625 53.625 
+Q 29.59375 56 35.59375 56 
+Q 45.5625 56 51.78125 48.09375 
+Q 58.015625 40.1875 58.015625 27.296875 
+Q 58.015625 14.40625 51.78125 6.484375 
+Q 45.5625 -1.421875 35.59375 -1.421875 
+Q 29.59375 -1.421875 25.265625 0.953125 
+Q 20.953125 3.328125 18.109375 8.203125 
+z
+M 48.6875 27.296875 
+Q 48.6875 37.203125 44.609375 42.84375 
+Q 40.53125 48.484375 33.40625 48.484375 
+Q 26.265625 48.484375 22.1875 42.84375 
+Q 18.109375 37.203125 18.109375 27.296875 
+Q 18.109375 17.390625 22.1875 11.75 
+Q 26.265625 6.109375 33.40625 6.109375 
+Q 40.53125 6.109375 44.609375 11.75 
+Q 48.6875 17.390625 48.6875 27.296875 
+z
+" id="DejaVuSans-112"/>
+       <path d="M 34.28125 27.484375 
+Q 23.390625 27.484375 19.1875 25 
+Q 14.984375 22.515625 14.984375 16.5 
+Q 14.984375 11.71875 18.140625 8.90625 
+Q 21.296875 6.109375 26.703125 6.109375 
+Q 34.1875 6.109375 38.703125 11.40625 
+Q 43.21875 16.703125 43.21875 25.484375 
+L 43.21875 27.484375 
+z
+M 52.203125 31.203125 
+L 52.203125 0 
+L 43.21875 0 
+L 43.21875 8.296875 
+Q 40.140625 3.328125 35.546875 0.953125 
+Q 30.953125 -1.421875 24.3125 -1.421875 
+Q 15.921875 -1.421875 10.953125 3.296875 
+Q 6 8.015625 6 15.921875 
+Q 6 25.140625 12.171875 29.828125 
+Q 18.359375 34.515625 30.609375 34.515625 
+L 43.21875 34.515625 
+L 43.21875 35.40625 
+Q 43.21875 41.609375 39.140625 45 
+Q 35.0625 48.390625 27.6875 48.390625 
+Q 23 48.390625 18.546875 47.265625 
+Q 14.109375 46.140625 10.015625 43.890625 
+L 10.015625 52.203125 
+Q 14.9375 54.109375 19.578125 55.046875 
+Q 24.21875 56 28.609375 56 
+Q 40.484375 56 46.34375 49.84375 
+Q 52.203125 43.703125 52.203125 31.203125 
+z
+" id="DejaVuSans-97"/>
+       <path d="M 48.78125 52.59375 
+L 48.78125 44.1875 
+Q 44.96875 46.296875 41.140625 47.34375 
+Q 37.3125 48.390625 33.40625 48.390625 
+Q 24.65625 48.390625 19.8125 42.84375 
+Q 14.984375 37.3125 14.984375 27.296875 
+Q 14.984375 17.28125 19.8125 11.734375 
+Q 24.65625 6.203125 33.40625 6.203125 
+Q 37.3125 6.203125 41.140625 7.25 
+Q 44.96875 8.296875 48.78125 10.40625 
+L 48.78125 2.09375 
+Q 45.015625 0.34375 40.984375 -0.53125 
+Q 36.96875 -1.421875 32.421875 -1.421875 
+Q 20.0625 -1.421875 12.78125 6.34375 
+Q 5.515625 14.109375 5.515625 27.296875 
+Q 5.515625 40.671875 12.859375 48.328125 
+Q 20.21875 56 33.015625 56 
+Q 37.15625 56 41.109375 55.140625 
+Q 45.0625 54.296875 48.78125 52.59375 
+z
+" id="DejaVuSans-99"/>
+       <path d="M 54.890625 33.015625 
+L 54.890625 0 
+L 45.90625 0 
+L 45.90625 32.71875 
+Q 45.90625 40.484375 42.875 44.328125 
+Q 39.84375 48.1875 33.796875 48.1875 
+Q 26.515625 48.1875 22.3125 43.546875 
+Q 18.109375 38.921875 18.109375 30.90625 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 75.984375 
+L 18.109375 75.984375 
+L 18.109375 46.1875 
+Q 21.34375 51.125 25.703125 53.5625 
+Q 30.078125 56 35.796875 56 
+Q 45.21875 56 50.046875 50.171875 
+Q 54.890625 44.34375 54.890625 33.015625 
+z
+" id="DejaVuSans-104"/>
+       <path d="M 9.8125 72.90625 
+L 19.671875 72.90625 
+L 19.671875 8.296875 
+L 55.171875 8.296875 
+L 55.171875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-76"/>
+       <path d="M 9.421875 54.6875 
+L 18.40625 54.6875 
+L 18.40625 0 
+L 9.421875 0 
+z
+M 9.421875 75.984375 
+L 18.40625 75.984375 
+L 18.40625 64.59375 
+L 9.421875 64.59375 
+z
+" id="DejaVuSans-105"/>
+       <path d="M 54.890625 33.015625 
+L 54.890625 0 
+L 45.90625 0 
+L 45.90625 32.71875 
+Q 45.90625 40.484375 42.875 44.328125 
+Q 39.84375 48.1875 33.796875 48.1875 
+Q 26.515625 48.1875 22.3125 43.546875 
+Q 18.109375 38.921875 18.109375 30.90625 
+L 18.109375 0 
+L 9.078125 0 
+L 9.078125 54.6875 
+L 18.109375 54.6875 
+L 18.109375 46.1875 
+Q 21.34375 51.125 25.703125 53.5625 
+Q 30.078125 56 35.796875 56 
+Q 45.21875 56 50.046875 50.171875 
+Q 54.890625 44.34375 54.890625 33.015625 
+z
+" id="DejaVuSans-110"/>
+       <path d="M 54.890625 54.6875 
+L 35.109375 28.078125 
+L 55.90625 0 
+L 45.3125 0 
+L 29.390625 21.484375 
+L 13.484375 0 
+L 2.875 0 
+L 24.125 28.609375 
+L 4.6875 54.6875 
+L 15.28125 54.6875 
+L 29.78125 35.203125 
+L 44.28125 54.6875 
+z
+" id="DejaVuSans-120"/>
+       <path d="M 9.078125 75.984375 
+L 18.109375 75.984375 
+L 18.109375 31.109375 
+L 44.921875 54.6875 
+L 56.390625 54.6875 
+L 27.390625 29.109375 
+L 57.625 0 
+L 45.90625 0 
+L 18.109375 26.703125 
+L 18.109375 0 
+L 9.078125 0 
+z
+" id="DejaVuSans-107"/>
+       <path d="M 9.421875 75.984375 
+L 18.40625 75.984375 
+L 18.40625 0 
+L 9.421875 0 
+z
+" id="DejaVuSans-108"/>
+       <path d="M 2.984375 54.6875 
+L 12.5 54.6875 
+L 29.59375 8.796875 
+L 46.6875 54.6875 
+L 56.203125 54.6875 
+L 35.6875 0 
+L 23.484375 0 
+z
+" id="DejaVuSans-118"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-78"/>
+      <use x="74.804688" xlink:href="#DejaVuSans-117"/>
+      <use x="138.183594" xlink:href="#DejaVuSans-109"/>
+      <use x="235.595703" xlink:href="#DejaVuSans-98"/>
+      <use x="299.072266" xlink:href="#DejaVuSans-101"/>
+      <use x="360.595703" xlink:href="#DejaVuSans-114"/>
+      <use x="401.708984" xlink:href="#DejaVuSans-32"/>
+      <use x="433.496094" xlink:href="#DejaVuSans-111"/>
+      <use x="494.677734" xlink:href="#DejaVuSans-102"/>
+      <use x="529.882812" xlink:href="#DejaVuSans-32"/>
+      <use x="561.669922" xlink:href="#DejaVuSans-67"/>
+      <use x="631.494141" xlink:href="#DejaVuSans-80"/>
+      <use x="691.796875" xlink:href="#DejaVuSans-85"/>
+      <use x="764.990234" xlink:href="#DejaVuSans-115"/>
+      <use x="817.089844" xlink:href="#DejaVuSans-44"/>
+      <use x="848.876953" xlink:href="#DejaVuSans-32"/>
+      <use x="880.664062" xlink:href="#DejaVuSans-112"/>
+      <use x="944.140625" xlink:href="#DejaVuSans-101"/>
+      <use x="1005.664062" xlink:href="#DejaVuSans-114"/>
+      <use x="1046.777344" xlink:href="#DejaVuSans-32"/>
+      <use x="1078.564453" xlink:href="#DejaVuSans-101"/>
+      <use x="1140.087891" xlink:href="#DejaVuSans-97"/>
+      <use x="1201.367188" xlink:href="#DejaVuSans-99"/>
+      <use x="1256.347656" xlink:href="#DejaVuSans-104"/>
+      <use x="1319.726562" xlink:href="#DejaVuSans-32"/>
+      <use x="1351.513672" xlink:href="#DejaVuSans-76"/>
+      <use x="1407.226562" xlink:href="#DejaVuSans-105"/>
+      <use x="1435.009766" xlink:href="#DejaVuSans-110"/>
+      <use x="1498.388672" xlink:href="#DejaVuSans-117"/>
+      <use x="1561.767578" xlink:href="#DejaVuSans-120"/>
+      <use x="1620.947266" xlink:href="#DejaVuSans-32"/>
+      <use x="1652.734375" xlink:href="#DejaVuSans-107"/>
+      <use x="1707.019531" xlink:href="#DejaVuSans-101"/>
+      <use x="1768.542969" xlink:href="#DejaVuSans-114"/>
+      <use x="1807.90625" xlink:href="#DejaVuSans-110"/>
+      <use x="1871.285156" xlink:href="#DejaVuSans-101"/>
+      <use x="1932.808594" xlink:href="#DejaVuSans-108"/>
+      <use x="1960.591797" xlink:href="#DejaVuSans-32"/>
+      <use x="1992.378906" xlink:href="#DejaVuSans-118"/>
+      <use x="2051.558594" xlink:href="#DejaVuSans-101"/>
+      <use x="2113.082031" xlink:href="#DejaVuSans-114"/>
+      <use x="2154.195312" xlink:href="#DejaVuSans-115"/>
+      <use x="2206.294922" xlink:href="#DejaVuSans-105"/>
+      <use x="2234.078125" xlink:href="#DejaVuSans-111"/>
+      <use x="2295.259766" xlink:href="#DejaVuSans-110"/>
+     </g>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_21">
+      <defs>
+       <path d="M 0 0 
+L -3.5 0 
+" id="m47d40e84de" style="stroke:#000000;stroke-width:0.8;"/>
+      </defs>
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m47d40e84de" y="194.571089"/>
+      </g>
+     </g>
+     <g id="text_22">
+      <!-- X86KvmCPU -->
+      <g transform="translate(43.001875 199.130152)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 6.296875 72.90625 
+L 16.890625 72.90625 
+L 35.015625 45.796875 
+L 53.21875 72.90625 
+L 63.8125 72.90625 
+L 40.375 37.890625 
+L 65.375 0 
+L 54.78125 0 
+L 34.28125 31 
+L 13.625 0 
+L 2.984375 0 
+L 29 38.921875 
+z
+" id="DejaVuSans-88"/>
+        <path d="M 33.015625 40.375 
+Q 26.375 40.375 22.484375 35.828125 
+Q 18.609375 31.296875 18.609375 23.390625 
+Q 18.609375 15.53125 22.484375 10.953125 
+Q 26.375 6.390625 33.015625 6.390625 
+Q 39.65625 6.390625 43.53125 10.953125 
+Q 47.40625 15.53125 47.40625 23.390625 
+Q 47.40625 31.296875 43.53125 35.828125 
+Q 39.65625 40.375 33.015625 40.375 
+z
+M 52.59375 71.296875 
+L 52.59375 62.3125 
+Q 48.875 64.0625 45.09375 64.984375 
+Q 41.3125 65.921875 37.59375 65.921875 
+Q 27.828125 65.921875 22.671875 59.328125 
+Q 17.53125 52.734375 16.796875 39.40625 
+Q 19.671875 43.65625 24.015625 45.921875 
+Q 28.375 48.1875 33.59375 48.1875 
+Q 44.578125 48.1875 50.953125 41.515625 
+Q 57.328125 34.859375 57.328125 23.390625 
+Q 57.328125 12.15625 50.6875 5.359375 
+Q 44.046875 -1.421875 33.015625 -1.421875 
+Q 20.359375 -1.421875 13.671875 8.265625 
+Q 6.984375 17.96875 6.984375 36.375 
+Q 6.984375 53.65625 15.1875 63.9375 
+Q 23.390625 74.21875 37.203125 74.21875 
+Q 40.921875 74.21875 44.703125 73.484375 
+Q 48.484375 72.75 52.59375 71.296875 
+z
+" id="DejaVuSans-54"/>
+        <path d="M 9.8125 72.90625 
+L 19.671875 72.90625 
+L 19.671875 42.09375 
+L 52.390625 72.90625 
+L 65.09375 72.90625 
+L 28.90625 38.921875 
+L 67.671875 0 
+L 54.6875 0 
+L 19.671875 35.109375 
+L 19.671875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-75"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-88"/>
+       <use x="68.505859" xlink:href="#DejaVuSans-56"/>
+       <use x="132.128906" xlink:href="#DejaVuSans-54"/>
+       <use x="195.751953" xlink:href="#DejaVuSans-75"/>
+       <use x="261.328125" xlink:href="#DejaVuSans-118"/>
+       <use x="320.507812" xlink:href="#DejaVuSans-109"/>
+       <use x="417.919922" xlink:href="#DejaVuSans-67"/>
+       <use x="487.744141" xlink:href="#DejaVuSans-80"/>
+       <use x="548.046875" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_22">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m47d40e84de" y="167.275908"/>
+      </g>
+     </g>
+     <g id="text_23">
+      <!-- AtomicSimpleCPU -->
+      <g transform="translate(10.51 171.83497)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 34.1875 63.1875 
+L 20.796875 26.90625 
+L 47.609375 26.90625 
+z
+M 28.609375 72.90625 
+L 39.796875 72.90625 
+L 67.578125 0 
+L 57.328125 0 
+L 50.6875 18.703125 
+L 17.828125 18.703125 
+L 11.1875 0 
+L 0.78125 0 
+z
+" id="DejaVuSans-65"/>
+        <path d="M 18.3125 70.21875 
+L 18.3125 54.6875 
+L 36.8125 54.6875 
+L 36.8125 47.703125 
+L 18.3125 47.703125 
+L 18.3125 18.015625 
+Q 18.3125 11.328125 20.140625 9.421875 
+Q 21.96875 7.515625 27.59375 7.515625 
+L 36.8125 7.515625 
+L 36.8125 0 
+L 27.59375 0 
+Q 17.1875 0 13.234375 3.875 
+Q 9.28125 7.765625 9.28125 18.015625 
+L 9.28125 47.703125 
+L 2.6875 47.703125 
+L 2.6875 54.6875 
+L 9.28125 54.6875 
+L 9.28125 70.21875 
+z
+" id="DejaVuSans-116"/>
+        <path d="M 53.515625 70.515625 
+L 53.515625 60.890625 
+Q 47.90625 63.578125 42.921875 64.890625 
+Q 37.9375 66.21875 33.296875 66.21875 
+Q 25.25 66.21875 20.875 63.09375 
+Q 16.5 59.96875 16.5 54.203125 
+Q 16.5 49.359375 19.40625 46.890625 
+Q 22.3125 44.4375 30.421875 42.921875 
+L 36.375 41.703125 
+Q 47.40625 39.59375 52.65625 34.296875 
+Q 57.90625 29 57.90625 20.125 
+Q 57.90625 9.515625 50.796875 4.046875 
+Q 43.703125 -1.421875 29.984375 -1.421875 
+Q 24.8125 -1.421875 18.96875 -0.25 
+Q 13.140625 0.921875 6.890625 3.21875 
+L 6.890625 13.375 
+Q 12.890625 10.015625 18.65625 8.296875 
+Q 24.421875 6.59375 29.984375 6.59375 
+Q 38.421875 6.59375 43.015625 9.90625 
+Q 47.609375 13.234375 47.609375 19.390625 
+Q 47.609375 24.75 44.3125 27.78125 
+Q 41.015625 30.8125 33.5 32.328125 
+L 27.484375 33.5 
+Q 16.453125 35.6875 11.515625 40.375 
+Q 6.59375 45.0625 6.59375 53.421875 
+Q 6.59375 63.09375 13.40625 68.65625 
+Q 20.21875 74.21875 32.171875 74.21875 
+Q 37.3125 74.21875 42.625 73.28125 
+Q 47.953125 72.359375 53.515625 70.515625 
+z
+" id="DejaVuSans-83"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-65"/>
+       <use x="66.658203" xlink:href="#DejaVuSans-116"/>
+       <use x="105.867188" xlink:href="#DejaVuSans-111"/>
+       <use x="167.048828" xlink:href="#DejaVuSans-109"/>
+       <use x="264.460938" xlink:href="#DejaVuSans-105"/>
+       <use x="292.244141" xlink:href="#DejaVuSans-99"/>
+       <use x="347.224609" xlink:href="#DejaVuSans-83"/>
+       <use x="410.701172" xlink:href="#DejaVuSans-105"/>
+       <use x="438.484375" xlink:href="#DejaVuSans-109"/>
+       <use x="535.896484" xlink:href="#DejaVuSans-112"/>
+       <use x="599.373047" xlink:href="#DejaVuSans-108"/>
+       <use x="627.15625" xlink:href="#DejaVuSans-101"/>
+       <use x="688.679688" xlink:href="#DejaVuSans-67"/>
+       <use x="758.503906" xlink:href="#DejaVuSans-80"/>
+       <use x="818.806641" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_3">
+     <g id="line2d_23">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m47d40e84de" y="139.980726"/>
+      </g>
+     </g>
+     <g id="text_24">
+      <!-- TimingSimpleCPU -->
+      <g transform="translate(11.6425 144.539789)scale(0.12 -0.12)">
+       <defs>
+        <path d="M -0.296875 72.90625 
+L 61.375 72.90625 
+L 61.375 64.59375 
+L 35.5 64.59375 
+L 35.5 0 
+L 25.59375 0 
+L 25.59375 64.59375 
+L -0.296875 64.59375 
+z
+" id="DejaVuSans-84"/>
+        <path d="M 45.40625 27.984375 
+Q 45.40625 37.75 41.375 43.109375 
+Q 37.359375 48.484375 30.078125 48.484375 
+Q 22.859375 48.484375 18.828125 43.109375 
+Q 14.796875 37.75 14.796875 27.984375 
+Q 14.796875 18.265625 18.828125 12.890625 
+Q 22.859375 7.515625 30.078125 7.515625 
+Q 37.359375 7.515625 41.375 12.890625 
+Q 45.40625 18.265625 45.40625 27.984375 
+z
+M 54.390625 6.78125 
+Q 54.390625 -7.171875 48.1875 -13.984375 
+Q 42 -20.796875 29.203125 -20.796875 
+Q 24.46875 -20.796875 20.265625 -20.09375 
+Q 16.0625 -19.390625 12.109375 -17.921875 
+L 12.109375 -9.1875 
+Q 16.0625 -11.328125 19.921875 -12.34375 
+Q 23.78125 -13.375 27.78125 -13.375 
+Q 36.625 -13.375 41.015625 -8.765625 
+Q 45.40625 -4.15625 45.40625 5.171875 
+L 45.40625 9.625 
+Q 42.625 4.78125 38.28125 2.390625 
+Q 33.9375 0 27.875 0 
+Q 17.828125 0 11.671875 7.65625 
+Q 5.515625 15.328125 5.515625 27.984375 
+Q 5.515625 40.671875 11.671875 48.328125 
+Q 17.828125 56 27.875 56 
+Q 33.9375 56 38.28125 53.609375 
+Q 42.625 51.21875 45.40625 46.390625 
+L 45.40625 54.6875 
+L 54.390625 54.6875 
+z
+" id="DejaVuSans-103"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-84"/>
+       <use x="57.958984" xlink:href="#DejaVuSans-105"/>
+       <use x="85.742188" xlink:href="#DejaVuSans-109"/>
+       <use x="183.154297" xlink:href="#DejaVuSans-105"/>
+       <use x="210.9375" xlink:href="#DejaVuSans-110"/>
+       <use x="274.316406" xlink:href="#DejaVuSans-103"/>
+       <use x="337.792969" xlink:href="#DejaVuSans-83"/>
+       <use x="401.269531" xlink:href="#DejaVuSans-105"/>
+       <use x="429.052734" xlink:href="#DejaVuSans-109"/>
+       <use x="526.464844" xlink:href="#DejaVuSans-112"/>
+       <use x="589.941406" xlink:href="#DejaVuSans-108"/>
+       <use x="617.724609" xlink:href="#DejaVuSans-101"/>
+       <use x="679.248047" xlink:href="#DejaVuSans-67"/>
+       <use x="749.072266" xlink:href="#DejaVuSans-80"/>
+       <use x="809.375" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+    <g id="ytick_4">
+     <g id="line2d_24">
+      <g>
+       <use style="stroke:#000000;stroke-width:0.8;" x="124.55" xlink:href="#m47d40e84de" y="112.685545"/>
+      </g>
+     </g>
+     <g id="text_25">
+      <!-- DerivO3CPU -->
+      <g transform="translate(44.078125 117.244607)scale(0.12 -0.12)">
+       <defs>
+        <path d="M 19.671875 64.796875 
+L 19.671875 8.109375 
+L 31.59375 8.109375 
+Q 46.6875 8.109375 53.6875 14.9375 
+Q 60.6875 21.78125 60.6875 36.53125 
+Q 60.6875 51.171875 53.6875 57.984375 
+Q 46.6875 64.796875 31.59375 64.796875 
+z
+M 9.8125 72.90625 
+L 30.078125 72.90625 
+Q 51.265625 72.90625 61.171875 64.09375 
+Q 71.09375 55.28125 71.09375 36.53125 
+Q 71.09375 17.671875 61.125 8.828125 
+Q 51.171875 0 30.078125 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-68"/>
+        <path d="M 39.40625 66.21875 
+Q 28.65625 66.21875 22.328125 58.203125 
+Q 16.015625 50.203125 16.015625 36.375 
+Q 16.015625 22.609375 22.328125 14.59375 
+Q 28.65625 6.59375 39.40625 6.59375 
+Q 50.140625 6.59375 56.421875 14.59375 
+Q 62.703125 22.609375 62.703125 36.375 
+Q 62.703125 50.203125 56.421875 58.203125 
+Q 50.140625 66.21875 39.40625 66.21875 
+z
+M 39.40625 74.21875 
+Q 54.734375 74.21875 63.90625 63.9375 
+Q 73.09375 53.65625 73.09375 36.375 
+Q 73.09375 19.140625 63.90625 8.859375 
+Q 54.734375 -1.421875 39.40625 -1.421875 
+Q 24.03125 -1.421875 14.8125 8.828125 
+Q 5.609375 19.09375 5.609375 36.375 
+Q 5.609375 53.65625 14.8125 63.9375 
+Q 24.03125 74.21875 39.40625 74.21875 
+z
+" id="DejaVuSans-79"/>
+        <path d="M 40.578125 39.3125 
+Q 47.65625 37.796875 51.625 33 
+Q 55.609375 28.21875 55.609375 21.1875 
+Q 55.609375 10.40625 48.1875 4.484375 
+Q 40.765625 -1.421875 27.09375 -1.421875 
+Q 22.515625 -1.421875 17.65625 -0.515625 
+Q 12.796875 0.390625 7.625 2.203125 
+L 7.625 11.71875 
+Q 11.71875 9.328125 16.59375 8.109375 
+Q 21.484375 6.890625 26.8125 6.890625 
+Q 36.078125 6.890625 40.9375 10.546875 
+Q 45.796875 14.203125 45.796875 21.1875 
+Q 45.796875 27.640625 41.28125 31.265625 
+Q 36.765625 34.90625 28.71875 34.90625 
+L 20.21875 34.90625 
+L 20.21875 43.015625 
+L 29.109375 43.015625 
+Q 36.375 43.015625 40.234375 45.921875 
+Q 44.09375 48.828125 44.09375 54.296875 
+Q 44.09375 59.90625 40.109375 62.90625 
+Q 36.140625 65.921875 28.71875 65.921875 
+Q 24.65625 65.921875 20.015625 65.03125 
+Q 15.375 64.15625 9.8125 62.3125 
+L 9.8125 71.09375 
+Q 15.4375 72.65625 20.34375 73.4375 
+Q 25.25 74.21875 29.59375 74.21875 
+Q 40.828125 74.21875 47.359375 69.109375 
+Q 53.90625 64.015625 53.90625 55.328125 
+Q 53.90625 49.265625 50.4375 45.09375 
+Q 46.96875 40.921875 40.578125 39.3125 
+z
+" id="DejaVuSans-51"/>
+       </defs>
+       <use xlink:href="#DejaVuSans-68"/>
+       <use x="77.001953" xlink:href="#DejaVuSans-101"/>
+       <use x="138.525391" xlink:href="#DejaVuSans-114"/>
+       <use x="179.638672" xlink:href="#DejaVuSans-105"/>
+       <use x="207.421875" xlink:href="#DejaVuSans-118"/>
+       <use x="266.601562" xlink:href="#DejaVuSans-79"/>
+       <use x="345.3125" xlink:href="#DejaVuSans-51"/>
+       <use x="408.935547" xlink:href="#DejaVuSans-67"/>
+       <use x="478.759766" xlink:href="#DejaVuSans-80"/>
+       <use x="539.0625" xlink:href="#DejaVuSans-85"/>
+      </g>
+     </g>
+    </g>
+   </g>
+   <g id="patch_115">
+    <path d="M 124.55 208.21868 
+L 124.55 30.8 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_116">
+    <path d="M 925.2 208.21868 
+L 925.2 30.8 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_117">
+    <path d="M 124.55 208.21868 
+L 925.2 208.21868 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="patch_118">
+    <path d="M 124.55 30.8 
+L 925.2 30.8 
+" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
+   </g>
+   <g id="text_26">
+    <!-- vmlinux-4.4.186 -->
+    <g transform="translate(143.425547 94.988462)scale(0.15 -0.15)">
+     <defs>
+      <path d="M 4.890625 31.390625 
+L 31.203125 31.390625 
+L 31.203125 23.390625 
+L 4.890625 23.390625 
+z
+" id="DejaVuSans-45"/>
+      <path d="M 10.6875 12.40625 
+L 21 12.40625 
+L 21 0 
+L 10.6875 0 
+z
+" id="DejaVuSans-46"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-52"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-46"/>
+     <use x="625" xlink:href="#DejaVuSans-49"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-56"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-54"/>
+    </g>
+   </g>
+   <g id="text_27">
+    <!-- vmlinux-4.9.186 -->
+    <g transform="translate(303.555547 94.988462)scale(0.15 -0.15)">
+     <defs>
+      <path d="M 10.984375 1.515625 
+L 10.984375 10.5 
+Q 14.703125 8.734375 18.5 7.8125 
+Q 22.3125 6.890625 25.984375 6.890625 
+Q 35.75 6.890625 40.890625 13.453125 
+Q 46.046875 20.015625 46.78125 33.40625 
+Q 43.953125 29.203125 39.59375 26.953125 
+Q 35.25 24.703125 29.984375 24.703125 
+Q 19.046875 24.703125 12.671875 31.3125 
+Q 6.296875 37.9375 6.296875 49.421875 
+Q 6.296875 60.640625 12.9375 67.421875 
+Q 19.578125 74.21875 30.609375 74.21875 
+Q 43.265625 74.21875 49.921875 64.515625 
+Q 56.59375 54.828125 56.59375 36.375 
+Q 56.59375 19.140625 48.40625 8.859375 
+Q 40.234375 -1.421875 26.421875 -1.421875 
+Q 22.703125 -1.421875 18.890625 -0.6875 
+Q 15.09375 0.046875 10.984375 1.515625 
+z
+M 30.609375 32.421875 
+Q 37.25 32.421875 41.125 36.953125 
+Q 45.015625 41.5 45.015625 49.421875 
+Q 45.015625 57.28125 41.125 61.84375 
+Q 37.25 66.40625 30.609375 66.40625 
+Q 23.96875 66.40625 20.09375 61.84375 
+Q 16.21875 57.28125 16.21875 49.421875 
+Q 16.21875 41.5 20.09375 36.953125 
+Q 23.96875 32.421875 30.609375 32.421875 
+z
+" id="DejaVuSans-57"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-57"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-46"/>
+     <use x="625" xlink:href="#DejaVuSans-49"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-56"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-54"/>
+    </g>
+   </g>
+   <g id="text_28">
+    <!-- vmlinux-4.14.134 -->
+    <g transform="translate(458.913672 94.988462)scale(0.15 -0.15)">
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-49"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-52"/>
+     <use x="656.835938" xlink:href="#DejaVuSans-46"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-49"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-51"/>
+     <use x="815.869141" xlink:href="#DejaVuSans-52"/>
+    </g>
+   </g>
+   <g id="text_29">
+    <!-- vmlinux-4.19.83 -->
+    <g transform="translate(623.815547 94.988462)scale(0.15 -0.15)">
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-52"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-49"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-57"/>
+     <use x="656.835938" xlink:href="#DejaVuSans-46"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-56"/>
+     <use x="752.246094" xlink:href="#DejaVuSans-51"/>
+    </g>
+   </g>
+   <g id="text_30">
+    <!-- vmlinux-5.4.49 -->
+    <g transform="translate(788.717422 94.988462)scale(0.15 -0.15)">
+     <defs>
+      <path d="M 10.796875 72.90625 
+L 49.515625 72.90625 
+L 49.515625 64.59375 
+L 19.828125 64.59375 
+L 19.828125 46.734375 
+Q 21.96875 47.46875 24.109375 47.828125 
+Q 26.265625 48.1875 28.421875 48.1875 
+Q 40.625 48.1875 47.75 41.5 
+Q 54.890625 34.8125 54.890625 23.390625 
+Q 54.890625 11.625 47.5625 5.09375 
+Q 40.234375 -1.421875 26.90625 -1.421875 
+Q 22.3125 -1.421875 17.546875 -0.640625 
+Q 12.796875 0.140625 7.71875 1.703125 
+L 7.71875 11.625 
+Q 12.109375 9.234375 16.796875 8.0625 
+Q 21.484375 6.890625 26.703125 6.890625 
+Q 35.15625 6.890625 40.078125 11.328125 
+Q 45.015625 15.765625 45.015625 23.390625 
+Q 45.015625 31 40.078125 35.4375 
+Q 35.15625 39.890625 26.703125 39.890625 
+Q 22.75 39.890625 18.8125 39.015625 
+Q 14.890625 38.140625 10.796875 36.28125 
+z
+" id="DejaVuSans-53"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-118"/>
+     <use x="59.179688" xlink:href="#DejaVuSans-109"/>
+     <use x="156.591797" xlink:href="#DejaVuSans-108"/>
+     <use x="184.375" xlink:href="#DejaVuSans-105"/>
+     <use x="212.158203" xlink:href="#DejaVuSans-110"/>
+     <use x="275.537109" xlink:href="#DejaVuSans-117"/>
+     <use x="338.916016" xlink:href="#DejaVuSans-120"/>
+     <use x="398.095703" xlink:href="#DejaVuSans-45"/>
+     <use x="434.179688" xlink:href="#DejaVuSans-53"/>
+     <use x="497.802734" xlink:href="#DejaVuSans-46"/>
+     <use x="529.589844" xlink:href="#DejaVuSans-52"/>
+     <use x="593.212891" xlink:href="#DejaVuSans-46"/>
+     <use x="625" xlink:href="#DejaVuSans-52"/>
+     <use x="688.623047" xlink:href="#DejaVuSans-57"/>
+    </g>
+   </g>
+   <g id="text_31">
+    <!-- Memory: MI_example, Boot Type: init -->
+    <g transform="translate(359.279219 24.8)scale(0.18 -0.18)">
+     <defs>
+      <path d="M 9.8125 72.90625 
+L 24.515625 72.90625 
+L 43.109375 23.296875 
+L 61.8125 72.90625 
+L 76.515625 72.90625 
+L 76.515625 0 
+L 66.890625 0 
+L 66.890625 64.015625 
+L 48.09375 14.015625 
+L 38.1875 14.015625 
+L 19.390625 64.015625 
+L 19.390625 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-77"/>
+      <path d="M 32.171875 -5.078125 
+Q 28.375 -14.84375 24.75 -17.8125 
+Q 21.140625 -20.796875 15.09375 -20.796875 
+L 7.90625 -20.796875 
+L 7.90625 -13.28125 
+L 13.1875 -13.28125 
+Q 16.890625 -13.28125 18.9375 -11.515625 
+Q 21 -9.765625 23.484375 -3.21875 
+L 25.09375 0.875 
+L 2.984375 54.6875 
+L 12.5 54.6875 
+L 29.59375 11.921875 
+L 46.6875 54.6875 
+L 56.203125 54.6875 
+z
+" id="DejaVuSans-121"/>
+      <path d="M 11.71875 12.40625 
+L 22.015625 12.40625 
+L 22.015625 0 
+L 11.71875 0 
+z
+M 11.71875 51.703125 
+L 22.015625 51.703125 
+L 22.015625 39.3125 
+L 11.71875 39.3125 
+z
+" id="DejaVuSans-58"/>
+      <path d="M 9.8125 72.90625 
+L 19.671875 72.90625 
+L 19.671875 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-73"/>
+      <path d="M 50.984375 -16.609375 
+L 50.984375 -23.578125 
+L -0.984375 -23.578125 
+L -0.984375 -16.609375 
+z
+" id="DejaVuSans-95"/>
+      <path d="M 19.671875 34.8125 
+L 19.671875 8.109375 
+L 35.5 8.109375 
+Q 43.453125 8.109375 47.28125 11.40625 
+Q 51.125 14.703125 51.125 21.484375 
+Q 51.125 28.328125 47.28125 31.5625 
+Q 43.453125 34.8125 35.5 34.8125 
+z
+M 19.671875 64.796875 
+L 19.671875 42.828125 
+L 34.28125 42.828125 
+Q 41.5 42.828125 45.03125 45.53125 
+Q 48.578125 48.25 48.578125 53.8125 
+Q 48.578125 59.328125 45.03125 62.0625 
+Q 41.5 64.796875 34.28125 64.796875 
+z
+M 9.8125 72.90625 
+L 35.015625 72.90625 
+Q 46.296875 72.90625 52.390625 68.21875 
+Q 58.5 63.53125 58.5 54.890625 
+Q 58.5 48.1875 55.375 44.234375 
+Q 52.25 40.28125 46.1875 39.3125 
+Q 53.46875 37.75 57.5 32.78125 
+Q 61.53125 27.828125 61.53125 20.40625 
+Q 61.53125 10.640625 54.890625 5.3125 
+Q 48.25 0 35.984375 0 
+L 9.8125 0 
+z
+" id="DejaVuSans-66"/>
+     </defs>
+     <use xlink:href="#DejaVuSans-77"/>
+     <use x="86.279297" xlink:href="#DejaVuSans-101"/>
+     <use x="147.802734" xlink:href="#DejaVuSans-109"/>
+     <use x="245.214844" xlink:href="#DejaVuSans-111"/>
+     <use x="306.396484" xlink:href="#DejaVuSans-114"/>
+     <use x="347.509766" xlink:href="#DejaVuSans-121"/>
+     <use x="399.439453" xlink:href="#DejaVuSans-58"/>
+     <use x="433.130859" xlink:href="#DejaVuSans-32"/>
+     <use x="464.917969" xlink:href="#DejaVuSans-77"/>
+     <use x="551.197266" xlink:href="#DejaVuSans-73"/>
+     <use x="580.689453" xlink:href="#DejaVuSans-95"/>
+     <use x="630.689453" xlink:href="#DejaVuSans-101"/>
+     <use x="690.462891" xlink:href="#DejaVuSans-120"/>
+     <use x="749.642578" xlink:href="#DejaVuSans-97"/>
+     <use x="810.921875" xlink:href="#DejaVuSans-109"/>
+     <use x="908.333984" xlink:href="#DejaVuSans-112"/>
+     <use x="971.810547" xlink:href="#DejaVuSans-108"/>
+     <use x="999.59375" xlink:href="#DejaVuSans-101"/>
+     <use x="1061.117188" xlink:href="#DejaVuSans-44"/>
+     <use x="1092.904297" xlink:href="#DejaVuSans-32"/>
+     <use x="1124.691406" xlink:href="#DejaVuSans-66"/>
+     <use x="1193.294922" xlink:href="#DejaVuSans-111"/>
+     <use x="1254.476562" xlink:href="#DejaVuSans-111"/>
+     <use x="1315.658203" xlink:href="#DejaVuSans-116"/>
+     <use x="1354.867188" xlink:href="#DejaVuSans-32"/>
+     <use x="1386.654297" xlink:href="#DejaVuSans-84"/>
+     <use x="1432.113281" xlink:href="#DejaVuSans-121"/>
+     <use x="1491.292969" xlink:href="#DejaVuSans-112"/>
+     <use x="1554.769531" xlink:href="#DejaVuSans-101"/>
+     <use x="1616.292969" xlink:href="#DejaVuSans-58"/>
+     <use x="1649.984375" xlink:href="#DejaVuSans-32"/>
+     <use x="1681.771484" xlink:href="#DejaVuSans-105"/>
+     <use x="1709.554688" xlink:href="#DejaVuSans-110"/>
+     <use x="1772.933594" xlink:href="#DejaVuSans-105"/>
+     <use x="1800.716797" xlink:href="#DejaVuSans-116"/>
+    </g>
+   </g>
+   <g id="legend_1">
+    <g id="patch_119">
+     <path d="M 247.105 50.718125 
+L 271.105 50.718125 
+L 271.105 42.318125 
+L 247.105 42.318125 
+z
+" style="fill:#008000;"/>
+    </g>
+    <g id="text_32">
+     <!-- succeeded -->
+     <g transform="translate(280.705 50.718125)scale(0.12 -0.12)">
+      <defs>
+       <path d="M 45.40625 46.390625 
+L 45.40625 75.984375 
+L 54.390625 75.984375 
+L 54.390625 0 
+L 45.40625 0 
+L 45.40625 8.203125 
+Q 42.578125 3.328125 38.25 0.953125 
+Q 33.9375 -1.421875 27.875 -1.421875 
+Q 17.96875 -1.421875 11.734375 6.484375 
+Q 5.515625 14.40625 5.515625 27.296875 
+Q 5.515625 40.1875 11.734375 48.09375 
+Q 17.96875 56 27.875 56 
+Q 33.9375 56 38.25 53.625 
+Q 42.578125 51.265625 45.40625 46.390625 
+z
+M 14.796875 27.296875 
+Q 14.796875 17.390625 18.875 11.75 
+Q 22.953125 6.109375 30.078125 6.109375 
+Q 37.203125 6.109375 41.296875 11.75 
+Q 45.40625 17.390625 45.40625 27.296875 
+Q 45.40625 37.203125 41.296875 42.84375 
+Q 37.203125 48.484375 30.078125 48.484375 
+Q 22.953125 48.484375 18.875 42.84375 
+Q 14.796875 37.203125 14.796875 27.296875 
+z
+" id="DejaVuSans-100"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-115"/>
+      <use x="52.099609" xlink:href="#DejaVuSans-117"/>
+      <use x="115.478516" xlink:href="#DejaVuSans-99"/>
+      <use x="170.458984" xlink:href="#DejaVuSans-99"/>
+      <use x="225.439453" xlink:href="#DejaVuSans-101"/>
+      <use x="286.962891" xlink:href="#DejaVuSans-101"/>
+      <use x="348.486328" xlink:href="#DejaVuSans-100"/>
+      <use x="411.962891" xlink:href="#DejaVuSans-101"/>
+      <use x="473.486328" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_120">
+     <path d="M 247.105 68.331875 
+L 271.105 68.331875 
+L 271.105 59.931875 
+L 247.105 59.931875 
+z
+" style="fill:#ff0000;"/>
+    </g>
+    <g id="text_33">
+     <!-- gem5 crashed -->
+     <g transform="translate(280.705 68.331875)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-103"/>
+      <use x="63.476562" xlink:href="#DejaVuSans-101"/>
+      <use x="125" xlink:href="#DejaVuSans-109"/>
+      <use x="222.412109" xlink:href="#DejaVuSans-53"/>
+      <use x="286.035156" xlink:href="#DejaVuSans-32"/>
+      <use x="317.822266" xlink:href="#DejaVuSans-99"/>
+      <use x="372.802734" xlink:href="#DejaVuSans-114"/>
+      <use x="413.916016" xlink:href="#DejaVuSans-97"/>
+      <use x="475.195312" xlink:href="#DejaVuSans-115"/>
+      <use x="527.294922" xlink:href="#DejaVuSans-104"/>
+      <use x="590.673828" xlink:href="#DejaVuSans-101"/>
+      <use x="652.197266" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_121">
+     <path d="M 390.5875 50.718125 
+L 414.5875 50.718125 
+L 414.5875 42.318125 
+L 390.5875 42.318125 
+z
+" style="fill:#0000ff;"/>
+    </g>
+    <g id="text_34">
+     <!-- workload crashed -->
+     <g transform="translate(424.1875 50.718125)scale(0.12 -0.12)">
+      <defs>
+       <path d="M 4.203125 54.6875 
+L 13.1875 54.6875 
+L 24.421875 12.015625 
+L 35.59375 54.6875 
+L 46.1875 54.6875 
+L 57.421875 12.015625 
+L 68.609375 54.6875 
+L 77.59375 54.6875 
+L 63.28125 0 
+L 52.6875 0 
+L 40.921875 44.828125 
+L 29.109375 0 
+L 18.5 0 
+z
+" id="DejaVuSans-119"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-119"/>
+      <use x="81.787109" xlink:href="#DejaVuSans-111"/>
+      <use x="142.96875" xlink:href="#DejaVuSans-114"/>
+      <use x="184.082031" xlink:href="#DejaVuSans-107"/>
+      <use x="241.992188" xlink:href="#DejaVuSans-108"/>
+      <use x="269.775391" xlink:href="#DejaVuSans-111"/>
+      <use x="330.957031" xlink:href="#DejaVuSans-97"/>
+      <use x="392.236328" xlink:href="#DejaVuSans-100"/>
+      <use x="455.712891" xlink:href="#DejaVuSans-32"/>
+      <use x="487.5" xlink:href="#DejaVuSans-99"/>
+      <use x="542.480469" xlink:href="#DejaVuSans-114"/>
+      <use x="583.59375" xlink:href="#DejaVuSans-97"/>
+      <use x="644.873047" xlink:href="#DejaVuSans-115"/>
+      <use x="696.972656" xlink:href="#DejaVuSans-104"/>
+      <use x="760.351562" xlink:href="#DejaVuSans-101"/>
+      <use x="821.875" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_122">
+     <path d="M 390.5875 68.331875 
+L 414.5875 68.331875 
+L 414.5875 59.931875 
+L 390.5875 59.931875 
+z
+" style="fill:#ffff00;"/>
+    </g>
+    <g id="text_35">
+     <!-- timed out (10 hours) -->
+     <g transform="translate(424.1875 68.331875)scale(0.12 -0.12)">
+      <defs>
+       <path d="M 31 75.875 
+Q 24.46875 64.65625 21.28125 53.65625 
+Q 18.109375 42.671875 18.109375 31.390625 
+Q 18.109375 20.125 21.3125 9.0625 
+Q 24.515625 -2 31 -13.1875 
+L 23.1875 -13.1875 
+Q 15.875 -1.703125 12.234375 9.375 
+Q 8.59375 20.453125 8.59375 31.390625 
+Q 8.59375 42.28125 12.203125 53.3125 
+Q 15.828125 64.359375 23.1875 75.875 
+z
+" id="DejaVuSans-40"/>
+       <path d="M 31.78125 66.40625 
+Q 24.171875 66.40625 20.328125 58.90625 
+Q 16.5 51.421875 16.5 36.375 
+Q 16.5 21.390625 20.328125 13.890625 
+Q 24.171875 6.390625 31.78125 6.390625 
+Q 39.453125 6.390625 43.28125 13.890625 
+Q 47.125 21.390625 47.125 36.375 
+Q 47.125 51.421875 43.28125 58.90625 
+Q 39.453125 66.40625 31.78125 66.40625 
+z
+M 31.78125 74.21875 
+Q 44.046875 74.21875 50.515625 64.515625 
+Q 56.984375 54.828125 56.984375 36.375 
+Q 56.984375 17.96875 50.515625 8.265625 
+Q 44.046875 -1.421875 31.78125 -1.421875 
+Q 19.53125 -1.421875 13.0625 8.265625 
+Q 6.59375 17.96875 6.59375 36.375 
+Q 6.59375 54.828125 13.0625 64.515625 
+Q 19.53125 74.21875 31.78125 74.21875 
+z
+" id="DejaVuSans-48"/>
+       <path d="M 8.015625 75.875 
+L 15.828125 75.875 
+Q 23.140625 64.359375 26.78125 53.3125 
+Q 30.421875 42.28125 30.421875 31.390625 
+Q 30.421875 20.453125 26.78125 9.375 
+Q 23.140625 -1.703125 15.828125 -13.1875 
+L 8.015625 -13.1875 
+Q 14.5 -2 17.703125 9.0625 
+Q 20.90625 20.125 20.90625 31.390625 
+Q 20.90625 42.671875 17.703125 53.65625 
+Q 14.5 64.65625 8.015625 75.875 
+z
+" id="DejaVuSans-41"/>
+      </defs>
+      <use xlink:href="#DejaVuSans-116"/>
+      <use x="39.208984" xlink:href="#DejaVuSans-105"/>
+      <use x="66.992188" xlink:href="#DejaVuSans-109"/>
+      <use x="164.404297" xlink:href="#DejaVuSans-101"/>
+      <use x="225.927734" xlink:href="#DejaVuSans-100"/>
+      <use x="289.404297" xlink:href="#DejaVuSans-32"/>
+      <use x="321.191406" xlink:href="#DejaVuSans-111"/>
+      <use x="382.373047" xlink:href="#DejaVuSans-117"/>
+      <use x="445.751953" xlink:href="#DejaVuSans-116"/>
+      <use x="484.960938" xlink:href="#DejaVuSans-32"/>
+      <use x="516.748047" xlink:href="#DejaVuSans-40"/>
+      <use x="555.761719" xlink:href="#DejaVuSans-49"/>
+      <use x="619.384766" xlink:href="#DejaVuSans-48"/>
+      <use x="683.007812" xlink:href="#DejaVuSans-32"/>
+      <use x="714.794922" xlink:href="#DejaVuSans-104"/>
+      <use x="778.173828" xlink:href="#DejaVuSans-111"/>
+      <use x="839.355469" xlink:href="#DejaVuSans-117"/>
+      <use x="902.734375" xlink:href="#DejaVuSans-114"/>
+      <use x="943.847656" xlink:href="#DejaVuSans-115"/>
+      <use x="995.947266" xlink:href="#DejaVuSans-41"/>
+     </g>
+    </g>
+    <g id="patch_123">
+     <path d="M 572.38 50.718125 
+L 596.38 50.718125 
+L 596.38 42.318125 
+L 572.38 42.318125 
+z
+" style="fill:#ffa500;"/>
+    </g>
+    <g id="text_36">
+     <!-- kernel panic -->
+     <g transform="translate(605.98 50.718125)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-107"/>
+      <use x="54.285156" xlink:href="#DejaVuSans-101"/>
+      <use x="115.808594" xlink:href="#DejaVuSans-114"/>
+      <use x="155.171875" xlink:href="#DejaVuSans-110"/>
+      <use x="218.550781" xlink:href="#DejaVuSans-101"/>
+      <use x="280.074219" xlink:href="#DejaVuSans-108"/>
+      <use x="307.857422" xlink:href="#DejaVuSans-32"/>
+      <use x="339.644531" xlink:href="#DejaVuSans-112"/>
+      <use x="403.121094" xlink:href="#DejaVuSans-97"/>
+      <use x="464.400391" xlink:href="#DejaVuSans-110"/>
+      <use x="527.779297" xlink:href="#DejaVuSans-105"/>
+      <use x="555.5625" xlink:href="#DejaVuSans-99"/>
+     </g>
+    </g>
+    <g id="patch_124">
+     <path d="M 572.38 68.331875 
+L 596.38 68.331875 
+L 596.38 59.931875 
+L 572.38 59.931875 
+z
+" style="fill:#808080;"/>
+    </g>
+    <g id="text_37">
+     <!-- not supported -->
+     <g transform="translate(605.98 68.331875)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-110"/>
+      <use x="63.378906" xlink:href="#DejaVuSans-111"/>
+      <use x="124.560547" xlink:href="#DejaVuSans-116"/>
+      <use x="163.769531" xlink:href="#DejaVuSans-32"/>
+      <use x="195.556641" xlink:href="#DejaVuSans-115"/>
+      <use x="247.65625" xlink:href="#DejaVuSans-117"/>
+      <use x="311.035156" xlink:href="#DejaVuSans-112"/>
+      <use x="374.511719" xlink:href="#DejaVuSans-112"/>
+      <use x="437.988281" xlink:href="#DejaVuSans-111"/>
+      <use x="499.169922" xlink:href="#DejaVuSans-114"/>
+      <use x="540.283203" xlink:href="#DejaVuSans-116"/>
+      <use x="579.492188" xlink:href="#DejaVuSans-101"/>
+      <use x="641.015625" xlink:href="#DejaVuSans-100"/>
+     </g>
+    </g>
+    <g id="patch_125">
+     <path d="M 714.52 50.718125 
+L 738.52 50.718125 
+L 738.52 42.318125 
+L 714.52 42.318125 
+z
+" style="fill:url(#h66913a7079);"/>
+    </g>
+    <g id="text_38">
+     <!-- unknown -->
+     <g transform="translate(748.12 50.718125)scale(0.12 -0.12)">
+      <use xlink:href="#DejaVuSans-117"/>
+      <use x="63.378906" xlink:href="#DejaVuSans-110"/>
+      <use x="126.757812" xlink:href="#DejaVuSans-107"/>
+      <use x="184.667969" xlink:href="#DejaVuSans-110"/>
+      <use x="248.046875" xlink:href="#DejaVuSans-111"/>
+      <use x="309.228516" xlink:href="#DejaVuSans-119"/>
+      <use x="391.015625" xlink:href="#DejaVuSans-110"/>
+     </g>
+    </g>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="p1f78705495">
+   <rect height="177.41868" width="800.65" x="124.55" y="30.8"/>
+  </clipPath>
+ </defs>
+ <defs>
+  <pattern height="72" id="h66913a7079" patternUnits="userSpaceOnUse" width="72" x="0" y="0">
+   <rect fill="#ffffff" height="73" width="73" x="0" y="0"/>
+   <path d="M -36 36 
+L 36 108 
+M -33 33 
+L 39 105 
+M -30 30 
+L 42 102 
+M -27 27 
+L 45 99 
+M -24 24 
+L 48 96 
+M -21 21 
+L 51 93 
+M -18 18 
+L 54 90 
+M -15 15 
+L 57 87 
+M -12 12 
+L 60 84 
+M -9 9 
+L 63 81 
+M -6 6 
+L 66 78 
+M -3 3 
+L 69 75 
+M 0 0 
+L 72 72 
+M 3 -3 
+L 75 69 
+M 6 -6 
+L 78 66 
+M 9 -9 
+L 81 63 
+M 12 -12 
+L 84 60 
+M 15 -15 
+L 87 57 
+M 18 -18 
+L 90 54 
+M 21 -21 
+L 93 51 
+M 24 -24 
+L 96 48 
+M 27 -27 
+L 99 45 
+M 30 -30 
+L 102 42 
+M 33 -33 
+L 105 39 
+M 36 -36 
+L 108 36 
+" style="fill:#000000;stroke:#000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-width:1.0;"/>
+  </pattern>
+ </defs>
+</svg>
diff --git a/assets/img/gem5art/boot_exit_MI_example_systemd.svg b/assets/img/gem5art/boot_exit_MI_example_systemd.svg
new file mode 100644
index 0000000..ac3b5d6
--- /dev/null
+++ b/assets/img/gem5art/boot_exit_MI_example_systemd.svg
@@ -0,0 +1,2898 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Created with matplotlib (https://matplotlib.org/) -->
+<svg height="288pt" version="1.1" viewBox="0 0 936 288" width="936pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+  <rdf:RDF xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+   <cc:Work>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:date>2020-10-10T15:39:33.486142</dc:date>
+    <dc:format>image/svg+xml</dc:format>
+    <dc:creator>
+     <cc:Agent>
+      <dc:title>Matplotlib v3.3.2, https://matplotlib.org/</dc:title>
+     </cc:Agent>
+    </dc:creator>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <defs>
+  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="patch_1">
+   <path d="M 0 288 
+L 936 288 
+L 936 0 
+L 0 0 
+z
+" style="fill:none;"/>
+  </g>
+  <g id="axes_1">
+   <g id="patch_2">
+    <path d="M 124.55 208.21868 
+L 925.2 208.21868 
+L 925.2 30.8 
+L 124.55 30.8 
+z
+" style="fill:#ffffff;"/>
+   </g>
+   <g id="patch_3">
+    <path clip-path="url(#p0b019666c7)" d="M 108.537 208.21868 
+L 140.563 208.21868 
+L 140.563 180.923498 
+L 108.537 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_4">
+    <path clip-path="url(#p0b019666c7)" d="M 140.563 208.21868 
+L 172.589 208.21868 
+L 172.589 180.923498 
+L 140.563 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_5">
+    <path clip-path="url(#p0b019666c7)" d="M 172.589 208.21868 
+L 204.615 208.21868 
+L 204.615 180.923498 
+L 172.589 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_6">
+    <path clip-path="url(#p0b019666c7)" d="M 204.615 208.21868 
+L 236.641 208.21868 
+L 236.641 180.923498 
+L 204.615 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_7">
+    <path clip-path="url(#p0b019666c7)" d="M 236.641 208.21868 
+L 268.667 208.21868 
+L 268.667 180.923498 
+L 236.641 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_8">
+    <path clip-path="url(#p0b019666c7)" d="M 268.667 208.21868 
+L 300.693 208.21868 
+L 300.693 180.923498 
+L 268.667 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_9">
+    <path clip-path="url(#p0b019666c7)" d="M 300.693 208.21868 
+L 332.719 208.21868 
+L 332.719 180.923498 
+L 300.693 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_10">
+    <path clip-path="url(#p0b019666c7)" d="M 332.719 208.21868 
+L 364.745 208.21868 
+L 364.745 180.923498 
+L 332.719 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_11">
+    <path clip-path="url(#p0b019666c7)" d="M 364.745 208.21868 
+L 396.771 208.21868 
+L 396.771 180.923498 
+L 364.745 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_12">
+    <path clip-path="url(#p0b019666c7)" d="M 396.771 208.21868 
+L 428.797 208.21868 
+L 428.797 180.923498 
+L 396.771 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_13">
+    <path clip-path="url(#p0b019666c7)" d="M 428.797 208.21868 
+L 460.823 208.21868 
+L 460.823 180.923498 
+L 428.797 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_14">
+    <path clip-path="url(#p0b019666c7)" d="M 460.823 208.21868 
+L 492.849 208.21868 
+L 492.849 180.923498 
+L 460.823 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_15">
+    <path clip-path="url(#p0b019666c7)" d="M 492.849 208.21868 
+L 524.875 208.21868 
+L 524.875 180.923498 
+L 492.849 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_16">
+    <path clip-path="url(#p0b019666c7)" d="M 524.875 208.21868 
+L 556.901 208.21868 
+L 556.901 180.923498 
+L 524.875 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_17">
+    <path clip-path="url(#p0b019666c7)" d="M 556.901 208.21868 
+L 588.927 208.21868 
+L 588.927 180.923498 
+L 556.901 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_18">
+    <path clip-path="url(#p0b019666c7)" d="M 588.927 208.21868 
+L 620.953 208.21868 
+L 620.953 180.923498 
+L 588.927 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_19">
+    <path clip-path="url(#p0b019666c7)" d="M 620.953 208.21868 
+L 652.979 208.21868 
+L 652.979 180.923498 
+L 620.953 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_20">
+    <path clip-path="url(#p0b019666c7)" d="M 652.979 208.21868 
+L 685.005 208.21868 
+L 685.005 180.923498 
+L 652.979 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_21">
+    <path clip-path="url(#p0b019666c7)" d="M 685.005 208.21868 
+L 717.031 208.21868 
+L 717.031 180.923498 
+L 685.005 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_22">
+    <path clip-path="url(#p0b019666c7)" d="M 717.031 208.21868 
+L 749.057 208.21868 
+L 749.057 180.923498 
+L 717.031 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_23">
+    <path clip-path="url(#p0b019666c7)" d="M 749.057 208.21868 
+L 781.083 208.21868 
+L 781.083 180.923498 
+L 749.057 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_24">
+    <path clip-path="url(#p0b019666c7)" d="M 781.083 208.21868 
+L 813.109 208.21868 
+L 813.109 180.923498 
+L 781.083 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_25">
+    <path clip-path="url(#p0b019666c7)" d="M 813.109 208.21868 
+L 845.135 208.21868 
+L 845.135 180.923498 
+L 813.109 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_26">
+    <path clip-path="url(#p0b019666c7)" d="M 845.135 208.21868 
+L 877.161 208.21868 
+L 877.161 180.923498 
+L 845.135 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_27">
+    <path clip-path="url(#p0b019666c7)" d="M 877.161 208.21868 
+L 909.187 208.21868 
+L 909.187 180.923498 
+L 877.161 180.923498 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_28">
+    <path clip-path="url(#p0b019666c7)" d="M 909.187 208.21868 
+L 941.213 208.21868 
+L 941.213 180.923498 
+L 909.187 180.923498 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_29">
+    <path clip-path="url(#p0b019666c7)" d="M 108.537 180.923498 
+L 140.563 180.923498 
+L 140.563 153.628317 
+L 108.537 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_30">
+    <path clip-path="url(#p0b019666c7)" d="M 140.563 180.923498 
+L 172.589 180.923498 
+L 172.589 153.628317 
+L 140.563 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_31">
+    <path clip-path="url(#p0b019666c7)" d="M 172.589 180.923498 
+L 204.615 180.923498 
+L 204.615 153.628317 
+L 172.589 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_32">
+    <path clip-path="url(#p0b019666c7)" d="M 204.615 180.923498 
+L 236.641 180.923498 
+L 236.641 153.628317 
+L 204.615 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_33">
+    <path clip-path="url(#p0b019666c7)" d="M 236.641 180.923498 
+L 268.667 180.923498 
+L 268.667 153.628317 
+L 236.641 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_34">
+    <path clip-path="url(#p0b019666c7)" d="M 268.667 180.923498 
+L 300.693 180.923498 
+L 300.693 153.628317 
+L 268.667 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_35">
+    <path clip-path="url(#p0b019666c7)" d="M 300.693 180.923498 
+L 332.719 180.923498 
+L 332.719 153.628317 
+L 300.693 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_36">
+    <path clip-path="url(#p0b019666c7)" d="M 332.719 180.923498 
+L 364.745 180.923498 
+L 364.745 153.628317 
+L 332.719 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_37">
+    <path clip-path="url(#p0b019666c7)" d="M 364.745 180.923498 
+L 396.771 180.923498 
+L 396.771 153.628317 
+L 364.745 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_38">
+    <path clip-path="url(#p0b019666c7)" d="M 396.771 180.923498 
+L 428.797 180.923498 
+L 428.797 153.628317 
+L 396.771 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_39">
+    <path clip-path="url(#p0b019666c7)" d="M 428.797 180.923498 
+L 460.823 180.923498 
+L 460.823 153.628317 
+L 428.797 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_40">
+    <path clip-path="url(#p0b019666c7)" d="M 460.823 180.923498 
+L 492.849 180.923498 
+L 492.849 153.628317 
+L 460.823 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_41">
+    <path clip-path="url(#p0b019666c7)" d="M 492.849 180.923498 
+L 524.875 180.923498 
+L 524.875 153.628317 
+L 492.849 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_42">
+    <path clip-path="url(#p0b019666c7)" d="M 524.875 180.923498 
+L 556.901 180.923498 
+L 556.901 153.628317 
+L 524.875 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_43">
+    <path clip-path="url(#p0b019666c7)" d="M 556.901 180.923498 
+L 588.927 180.923498 
+L 588.927 153.628317 
+L 556.901 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_44">
+    <path clip-path="url(#p0b019666c7)" d="M 588.927 180.923498 
+L 620.953 180.923498 
+L 620.953 153.628317 
+L 588.927 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_45">
+    <path clip-path="url(#p0b019666c7)" d="M 620.953 180.923498 
+L 652.979 180.923498 
+L 652.979 153.628317 
+L 620.953 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_46">
+    <path clip-path="url(#p0b019666c7)" d="M 652.979 180.923498 
+L 685.005 180.923498 
+L 685.005 153.628317 
+L 652.979 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_47">
+    <path clip-path="url(#p0b019666c7)" d="M 685.005 180.923498 
+L 717.031 180.923498 
+L 717.031 153.628317 
+L 685.005 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_48">
+    <path clip-path="url(#p0b019666c7)" d="M 717.031 180.923498 
+L 749.057 180.923498 
+L 749.057 153.628317 
+L 717.031 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_49">
+    <path clip-path="url(#p0b019666c7)" d="M 749.057 180.923498 
+L 781.083 180.923498 
+L 781.083 153.628317 
+L 749.057 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_50">
+    <path clip-path="url(#p0b019666c7)" d="M 781.083 180.923498 
+L 813.109 180.923498 
+L 813.109 153.628317 
+L 781.083 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_51">
+    <path clip-path="url(#p0b019666c7)" d="M 813.109 180.923498 
+L 845.135 180.923498 
+L 845.135 153.628317 
+L 813.109 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_52">
+    <path clip-path="url(#p0b019666c7)" d="M 845.135 180.923498 
+L 877.161 180.923498 
+L 877.161 153.628317 
+L 845.135 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_53">
+    <path clip-path="url(#p0b019666c7)" d="M 877.161 180.923498 
+L 909.187 180.923498 
+L 909.187 153.628317 
+L 877.161 153.628317 
+z
+" style="fill:#808080;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_54">
+    <path clip-path="url(#p0b019666c7)" d="M 909.187 180.923498 
+L 941.213 180.923498 
+L 941.213 153.628317 
+L 909.187 153.628317 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_55">
+    <path clip-path="url(#p0b019666c7)" d="M 108.537 153.628317 
+L 140.563 153.628317 
+L 140.563 126.333135 
+L 108.537 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_56">
+    <path clip-path="url(#p0b019666c7)" d="M 140.563 153.628317 
+L 172.589 153.628317 
+L 172.589 126.333135 
+L 140.563 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_57">
+    <path clip-path="url(#p0b019666c7)" d="M 172.589 153.628317 
+L 204.615 153.628317 
+L 204.615 126.333135 
+L 172.589 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_58">
+    <path clip-path="url(#p0b019666c7)" d="M 204.615 153.628317 
+L 236.641 153.628317 
+L 236.641 126.333135 
+L 204.615 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_59">
+    <path clip-path="url(#p0b019666c7)" d="M 236.641 153.628317 
+L 268.667 153.628317 
+L 268.667 126.333135 
+L 236.641 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_60">
+    <path clip-path="url(#p0b019666c7)" d="M 268.667 153.628317 
+L 300.693 153.628317 
+L 300.693 126.333135 
+L 268.667 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_61">
+    <path clip-path="url(#p0b019666c7)" d="M 300.693 153.628317 
+L 332.719 153.628317 
+L 332.719 126.333135 
+L 300.693 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_62">
+    <path clip-path="url(#p0b019666c7)" d="M 332.719 153.628317 
+L 364.745 153.628317 
+L 364.745 126.333135 
+L 332.719 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_63">
+    <path clip-path="url(#p0b019666c7)" d="M 364.745 153.628317 
+L 396.771 153.628317 
+L 396.771 126.333135 
+L 364.745 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_64">
+    <path clip-path="url(#p0b019666c7)" d="M 396.771 153.628317 
+L 428.797 153.628317 
+L 428.797 126.333135 
+L 396.771 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_65">
+    <path clip-path="url(#p0b019666c7)" d="M 428.797 153.628317 
+L 460.823 153.628317 
+L 460.823 126.333135 
+L 428.797 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_66">
+    <path clip-path="url(#p0b019666c7)" d="M 460.823 153.628317 
+L 492.849 153.628317 
+L 492.849 126.333135 
+L 460.823 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_67">
+    <path clip-path="url(#p0b019666c7)" d="M 492.849 153.628317 
+L 524.875 153.628317 
+L 524.875 126.333135 
+L 492.849 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_68">
+    <path clip-path="url(#p0b019666c7)" d="M 524.875 153.628317 
+L 556.901 153.628317 
+L 556.901 126.333135 
+L 524.875 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_69">
+    <path clip-path="url(#p0b019666c7)" d="M 556.901 153.628317 
+L 588.927 153.628317 
+L 588.927 126.333135 
+L 556.901 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_70">
+    <path clip-path="url(#p0b019666c7)" d="M 588.927 153.628317 
+L 620.953 153.628317 
+L 620.953 126.333135 
+L 588.927 126.333135 
+z
+" style="fill:#ffffff;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_71">
+    <path clip-path="url(#p0b019666c7)" d="M 620.953 153.628317 
+L 652.979 153.628317 
+L 652.979 126.333135 
+L 620.953 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_72">
+    <path clip-path="url(#p0b019666c7)" d="M 652.979 153.628317 
+L 685.005 153.628317 
+L 685.005 126.333135 
+L 652.979 126.333135 
+z
+" style="fill:#008000;stroke:#ffffff;stroke-linejoin:miter;"/>
+   </g>
+   <g id="patch_73">
+    <path clip-path="url(#p0b019666c7)" d=&qu