Our services are not static. Swarm will reschedule them with each release, when a replica fails, when a node becomes unhealthy, or as a result of a myriad of other causes. We should do our best to provide Swarm as much information as we can. The better we describe our desired service state, the better will Swarm do its job.
We won't go into all the information we can provide through docker service create and docker service update commands. Instead, we'll concentrate on the --reserve-memory argument. Later on, you can apply similar logic to --reserve-cpu, --limit-cpu, --limit-memory, and other arguments.
We'll observe the memory metrics in Grafana and update our services accordingly.
Please click on the Memory Usage per Container (Stacked) graph in Grafana and choose View. You'll see a screen with a zoomed graph that displays the memory consumption...