Linux查看哪些进程用了Swap分区
如果系统的物理内存用光了,则会用到swap。系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。所以要高度重视。
free
free -m
就能看出当前系统所使用的swap了。那么如何查看哪些进程使用了swap呢,这样好针对性的做出优化。
top
Centos(6.0之前):
top只能看到swap总使用量
网上很多人说top+f+p能显示出来swap。可是按完f查看的时候,man top里面swap的解释是:
并不是实际的使用swap。而是VIRT-RES得来的。用我蹩脚的英文翻译就是,虚拟内存中所使用过的swap部分
Centos(6.0之后):
man top
这样就明显看出是取出的每个进程的swap,能很方便的查看哪些进程使用了swap。从中也能看到一个信息。那就是读取了/proc/#/status
vmstat
vmstat -n
也能查看到
仍旧无法查看到哪些进程使用了。但是能看到si、so
Memory(内存):
- swpd: 使用虚拟内存大小
- free: 可用内存大小
- buff: 用作缓冲的内存大小
- cache: 用作缓存的内存大小
Swap:
- si: 每秒从交换区写到内存的大小
- so: 每秒写入交换区的内存大小
Shell脚本
cat /proc//smaps

- bfdca000-bfddf000 是该虚拟内存段的开始和结束位置
- rw-p 内存段的权限,rw是指可读写,p是指私有,如果是s则为共享
- bffea000 该虚拟内存段在对应的映射文件中的偏移量
- 00:00 文件的主设备和次设备号
- 0 被映射到虚拟内存的文件的索引节点号
- [stack] 被映射到虚拟内存的文件名称
- Size 是进程使用内存空间,并不一定实际分配了内存(VSS)
- Rss是实际分配的内存(不需要缺页中断就可以使用的)
- Shared_Clean 和其他进程共享的未改写页面
- Shared_Dirty 和其他进程共享的已改写页面
- Private_Clean 未改写的私有页面页面
- Private_Dirty 已改写的私有页面页面
- Swap 存在于交换分区的数据大小(如果物理内存有限,可能存在一部分在主存一部分在交换分区)
- Pss是平摊计算后的使用内存(有些内存会和其他进程共享,例如mmap进来的)
这里能显示出swap
那么查看你想要看的进程所使用的swap只需要:
awk '/^Swap:/ {SWAP+=$2}END{print SWAP" KB"}' /proc/$(pid)/smaps
也可以写shell统计所以进程的:
#!/bin/bash
# Get current swap usage for all running processes
# writted by xly function getswap {
SUM=
OVERALL=
for DIR in `find /proc/ -maxdepth -type d | egrep "^/proc/[0-9]"` ; do
PID=`echo $DIR | cut -d / -f `
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep Swap $DIR/smaps >/dev/null| awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
echo "PID=$PID - Swap used: $SUM - ($PROGNAME )"
let OVERALL=$OVERALL+$SUM
SUM= done
echo "Overall swap used: $OVERALL"
} getswap
#getswap|egrep -v "Swap used: 0"
iotop
iotop还是非常好用的,能看到哪些进程使用了swap

参考:
http://blog.csdn.net/xiangliangyu/article/details/8213127(以上内容转自此篇文章)
Linux查看哪些进程用了Swap分区的更多相关文章
- 【转】linux 查看哪些进程用了swap
转自:http://blog.csdn.net/xiangliangyu/article/details/8213127 如果系统的物理内存用光了,则会用到swap.系统就会跑得很慢,但仍能运行;如果 ...
- 查看哪些进程占用了SWAP分区?
在日常管理中,我们经常会遇到swap分区使用比较多,那么导致是那些进程使用的呢,其实我们可以通过/proc/pid/下的smaps来获得.使用下面的命令可以列出所有进程占用的swap分区的大小,分别我 ...
- 查看那些进程使用了swap
https://blog.csdn.net/xiangliangyu/article/details/8213127$ sudo pacman -S iotop https://blog.longwi ...
- linux查看某个进程的线程id(spid)
鉴于linux下线程的广泛使用 我们怎么查看某个进程拥有的线程id了 现在很多服务的设计 主进程->子进程->线程(比如mysql,varnish) 主进程负责侦听网络上的连接 并把连接发 ...
- Linux 查看 删除进程
这东西,时间久不用总容易忘....记下来! 1. 在 LINUX 命令平台输入 1-2 个字符后按 Tab 键会自动补全后面的部分(前提是要有这个东西,例如在装了 tomcat 的前提下, 输入 to ...
- Linux查看某个进程的线程
线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念.当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享特定的资源(如,内存地址空间.打开的文件),以使叉分开销最小化 ...
- Linux查看哪些进程占用的系统 buffer/cache 较高 (hcache,lsof)命令
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/9652651a-7 ...
- linux 查看僵尸进程
top -b -i -n 1 查看僵死进程命令 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 查看apache 当前进程数 ps -ef | grep ht ...
- linux查看某个进程CPU消耗较高的具体线程或程序的方法
目前我们的监控,可以发现消耗较高CPU的进程(阀值为3个CPU),通过监控我们可以找到消耗较高CPU的进程号: 通过进程号pid,我们在linux上可以通过top –H –p <pid> ...
随机推荐
- django orm 之makemigrations和migrate命令
makemigrations:将模型的更改生成迁移脚本文件.模型所在的app,必须放在settings.py中的INSTALLED_APPS列表中.这个命令有以下几个常用选项: 1.app_label ...
- 201621123033 《Java程序设计》第9周学习总结
第九次作业 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 //stream(),filter(),collect() ...
- 五、vue nextTick
主线程的执行过程就是一个 tick,而所有的异步结果都是通过 "任务队列" 来调度被调度. 消息队列中存放的是一个个的任务(task). 规范中规定 task 分为两大类,分别是 ...
- 使用awk根据多维度统计系统tps
业务简单日志格式: [2017-08-28 01:00:00.523]transfer_search,7001045,1708271100083774377,20170827,,,,,,,,,,001 ...
- ndk开发-ffmpeg编译
进入模拟器shell: D:\Users\zhouhaitao\AppData\Local\Android\sdk\platform-tools\adb shell ndk编译链接静态库: LOCAL ...
- linux进程——后台运行的方法
linux进程后台运行的几种方法: 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败. 如何让命 ...
- Codeforces 932.B Recursive Queries
B. Recursive Queries time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- 2.1 Python3.5安装以及爬虫需要的环境配置
之所以选用Python,是因为对于网络爬虫来说,Python是最好上手的一种语言.本文讲述的安装配置都是基于Windows的环境. 另外我想说的是,文中用到的下载链接尽量官方网站上的下载链接,这是我比 ...
- git项目初始化的问题汇总
转:https://blog.csdn.net/Free_Wind22/article/details/81628721 1.在Git官网上点击New repository新建项目: 2.在本地新建一 ...
- elemetUi 组件--el-checkbox
[需求]实现选择右边的