Overview
The simple library to gather CPU and memory resource limits from within OS Container bases on Linux.
Setup
Install dependencies
pip install --no-cache-dir -r requirements.txt
Usage in code
The library can be used to acquire current limits exposed to the container or process as following:
from oscontainer import OSContainer
# Get the container instance
container = OSContainer()
# Get active processors
cpus_count = container.active_processor_count()
# Get the limit of available memory for this process.
mem_limit = container.memory_limit_in_bytes()
For extra metrics available see OSContainer.
Run in Docker
To run library in the test container you need to build the docker image and run it as container.
Build local image with oscontainer
name.
docker build -f Dockerfile -t oscontainer .
Run the image we built within container with specific CPU limits set. For details about setting container resources limits with Docker, see: Runtime options with Memory, CPUs, and GPUs.
The following command will start container and open interactive shell:
docker run -it --cpus=".5" oscontainer /bin/bash
Now, execute main.py
script within shell to see resource constraints that was detected:
python main.py
This will produce the output like following:
OSContainer:
==========================
active processors: 1
container type: cgroup2
--------------------------
> MEMORY:
--------------------------
memory limit (bytes): -1
memory usage (bytes): 9908224
--------------------------
> CPU:
--------------------------
quota: 50000
period: 100000
shares: -1
cpuset cpus:
==========================