Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> linux 內存性能調優

linux 內存性能調優

編輯:關於android開發

linux 內存性能調優


linux 內存性能調優

linux內存系統簡述

關於linux內存系統我們至少應該了解什麼?

linux 系統中內存地址分為虛擬地址和物理地址,虛擬地址必須通過mmu映射成物

理地址。為了完成虛擬地址到物理地址的映射,linux內核中必須為每一個用戶態

進程維護一個頁目錄和相應的頁表項。一般系統中頁表中一頁大小為4K,

利用getconf PAGESIZE可以獲取系統中頁大小。

linux伙伴系統,為了將系統中的內存頁做相應的管理,linux內核將系統中內存為

分為不同的node,zone. 系統將不同cpu訪問速率的內存歸納為不同的node.

zone表示同一個node不同內存區域,一般分問DMA, NORMAL, HIGHMEM.

每一個ZONE上面有active_list,inactive_list.

在每一個ZONE中需要管理這個ZONE中的活動頁和非活動頁,這樣就方便每個ZONE中

頁面的回收

nr_inactive_anon 3949

nr_active_anon 3299

nr_inactive_file 7305

nr_active_file 3182

nr_unevictable 0

頁面交換,linux可以將系統中匿名頁交換到交換分區或者交換文件中去,當系統

中的內存緊張時。

swapon -s 查看系統中交換分區或者交換文件使用情況

swapon -a 開啟系統的交換功能

swapoff -a 關閉系統的交換功能

系統中緩存類型分為頁緩存和塊緩存。當系統去讀取文件系統中的文件時,系統會

將讀到的文件的內容緩存到一個地址空間中,組成這個地址空間的內存頁就是頁緩

存,叫做cache.

系統在讀取文件系統中類似目錄,超級塊或者管理塊時,讀取到系統中的內存頁中

,這種頁面叫做塊緩存,也叫做buffer.

linux如果按頁管理分配內存,對較小的內存分配是一種嚴重的浪費。slab內存分

配器解決內核空間較小的內存分配問題。slab就是為了滿足內核中各個模塊特定大

小內存的快速分配,就從伙伴系統中要出內存頁,自己建立一個相對獨立的內存池

子,向特定的內核模塊分配特定大小的內存。

slabtop

cat /proc/slabinfo

linux系統中內存使用分類

  1. 內核系統中分配的內存
  2. 用戶態代碼段,數據段,堆空間,棧空間
  3. 文件地址空間緩存,塊緩存
  4. 文件在用戶空間的地址映射消耗的內存.
  5. mmap 匿名映射的頁,shmem共享內存使用的頁.

可回收的頁和不可回收的頁

上面總結了linux中內存頁的不同種類,上面不同類型的頁面基本上可以分為兩種不同的類型,一種是可回收頁面,另外一種為不可以回收的頁面。除了第一種,內核系統中分配的內存為不可回收的外,其它類型的頁面都是可以回收的頁面。

可回收頁面分類

  1. 匿名頁面需要將頁面內容交換到交換設備或者文件才能回收該頁面
  2. 文件地址空間緩存,塊緩存通過回寫頁面內容後再回收頁面.

如何查看系統中不同類型內存數量

使用這個命令可以看到系統中空閒內存數量,buffer緩存數量,頁緩存數量.同時可以看到交換分區換入,換出頁面的數目.

root@localhost:~# vmstat 1 -S m

procs-----------memory---------- ---swap-- -----io---- -system-- ----cpu----

rb swpd free buffcache si sobi bo incs us sy id wa

21 0 0 665 69 508 0 0 0 0 19 5 38 3 59 0

19 0 0 665 69 508 0 0 0 0 2161 3112 97 4 0 0

20 0 0 665 69 508 0 0 0 0 1903 3394 97 3 0 0

查看進程內存使用情況

top

shift + m

linux系統中的進程按照消耗內存大小進行排列,VIRT表示虛擬地址空間內存大小,RES表示實際內存使用大小。

shift + p

linux系統中的進程按照消耗CPU大小進行排列

使用pmap查看進程內存使用情況

pmap pid

我們可以看到整個進程占用的虛擬內存的情況

查看slab使用情況

slabtop

cat/proc/slabinfo

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved