关于 /proc/meminfo 里面各项内存参数的意义,有大佬能说清楚嘛? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Buffer2Disk
V2EX    程序员

关于 /proc/meminfo 里面各项内存参数的意义,有大佬能说清楚嘛?

  •  
  •   Buffer2Disk 2018-10-11 21:50:59 +08:00 4131 次点击
    这是一个创建于 2636 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,最近线上的 Python 多线程的程序碰到了内存激增的问题,见上一篇帖子 t/496498

    现在拿到了内存各项参数,请大佬们帮忙分析分析这个内存都用到哪去了?

    下面是 Python 进程的内存使用情况(anon)

    6 条回复    2018-10-17 15:50:02 +08:00
    sbw
        1
    sbw  
       2018-10-12 09:00:54 +08:00
    $man proc
    UIXX
        2
    UIXX  
       2018-10-12 09:23:18 +08:00   1
    哥们,你可能搞错了重点。你需要的是如何"调试 Python 多线程程序",而不是"看 Linux 的内存参数猜内存暴涨的源头"。

    1、把线上程序拿到测试环境作稳定性测试与压力测试

    2、使用内存监控工具调试疑似出错的部分

    没看到具体代码之前,瞎猜浪费脑子
    luozic
        3
    luozic  
       2018-10-12 09:49:19 +08:00 via iPhone
    python 各种 pypi lib 好多探测内存泄漏的
    lirau
        4
    lirau  
       2018-10-12 11:54:07 +08:00
    单纯说 /proc/meminfo 里的各项数据,可以参考这篇文章 http://linuxperf.com/?p=142
    Buffer2Disk
        5
    Buffer2Disk  
    OP
       2018-10-12 21:24:48 +08:00
    @lirau 看过这个人写的文章,写的挺好的,但是对我最关心的几个参数,好像没有详细的描述
    Active: 1308168 kB
    Inactive: 1758160 kB
    Active(anon): 1010416 kB
    Inactive(anon): 1370480 kB
    Active(file): 297752 kB
    Inactive(file): 387680 kB
    lirau
        6
    lirau  
       2018-10-17 15:50:02 +08:00
    间接的以及引用的链接(这个 http://linuxperf.com/?p=97 )里还是说了一些的。

    比如你贴的这个数据:
    Active: 1308168 kB = Active(anon): 1010416 kB + Active(file): 297752 kB

    然后 Active(anon) 表示 anonymous pages,Active(file)表示 file-backed pages

    inactive 同理


    详细参考原文,这里做一下零碎的摘抄:

    它们的含义在 manpage 中只给了简单的说明,并未详细解释:

    inact: the amount of inactive memory. (-a option)
    active: the amount of active memory. (-a option)


    fs/proc/meminfo.c:
    ==================
    0023 static int meminfo_proc_show(struct seq_file *m, void *v)
    0024 {
    ...

    0032 unsigned long pages[NR_LRU_LISTS];
    ...

    0051 for (lru = LRU_BASE; lru < NR_LRU_LISTS; lru++)
    0052 pages[lru] = global_page_state(NR_LRU_BASE + lru);
    ...

    0095 "Active: %8lu kB\n"
    0096 "Inactive: %8lu kB\n"
    0097 "Active(anon): %8lu kB\n"
    0098 "Inactive(anon): %8lu kB\n"
    0099 "Active(file): %8lu kB\n"
    0100 "Inactive(file): %8lu kB\n"
    ...

    0148 K(pages[LRU_ACTIVE_ANON] + pages[LRU_ACTIVE_FILE]),
    0149 K(pages[LRU_INACTIVE_ANON] + pages[LRU_INACTIVE_FILE]),
    0150 K(pages[LRU_ACTIVE_ANON]),
    0151 K(pages[LRU_INACTIVE_ANON]),
    0152 K(pages[LRU_ACTIVE_FILE]),
    0153 K(pages[LRU_INACTIVE_FILE]),
    ...

    这段代码的意思是统计所有的 LRU list,其中 Active Memory 等于 ACTIVE_ANON 与 ACTIVE_FILE 之和,Inactive Memory 等于 INACTIVE_ANON 与 INACTIVE_FILE 之和

    Active/inactive memory 是针对用户进程所占用的内存而言的,内核占用的内存(包括 slab )不在其中。

    ACTIVE_ANON 和 ACTIVE_FILE,分别表示 anonymous pages 和 file-backed pages。用户进程的内存页分为两种:与文件关联的内存(比如程序文件、数据文件所对应的内存页)和与文件无关的内存(比如进程的堆栈,用 malloc 申请的内存),前者称为 file-backed pages,后者称为 anonymous pages。File-backed pages 在发生换页(page-in 或 page-out)时,是从它对应的文件读入或写出; anonymous pages 在发生换页时,是对交换区进行读 /写操作。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     903 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 19:48 PVG 03:48 LAX 11:48 JFK 14:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86