The Problem with CPUs and Kubernetes

Key Takeaway:

os .cpus() returns the number of cores on a Kubernetes host, not the number of cores assigned to a pod.

Investigating excessive memory usage

Recently, when I was looking through a cluster health dashboard for a Kubernetes cluster, I noticed that one of the applications deployed was using a considerable amount of RAM - way more than I thought could be reasonable. Each instance (pod) of the application used approximately 8 GB of RAM, which was definitely excessive for a reasonably simple NodeJS webserver. Combined with the application running 20-30 replicas or so, it makes the total RAM usage between 160 GB and 240 GB.

Read in full here:

This thread was posted by one of our members via one of our news source trackers.

1 Like

Corresponding tweet for this thread:

Share link for this tweet.

1 Like

Yeah the way CPU allocation works is it a relative CPU amounts, there’s both a minimum given (could access more if unused), as well as a max, but as this can change as the hardware is hotswapped among other things it can’t just overwrite what the cpu core count shown is as it can potentially change. Should always give the allowed thread count passed into the program, don’t try to calculate it based on something.