Linux效能優化 記憶體效能優化思路

2021-09-07 17:49:15 字數 2571 閱讀 9227

目錄

記憶體效能指標

記憶體效能工具

如何快速分析記憶體的效能指標

系統記憶體使用情況

1.已用記憶體和剩餘記憶體

2.共享記憶體,通過tmpfs實現的,他的大小就是tmpfs使用的記憶體大小,這是乙個特殊的快取

3.可用記憶體是新程序可以使用的最大記憶體,包括剩餘記憶體和可**快取

4.快取包括,從磁碟讀取檔案頁的buffer快取,用來快取從磁碟讀取的資料加速再次訪問

還包括slab分歧中的可**記憶體

5.緩衝區是對原始磁碟塊的臨時儲存,用來快取將要寫入磁碟的資料,核心可以把分散的寫集中起來,統一

優化磁碟寫入

程序記憶體使用情況

如程序的虛擬記憶體,常駐記憶體,共享記憶體,swap記憶體等

1.虛擬記憶體,包括了程序**段,資料段,共享記憶體,已經申請的堆記憶體和已經換出的記憶體等,注意,已經

申請的記憶體,即使還沒有分配物理記憶體,也算作虛擬記憶體

2.常駐記憶體是程序實際使用的物理記憶體,不包括swap和共享記憶體,一般會換算成佔系統總記憶體的百分比,

也就是程序的記憶體使用率

3.共享記憶體,包括與其他程序共同使用的真是的共享記憶體,還包括了載入的動態鏈結庫以及程式**段等

4.swap記憶體,是指通過swap換出到磁碟的記憶體

缺頁異常

系統呼叫記憶體分配請求後,並不會立刻為其分配物理記憶體,而是在首次訪問時,通過缺頁異常來分配,缺頁

異常包括兩類

1.可以直接從物理記憶體中分配時,稱為次缺頁異常

2.需要磁碟i/o介入,比如swap時,被成為主缺頁異常,主缺頁異常公升高,意味著需要磁碟i/o,會導致

記憶體訪問變慢很多

swap的使用情況

如swap的已用空間,剩餘空間,換入速度和換出速度等

1.已用空間和剩餘空間很好理解,就是字面上的意思,已使用和沒有使用的記憶體空間

2.換入和換出速度,則表示每秒鐘換入和換出記憶體的大小

記憶體的效能指標相關的思維導圖

比如free 檢視整體記憶體和swap情況

top和ps 檢視程序的記憶體情況

在proc中還有很多記憶體指標的**,如/proc/zoneinfo等

通過vmstat可以動態觀察記憶體變化情況

通過cachestat 檢視整個系統快取的讀寫命中情況

通過cachetop來觀察每個程序快取的讀寫命中情況

memleak檢視記憶體分配,找到記憶體洩露的位置

通過sar也可以實時的檢視記憶體使用情況

效能指標和工具聯絡

同cpu一樣,可以從兩個不同維度出發

1.從記憶體指標出發,把工具和工作原理關聯起來

2.從效能工具出發,可以更快的利用工具,找出我們想觀察的效能指標,特別是工具有限的情況下,得充分

利用手頭的每乙個工具,挖掘更多問題

根據指標找工具

從效能工具出發,最大化利用已有的工具,找到想要的指標

根據工具查詢指標(記憶體效能)

在實際環境中,我們希望盡可能快的定位系統瓶頸,然後盡可能快的優化效能,就是要又快又準的效能相關的問題

雖然記憶體效能指標很多,但都是魏了描述記憶體的原理,指標間自然不會完全孤立,一般都會有關聯,反過來說,這些關聯也正是源於系統的記憶體原理

為了快速定位記憶體問題,可以先執行幾個覆蓋面比較大的效能工具,如free,top,vmstat,pidstat等

具體粉絲思路如下

1.先用free和top,檢視系統整體的記憶體使用情況

2.再用vmstat和pidstat,檢視一段時間的趨勢,從而判斷出記憶體的問題型別

3.最後進行詳細分析,比如記憶體分配分析,快取/緩衝區分析,具體程序的記憶體使用分析等

相關流程圖如下

幾個例子

1.當通過free發現大部分記憶體都會快取占用後,就可以使用vmstat或者sar觀察快取變化趨勢,確認快取的

使用是否還在繼續增大,如果繼續增大,說明導致快取公升高的程序還在執行,再用cachestat和cachetop

分析這些快取到底被**占用

2.用free發現可用記憶體不足,首先要確認記憶體是否被快取/緩衝區占用,排除快取/緩衝區後,可以繼續用

pidstat或top,定位占用記憶體最多的程序,找出程序後,再通過程序記憶體空間工具(如pmap)分析

程序位址空間中記憶體的使用情況

3.當通過vmstat或sar發現記憶體不斷增長,可以分析是否存在記憶體洩露問題,使用memleak檢查是否存在

記憶體洩露,memleak輸出記憶體洩露的程序以及呼叫堆疊

效能記憶體優化

整個對於linux 的優化,應該區分為從整個層面的系統優化,和從模組角度的演算法效能優化。最終追尋的優化是原來原理層面的追尋。linux系統的優化也是,屬於系統層面的優化。針對特定的場景要求根據優先順序做出取捨關係。二 cpu執行效能 效能優化也就是下面的幾個策略 1 用空間換時間。各種cache如...

Android效能優化 記憶體優化

記憶體優化 下面介紹一下常用的一些記憶體優化的方法 從慕課網學來的 資料結果優化 1,如果經常使用字串拼接的話,要用stringbuilder,避免直接使用使用 的方式 2,使用arraymap,sparsearray代替hashmap 3,避免記憶體抖動的情況 物件復用 1,復用系統自帶資源 2,...

linux效能優化

調優必須有效能指標,一開始調優必須確定指標 確定基線 確定目標。如果可能的話分離問題,刪除任何執行於被調查系統的多餘的程式或應用!工具 gnome system monitor 圖形介面,可以說是top的圖形化 執行 gnome system monitor 多處理器統計 mpstat,最大的優點是...