V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
huangya
V2EX  ›  Linux

top 命令看到 VSZ 在逐步增大

  •  
  •   huangya · 2022-07-30 20:56:02 +08:00 · 2316 次点击
    这是一个创建于 635 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 debug 看到一个程序的 VSZ 在逐步增大,我在理清是否发生了 memory leak 或者有没有潜在的问题. 这个程序最早的版本是没有这个问题的,我们魔改了很多。由于各种原因,不方便用 git bisect 来 debug.所以想请教一下大家。PID 为 7512 。
    可以看大 VSZ 和%VSZ 分别为 2173m 和 29%。
    root@RaspberryPi-Gateway:~# top
    Mem: 453176K used, 7283640K free, 77544K shrd, 11840K buff, 119616K cached
    CPU: 2% usr 4% sys 0% nic 93% idle 0% io 0% irq 0% sirq
    Load average: 0.30 0.27 0.27 3/300 4429
    PID PPID USER STAT VSZ %VSZ %CPU COMMAND
    4429 3665 root R 2052 0% 3% top
    7512 1 root S 2173m 29% 2% /usr/bin/CcspWifiSsp -subsys eRT.

    奇怪的是:
    1.似乎涨到 29%不会继续涨了

    2.用下列命令看 heap 信息,发现 heap 也不大。
    root@RaspberryPi-Gateway:~# grep -A 15 heap /proc/7512/smaps
    00024000-00066000 rw-p 00000000 00:00 0 [heap]
    Size: 264 kB
    KernelPageSize: 4 kB
    MMUPageSize: 4 kB
    Rss: 248 kB
    Pss: 248 kB
    Shared_Clean: 0 kB
    Shared_Dirty: 0 kB
    Private_Clean: 0 kB
    Private_Dirty: 248 kB
    Referenced: 228 kB
    Anonymous: 248 kB
    LazyFree: 0 kB
    AnonHugePages: 0 kB
    ShmemPmdMapped: 0 kB
    FilePmdMapped: 0 kB
    --
    00066000-002a0000 rw-p 00000000 00:00 0 [heap]
    Size: 2280 kB
    KernelPageSize: 4 kB
    MMUPageSize: 4 kB
    Rss: 2216 kB
    Pss: 2216 kB
    Shared_Clean: 0 kB
    Shared_Dirty: 0 kB
    Private_Clean: 0 kB
    Private_Dirty: 2216 kB
    Referenced: 2216 kB
    Anonymous: 2216 kB
    LazyFree: 0 kB
    AnonHugePages: 0 kB
    ShmemPmdMapped: 0 kB
    FilePmdMapped: 0 kB

    3.还是看 /proc/7512/smaps 里面的信息,发现一个我不知道的区域占了大量虚拟内存
    2fc99000-b16fe000 rw-p 00000000 00:00 0
    Size: 2124180 kB
    KernelPageSize: 4 kB
    MMUPageSize: 4 kB
    Rss: 16 kB
    Pss: 16 kB
    Shared_Clean: 0 kB
    Shared_Dirty: 0 kB
    Private_Clean: 0 kB
    Private_Dirty: 16 kB
    Referenced: 16 kB
    Anonymous: 16 kB
    LazyFree: 0 kB
    AnonHugePages: 0 kB
    ShmemPmdMapped: 0 kB
    FilePmdMapped: 0 kB
    Shared_Hugetlb: 0 kB
    Private_Hugetlb: 0 kB
    Swap: 0 kB
    SwapPss: 0 kB
    Locked: 0 kB
    THPeligible: 0
    VmFlags: rd wr mr mw me ac


    额外补充的 Notes:
    1. 这个 top 命令来自于嵌入式的 busybox
    2. free 看到的信息:
    root@RaspberryPi-Gateway:~# free -m
    total used free shared buff/cache available
    Mem: 7555 313 7117 75 124 7045
    Swap: 0 0 0
    3 条回复    2022-09-03 22:02:55 +08:00
    nuk
        1
    nuk  
       2022-07-31 02:44:29 +08:00
    应该只是 mmap 了,但还没访问的未分配页。原因各种各样,不过只要不做 fork ,一般是没啥问题的。
    huangya
        2
    huangya  
    OP
       2022-09-02 18:42:34 +08:00
    @nuk 不好意思这么久才回复,但我其实一直在追这个问题。因为我发现似乎另外一个遇到的内存问题可能与之相关,我看到有时程序调用 calloc ( x,y )不成功。x *y 大概有几千个字节。想听听你的看法。或者你能否多讲讲此贴的问题的可能的原因。非常感谢!
    nuk
        3
    nuk  
       2022-09-03 22:02:55 +08:00
    @huangya 建议跟踪一下内存分配函数,这片 2G 的内存怎么看都像 INT_MAX,mmap 下个断点
    b mmap if len>1<<20
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2770 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 15:40 · PVG 23:40 · LAX 08:40 · JFK 11:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.