1. 程式人生 > >繪制應用程序內存占用隨時間變化的圖像顯示

繪制應用程序內存占用隨時間變化的圖像顯示

com cond otl () fig 打印 numpy 入參 進行

繪制應用程序內存占用隨時間變化的圖像分為幾個操作,這些操作,應該可以更加自動化,我這裏,使用幾個階段的方式,使用者可以自由發揮。

1. 使用top記錄一個應用程序占用信息隨時間變化的文件

top -b | stdbuf -oL grep firefox > 1.txt

說明:上述命令,可以改變top的輸入參數,例如使用-d來修改打印的間隔。

2. 簡單使用awk輸出VIRT列的輸出到另外一個文件中

awk ‘{print $5 > "2.txt"}‘ 1.txt

3. 使用matplotlib簡單進行繪制,這裏使用gnuplot應該也完全可以,由於我之前略微學過一點深度學習,接觸了一點matplotlib,所以這裏就使用matplotlib的簡單指令了。

import matplotlib.pyplot as plt
import numpy as np
import fileinput

ipt = np.array([], order=C)
with fileinput.input(files=(/home/XXX/2.txt)) as f:
    for line in f:
        ipt = np.append(ipt, line)

plt.figure(figsize=(20, 10))   # 修改圖像大小
plt.plot(ipt)
plt.ylabel("VIRT")
plt.show()    

我是使用的anaconda的jupyter進行繪制的,顯示效果如下:

技術分享圖片

這裏顯示的是我的firefox的VIRT隨著時間變化的曲線。縱坐標可以通過上面代碼中的註釋進行調整。這個功能,可以用於調試應用,使用top記錄下待測試應用內存隨時間變化的曲線,然後,可以根據圖像判斷,是否存在內存泄露。對於mysql一類的調優,這個也是很好的輔助方法,我之所有有這個嘗試,就是從看《高性能mysql》那本書得到的啟發。當然,使用的方法比較簡陋,如果有什麽好的提議,多謝提出。

繪制應用程序內存占用隨時間變化的圖像顯示