内存管理,特别是监视内存使用情况,对于Linux系统服务器来说至关重要。不同的Linux发行版中有许多工具可用于监视内存使用情况,每种工具的功能各不相同。
在本文当中,小编主要介绍smem报告工具,它可以帮助你在Linux环境中报告每个进程和每个用户的内存消耗情况。
Smem工具特点
smem是一个命令行内存报告工具,它为用户提供有关Linux系统上内存使用情况的各种报告。smem有一个独特之处,与其它传统内存报告工具不同,它报告PSS(Proportional Set Size),这是虚拟内存设置中应用程序和库的内存使用情况的更有意义的表示。
现有的传统工具主要侧重于读取RSS(Resident Set Size),这是监视物理内存方案中内存使用情况的标准措施,但往往会高估应用程序的内存使用情况。此外,PSS通过确定虚拟内存方案中应用程序和库使用的内存的“公平共享”来给出合理的衡量标准。
smem工具具有以下特点:
- 系统概览列表
- 列表以及按进程、映射或用户进行过滤
- 使用/proc文件系统中的数据
- 来自多个数据源的可配置列表列
- 可配置的输出单位和百分比
- 轻松配置列表中的标题和总计
- 使用目录镜像或压缩tar文件中的数据快照
- 内置图表生成机制
- 嵌入式系统中使用的轻量级捕获工具
在Linux中安装Smem
要在Linux系统中安装Smem,请使用以下适合你的特定Linux发行版的命令:
sudo apt install smem [Debian、Ubuntu和Mint] sudo yum install smem [RHEL/CentOS/Fedora和Rocky/AlmaLinux] sudoemerge -a sys-apps/smem [Gentoo Linux] sudo apk add smem [Alpine Linux] sudo pacman -S smem [Arch Linux] sudo zypper install smem [OpenSUSE] sudo pkg install smem [FreeBSD]
显示Linux内存使用统计信息
要查看所有系统用户整个系统的内存使用情况报告,请运行以下命令:
sudo smem
当普通用户运行smem时,它会显示用户启动的进程的内存使用情况,进程按PSS递增的顺序排列。
在这里可以查看系统上的以下输出,例如了解tecmint
用户启动的进程的内存使用情况:
smem
使用smem时可以调用许多选项,例如,要查看系统范围的内存消耗,请运行以下命令:
sudo smem -w
显示Linux中每个用户的内存使用情况
要查看每个用户的内存使用情况,请运行以下命令:
sudo smem -u
此外,你还可以通过映射报告内存使用统计信息,命令如下:
sudo smem -m
显示Linux中每个进程的内存使用情况
要按进程名称过滤输出,请调用-P
或--processfilter="regex"
选项,命令如下:
sudo smem --processfilter="chrome"
输出格式非常重要,有一些选项可以帮助你格式化内存报告,我们将在下面看几个示例。
要在报告中显示所需的列,请使用-c
或--columns
选项,如下所示:
sudo smem -c "name user pss rss"
当然,你可以调用-p
选项以百分比形式报告内存使用情况,如以下命令所示:
sudo smem -p
下面的命令将在输出的每列末尾显示总计:
sudo smem -t
显示内存使用情况的视觉表示
此外,你还可以使用图形报告的选项,这样你可以生成进程及其PSS和RSS值的条形图,在下面的示例中,我们将生成root用户拥有的进程的条形图。
垂直面显示进程的PSS和RSS度量,水平面表示每个root用户进程:
sudo smem --userfilter="root" --bar pid -c"pss rss"
你还可以根据PSS或RSS值生成显示进程及其内存消耗的饼图。下面的命令输出root用户拥有的进程测量值的饼图。
名称--pie
意味着按名称进行标记,-s
选项有助于按PSS值排序。
sudo smem --userfilter="root" --pie name -s pss
除了用于标记图表的PSS和RSS之外,还有许多其它已知字段。如果想要获得帮助,只需键入smem -h
或访问手动输入页面进行查看。
smem -h
总结
以下简单介绍了Smem工具,并且演示了几个用例。当然,为了更好地理解它,请将它与你可以在手册页上找到的许多其它选项一起配合使用,从而更好体验它的强大功能。