Linux /proc/meminfo能否指出内存泄漏的一些提示?
如果系统中存在内存泄漏,最好定期使用cat/proc/meminfo获取提示 如果是这样,考虑到可疑内存泄漏位于内核模块中,我应该关注哪个指标:Linux /proc/meminfo能否指出内存泄漏的一些提示?,linux,memory-leaks,linux-kernel,Linux,Memory Leaks,Linux Kernel,如果系统中存在内存泄漏,最好定期使用cat/proc/meminfo获取提示 如果是这样,考虑到可疑内存泄漏位于内核模块中,我应该关注哪个指标: > cat /proc/meminfo MemTotal: 16344972 kB MemFree: 13634064 kB MemAvailable: 14836172 kB Buffers: 3656 kB Cached: 1195708 kB SwapCached: 0
> cat /proc/meminfo
MemTotal: 16344972 kB
MemFree: 13634064 kB
MemAvailable: 14836172 kB
Buffers: 3656 kB
Cached: 1195708 kB
SwapCached: 0 kB
Active: 891636 kB
Inactive: 1077224 kB
HighTotal: 15597528 kB
HighFree: 13629632 kB
LowTotal: 747444 kB
LowFree: 4432 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 968 kB
Writeback: 0 kB
AnonPages: 861800 kB
Mapped: 280372 kB
Shmem: 644 kB
Slab: 284364 kB
SReclaimable: 159856 kB
SUnreclaim: 124508 kB
PageTables: 24448 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 7669796 kB
Committed_AS: 100056 kB
VmallocTotal: 112216 kB
VmallocUsed: 428 kB
VmallocChunk: 111088 kB
AnonHugePages: 49152 kB
更好的启动方式是免费的命令行工具,它使用相同的文件/proc/meminfo:
空闲-显示系统中可用和已使用的内存量。free显示系统中可用和使用的物理内存和交换内存的总量,以及内核使用的缓冲区和缓存。通过解析/proc/meminfo收集信息
free tool使用和释放了内存列,每个列有两个值,但事实是,在Linux和Unix中,可能在Windows中也存在将HDD中的数据缓存到RAM中的机制
实际上,这只是一个缓存,当您的应用程序请求并使用更多内存时,如果缓存的数据未被修改,页面缓存将被部分丢弃;如果数据被修改,页面缓存将刷新到HDD,操作系统将为您的应用程序提供内存
在Linux中,页缓存使用的内存报告为非空闲内存,而是在缓冲区/缓存列中,并计入已用内存的第一行
buffers
Memory used by kernel buffers (Buffers in /proc/meminfo)
cache Memory used by the page cache and slabs (Cached and
SReclaimable in /proc/meminfo)
自由输出示例:
$ free -m
total used free shared buffers cached
Mem: 1504 1491 13 0 91 764
-/+ buffers/cache: 635 869
Swap: 2047 6 2041
空闲列的第一行是空闲RAM,不被任何东西使用。第二行第二个值是空闲RAM+缓存+缓冲区
你可以在
自由人-
更好的启动方式是免费的命令行工具,它使用相同的文件/proc/meminfo:
空闲-显示系统中可用和已使用的内存量。free显示系统中可用和使用的物理内存和交换内存的总量,以及内核使用的缓冲区和缓存。通过解析/proc/meminfo收集信息
free tool使用和释放了内存列,每个列有两个值,但事实是,在Linux和Unix中,可能在Windows中也存在将HDD中的数据缓存到RAM中的机制
实际上,这只是一个缓存,当您的应用程序请求并使用更多内存时,如果缓存的数据未被修改,页面缓存将被部分丢弃;如果数据被修改,页面缓存将刷新到HDD,操作系统将为您的应用程序提供内存
在Linux中,页缓存使用的内存报告为非空闲内存,而是在缓冲区/缓存列中,并计入已用内存的第一行
buffers
Memory used by kernel buffers (Buffers in /proc/meminfo)
cache Memory used by the page cache and slabs (Cached and
SReclaimable in /proc/meminfo)
自由输出示例:
$ free -m
total used free shared buffers cached
Mem: 1504 1491 13 0 91 764
-/+ buffers/cache: 635 869
Swap: 2047 6 2041
空闲列的第一行是空闲RAM,不被任何东西使用。第二行第二个值是空闲RAM+缓存+缓冲区
你可以在
自由人-
有几种可用的工具-top、iotop、iostat、sar、df-h可以让您了解发生了什么事情。ondmitryro、iotop、df对内核模块中的泄漏检测没有帮助;top和sar仅显示少量信息。artm,您可以从免费工具开始,但您应该知道如何从中解释缓存/缓冲区信息。这是FS:您可以使用KMemLeak。有几种可用的工具-top、iotop、iostat、sar、df-h,它们可以让您了解发生了什么。ondmitryro、iotop、df对内核模块中的泄漏检测没有帮助;top和sar仅显示少量信息。artm,您可以从免费工具开始,但您应该知道如何从中解释缓存/缓冲区信息,因为它是FS:并且您可以使用KMemLeakThank。那么,当内存泄漏发生时,空闲度量会接近零吗?我正在观看/proc/meminfo的MemFree度量,但没有真正看到模式。artm,为什么你认为有泄漏?不要从meminfo开始,从免费工具开始。您也可以尝试使用echo 3>/proc/sys/vm/drop_缓存手动刷新缓存/缓冲区-谢谢。那么,当内存泄漏发生时,空闲度量会接近零吗?我正在观看/proc/meminfo的MemFree度量,但没有真正看到模式。artm,为什么你认为有泄漏?不要从meminfo开始,从免费工具开始。您还可以尝试使用echo 3>/proc/sys/vm/drop\u缓存手动刷新缓存/缓冲区-