swap初探
来源:互联网 发布:程序员都用什么浏览器 编辑:程序博客网 时间:2024/06/15 05:13
swap初探
线上机器不停发邮件报警,swap使用超过阀值。实在受不了邮件,决定干点运维的活。看看情况。
查swap整体使用情况
free -m
最先最直接就是这条命令了,结果类似下图
total used free Swap: 34175 11374 22801
sar -r(不同版本sar参数不同,sar -h看看就好),如下图
Linux 2.6.18-308.el5 (a05.api.box.ott.b28.youku) 04/07/1600:00:01 kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad00:10:01 11397792 21517364 65.37 305740 14510832 4192956 0 0.00 000:20:01 11364748 21550408 65.47 307644 14539508 4192956 0 0.00 000:30:01 11341260 21573896 65.54 308772 14566856 4192956 0 0.00 000:40:01 11314416 21600740 65.63 309704 14593728 4192956 0 0.00 000:50:01 11286120 21629036 65.71 310612 14619356 4192956 0 0.00 001:00:01 11262720 21652436 65.78 311348 14642836 4192956 0 0.00 0...Average: 10691597 22223559 67.52 331646 15190674 4192956 0 0.00 0
sar和free都不是实时数据。如果要看实时数据vmstat
vmstat -2(2秒刷新一次)。结果如图
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------r b swpd free buff cache si so bi bo in cs us sy id wa st5 0 0 9797884 356252 16031016 0 0 0 8 0 0 10 4 87 0 00 0 0 9797988 356300 16031348 0 0 0 185 11497 30788 9 2 89 0 017 0 0 9797240 356304 16031532 0 0 0 0 11430 30918 8 2 90 0 0
si: Amount of memory swapped in from disk (/s).
so: Amount of memory swapped to disk (/s).
si和so越小越好咯,只要不是一直不为0,都没事
按进程查看swap使用
top(top命令提供的SWAP信息只是一个理论值,计算公式是:SWAP=VIRT-RES,不可信)
top --> 按「f」进入字段选择 --> 按「p」选择「SWAP」字段,再按「u」选择Page Fault字段 --> 回车确认 -->结果如下 --> 「Shifl」+「+」+「>」按某个字段排序,默认按cpu使用率
top - 10:45:37 up 29 days, 17:06, 1 user, load average: 0.02, 0.22, 0.31Tasks: 616 total, 5 running, 611 sleeping, 0 stopped, 0 zombieCpu(s): 8.9%us, 2.2%sy, 0.0%ni, 88.3%id, 0.0%wa, 0.0%hi, 0.6%si, 0.0%stMem: 32986852k total, 32795452k used, 191400k free, 146108k buffersSwap: 4194300k total, 1296k used, 4193004k free, 26758872k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP nFLT COMMAND 31022 root 19 0 6994m 234m 11m S 0.3 0.7 657:47.61 6.6g 100 java 9344 nobody 20 0 259m 21m 1152 S 0.0 0.1 3:04.89 88 0 nginx 9345 nobody 20 0 259m 21m 1152 S 0.0 0.1 2:54.11 88 0 nginx 9346 nobody 20 0 259m 21m 1152 S 0.0 0.1 3:11.32 88 0 nginx 9347 nobody 20 0 259m 21m 1152 S 0.0 0.1 2:59.73 88 0 nginx 9348 nobody 20 0 259m 21m 1152 S 0.0 0.1 3:03.24 88 0 nginx 9349 nobody 20 0 259m 21m 1152 S 0.0 0.1 3:01.04 88 0 nginx 9350 nobody 20 0 259m 21m 1152 S 6.9 0.1 3:00.65 88 0 nginx 9351 nobody 20 0 259m 21m 1152 S 0.0 0.1 3:09.42 88 0 nginx 9352 nobody 20 0 240m 1548 572 S 0.0 0.0 0:00.20 88 0 nginx 15510 root 20 0 240m 2428 1520 S 0.0 0.0 0:00.09 88 3 nginx 2133 root 20 0 243m 2372 912 S 0.0 0.0 0:00.90 4 53 rsyslogd 1 root 20 0 19232 1112 820 S 0.0 0.0 0:02.22 0 9 init
可以看到最高的是个java进程,使用了6.6g,但是我们swap实际只有4g,可以印证数值不准。但是每个进程的使用分布是准的,就是说java > nginx > rsyslogd这个关系是准的。你可以理解为,top把每个进程使用的swap同等放大或缩小,但是不改变大小关系。
Swappiness
从sar结果可以看出物理内存平均使用才67%,但是swap已经被用到了。实际上,当可用内存不足时,系统有两个选择:一个是通过SWAP来释放内存,另一个是删除Cache中的Page来释放内存。一个很常见的例子是:当拷贝大文件的时候,时常会发生SWAP现象。这是因为拷贝文件的时候,系统会把文件内容在Cache中按Page来缓存,此时一旦可用内存不足,系统便会倾向于通过SWAP来释放内存。 内核中的swappiness参数可以用来控制这种行为,缺省情况下,swappiness的值是60: sysctl -a | grep swappiness vm.swappiness = 60 意思是:如果系统需要内存,有百分之六十的概率执行SWAP 考虑到机器内存仍有剩余,修改此参数,降低使用swap概率,尽可能使用物理内存,但并不意味着永远不会执行SWAP。网上传言设置为0,会有灵异问题出现,公司线上机器不敢拿来做实验,就设置1好了
shell> echo "vm.swappiness = 1" >> /etc/sysctl.conf shell> sysctl -p
这个不要随便设置,请确定物理内存确实是有剩余,设置0了可能内存耗尽,没有swap缓冲,系统会立即开始OOM,问题可能会更惨烈。
修改后过了一天再看sar,Average 内存使用飙到99.37%,但是swap确实没有超过阀值报警。
0 0
- swap初探
- swap
- swap
- swap
- swap
- swap
- swap
- Swap:
- swap
- swap
- Swap
- swap
- Swap
- swap
- swap
- swap
- swap
- swap
- BZOJ 3295 动态逆序对(CDQ分治)
- 关于抽象类和接口
- 5.3 postfix的ACL规则
- zz:初学android所必需的的知道的android新闻系统程序基本结构
- c++实验三-个人所得税计算器
- swap初探
- 向量间距离计算
- 责任型模式之Observer(观察者)模式
- Python面向对象特性,走向类
- 编程实现顺序表的基本操作
- 深入浅出 JavaScript 中的 this
- C++第3次实验
- 5.3.1.1 postfix自身的ACL规则--通用规则与generic_checks函数
- IPC机制的几种通讯方式之ContentProvider