Dashboard Metrics displays Dyno Load, measured as "1m Load Average" and "1m Load Max". The method of taking these measurements is explained on our Dev Center (https://devcenter.heroku.com/articles/metrics#dyno-load), but this does not illustrate what you should expect my application to run at.
Free, Hobby and Standard Dynos
Free, Hobby and Standard Dynos run on shared systems, and as such, you should aim to keep maximum Dyno load to within 0.5 and 1.0 to avoid any potential degradation of performance.
Performance Dynos are single-tenant, this means that your Dyno will have full access to the resources on the system. For Performance-M (Private-M) Dynos, you should aim to keep your maximum Dyno load to around 3.0. For Performance-L (Private-L) Dynos, you should aim to keep your maximum Dyno load to around 12.0.
Physical core count
You can obtain the number of physical cores on a machine by running
nproc in a
heroku run session and dividing the number by two:
$ heroku run nproc --size=performance-l 8
In this case performance-l dynos have
4 physical cores. The value of
8 since it includes hyperthreads.
Note: Physical CPU cores on non-performance dynos are shared across multiple applications and do not represent a dedicated resource to your application.