diff --git a/src/emuvim/dcemulator/net.py b/src/emuvim/dcemulator/net.py
index 80fb2f8..ff53773 100755
--- a/src/emuvim/dcemulator/net.py
+++ b/src/emuvim/dcemulator/net.py
@@ -62,13 +62,13 @@
         self.rm_registrar = ResourceModelRegistrar(
             dc_emulation_max_cpu, dc_emulation_max_mem)
 
-    def addDatacenter(self, label, metadata={}):
+    def addDatacenter(self, label, metadata={}, resource_log_path=None):
         """
         Create and add a logical cloud data center to the network.
         """
         if label in self.dcs:
             raise Exception("Data center label already exists: %s" % label)
-        dc = Datacenter(label, metadata=metadata)
+        dc = Datacenter(label, metadata=metadata, resource_log_path=resource_log_path)
         dc.net = self  # set reference to network
         self.dcs[label] = dc
         dc.create()  # finally create the data center in our Mininet instance
diff --git a/src/emuvim/dcemulator/node.py b/src/emuvim/dcemulator/node.py
index 7a7fa78..3f76df9 100755
--- a/src/emuvim/dcemulator/node.py
+++ b/src/emuvim/dcemulator/node.py
@@ -5,6 +5,8 @@
 from mininet.node import Docker
 from mininet.link import Link
 import logging
+import time
+import json
 
 LOG = logging.getLogger("dcemulator")
 LOG.setLevel(logging.DEBUG)
@@ -70,7 +72,7 @@
 
     DC_COUNTER = 1
 
-    def __init__(self, label, metadata={}):
+    def __init__(self, label, metadata={}, resource_log_path=None):
         self.net = None  # DCNetwork to which we belong
         # each node (DC) has a short internal name used by Mininet
         # this is caused by Mininets naming limitations for swtiches etc.
@@ -80,6 +82,8 @@
         self.label = label  
         # dict to store arbitrary metadata (e.g. latitude and longitude)
         self.metadata = metadata
+        # path to which resource information should be logged (e.g. for experiments). None = no logging
+        self.resource_log_path = resource_log_path
         # first prototype assumes one "bigswitch" per DC
         self.switch = None
         # keep track of running containers
@@ -183,6 +187,22 @@
             self.net.addLink(d, self.switch, params1=nw, cls=Link)
         # do bookkeeping
         self.containers[name] = d
+
+        # write resource log if a path is given
+        if self.resource_log_path is not None:
+            l = dict()
+            l["t"] = time.time()
+            l["name"] = name
+            l["compute"] = d.getStatus()
+            l["flavor_name"] = flavor_name
+            l["action"] = "allocate"
+            l["cpu_limit"] = cpu_limit
+            l["mem_limit"] = mem_limit
+            l["disk_limit"] = disk_limit
+            l["rm_state"] = None if self._resource_model is None else self._resource_model.get_state_dict()
+            # append to logfile
+            with open(self.resource_log_path, "a") as f:
+                f.write("%s\n" % json.dumps(l))
         return d  # we might use UUIDs for naming later on
 
     def stopCompute(self, name):
@@ -192,6 +212,7 @@
         assert name is not None
         if name not in self.containers:
             raise Exception("Container with name %s not found." % name)
+        LOG.debug("Stopping compute instance %r in data center %r" % (name, str(self)))
         self.net.removeLink(
             link=None, node1=self.containers[name], node2=self.switch)
         self.net.removeDocker("%s" % (name))
@@ -199,6 +220,21 @@
         # call resource model and free resources
         if self._resource_model is not None:
             self._resource_model.free(name)
+
+        # write resource log if a path is given
+        if self.resource_log_path is not None:
+            l = dict()
+            l["t"] = time.time()
+            l["name"] = name
+            l["flavor_name"] = None
+            l["action"] = "free"
+            l["cpu_limit"] = -1
+            l["mem_limit"] = -1
+            l["disk_limit"] = -1
+            l["rm_state"] = None if self._resource_model is None else self._resource_model.get_state_dict()
+            # append to logfile
+            with open(self.resource_log_path, "a") as f:
+                f.write("%s\n" % json.dumps(l))
         return True
 
     def listCompute(self):
diff --git a/src/emuvim/dcemulator/resourcemodel/__init__.py b/src/emuvim/dcemulator/resourcemodel/__init__.py
index e35da25..c28e226 100644
--- a/src/emuvim/dcemulator/resourcemodel/__init__.py
+++ b/src/emuvim/dcemulator/resourcemodel/__init__.py
@@ -87,15 +87,15 @@
         initialize some default flavours (naming/sizes inspired by OpenStack)
         """
         self.addFlavour(ResourceFlavor(
-            "tiny",  {"compute": 1, "memory": 32, "disk": 1}))
+            "tiny",  {"compute": 0.5, "memory": 32, "disk": 1}))
         self.addFlavour(ResourceFlavor(
-            "small",  {"compute": 4, "memory": 128, "disk": 20}))
+            "small",  {"compute": 1.0, "memory": 128, "disk": 20}))
         self.addFlavour(ResourceFlavor(
-            "medium",  {"compute": 8, "memory": 256, "disk": 40}))
+            "medium",  {"compute": 4.0, "memory": 256, "disk": 40}))
         self.addFlavour(ResourceFlavor(
-            "large",  {"compute": 16, "memory": 512, "disk": 80}))
+            "large",  {"compute": 8.0, "memory": 512, "disk": 80}))
         self.addFlavour(ResourceFlavor(
-            "xlarge",  {"compute": 32, "memory": 1024, "disk": 160}))
+            "xlarge",  {"compute": 16.0, "memory": 1024, "disk": 160}))
 
     def addFlavour(self, fl):
         """
@@ -127,3 +127,11 @@
         LOG.warning("Free in BaseResourceModel: %r" % name)
         del self.allocated_compute_instances[name]
         return True
+
+    def get_state_dict(self):
+        """
+        Return the state of the resource model as simple dict.
+        Helper method for logging functionality.
+        :return:
+        """
+        return dict()
diff --git a/src/emuvim/dcemulator/resourcemodel/upb/simple.py b/src/emuvim/dcemulator/resourcemodel/upb/simple.py
index 84aa7a9..8e96dba 100644
--- a/src/emuvim/dcemulator/resourcemodel/upb/simple.py
+++ b/src/emuvim/dcemulator/resourcemodel/upb/simple.py
@@ -59,6 +59,22 @@
         # we don't have to calculate anything special here in this simple model
         return True
 
+    def get_state_dict(self):
+        """
+        Return the state of the resource model as simple dict.
+        Helper method for logging functionality.
+        :return:
+        """
+        r = dict()
+        r["e_cpu"] = self.registrar.e_cpu
+        r["e_mem"] = self.registrar.e_mem
+        r["dc_max_cu"] = self.dc_max_cu
+        r["dc_max_mu"] = self.dc_max_mu
+        r["dc_alloc_cu"] = self.dc_alloc_cu
+        r["dc_alloc_mu"] = self.dc_alloc_mu
+        r["allocated_compute_instances"] = self.allocated_compute_instances
+        return r
+
     def _allocate_cpu(self, flavor):
         """
         Allocate CPU time.
