介绍:
我一直想写有关docker和CFS (完全公平的调度程序)的信息已有很长时间了,但是我一直在忙于工作等。
我将使用Docker来限制进程的cpu使用率,我们将探究我们需要什么样的指标来解决配置不足的应用程序,我们将使用fceux和mario
CFS(计划程序):
CFS已经成为Linux内核的默认调度程序已有一段时间了,这并不是要深入解释它,但是有很多有趣的数据,特别是有关医疗领域的主要开发人员的信息。那。
计划周期以cpu.cfs_period_us表示, 实际上是一个以微秒为单位的时间单位,您可以将其称为ac pupu周期的长度,但重要的是
它可以做的更长或更短。 没有cpu.cfs_quota_us的话,时间就不算什么了,例如,如果我们不节流或不做任何事情,那占时间的意义何在 ?
在以下示例中,给定进程A已配置了:
cpu.cfs_period_us = 100
cpu.cfs_quota_us = 200
这看似令人困惑,但每个cpu (核心,如操作系统所示)的Perodd帐户,意味着该配置将允许进程A“突发”并运行2个周期(每个cpu 1个)而不会受到限制。
Docker限制:
因此,以上都是理论,实际上,您可以通过使用一些标志来实现相同的目的,例如:
docker run -ti --cpu-period=50000 --cpu-quota=1000 alpine sh
这将创建一个新的cgroup叶子,这是您可以找到它的方法:
有了容器ID,我们将转到特定的cgroup叶子:
这里有很多非常有趣的东西,但是我们将重点放在cpu.stat上,它看起来像这样:
nr_periods 51
nr_throttled 45
throttled_time 2313838319
基本上,这意味着我们已经运行了51个周期,节流了45个节流阀,节流时间为2313838319 us。
例如,在对要进行Docker化的应用程序进行性能分析时,这非常有用,调整限制指标应可将您带到一个不会使您的流程受到太多限制的水平。
还有马里奥?
我要选择一个可以让我以图形方式显示此过程的过程,而不是一个用Python脚本查找素数或类似内容的过程,因此Mario是:
马里奥时期= 50000配额= 1000 [[〜7 FPS]](几乎100%节流)
docker run -ti — cpu-period= 50000 — cpu-quota= 1000 -e DISPLAY=$DISPLAY -v /home/jgarcia/Projects/games/games/:/games -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/dbus/:/run/dbus/ — privileged 352b46a178cb
结果:
nr_periods 411
nr_throttled 385
throttled_time 22032678629
马里奥时期= 50000配额= 2000 [[〜15 FPS]](仍然很差。)
docker run -ti --cpu-period= 50000 --cpu-quota= 2000 -e DISPLAY=$DISPLAY -v /home/jgarcia/Projects/games/games/:/games -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/dbus/:/run/dbus/ --p
rivileged 352b46a178cb
结果:
nr_periods 419
nr_throttled 397
throttled_time 18784846882
马里奥时期= 50000配额= 5000 [[〜40 FPS]](非常好)
docker run -ti --cpu-period= 50000 --cpu-quota= 5000 -e DISPLAY=$DISPLAY -v /home/jgarcia/Projects/games/games/:/games -v /tmp/.X11-unix:/tmp/.X11-unix -v /run/dbus/:/run/dbus/ --privileged 352b46a178cb
结果:
nr_periods 385
nr_throttled 32
throttled_time 992353904
Mario的运行配额减少了[[〜62 FPS]](完美!)
狂跑!!
nr_periods 0
nr_throttled 0
throttled_time 0
结束语:
我并不是提倡运行无限的mario,而只是想展示实际获取以前很难收集的一些数据并对其进行细微调整的难易程度。
对不起,我会做的GIF大小。
From: https://hackernoon.com/docker-quotas-and-mario-bros-706aad98ba72