如何追蹤一些阻礙即時效能的週期性系統活動

如何追蹤一些阻礙即時效能的週期性系統活動

我在運行 64 位元 ubuntu-14.04 的兩台核心筆記型電腦上運行 Jack2 和 Pianoteq-5。由於低延遲要求,此類配置對即時效能非常敏感。起初,我聽到持續不斷的咔噠聲,當我調整 /etc/security/limits.conf 以啟用音訊組的 RR 功能時,這種咔噠聲基本上消失了。

現在 Jack 和 Pianoteq 都有 SCHED_FIFO 調度類別的執行緒。我可以使用大小為 128 個樣本的緩衝區來運行 jack,並且大多數時候它運行順利。我說「大多數」是因為每隔幾分鐘左右就會有東西破壞天堂。我聽到一連串可怕的爆裂聲。我懷疑這是後台啟動的一些高優先活動的結果。但要如何追查誰才是罪魁禍首呢?

答案1

這是一種方法。產生很多文件,但我想不出另一種方法來做到這一點。

假設您無法查看伺服器何時繁忙,則必須使用 sysstat 來擷取歷史資源資料。

第一種方法:使用 sysstat 每 5 分鐘收集一次統計資料(每天大約佔用 8mb)。您的 cron 條目看起來類似於 5 * * * * /usr/lib/sa/sa1
或 5 * * * * /usr/lib64/sa/sa1

sysstat 將保留最多一個月的資料。但您也可以隨時複製文件並將其存檔。

您可以使用“sar”命令來回顧歷史數據,以查看伺服器在什麼時間變得繁忙。

現在您的伺服器上已經有了歷史數據,您還需要捕獲進程輸出,以便您可以看到當時正在運行的內容。您可以為此使用“ps”或“top”

因此,每 5 分鐘您還可以捕獲 top 和 ps auxww 的輸出,以便您可以看到正在運行的所有進程。我會建立兩個子目錄“toparchive”和“psarchive”,然後將它們作為我的 cron 作業。

5 * * * * top -b -n 1 > /root/toparchive/top.`date +"%Y%m%d_%H%M%S"`

或者

5 * * * * ps auxww > /root/psarchive/ps.`date +"%Y%m%d_%H%M%S"`

(這將是許多文件,或者您可以編寫腳本,以便您有帶有日期戳記的其他子目錄,例如 /root/toparchive/20140701/)

但基本上觀察你的 sysstat,你可以找出你的伺服器何時變得繁忙,然後檢查你捕獲的相應的 top 或 ps 輸出,看看是什麼佔用了你的空間

如果進程佔用內存,您還可以使用“pmap”和“pgrep”來查看當前進程和實際內存使用情況。

相關內容