原創 宋寶華 Linux閱碼場 2017-10-29linux
LEP(LINUX EASY PROFILING) 是Linuxer之LEP項目組(Barry Song,Mac Xu,陳鬆等以及陳莉君教授/西郵Linux 3+1實驗室)正在致力於打造的一個開源項目,LEP項目組歡迎開源愛好者加入和參與。這是LEP文檔《LEP是什麼,爲何,怎麼辦》的第二部分。第一部分的連接爲:
宋寶華:LEP(Linux易用剖析器) 是什麼,爲何以及怎麼辦(1)git
本部分目錄以下:
6.LEP的下一步工做
6.1 架構改造
6.1.1 LEPV先後臺分離
6.1.2 數據保存和恢復支持
6.1.3 自定義被監控的數據
6.2 功能加強
6.2.1 高平均負載預警
6.2.2 負載不均衡預警
6.2.3 內存大戶提示與內存泄漏預警
6.2.4 基於CGroup和用戶自定義分羣的分析
6.2.5 I/O排隊預警和調度策略控制
6.2.6 Perf集成
6.2.7 雜項:查缺補漏和交互控制
6.3 CI和測試
6.4 文檔
7.LEP的人員與分工 web
其餘相關文章:
LEP與負載均衡—— 以PCDUINO實際案例來使用LEP提升網絡帶寬算法
6.1 架構改造
6.1.1 LEPV先後臺分離數據庫
目前的體系架構是由瀏覽器觸發LEPV與LEPD通訊而後開始採集數據的,下一步咱們要改造爲,經過web的後臺設置監控目標,咱們經過web後臺設置一個或者數個被監控的電路板/Linux服務器IP地址,即開始採集,然後瀏覽器只負責觀看監控數據,以下圖。
api
LEPV web服務器端,讀取採集到的數據並分析與保存到數據庫。而瀏覽器端,基於已經存在的數據,進行各類分析。
6.1.2 數據保存和恢復支持
在架構中的另一個考慮是,增長數據庫的支持,將採集到的數據,進行保存和恢復。以方便進行時空比對。
咱們能夠把某一時段的數據採樣出來,經過瀏覽器打開了分析。這樣,能夠回顧場景或者對比各次場景。
6.1.3 自定義被監控的數據
目前,一旦LEP開啓,進入瀏覽器就能夠得到全部的數據。將來,咱們應該提供勾選關注事件的能力,以便於LEP只監控它感興趣的數據。好比,用戶選擇了只關注內存,那麼別的界面就不要顯示了。瀏覽器
6.2 功能加強
6.2.1 高平均負載預警
以不一樣的顏色,標識系統裏面平均負載的高低。好比某段長期時間段裏面CPU load average明顯太高,咱們標識一段紅線區域。相似不一樣顏色的颱風或暴雨預警。
點擊預警的時間點時,可同步刷新當時的CPU利用率,IDLE,IRQ,SOFTIRQ等曲線。
6.2.2 負載不均衡預警
一旦檢測到多核下,負載不均衡,以算法分析後,進行提示。負載的不均衡主要體現爲2個方面:服務器
b7453000 44K r-x-- libnss_files-2.19.so b745e000 4K r---- libnss_files-2.19.so b745f000 4K rw--- libnss_files-2.19.so b7460000 40K r-x-- libnss_nis-2.19.so b746a000 4K r---- libnss_nis-2.19.so b746b000 4K rw--- libnss_nis-2.19.so b746c000 84K r-x-- libnsl-2.19.so b7481000 4K r---- libnsl-2.19.so b7482000 4K rw--- libnsl-2.19.so
此處咱們可否畫一個柱狀體:
網絡
同時,咱們要增長剖析slab和vmalloc的能力,並提醒用戶slab和vmalloc的泄漏。咱們也能夠顯示slabtop的內容:
6.2.4 基於CGroup和用戶自定義分羣的分析
可視圖顯示Linux的不一樣的CGroups,顯示每一個group的CPU佔用,內存佔用。也能夠對某個group的資源進行調配。架構
此外,也支持用戶經過瀏覽器拖曳手段,依據應用場景創建本身的分羣,把關注的進程,拖到自定義的分羣中。最後顯示這些自定義分羣的CPU、內存和I/O佔用狀況。
6.2.5 I/O排隊預警和調度策略控制
可以給出I/O排隊狀況的不一樣顏色的預警,提示硬盤的I/O訪問的劇烈程度與排隊等候狀況。
增長各個磁盤I/O調度策略的顯示和設置。讀取此類節點
/sys/block/sda/queue$cat scheduler
經過選擇框設置noop deadline cfq
在CFQ的狀況下,點擊一個進程,可選擇設置它的prio和調度策略。
6.2.6 Perf集成
Perf的功能有不少,目前咱們須要集成一些緊迫的功能。
能夠平滑的繪製系統的CPU,I/O分佈圖
相似執行perf sched record sleep 10
perf timechart
在進程列表上面,加一個run窗口,這樣能夠本身手動啓動一個進程;後面有一個單選框,決定是否進行cpu cycle和cache miss的perf跟蹤。
此部分相似perf top裏面進一步annotate一個函數的功能:
6.2.7 雜項:查缺補漏和交互控制
能夠給出系統裏面誰在耗電,歷史上CPU、外設處在各類狀態的時間比例。
每秒中斷、每秒軟中斷、每秒上下文切換、swapin、swapout等殘缺數據的採集和顯示。頻繁swap的場景提示匿名頁交換過於頻繁的不一樣顏色的預警。
Linux運行起來後,有不少的sysctl是經過/proc/來控制,不少sysctl的含義,用戶根本不懂。咱們能夠在瀏覽器上,直接展開目標的sysctl,而後把一些關鍵的設置的含義,告訴用戶。讓用戶知道本身的目標是什麼狀況。
好比:
overcommit_memory = 1, 暗示你的Linux老是僞裝系統有足夠多的內存 [點擊閱讀文檔…]
…
在進程的CPU利用率圖上,咱們能夠點擊右鍵,展開它的線程,甚或進一步控制線程的調度策略、優先級或者NICE值。
凡此種種,能夠想到不少,再也不一一列舉。在LEP的開發過程當中,小點逐步完善。
6.3 CI和測試
在git提交後,催生自動編譯和測試。測試環節要求能夠覆蓋到ARM32位、ARM64位、X86 32位和X86 64位的目標機。覆蓋到的內核版本包括
7.1整體參與人員
研發與測試由陳莉君教授組和LEP co-founder組共同負責,張國強負責總後勤與聯絡。
7.2 LEPV架構改成先後臺以及監控數據可配置
7.3 數據存儲與讀取、比對
7.4 基於CGroup和用戶自定義分羣的分析
7.5 LEP持續集成
一旦有人提交代碼,即激活自動編譯和測試。
7.6 LEP自動測試與案例
增長必要的測試case,保證LEP在各平臺,各內核版本的持續穩定。
7.7 殘缺功能添加和預警分析功能
中斷、軟中斷、上下文切換、swapin、swapout、slab、vmalloc、Power等殘缺的數據採集,負載預警,負載不均衡,內存泄漏預警,I/O過載預警等。
7.8 perf集成
目前LEPD端依賴於perf工具的安裝,咱們但願能將perf的核心功能從perf工具移植出來,直接集成到LEPD,這樣避免對平臺的依賴。
LEP於2017年11.3-5日,北京國家會議中心第五會議廳的相關會議場地外,設有展臺,歡迎你們前來參觀DEMO和詢問。也歡迎Linuxer公衆號的用戶,於這幾日來參與當面交流。
本文未完待續 >>>