免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6484 | 回复: 25
打印 上一主题 下一主题

需要从kernel 中得到内存的大小,从那里得到比较方便? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-08 10:44 |只看该作者 |倒序浏览
rt, 最好是一个全局量。

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
2 [报告]
发表于 2009-12-08 11:33 |只看该作者

  1. cat /proc/meminfo|grep "MemTotal" |awk -F ' ' '{print $2}'
复制代码

这样行吗?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2009-12-08 11:54 |只看该作者
看LZ的标题好像是从kernel中获取。记得链接跟踪里面应该获取到了,不过是内核态的内存

论坛徽章:
0
4 [报告]
发表于 2009-12-08 12:00 |只看该作者

回复 #2 T-Bagwell 的帖子

这样是在用户层的shell中得到的,可能是我的意思没表达清楚,是想直接在kernel中得到一个全局量(不知道有没有这样的一个值),并在kernel中用它。如同kernel 传给proc/meminfo 内存一个值,
        len = sprintf(page,
                "MemTotal:     %8lu kB\n"
                "MemFree:      %8lu kB\n"
                "Buffers:      %8lu kB\n"
                "Cached:       %8lu kB\n"
                "SwapCached:   %8lu kB\n"
                "Active:       %8lu kB\n"
                "Inactive:     %8lu kB\n"
                "HighTotal:    %8lu kB\n"
                "HighFree:     %8lu kB\n"
                "LowTotal:     %8lu kB\n"
                "LowFree:      %8lu kB\n"
                "SwapTotal:    %8lu kB\n"
                "SwapFree:     %8lu kB\n"
                "Dirty:        %8lu kB\n"
                "Writeback:    %8lu kB\n"
                "Mapped:       %8lu kB\n"
                "Slab:         %8lu kB\n"
                "CommitLimit:  %8lu kB\n"
                "Committed_AS: %8lu kB\n"
                "PageTables:   %8lu kB\n"
                "VmallocTotal: %8lu kB\n"
                "VmallocUsed:  %8lu kB\n"
                "VmallocChunk: %8lu kB\n",
                K(i.totalram),
                K(i.freeram),
                K(i.bufferram),
                K(cached),
                K(total_swapcache_pages),
                K(active),
                K(inactive),
                K(i.totalhigh),
                K(i.freehigh),
                K(i.totalram-i.totalhigh),
                K(i.freeram-i.freehigh),
                K(i.totalswap),
                K(i.freeswap),
                K(ps.nr_dirty),
                K(ps.nr_writeback),
                K(ps.nr_mapped),
                K(ps.nr_slab),
                K(allowed),
                K(committed),
                K(ps.nr_page_table_pages),
                (unsigned long)VMALLOC_TOTAL >> 10,
                vmi.used >> 10,
                vmi.largest_chunk >> 10
                );

不知道这个值从那来的 K(i.totalram),好像这个值也不能是很准确,总比实际小1 ~2M

[ 本帖最后由 s.t_seeyou 于 2009-12-8 12:04 编辑 ]

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
5 [报告]
发表于 2009-12-08 12:41 |只看该作者
应该是有的。既然proc/meminfo可以获取到内存,那么这些信息就是从那内核汇总读取的。

你搜索一下内核代码中创建meminfo的模块代码

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
6 [报告]
发表于 2009-12-08 13:36 |只看该作者
原帖由 s.t_seeyou 于 2009-12-8 12:00 发表
这样是在用户层的shell中得到的,可能是我的意思没表达清楚,是想直接在kernel中得到一个全局量(不知道有没有这样的一个值),并在kernel中用它。如同kernel 传给proc/meminfo 内存一个值,
        len = sprintf(pag ...

你表达清楚了
我也说的不是shell
仅仅是说在/proc/meminfo里可以得到而已 是我没说明白而已

论坛徽章:
0
7 [报告]
发表于 2009-12-08 14:12 |只看该作者
有个全局量
static unsigned long totalram_pages;
系统全量ram内存页
meminfo中也是通过这个换算成k单位的

论坛徽章:
0
8 [报告]
发表于 2009-12-08 15:12 |只看该作者

回复 #4 s.t_seeyou 的帖子

请问,这个函数在什么文件里?
我没搜到

论坛徽章:
0
9 [报告]
发表于 2009-12-08 15:15 |只看该作者
找到了,是在
fs/proc/proc_misc.c 的 meminfo_read_proc中

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
10 [报告]
发表于 2009-12-08 15:15 |只看该作者
meminfo中也是通过这个换算成k单位的


能否列出该部分代码?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP