Quantcast
Channel: Robin on Linux
Viewing all articles
Browse latest Browse all 236

How to get the number of CPU cores inside a container

$
0
0

We usually use the below Python code to get CPU cores:

from multiprocessing import cpu_count

print("CPU cores:", cpu_count())

But when the snippet running inside a docker container, it will just return the number of CPU cores for the physical machine the container runs on, not the actually --cpus (for docker) or CPU limit (for Kubernetes).

Then, how could we get the CPU cores set by docker argument or Kubernetes configuration for this container?

The only answer I could find is here. And the corresponding Python code written by me is:

def get_cpu_limit():
  with open("/sys/fs/cgroup/cpu/cpu.cfs_quota_us") as fp:
    cfs_quota_us = int(fp.read())
    
  with open("/sys/fs/cgroup/cpu/cpu.cfs_period_us") as fp:
    cfs_period_us = int(fp.read())

  container_cpus = cfs_quota_us // cfs_period_us

  # For physical machine, the `cfs_quota_us` could be '-1'
  cpus = cpu_count() if container_cpus < 1 else container_cpus

  return cpus

Viewing all articles
Browse latest Browse all 236

Trending Articles