Skip to main content

The small Python library to read resources available for Linux OS container.

Project description

Python package pypi versions license

Overview

The simple library to gather CPU and memory resource limits from within OS Container bases on Linux.

Install

pip install oscontainer

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()

# Check if current process runs inside container
if container.is_containerized():
    # 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()
else:
    print("No Container support detected")

For extra metrics available see OSContainer.

Run in Docker from source code

To run library in the test container you need to build the docker image and run it as container.

Checkout the repository.

git clone git@github.com:yaricom/oscontainer.git

Build local image with oscontainer name.

cd oscontainer

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): 8413184
--------------------------
 > CPU:
--------------------------
               quota: 50000
              period: 100000
              shares: -1
         cpuset cpus: 0-2
==========================
System information:
==========================
multiprocessing.cpu_count: 3
     process cpu affinity: {0, 1, 2}
==========================

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oscontainer-1.0.2.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

oscontainer-1.0.2-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file oscontainer-1.0.2.tar.gz.

File metadata

  • Download URL: oscontainer-1.0.2.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for oscontainer-1.0.2.tar.gz
Algorithm Hash digest
SHA256 1a728d162df678243c8fad3e46c4596edbc2cd492ca291cb26c494c775fc3c2c
MD5 39b285041cfdafa239d86459111315a9
BLAKE2b-256 1cf1ee139eac72347231c843b1dbb749c871eabfe1853060a2329067601c39bb

See more details on using hashes here.

File details

Details for the file oscontainer-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: oscontainer-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.10.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for oscontainer-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cc28c4037583b6e30dfb1eeff43563d80e9a2706270de3fac812f5b368b291a0
MD5 f0167200fd971535781acf8c937e0134
BLAKE2b-256 54b45b82322aafe1f38a00ebca70ce4c95d964c212a76f42739f49e289d80100

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page