linux 分析記憶體的瓶頸

來源:互聯網
上載者:User

        為了提高磁碟存取效率, Linux做了一些精心的設計, 除了對dentry進行緩衝(用於VFS,加速檔案路徑名到inode的轉換), 還採取了兩種主要Cache方式:Buffer Cache和Page Cache.前者針對磁碟塊的讀寫,後者針對檔案inode的讀寫.這些Cache有效縮短了I/O系統調用(比如read,write,getdents)的時間.

        記憶體活動基本上可以用3個數字來量化:活動虛擬記憶體總量,交換(swapping)率和調頁(paging)率.其中第一個數字表明記憶體的總需求量,後兩個數字表示那些記憶體中有多少比例正處在使用之中.目標是減少記憶體活動或增加記憶體量,直到調頁率保持在一個可以接受的水平上為止.

        活動虛擬記憶體的總量(VM)=實際記憶體大小(size of real memory)(實體記憶體)+使用的交換空間大小(amount of swap space used)

        當程式運行需要的記憶體大於實體記憶體時,UNIX系統採用了調頁機制,即系統copy一些記憶體中的頁面到磁碟上,騰出來空間供進程使用。
大多數系統可以忍受偶爾的調頁,但是頻繁的調頁會使系統效能急劇下降。

UNIX記憶體管理:UNIX系統通過2種方法進行記憶體管理,“調頁演算法”,“交換技術”。
調頁演算法是將記憶體中最近不常使用的頁面換到磁碟上,把常使用的頁面(活動頁面)保留在記憶體中供進程使用。
交換技術是系統將整個進程,而不是部分頁面,全部換到磁碟上。正常情況下,系統會發生一些交換過程。
當記憶體嚴重不足時,系統會頻繁使用調頁和交換,這增加了磁碟I/O的負載。進一步降低了系統對作業的執行速度,即系統I/O資源問題又會影響到記憶體資源的分配。

Unix的虛擬記憶體

Unix的虛擬記憶體是一個十分複雜的子系統,它實現了進程間代碼與資料共用機制的透明性,並能夠分配比系統現有實體記憶體更多的記憶體,某些作業系統的虛存甚至能通過提供緩衝功能影響到檔案系統的效能,各種風格的UNIX的虛存的實現方式區別很大,但都離不開下面的4個概念。

1:實際記憶體
實際記憶體是指一個系統中實際存在的實體記憶體,稱為RAM。實際記憶體是儲存臨時資料最快最有效方式,因此必須儘可能地分配給應用程式,現在的RAM的形式有多種:SIMM、DIMM、Rambus、DDR等,很多RAM都可以使用錯誤修正機制(ECC)。

2:交換空間
交換空間是專門用於臨時儲存記憶體的一塊磁碟空間,通常在頁面調度和交換進程資料時使用,通常推薦交換空間的大小應該是實體記憶體的二到四倍。

3:頁面調度
頁面調度是指從磁碟向記憶體傳輸資料,以及相反的過程,這個過程之所以被稱為頁面調度,是因為Unix記憶體被平均劃分成大小相等的頁面;通常頁面大小為4KB和8KB(在Solaris中可以用pagesize命令查看)。當可執行程式開始運行時,它的映象會一頁一頁地從磁碟中換入,與此類似,當某些記憶體在一段時間內空閑,就可以把它們換出到交換空間中,這樣就可以把閒置RAM交給其他需要它的程式使用。

4:交換
頁面調度通常容易和交換的概念混淆,頁面調度是指把一個進程所佔記憶體的空閑部分傳輸到磁碟上,而交換是指當系統中實際的記憶體已不夠滿足新的分配需求時,把整個進程傳輸到磁碟上,交換活動通常意味著記憶體不足。

[root@localhost ~]# vmstat -n 3       (每個3秒重新整理一次)
procs-----------memory--------------------swap------io---- --system---- ------cpu--------
r   b    swpd   free       buff       cache       si   so    bi    bo   in      cs        us   sy   id   wa
1  0   144 186164 105252 2386848    0    0     18   166  83     2          48   21  31  0
2  0   144 189620 105252 2386848    0    0      0   177  1039 1210   34   10  56   0
0  0   144 214324 105252 2386848    0    0      0    10   1071   670    32   5    63   0
0  0   144 202212 105252 2386848    0    0      0   189   1035   558   20   3    77   0
2  0   144 158772 105252 2386848    0    0      0   203  1065 2832    70  14  15   0

MEMORY
-swap:切換到交換記憶體上的記憶體(預設以KB為單位)
如果SWAP的值不為0,或者還比較大,比如超過100M了,但是SI,SO的值長期為0,這種情況我們可以不用擔心,不會影響系統效能。

-free:閒置實體記憶體- buff:作為buffer cache的記憶體,對塊裝置的讀寫進行緩衝
-cache:作為page cache的記憶體,檔案系統的cache
如果cache的值大的時候,說明cache處的檔案數多,如果頻繁訪問到的檔案都能被cache處,那麼磁碟的讀IO bi會非常小。 SWAP
-si:交換記憶體使用量,由磁碟調入記憶體
-so:交換記憶體使用量,由記憶體調入磁碟
記憶體夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統效能會受到影響,磁碟IO和CPU資源都會被消耗。我發現有些朋友看到空閑記憶體(FREE)很少的或接近於0時,就認為記憶體不夠用了,實際上不能光看這一點,Linux是搶佔記憶體式的OS,還要結合si,so,如果free很少,但是si,so也很少(大多時候是0),那麼不用擔心,系統效能這時不會受到影響的。轉自:http://space.itpub.net/8554499/viewspace-580301
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.