如何使我的命令更容易受到系統減速的影響,以便將其用作桌面上的可視 QoS 小元件?
在錯誤地使用命令後,我遇到了一些系統減速事件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
所以這將是一個郵票大小的qcif (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
convert
1. 我使用( ImageMagick )發出了錯誤的命令,它最終耗盡了系統資源並自行終止 - 我以為我在做一些合法的事情,所以我放手了。在那段時間裡,我看到我的系統隨著負載的增加而變慢;Windows 不刷新,htop 似乎凍結,磁碟使用量大,滑鼠指針跳動。當系統開始爬行時,我注意到看著指針的移動給了我一種可以說減速的良好“感覺”。我發現比在我的狀態欄(i3)中查看負載指示器達到 7-8 更重要。一般來說,對於實時監控和我使用htop
的資訊和資訊i3 status
吧。但我也對不同類型的系統回饋感興趣。
- 為了提高我的感知能力,我選擇了一個舞蹈片段。前段時間,我在 youtube 上看到了這個來自*周六夜狂熱(Bee Gees - “你應該跳舞”)*的著名舞蹈片段,M. John Travolta佔據了整個舞池。他的標誌性動作很有節奏,燈光以可辨識的模式跳動。
我希望您知道已經有很多系統監控小元件。但無論如何:
注意:根據您的設置,可能有一個專用的影片硬體路徑。所以這可能並不需要任何 CPU 時間。但是,雖然 ffmpeg 可能會使用它,但 animate 可能不會。
注意:要讓您的動畫明顯變慢,它可能必須使用大量的 CPU 時間。這將使 CPU 使用更多電力並執行更熱。如果你有動態風扇速度,它會讓你的機器更響亮。
首先, nice 的正數優先級較低,因此您希望使用 19(最低優先級)。其次,實際上還有一個更好的選擇:您可以更改調度策略,至少在 Linux 上是這樣。據說有一個
schedtool
程序可以做到這一點(或者您可以sched_setscheduler
在 C 中使用)。如果您將策略設置為SCHED_IDLE
,則其優先級甚至低於 niceness 19。另請注意,如果您的其他程序記憶體不足(即,您的系統正在當機),那麼您的動畫可能不會首先註意到,因為它沒有請求記憶體。OTOH,交換活動監視器會很快發現這一點。
最後,有幾種方法可以防止失控的程序使您的系統無法使用:設置 ulimit 以防止過度使用資源,或使用 ulatencyd 之類的東西使用 cgroups 自動限制它們。