linux中 proc buddyinfo的作用

2021-08-17 20:41:57 字數 918 閱讀 2022

在應用程式設計過程中,記憶體是很重要的資源,而計算機主機的記憶體資源時有限的。一般而言我們可以申請到的記憶體是有限的,並不是想申請多大就有多大就可以申請多大的。/proc/buddyinfo檔案裡,就記錄著系統的記憶體資源。

linux核心中使用了buddy演算法來管理記憶體以減少記憶體碎片的產生,buddy演算法管理最小的單一為page_size,一般情況下大小為4k。以2的n次冪一次增加。如下圖表示,在normal區中,還有8921個2^0 * page_size可以分配。可以看出如果**中一次性要申請2^9 * 4k記憶體,就會分配失敗。在g++低版本的編譯器會申請結果會返回null,高版本會丟擲異常。所以當服務需要分配大記憶體的時候,需要特別注意一次能分配的最大連續記憶體的大小為2^10 * page_size,其中page_size可以使用getconf pagesize。用c語言可以用 int getpagesize(void)函式獲取,需要包含標頭檔案#include

eg:

wuzm@ubuntu

:~/gocode

$ cat /proc/buddyinfo

node

0, zone dma00

0021

1011

3node

0, zone dma32

7271296

1964

1055

1029

413293

14829

1740

node

0, zone normal

8921

3539

1236

962489

13286141

00 wuzm@ubuntu

:~/gocode

$ getconf pagesize

4096

Linux中許可權

當你在linux下用命令ll 或者ls la的時候會看到這些字眼,這些字眼表示為不同使用者組的許可權 r read就是讀許可權 數字4表示 w write就是寫許可權 數字2表示 x excute就是執行許可權 數字1表示 讀 寫 執行三項許可權可以用數字表示,就是r 4,w 2,x 1。所以,rw...

Linux中控制代碼

1.控制代碼就是乙個識別符號,只要獲得物件的控制代碼,我們就可以對物件進行任意的操作。2.控制代碼不一定是指標。作業系統用控制代碼可以找到一塊記憶體,這個控制代碼可能是識別符號,例如map的key,也可能是指標,看作業系統怎麼處理的了。fd算是在某種程度上替代控制代碼吧 linux 有相應機制,但沒...

Linux中的時鐘概念Linux中的時鐘概念

linux的時鐘中斷中涉及至二個全域性變數乙個是xtime,另乙個則是jiffies。有乙個與時間有關的時鐘 實時時鐘 rtc 這是乙個硬體時鐘,用來持久存放系統時間,系統關閉後靠主機板上的微型電池保持計時。系統啟動時,核心 通過讀取rtc來初始化wall time,並存放在xtime變數中,即xt...