如何查看Linux的RAM视图以确定碎片

我所知道的唯一相关的程序是pmap ,但是这只能打印一个进程的内存

我想看看物理内存是如何被占用的,以及整个物理RAM的哪个进程/库(包括内核)(与使用pmap的进程的POV相对)。

理想情况下也是一个graphics界面。

你知道有没有这样的工具?

我知道图书馆引入的歧义。 如果是这样,它可以显示一个1像素宽的线和一个箭头到该库的实际位置。

我需要什么? 查看RAM碎片。

Solutions Collecting From Web of "如何查看Linux的RAM视图以确定碎片"

内存碎片

当Linux系统运行一段时间后,内存碎片可能会增加,这在很大程度上取决于正在运行的应用程序的性质。 更多的进程分配和释放内存,更快的内存变得分散。 内核可能不能总是按照要求的大小对内存进行碎片整理。 如果发生这种情况,应用程序可能无法分配更大的连续的内存块,即使有足够的可用内存。 从2.6内核(即RHEL4和SLES9)开始,内存管理已经得到了极大的改善,内存碎片已经不再成为问题。

要看内存碎片,你可以使用神奇的SysRq键。 只需执行以下命令:

 # echo m > /proc/sysrq-trigger 

该命令将当前内存信息转储到/ var / log / messages。 这是一个RHEL3 32位系统的例子:

 Jul 23 20:19:30 localhost kernel: 0*4kB 0*8kB 0*16kB 1*32kB 0*64kB 1*128kB 1*256kB 1*512kB 1*1024kB 0*2048kB 0*4096kB = 1952kB) Jul 23 20:19:30 localhost kernel: 1395*4kB 355*8kB 209*16kB 15*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 12244kB) Jul 23 20:19:31 localhost kernel: 1479*4kB 673*8kB 205*16kB 73*32kB 21*64kB 847*128kB 473*256kB 92*512kB 164*1024kB 64*2048kB 28*4096kB = 708564kB) 

第一行显示DMA内存碎片。 第二行显示低内存碎片,第三行显示高内存碎片。 输出显示内存不足区域中的内存碎片。 但是高内存区有很多大的内存块,例如28个4MB。

如果内存信息未被转储到/ var / log / messages,则SysRq未启用。 您可以通过将sysrq设置为1来启用SysRq:

 # echo 1 > /proc/sys/kernel/sysrq 

从2.6内核开始,即RHEL4和SLES9,您不需要SysRq来转储内存信息。 您可以简单地检查/ proc / buddyinfo内存碎片。

以下是运行2.6内核的64位服务器的输出:

 # cat /proc/buddyinfo Node 0, zone DMA 5 4 3 4 3 2 1 0 1 1 2 Node 0, zone Normal 1046 527 128 36 17 5 26 40 13 16 94 # echo m > /proc/sysrq-trigger # grep Normal /var/log/messages | tail -1 Jul 23 21:42:26 localhost kernel: Normal: 1046*4kB 529*8kB 129*16kB 36*32kB 17*64kB 5*128kB 26*256kB 40*512kB 13*1024kB 16*2048kB 94*4096kB = 471600kB # 

在这个例子中,我再次使用SysRq来显示/ proc / buddyinfo中每个数字所指的内容。

资料来源: http : //www.puschitz.com/pblog/