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;

}

我们打印一下输出结果:

0818b9ca8b590ca3270a3433284dd417.png

细心的同学可能会用free 命令的结果做一下比较:

0818b9ca8b590ca3270a3433284dd417.png

结果发现free 的值和程序中获取的不一样,这是怎么回事?

其实,这里涉及到linux 内存管理机制的东西,linux 内核会把剩余的内存申请为cached,而cached不属于free范畴。

直观的看free命令的free值很小,但并不代表可用的内存小,当一个程序需要申请较大的内存时,如果free的内存不够,内核会把部分cached的内存回收,回收的内存再分配给应用程序。

所以对于linux系统,可用于分配的内存不只是free的内存,还包括cached 的内存 和buffers 的内存.

这就是为什么我们程序中计算可用内存的时候用mem.actual_free 而不是 mem.free 了,这么一说相信聪明的你肯定明白了.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将手机投屏到电脑_手机如何投屏到电脑上?详细教程看这里,手机投屏

手机再大的屏幕&#xff0c;也没有手机投屏到电脑、电视的体验爽。那么哪款投屏软件好用&#xff1f;又如何使用呢&#xff1f;下面小编给大家介绍下金舟苹果手机投屏软件&#xff0c;一起来看看如何将手机投屏到电脑上&#xff0c;详细步骤如下。第一步、首先&#xff0c;在电…

inputstream是否一定要close_汽车加装行李架后,总被交警拦下,类似改装,是否一定要备案...

其实改装不是儿戏&#xff0c;有些部位是一定不能触碰的&#xff0c;汽车“轻改”后担心上路被交警处罚&#xff0c;哪些是不能触碰的“红杠杠”&#xff0c;汽车加装行李架后&#xff0c;总被交警拦下&#xff0c;类似改装&#xff0c;是否一定需要备案&#xff0c;是我们今天…

不好意思,爱因斯坦这次,又对了!

▲ 点击查看在科学界中&#xff0c;有一个非常著名的概念&#xff0c;叫做后设认知。官方解释是&#xff1a;人们是如何对自己的思维模式进行反思。打个简单的比方&#xff1a;你学习或者自己孩子学习的时候&#xff0c;会不会经常出现一道数学题反复做错的情况&#xff0c;明明…

开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式

原文:【原创】开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式开源Math.NET基础数学类库使用系列文章总目录&#xff1a; 1.开源.NET基础数学计算组件Math.NET(一)综合介绍 2.开源.NET基础数学计算组件Math.NET(二)矩阵向量计算 3.开源.NET基础数学计算组件Ma…

元胞自动机模型_【ABM仿真模拟】第三章 元胞自动机 B

是新朋友吗&#xff1f;记得先点蓝字关注我哦&#xff5e;第三章 元胞自动机 B2020/01/233.3投票模型(Voting) 课程导读无论是国内国外&#xff0c;投票结果的预测都异常受到关注。在众多唐斯模型、中间选民模型 、以及Sznajd模型中&#xff0c;投票模型作为典型的元胞自动机&a…

喜报!985大学首次登上Nature封面,这所学校可太不容易了!

全世界只有3.14 % 的人关注了爆炸吧知识建校64年来&#xff0c;第一次登上期刊封面又一所985院校出息了&#xff01;伦敦时间6月4号&#xff0c;《Nature》刊发了电子科技大学邓旭教授团队的最新研究成果&#xff0c;并被选为当期封面。《设计坚固的超疏水表面》《Nature》作为…

getbean方法找不到bean_iphone手机静音找不到怎么办 iphone静音找不到解决方法【图文】...

一个网友给小编留言&#xff0c;询问&#xff1a;“我的iphone调静音了现在找不到&#xff0c;有什么工具能找到”这一个问题&#xff0c;因此&#xff0c;在今天的iPhone使用教程&#xff0c;小编就给大家讲解一下具体的解决方法&#xff0c;那么&#xff0c;iphone手机静音找…

成长 | 《大厂晋升指南》学习总结(上)

【学习总结】| Edison Zhou温馨提示&#xff1a;文中的贴图均来自极客时间《大厂晋升指南》课程。0写在开头今年加入了一家产业互联网平台企业&#xff0c;公司刚好也开始借鉴阿里的职级体系。对于从来没有在互联网企业呆过的我&#xff0c;对于职级体系还比较陌生&#xff0c;…

String,StringBuffer与StringBuilder的区别

2019独角兽企业重金招聘Python工程师标准>>> String 字符串常量StringBuffer 字符串变量&#xff08;线程安全&#xff09;StringBuilder 字符串变量&#xff08;非线程安全&#xff09; 简要的说&#xff0c; String 类型和 StringBuffer 类型的主要性能区别其实在…

68张机械原理动图,够你看一晚上了!

全世界只有3.14 % 的人关注了爆炸吧知识机械动态图有的可以洞察工作原理&#xff0c;有的可以洞察结构&#xff0c;有的可以表达工作过程&#xff0c;不学机械的也能看得懂&#xff01;今天的68幅动态图总有一些你没有见过&#xff0c;相当棒&#xff01;一、制造篇一张图告诉你…

频谱分析幅值单位_案例分享丨某水泥厂入窑斗提减速机不对中故障分析及处理...

斗式提升机是利用均匀固接于无端奉引构件上的一系列料斗,竖向提升物料的连续输送机械。分为环链、板链和皮带三种。今天因大师将给大家分享一个水泥厂的入窑斗提减速机不对中故障的诊断案例。1 设备概况设备基本信息&#xff1a;设备位置&#xff1a;1#产线入窑斗提&#xff08…

中国高校鄙视链指南

全世界只有3.14 % 的人关注了爆炸吧知识某一天&#xff0c;中国各大高校齐聚一堂&#xff0c;开了一场“拒绝高校鄙视链座谈会”&#xff0c;誓要消除高校之间的不平等&#xff0c;不让莘莘学子因为母校问题而被人低看一眼&#xff0c;遗憾终生。首先主持人介绍清华北大发言&am…

.NET 6 ThreadPool 实现概述

前言在即将发布的 .NET 6 runtime 中&#xff0c;默认的线程池实现从 C 代码改为了 C#&#xff0c;更方便我们学习线程池的设计了。https://github.com/dotnet/runtime/tree/release/6.0/src/libraries/System.Threading.ThreadPool新的线程池实现位于 PortableThreadPool 中&a…

嵌入式linux配置qt,基于qt的嵌入式Linux开发环境搭建

摘要&#xff1a;本文主要介绍在PC机上搭建基于QT的嵌入式开发环境&#xff0c;其中很多源文件都是开发板自带&#xff0c;需要相应资料的可以评论留下邮箱地址。版本&#xff1a;交叉编译工具链&#xff1a;GCC 4.7.3 【gcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214…

漫水填充及Photoshop中魔术棒选择工具的实现

今天写程序中有一个地方用到了漫水填充&#xff08;FloodFill&#xff09;。所谓漫水填充&#xff0c;简单来说&#xff0c;如下图中左图&#xff0c;白布上有一块红色的斑点&#xff0c;在这个红色的斑点上点一下&#xff0c;就自动选中了和该点相连的红色的区域&#xff0c;接…

代理管家app_亲亲小保社保管家app2021下载_亲亲小保社保管家app最新版下载

亲亲小保社保管家是一款便捷社保服务软件&#xff0c;为用户提供全面便捷的社保公积金服务&#xff0c;可以解决生活中的各种居住&#xff0c;社会保障等&#xff0c;感兴趣的朋友快来下载亲亲小保社保管家吧。亲亲小保社保管家app特色1.、社保服务、社保代理、社保托管、工资代…

上大学后男生的两种变化

1 一只处女座的喵。。。2 螃蟹怎么都没想到自己有一天会变成糖葫芦3 还以为厨师被劫持了4 未来感十足的红绿灯概念设计……5 外国留学生的眼中中文6 上大学后男生的两种变化&#xff0c;可太真实了7 你这样欺负人我要报警哦8 一年级的题你点的每个赞&#xff0c;我都认真当成了…

ADO.NET笔记——基本概念

ADO.NET中的主要对象&#xff1a; Connection&#xff1a;连接对象。用于建立从应用程序到数据库服务器指定数据库的连接通道Command&#xff1a;命令对象。用于执行增删查改等数据库语句命令DataReader&#xff1a;数据阅读器对象。用于从数据库逐行返回数据DataAdapter&#…

关于 Azure SQL 数据库你不知道的 5 件事

点击上方蓝字关注“汪宇杰博客”原文&#xff1a;Azure Tips and Tricks翻译&#xff1a;汪宇杰Azure SQL Database如果您喜欢 SQL Server&#xff0c;那么您可能也喜欢 Azure SQL 数据库。Azure SQL 数据库是 Azure 中的 SQL Server 即服务。你负责处理数据&#xff0c;Azure …

win7共享xp打印机_解决共享打印机不能使用的问题

针式打印机如何设置共享打印找不到驱动就需要重新下载安装适合版本的驱动&#xff0c;以及.INF文件网络打印机连接模式步骤&#xff1a;a.预先得知网络打印机的IP地址&#xff0c;打开它的共享b.【开始】-【设备与打印机】-【添加打印机】-【添加本地打印机】c.选择TCP/IP接口-…