Linux找出哪些进程正在使用交换空间
top和free命令显示服务器中可用和已用物理内存和交换内存的总量。
如何确定Linux操作系统下哪个进程正在使用交换空间?
如何找出特定进程(例如memcached)的交换空间使用情况?
您可以使用以下任何一种技术
- /proc/meminfo该文件报告有关系统内存使用情况的统计信息。免费使用它来报告系统上可用和已使用的内存(物理内存和交换内存)以及内核使用的共享内存和缓冲区的数量。您还可以使用免费的vmstat和其他工具来查找相同的信息。
/proc/${PID}/stats
,/proc/${PID}/status
和/proc/${PID}/stat
:使用这些文件查找有关所使用的内存,页面和交换的信息通过每个进程使用其PID。- smem该命令(python脚本)报告内存使用情况,并按比例划分共享内存。
找出进程ID和交换使用情况
执行以下pidof命令,以找到正在运行的名为memcached的程序的进程ID:
# pidof memcached
或者,使用pgrep命令查找进程PID,执行:
# pgrep memcached
输出示例(记下PID号1):
48440
要查看memcached使用的交换空间(PID48440
),请输入(数字#2):
# grep --color VmSwap /proc/48440/status
输出示例(编号4):
VmSwap: 900 kB
或者以下awk命令(编号3):
# awk '/VmSwap/{print " " }' /proc/48440/status
列出所有进程交换空间的使用
执行以下bash for loop命令以查看每个进程的交换空间使用情况:
## bash for loop ## for file in /proc/*/status ; do awk '/VmSwap|Name/{printf " " }END{ print ""}' $file; done
执行以下命令以整理输出:
## Get swap space in Linux using bash for loop ## for file in /proc/*/status ; do awk '/VmSwap|Name/{printf " " }END{ print ""}' $file; done | sort -k 2 -n -r | less
smem
smem命令报告物理内存使用情况,同时考虑共享内存页面。
未共享的内存报告为USS(唯一集大小)。
共享内存在共享该内存的进程之间平均分配。
未共享内存(USS)加上进程共享内存的比例报告为PSS(比例集大小)。
USS和PSS仅包括物理内存使用情况。
它们不包括已换出到磁盘的内存。
可以按进程,用户,映射或者系统范围报告内存。
文本模式和图形输出均可用。
安装smem
要安装smem [2],请在Debian/Ubuntu Linux下执行以下命令:
$ sudo apt-get install smem
RHEL/CentOS Linux用户执行以下命令:
$ wget https://www.selenic.com/smem/download/smem-1.4.tar.gz $ tar xvf smem-1.4.tar.gz # cp /tmp/smem-1.2/smem /usr/local/bin/ # chmod +x /usr/local/bin/smem
如何使用smem命令?
语法为:
smem [option] ## This lets smem include the size of the kernel's code and statically allocated data in the systemwide (-w) output ## smem -K /path/to/kernel/image/on/disk [option] ## Amount of physical RAM. This lets smem detect the amount of memory used by firmware/hardware in the systemwide (-w) output. ## If provided, it will also be used as the total memory size to base percentages on. smem -R REALMEMSIZE [option]
要查看基本过程信息,请执行:
# smem
要查看面向库的视图,请执行:
# smem -m
要查看面向用户的视图,请执行:
# smem -u
要查看系统范围内的内存使用情况摘要,请通过-w选项:
# smem -w
输出示例:
Area Used Cache Noncache firmware/hardware 0 0 0 kernel image 0 0 0 kernel dynamic memory 5302144 5137920 164224 userspace memory 2692196 240828 2451368 free memory 126228 126228 0
查看系统视图
# smem -R 8G -K /path/to/vmlinux/on/disk -w
要查看总数和百分比,请执行:
# smem -t -p
选项
执行以下命令以查看所有其他受支持的选项:
# smem --help
输出示例:
-h, --help show this help message and exit -H, --no-header disable header line -c COLUMNS, --columns=COLUMNS columns to show -t, --totals show totals -R REALMEM, --realmem=REALMEM amount of physical RAM -K KERNEL, --kernel=KERNEL path to kernel image -m, --mappings show mappings -u, --users show users -w, --system show whole system -P PROCESSFILTER, --processfilter=PROCESSFILTER process filter regex -M MAPFILTER, --mapfilter=MAPFILTER map filter regex -U USERFILTER, --userfilter=USERFILTER user filter regex -n, --numeric numeric output -s SORT, --sort=SORT field to sort on -r, --reverse reverse sort -p, --percent show percentage -k, --abbreviate show unit suffixes --pie=PIE show pie graph --bar=BAR show bar graph -S SOURCE, --source=SOURCE /proc data source
有关top的说明
以超级用户身份执行top命令:
# top
要按交换页使用情况对过程进行排序(SWAP = VIRT RES),请执行大写字母O(选项),然后按p(小写p)并按[Enter]键:
按交换使用情况对top命令进行排序点击放大)