当前位置: 首页 > 科技观察

linux内存管理神器:smem工具

时间:2023-03-14 23:04:16 科技观察

大家好,我是良旭。今天给大家分享一款Linux系统中的内存管理神器:smem。smem是Linux系统上的命令行工具,可以生成各种内存消耗报告。与现有工具不同,smem可以报告PSS[ProportionalSetSize],这是一个更有意义的指标。可以测量虚拟内存系统的库和应用程序使用的内存量。由于大部分物理内存通常在多个应用程序之间共享,因此称为驻留集大小(RSS)的标准内存消耗指标大大高估了内存消耗。PSS参数反而测量每个共享内存区域中每个应用程序的“公平分配”,给出一个现实的测量。1、安装smem工具如果你使用的是Fedora19+系统,smem默认在仓库中,所以你可以使用yum安装:$sudoyuminstallsmem对于Ubuntu用户,你可以使用apt-get命令安装smem:$sudoapt-getinstallsmem如果不能正常安装,可以下载其源码直接安装,地址:https://www.selenic.com/smem/download/2。smem工具的常用用法默认情况下,smem会显示每个正在运行的进程和使用的内存。在这里,您可以注意到RSS相对于USS和PSS的大小,您可以看到它明显高于其他两个。$smem另外,smem可以显示各个库使用的内存。此结果较长,可能需要一些时间,具体取决于您的系统。$smem-m这个命令产生的结果太多,如果我们想查看某个特定应用程序的内存使用情况,比如Firefox,那么我们可以配合grep命令使用,使用-p选项查看内存使用情况百分比。$smem-m-p|grepfirefoxsmem命令还可以显示每个用户的内存使用情况,需要使用-u选项:$smem-u-p也可以使用-w选项查看系统内存使用情况:$smem-w-p3.结果可视化输出显示数字毕竟不是很直观,我们也可以使用smem生成图形图表来显示内存使用情况,一目了然。为了实现这个目标,我们需要使用无所不能但没有孩子的Python。但是光有Python是不够的,还需要安装matplotlib库来生成图表。Fedora用户可以通过运行以下命令安装它:$sudoyuminstallpython-matplotlibUbuntu用户可以通过运行以下命令获得它:$sudoapt-getinstallpython-matplotlib以.3.1饼图使用smem以饼图的形式查看内存使用情况,需要添加--pie选项,如下图:$smem--piename-spss命令运行后会生成一个饼图。请注意,我们在该命令中还添加了-spss,即显示PSS的内存使用情况。要获得USS和RSS的饼图,只需将命令中的pss替换为uss或rss即可。从两个饼图可以看出,RSS报告了41.74%的未使用内存,而PSS报告了53.02%的未使用内存。可以看出RSS显示的可用内存比较少,但实际上内存空间还比较充裕。3.2直方图smem的另一个很酷的特性是它以直方图的形式生成输出。使用此功能,您可以一次性查看USS、PSS和RSS报告的内存使用情况。为此,添加--bar选项:$smem--barpid-c"p??ssussrss"上面的命令将输出内存使用情况和进程ID号。如果要查看进程的名称,可以将pid替换为name。命令运行后,可以生成如下图所示的条形图。