日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

sigar如何获取linux的buffer内存,Linux 下使用Sigar 获取内存信息

發布時間:2023/12/4 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sigar如何获取linux的buffer内存,Linux 下使用Sigar 获取内存信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇文章介紹了linux下的sigar 庫,并使用sigar 庫來獲取cpu 使用率,本文在這里介紹一下如何使用sigar 庫獲取內存信息.

和cpu 一樣,sigar中有和內存相關的結構體sigar_mem_t,我們來看一下結構體原型:

typedef struct {

sigar_uint64_t

ram,

total,

used,

free,

actual_used,

actual_free;

double used_percent;

double free_percent;

} sigar_mem_t;

從中可以看到和結構體相關的信息還是比較全面的,包括內存總量(total),實際內存使用量(actual_used),實際內存剩余量(actual_free),并且還包括內存使用率(used_percent),和內存空閑率(free_percent).

好了,接下來我們看看怎樣獲得這些數據.

對于內存信息的獲取,我們要用到sigar_mem_get 函數,函數原型如下:

SIGAR_DECLARE(int) sigar_mem_get(sigar_t *sigar, sigar_mem_t *mem);

很簡單,傳遞一個sigar_t 類型和sigar_mem_t 類型的指針就可以了.其中這個sigar_t 上一篇文章中我們介紹過,程序的初始化都要用到這個sigar_t.

另外,sigar中對于虛擬內存(swap 分區)信息的獲取也有特定的結構體sigar_swap_t,感興趣的同學可以參照獲取內存信息的方式來獲取一下虛擬內存的信息.

好了,下面是程序的源碼,因代碼較少,就不逐一分析了,相信你一看就明白了.

#include

#include

#include

using namespace std;

int main(int argc,char **argv)

{

sigar_t *sigar_mem;

sigar_mem_t mem;

sigar_open(&sigar_mem);

sigar_mem_get(sigar_mem,&mem);

uint64_t total = mem.total/1024;

uint64_t used = mem.actual_used/1024;

uint64_t free = mem.actual_free/1024;

double used_percent = mem.used_percent;

double free_percent = mem.free_percent;

cout<

cout<

cout<

cout<

cout<

sigar_close(sigar_mem);

return 0;

}

我們打印一下輸出結果:

細心的同學可能會用free 命令的結果做一下比較:

結果發現free 的值和程序中獲取的不一樣,這是怎么回事?

其實,這里涉及到linux 內存管理機制的東西,linux 內核會把剩余的內存申請為cached,而cached不屬于free范疇。

直觀的看free命令的free值很小,但并不代表可用的內存小,當一個程序需要申請較大的內存時,如果free的內存不夠,內核會把部分cached的內存回收,回收的內存再分配給應用程序。

所以對于linux系統,可用于分配的內存不只是free的內存,還包括cached 的內存 和buffers 的內存.

這就是為什么我們程序中計算可用內存的時候用mem.actual_free 而不是 mem.free 了,這么一說相信聰明的你肯定明白了.

總結

以上是生活随笔為你收集整理的sigar如何获取linux的buffer内存,Linux 下使用Sigar 获取内存信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。