linux記憶體相關proc檔案解析

2021-07-24 15:29:45 字數 4522 閱讀 7846

linux中記憶體管理相關的proc檔案有meminfo,buddyinfo,pagetypeinfo,slabinfo,vmallocinfo;

下面分別介紹下buddyinfo,pagetypeinfo,slabinfo;

/proc/buddyinfo

linux kernel夥伴系統是以order為單位管理記憶體分組;kernel會以order 0,1,2,3,4,5,6,7,8,9,10,也就是從order 0 乙個page 4096kbytes大小,到order10提供約4mb大小的memory配置,根據每種不同大小的連續記憶體的使用狀況,可把被釋放的記憶體組合為更高一階的memory page oder,或是把連續的記憶體根據需求拆解為所需的page order大小的記憶體區塊,而這些當下buddy system對記憶體的使用情況,就是buddyinfo所可以提供的記憶體使用資訊,當所要配置的記憶體page order正好落在目前buddy system所無法**的連續記憶體區塊時,就可能會導致記憶體申請失敗. (記憶體申請失敗會通過low memory killer 或oom 來強制應用程式的刪除執行,配置出足夠大小的連續物理記憶體空間).

/proc/buddyinfo這個檔案就是顯示當前系統不同zone區按order 0~10 依次剩餘的空閒記憶體大小

root:/ # cat /proc/buddyinfo

node 0, zone      dma   1792    474    341    141     28     18      2      3     20     36    275

node 0, zone   normal   1203    456    251    183     19     10      1      5     13     29    283

dma zone 區有1792個2^0 個page,474個2^1個page....

在系統執行過程中,按照夥伴演算法原理,不同order 空閒記憶體會進行變化,

下面是系統執行一段時間前後的兩次buddyinfo資訊:

root:/ # cat /proc/buddyinfo

node 0, zone      dma    158     46      8      4      2      0      1     14     35     30    333

node 0, zone   normal    170     86     30     17      2      1      1      9     37     31    319

root:/ # cat /proc/buddyinfo

node 0, zone      dma      1      2     46     64     13      7      3      5     36     29    333

node 0, zone   normal      1      1     77     72     13      2      1      0     36     31    319

具體涉及到的**:

struct zone

struct free_area ;

/* free memory management - zoned buddy allocator.  */

#ifndef config_force_max_zoneorder

#define max_order 11

#else

#define max_order config_force_max_zoneorder

#endif

enum ;

注意在每個order空閒記憶體list中,又按照不同的migrate_types進行進一步細分,這樣主要便於系統

記憶體**,合併為大的order;

這個檔案是將buddyinfo的內容進一步細分:

free pages count per migrate type at order -- 不同order 按照migrate type的空閒page數量

number of blocks -- 連續記憶體塊數量

|root:/ # cat /proc/pagetypeinfo

page block order: 10

pages per block:  1024

free pages count per migrate type at order       0      1      2      3      4      5      6      7      8      9     10

node    0, zone      dma, type    unmovable    248     78    126     95      5      4      1      1     18     32     59

node    0, zone      dma, type  reclaimable      0      1      3      3      1      1      0      0      1      1      0

node    0, zone      dma, type      movable    696    385    201     44     22     13      1      2      1      3    214

node    0, zone      dma, type          cma      0      0      0      0      0      0      0      0      0      0      0

node    0, zone      dma, type      reserve      0      0      0      0      0      0      0      0      0      0      2

node    0, zone      dma, type      isolate      0      0      0      0      0      0      0      0      0      0      0

node    0, zone   normal, type    unmovable      1     71    125    131      7      5      0      1     10     28     60

node    0, zone   normal, type  reclaimable      0      0      0      0      1      1      0      1      1      0      0

node    0, zone   normal, type      movable    128    383    121     52     11      5      0      3      2      1    221

node    0, zone   normal, type          cma      0      0      0      0      0      0      0      0      0      0      0

node    0, zone   normal, type      reserve      0      0      0      0      0      0      0      0      0      0      2

node    0, zone   normal, type      isolate      0      0      0      0      0      0      0      0      0      0      0

number of blocks type     unmovable  reclaimable      movable          cma      reserve      isolate

node 0, zone      dma          142            8          531           36            2            0

node 0, zone   normal          139           10          608            0            2            0

number of mixed blocks    unmovable  reclaimable      movable          cma      reserve      isolate

node 0, zone      dma            0            0            0           36            0            0

node 0, zone   normal            0            0            0            0            0            0

Linux下proc檔案系統詳解 proc

proc檔案系統是乙個偽檔案系統,它只存在記憶體當中,而不占用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過proc得到系統的資訊,並可以改變核心的某些引數。這裡將介紹如何從 proc檔案系統中獲取與防火牆相關的一些效能引數,以及如何通過 proc檔案系統修改...

Linux的proc檔案系統

proc 為乙個核心資料結構介面,使用者空間和核心空間可以通過該介面通訊,與普通檔案不同的是,這些虛擬檔案的內容都是動態建立的。proc 檔案系統是乙個偽檔案系統,它只存在記憶體當中,而不占用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式 可以通過 proc 得到系統...

linux下的 Proc 檔案系統

proc檔案系統是一種在使用者態檢查核心狀態的機制。在proc下一般有如下子目錄和檔案 apm 高階電源管理資訊 bus 匯流排以及匯流排上的裝置 devices 可用的裝置資訊 driver 已經啟用的驅動程式 interrupts 中斷資訊 ioports 埠使用資訊 version 核心版本 ...