用smem查看Linux内存占用情况

smem这个工具可以提供Linux系统上内存耗用情况方面的众多报告。与现有的工具不一样,smem可以报告实际使用的物理内存(PSS),这是一种更有意义的指标,可以衡量虚拟内存系统中的库和应用程序所占用的内存数量。由于大部分的物理内存通常在多个应用程序之间共享,名为实际使用物理内存(RSS)的这个标准的内存耗用衡量指标会大大高估内存耗用情况。PSS这个参数而是衡量了每个应用程序在每个共享内存区中的“公平分配”,给出了一个切合实际的衡量指标。

安装
如果你使用Debian、Ubuntu或Mint,可以使用下面这个命令,直接从官方软件库安装smem:
$ sudo apt-get install smem
Arch Linux用户可以从Arch用户软件库(AUR,https://www.archlinux.org/packages/community/i686/smem/)安装程序包。
Red Hat / Fedora / CentOS / SuSE用户可以使用直接从官方网站下载的预编译二进制代码。为了方便起见,你可以拷贝剪贴这些命令,这些命令会将命令smen放入到你的/usr/local/bin文件夹:
cd /tmp/
wget http://www.selenic.com/smem/download/smem-1.3.tar.gz
tar xvf smem-1.3.tar.gz
sudo cp /tmp/smem-1.3/smem /usr/local/bin/
sudo chmod +x /usr/local/bin/smem

基本用法
smem可报告物理内存使用情况,并且考虑到共享的内存页面。非共享内存被报告为进程独自占用的物理内存(USS)。共享内存在共享该内存的多个进程之间平均分配。非共享内存(USS)以及进程的共享内存比例被报告为实际使用的物理内存(PSS)。USS和PSS只包含物理内存使用情况。它们并不包含已经被置换到磁盘上的内存。
基本用法会显示运行中进程以及所用的内存数量;想看看这方面的情况,运行不带任何选项的命令smem,这会得出类似下面这样的输出:

# smem
PID User Command Swap USS PSS RSS
4223 linuxaria /usr/lib/chromium-browser/c 0 9144

 

 

  • 手动清理

cat /proc/sys/vm/drop_caches
echo 1 > /proc/sys/vm/drop_caches //#表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches #表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches #表示清除pagecache和slab分配器中的缓存对象。 

  • 设置定时任务定时清除buff/cache脚本

# 创建脚本
vim /home/script/clear_buff_cache.sh
#!/bin/bash

#开始清理缓存
echo "开始清除缓存"

#写入硬盘,防止数据丢失
sync;sync;sync

#延迟10秒
sleep 10

#清理缓存
echo 3 > /proc/sys/vm/drop_caches


# 配置定时任务
[root@123 ~]# crontab -e

# clear buff/cache

30 2 * * * /home/script/clear_buff_cache.sh

 

 

posted @ 2022-05-11 08:57  lenyee  阅读(278)  评论(0编辑  收藏  举报