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}
==========================
Metadata
Release files for oscontainer 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| oscontainer-1.0.2.tar.gz | 16.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oscontainer-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 34.8 kB
Release files / oscontainer-1.0.2.tar.gz
| Download URL | oscontainer-1.0.2.tar.gz |
|---|---|
| Size | 16.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1a728d162df678243c8fad3e46c4596edbc2cd492ca291cb26c494c775fc3c2c
|
|
BLAKE2b-256 checksum How to use checksums |
1cf1ee139eac72347231c843b1dbb749c871eabfe1853060a2329067601c39bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / oscontainer-1.0.2-py3-none-any.whl
| Download URL | oscontainer-1.0.2-py3-none-any.whl |
|---|---|
| Size | 18.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cc28c4037583b6e30dfb1eeff43563d80e9a2706270de3fac812f5b368b291a0
|
|
BLAKE2b-256 checksum How to use checksums |
54b45b82322aafe1f38a00ebca70ce4c95d964c212a76f42739f49e289d80100
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for oscontainer 1.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.