我在错误地使用命令后遇到了一些系统减速事件1,所以我想我可以使用桌面“小部件”来直观地显示服务质量或者至少显示 QoS 何时下降并获得一些及时的反馈。我们有这种天生的能力来感知图像序列回放中的退化,所以我想利用这一点。因此我选择了一个 mp4 视频序列2并用其中的一部分制作了一个 .gif 文件ffmpeg
:
ffmpeg -i snf.mp4 -ss 00:01:24.0 -t 00:00:04.03 -s qcif -qscale:v 10 -an output.gif
所以这将是邮票尺寸质量标准(176x144) gif 图像。在此示例中,我提取了从 1:24 开始的约 4.03 秒到序列中。生成 1.3MiB 文件。然后我animate
:
animate -borderwidth 0 output.gif &
然后我在平铺窗口管理器中“浮动”那个小窗口,并将其放在方便的地方。序列循环,如果您单击图像,您会得到一个 imagemagick“展示”-就像菜单一样(漂亮)自动反转选项...因此剪辑播放 4 秒,然后来回播放!
我想也许我可以开始这个ionice -c 2 -n 0
(但这里真的不能有 i/o)或 renice 它,renice -n -10
但我无法接受如何将它“公开”到“加载”,以便它成为如果经济放缓,首先受到影响的是。据我了解,如果执行得太好,它应该一直受到影响,但这与系统速度减慢无关,只是与“碰撞”有关。如果它一点都不好,那么它就不必面临任何放缓,除非是在最可怕的情况下,而这将违背目的。
如何设置我的命令受到影响优先(而不是有或没有执行优先权)桌面上的其他程序,以便充当 QoS 小部件?或者这只是被误导了,因为负载平衡就是这样启发式我不会使用这样的东西吗?
ps aux
规格输出animate
:
14454 0.3 2.9 228232 118768 pts/5 Sl 05:06 2:36 animate -borderwidth 0 test2.gif
1. 我使用convert
(图像魔术师),它最终耗尽了系统资源并自行终止 - 我认为我正在做一些合法的事情,所以我放弃了它。在那段时间里,我发现我的系统随着负载的增加而变慢; windows 不刷新,htop 似乎冻结,磁盘使用频繁,鼠标指针不稳定。当系统变得缓慢时,我注意到观察指针的移动可以说给了我一种减速的良好“感觉”。我发现,比查看状态栏 (i3) 中的负载指示器达到 7-8 更重要的是。一般来说对于实时监控和信息我用htop
和i3 status
吧。但我也对不同类型的系统反馈感兴趣。
2. 为了帮助提高我的感知能力,我选择了一个舞蹈片段。前段时间我在youtube上看到了这段著名的舞蹈片段周六夜狂热(Bee Gees - “你应该跳舞”)和M·约翰·特拉沃尔塔占领整个舞池。他的标志性动作很有节奏,灯光以可辨别的模式跳动。
答案1
我希望你知道已经有一个很多系统监控小部件。但不管怎么说:
注意:根据您的设置,可能有视频专用的硬件路径。所以这可能并不真正需要任何 CPU 时间。但是虽然 ffmpeg 可能会使用它,但 animate 可能不会。
注意:要使动画明显减慢,可能需要使用大量的 CPU 时间。这将使 CPU 使用更多电量并运行得更热。如果您有动态风扇速度,它会让您的机器声音更大。
第一的,积极的到nice的数字优先级较低,因此您需要使用19(最低优先级)。其次,实际上有一个更好的选择:您可以更改调度策略,至少在 Linux 上是这样。有一个schedtool
程序可以做到这一点(或者你可以sched_setscheduler
在 C 中使用)。如果您将策略设置为SCHED_IDLE
,则其优先级甚至比 Niceness 19 还要低。
另请注意,如果您的其他进程超出了记忆(即,您的系统正在崩溃),那么您的动画可能不会首先注意到,因为它不请求内存。 OTOH,交换活动监视器会很快发现这一点。
最后,有几种方法可以防止失控程序导致系统无法使用:设置 ulimit 以防止过度使用资源,或者使用 ulatencyd 之类的工具通过 cgroup 自动限制它们。