Give one app more
A service or a datastore can have its own limits, above or below the defaults of the server.
$ ferry update api --memory 1G --cpu 2Updated 'api'Resource limits apply to the next deploy or restart: ferry restart api$ ferry restart api# …$ ferry db update app-db --memory 2GUpdated datastore 'app-db': memory limit 2 GiBApplied to the running container (no restart).When the limits apply
| Limits of | They apply |
|---|---|
| A service | To each instance and each job run, from the next deploy or restart. |
| A datastore | Immediately, with no restart. |
--memory default and --cpu default go back to the defaults of the server.
Do not go below what a datastore uses
If you lower the memory of a datastore below what it uses, the kernel can stop it.
Other ways to set them
- Dashboard: the Resources section, in the Settings of a service and on the page of a datastore.
- Blueprint:
memoryLimitandcpuLimit, or theplanof Render. See the blueprint reference.
See also Resource limits, ferry update and ferry db update.
Ferry lowers the limit to the number of CPUs of the host. The deploy log has a warning: the CPU limit (8 CPUs) is more than the Docker host has: capped at 4 CPUs.
Some NAS and ARM kernels have no CPU CFS quotas (see CPU quota). rootless Docker has none without the delegation of the cgroup v2 cpu controller. Docker refuses CPU limits there.
Then Ferry sets no CPU limit. ferryd says so at startup. The deploy logs say the CPU limit (1 CPU) is not enforced: the Docker host's kernel has no CPU CFS quota support.