如何使用Linux的内存命令H? (linux 查看内存命令 -h)
作为一个Linux系统管理员或者开发人员,你肯定经常需要使用一些命令来监控和管理系统的内存使用情况。其中一个非常有用的命令是H命令,它是Linux内核中的一个内存映射文件,可以让你查看系统中内存使用的情况。本文就来介绍一下如何使用Linux的内存命令H。
H命令是什么?
让我们来了解一下H命令到底是什么。在Linux系统中,每个进程都有一个虚拟内存地址空间,用于保存进程的代码、数据和堆栈等信息。这个地址空间是被划分成许多页面的,每个页面的大小通常为4KB或者更大。这些页面的映射关系被保存在一个叫做Page Tables(页面表)的数据结构中,它描述了每个页面的物理地址和虚拟地址之间的映射关系。
H命令就是通过读取Page Tables来提供有关内存使用情况的信息的。它能够显示不同的内存区域,包括:
– Anon:匿名内存,没有文件映射的共享内存;
– Vmalloc:虚拟内存,动态内存分配;
– Slab:内核数据结构用到的页;
– Kernel:内核代码用到的页;
– PageTables:管理虚拟地址空间的页等。
在Linux内核中,H命令被实现为一个内核模块,可以通过modprobe命令加载。一旦加载H命令,你就可以使用它来监控系统的内存使用情况。
如何使用H命令?
现在,让我们来看看如何使用H命令。由于H命令是内核模块,因此在使用之前,你需要确保已经加载了该模块。在大多数Linux发行版中,该模块已经默认包含在内核中,并且不需要手动加载。你可以运行以下命令来检查H命令是否可用:
$ lod | grep kmem
如果输出中包含” kmem”字样,那么H命令就已经加载成功了。
一旦确认H命令已经加载成功,你就可以使用它来查看系统的内存使用情况了。下面是几个常用的命令行选项:
– -p:指定要监控的进程;
– -k:显示内核对象的内存使用情况;
– -t:按照不同的线程显示内存使用情况;
– -R:显示内存使用情况的增量,即显示自上次运行该命令以来内存使用情况的变化。
以下是使用H命令的一些示例:
$ H
显示系统中所有进程的内存使用情况。
$ H -p
显示指定进程的内存使用情况。
$ H -k
显示内核对象的内存使用情况。
$ H -t
按照线程显示内存使用情况。
$ H -R
显示内存使用情况的增量。
当你运行H命令时,它会在终端输出一些列关于内存使用情况的信息。下面是一个示例输出:
# cat /proc/meminfo | grep Huge
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2023 kB
# H
PID PPID UID User State RSS THNAME CMDLINE
1 0 0 root S 4 init /in/init splash
2 0 0 root S 0 kthrea [kthreadd]
…
# H -p 1
VMA Start End Size Private Shared RefCount Dirty Swp Anonymous Locked AnonHugePages KernelPageSize MMUPageSize
0xffff880007acf000 0xffff880007acf000 0xffff880007b3d000 0x000000000006a000 0x000000000006a000 0x0000000000000000 0x0000000000000001 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000
# H -k
ADDRESS SIZE TYPE COUNT
ffffffff82c00000 262144 BootMe 1
DATA
ffffffffa0000000 524288 IPoIB 4
DATA
ffffffffa0040000 32768 CGroup 2
这些输出中包含了有关内存使用情况的各种信息,例如进程的PID、内存占用量、线程名称、VMA的起始地址和结束地址、VMA的大小、私有内存的大小、共享内存的大小、脏页的数量等等。
结论