Linux之swap知识整理
Linux查看那些进程用了swap
如果系统的物理内存用光了,则会用到swap。系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。所以要高度重视。
swap空间大小:
通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置:如果是小的桌面系统,则只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加,具体配置参见各服务器产品的说明。
swap数量:
Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于 所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待 状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。
方法1:shell脚本
[root@VM_8_35_centos shell]# cat getswap.sh #!/bin/bash # Get current swap usage for all running processes function getswap { SUM=0 OVERALL=0 for DIR in `find /proc/ -maxdepth 1 -type d | egrep "^/proc/[0-9]"` do PID=`echo $DIR | cut -d / -f 3` PROGNAME=`ps -p $PID -o comm --no-headers` for SWAP in `grep Swap $DIR/smaps 2>/dev/null| awk '{ print $2 }'` do let SUM=$SUM+$SWAP done echo "PID=$PID - Swap used: $SUM - ($PROGNAME)" let OVERALL=$OVERALL+$SUM SUM=0 done echo "Overall swap used: $OVERALL" } getswap #getswap|egrep -v "Swap used: 0" [root@VM_8_35_centos shell]# sh swap.sh PID=1 - Swap used: 0 - (init) PID=2 - Swap used: 0 - (migration/0) PID=3 - Swap used: 0 - (ksoftirqd/0) …………………… PID=30910 - Swap used: 0 - () PID=30911 - Swap used: 0 - () PID=30912 - Swap used: 0 - () Overall swap used: 0
方法2:linux命令
for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -k2nr
如何增大swap空间?
# 查看当前内存 free -g # 查看交换分区使用情况 swapon -s # 创建一个分区添加交换文件,创建交换空间,然后启动新增的交换空间(1G大小) dd if=/dev/zero of=/data0/swap bs=1024 count=1024000 /sbin/mkswap /data0/swap /sbin/swapon /data0/swap # 再次查看内存情况 free -g 修改/etc/fstab,使新加的2G交换空间在系统重新启动后自动生效 echo "/opt/temp/swap swap swap defaults 0 0" >>/etc/fstab
如何释放swap空间?
物理内存接近饱和时,系统会自动将不常用的内存文件转储到SWAP中,但SWAP使用率达30%的时候对系统性能可能有一定影响。
对于较大物理内存的VPS或服务器,或根据自己服务器的情况,可以考虑手动关闭或刷新SWAP分区。
sync # 先执行下同步 swapoff -a # 关闭swap分区 swapon -a # 开启swap分区 swapoff -a && swapon -a # 刷新swap空间,即将SWAP里的数据转储回内存,并清空SWAP里的数据。刷新原理就是把swap关闭后再重启。
出处:http://www.cnblogs.com/madsnotes/
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。