Browse Source

Impose Memory Limit on Test Containers (#4494)

* Impose Memory Limit on Test Containers

* mem_limit needs to be int
Nate 6 years ago
parent
commit
14e19d782c
2 changed files with 6 additions and 1 deletions
  1. 1 1
      Dockerfile
  2. 5 0
      toolset/utils/docker_helper.py

+ 1 - 1
Dockerfile

@@ -14,7 +14,7 @@ RUN apt -qqy install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--
   libmysqlclient-dev            `# Needed for MySQL-python` \
   libmysqlclient-dev            `# Needed for MySQL-python` \
   libpq-dev                     `# Needed for psycopg2`
   libpq-dev                     `# Needed for psycopg2`
 
 
-RUN pip install colorama==0.3.1 requests MySQL-python psycopg2-binary pymongo docker==3.5.0
+RUN pip install colorama==0.3.1 requests MySQL-python psycopg2-binary pymongo docker==3.5.0 psutil
 
 
 ENV PYTHONPATH /FrameworkBenchmarks
 ENV PYTHONPATH /FrameworkBenchmarks
 ENV FWROOT /FrameworkBenchmarks
 ENV FWROOT /FrameworkBenchmarks

+ 5 - 0
toolset/utils/docker_helper.py

@@ -11,6 +11,10 @@ from colorama import Fore, Style
 from toolset.utils.output_helper import log
 from toolset.utils.output_helper import log
 from toolset.utils.database_helper import test_database
 from toolset.utils.database_helper import test_database
 
 
+from psutil import virtual_memory
+
+# total memory limit allocated for the test container
+mem_limit = int(round(virtual_memory().total * .95))
 
 
 class DockerHelper:
 class DockerHelper:
     def __init__(self, benchmarker=None):
     def __init__(self, benchmarker=None):
@@ -189,6 +193,7 @@ class DockerHelper:
                 extra_hosts=extra_hosts,
                 extra_hosts=extra_hosts,
                 privileged=True,
                 privileged=True,
                 ulimits=ulimit,
                 ulimits=ulimit,
+                mem_limit=mem_limit,
                 sysctls=sysctl,
                 sysctls=sysctl,
                 remove=True,
                 remove=True,
                 log_config={'type': None})
                 log_config={'type': None})