極客時間-linux性能優化 27 爲什麼我的磁盤IO延遲很高?

看到實驗內容時,我會心一笑,感覺還是上次的流程

pidstat查找到導致io性能的進程號

然後strace查看到讀寫文件的系統調用write

然後查看源代碼就能定位到源代碼行數

然後,我就被打臉了,啪啪啪的

iostat 已經證明磁盤 I/O有性能瓶頸,而 pidstat 也證明了某個進程引起的,但 strace 跟蹤這個進程,卻沒有找到任何 write 系統調用。

 

新工具filetop

基於Linux內核的eBpf機制,主要跟蹤內核中文件的讀寫情況,並輸出線程id,讀寫大小,讀寫類型以及文件名稱等。

通過filetop輸出查找到可疑的線程

ps -efT | grep 514

 

新工具opensnoop

同樣屬於bcc軟件包,可以動態跟蹤內核中的open系統調用。這樣,就可以找出這些txt文件的路徑。

 

這時我們已經能初步定爲到問題了,案例會動態生成一批文件,用來臨時存儲數據,用完會刪除它們。但不幸的是,正是這些文件讀寫,引起了IO的性能瓶頸,導致了整個處理過程非常慢。

 

如何來驗證這個猜想呢?當然是查看源代碼了,哈哈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章