仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 827|回复: 11
打印 上一主题 下一主题

[其他Linux] Linux编程:SWAP的罪与罚仓酷云

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于linux命令,一定要学会用man和info去查他们的解释;
说个案例:一台Apache服务器,因为其MaxClients参数设置过年夜,而且刚好又碰着会见量激增,了局内存被耗光,从而激发SWAP,进而负载爬升,终极招致宕机。
正所谓:SWAP,功能之年夜事,逝世生之地,生死之道,不成不察也。
哪些工具能够监测SWAP

最简单想到的就是free命令了,它指了然以后SWAP的利用情形:
  1. shell>free-mtotalusedfreeSwap:341751137422801
复制代码
另外一个经常使用的是sar命令,它能列出体系在各个工夫的SWAP利用情形:
  1. shell>sar-rkbswpfreekbswpused%swpusedkbswpcad233456441165057233.294656908233464521164976433.294656216233465561164966033.294650308233469321164928433.294649888233469921164922433.294648848
复制代码
不外free命令和sar命令显现的都不是及时数据,假如必要,可使用vmstat命令:
  1. shell>vmstat1-----------memory----------------swap--swpdfreebuffcachesiso1164753212366430506471931680011647532123672305064719317200116475321257283050647193468001164753212537630506471934760011647532124508305068719362400
复制代码
每秒革新一次了局,在SWAP一栏里列出了相干数据,至于si和so的注释,大抵以下:


  • si:Amountofmemoryswappedinfromdisk(/s).
  • so:Amountofmemoryswappedtodisk(/s).
假如它们一向是零固然最好不外了,偶然不为零也没啥,糟的是一向不为零。
后面先容的办法,看到的都是SWAP的全体情形,但是假如我想检察究竟是哪些历程利用了SWAP,应当怎样操纵呢?这个成绩有点辣手,我们来研讨一下:
好动静是top命令能供应这个信息,不外缺省并没有显现,我们必要激活一下:

  • 翻开top;
  • 按「f」进当选择字段的界面;
  • 按「p」选择「SWAP」字段;
  • 按回车确认。
坏动静是top命令供应的SWAP信息只是一个实际值,大概更直白一点儿来讲它基本就是不成信的(在top里SWAP的盘算公式是:SWAP=VIRT-RES)。
BTW:比拟之下,top里的「nFLT」字段更有代价,它暗示PageFault的次数。
那究竟我们能不克不及猎取到历程的SWAP情形呢?别发急,看代码:
  1. #!/bin/bashcd/procforpidin[0-9]*;docommand=$(cat/proc/$pid/cmdline)swap=$(awkBEGIN{total=0}/Swap/{total+=$2}END{printtotal}/proc/$pid/smaps)if(($swap>0));thenif[["${head}"!="yes"]];thenecho-e"PIDtSWAPtCOMMAND"head="yes"fiecho-e"${pid}t${swap}t${command}"fidone
复制代码
申明:请利用root权限来运转此剧本。
哪些要素大概影响SWAP

内存不敷无疑会SWAP,但有些时分,即使看上往内存很丰裕,还大概会SWAP,这类征象被称为SWAPInsanity,祸首罪魁次要有以下几点:
Swappiness的丢失
实践上,当可用内存不敷时,体系有两个选择:一个是经由过程SWAP来开释内存,另外一个是删除Cache中的Page来开释内存。一个很罕见的例子是:当拷贝年夜文件的时分,经常会产生SWAP征象。这是由于拷贝文件的时分,体系会把文件内容在Cache中按Page来缓存,此时一旦可用内存不敷,体系便会偏向于经由过程SWAP来开释内存。
内核中的swappiness参数能够用来把持这类举动,缺省情形下,swappiness的值是60:
  1. shell>sysctl-a|grepswappinessvm.swappiness=60
复制代码
它的寄义是:假如体系必要内存,有百分之六十的几率实行SWAP。晓得了这一点,我们很天然的会想到用上面的办法来下降实行SWAP的几率:
  1. shell>echo"vm.swappiness=0">>/etc/sysctl.confshell>sysctl-p
复制代码
如许做切实其实能够下降实行SWAP的几率,但其实不意味着永久不会实行SWAP。
NUMA的咒骂
NUMA在MySQL社区有良多会商,这里未几说了,直击NUMA和SWAP的恩仇纠葛。
也许懂得一下NUMA最中心的numactl命令:
  1. shell>numactl--hardwareavailable:2nodes(0-1)node0size:16131MBnode0free:100MBnode1size:16160MBnode1free:10MBnodedistances:node010:10201:2010
复制代码
能够看到体系有两个节点(实在就是两个物理CPU),它们各自分了16G内存,个中零号节点还剩100M内存,一号节点还剩10M内存。假想启动了一个必要11M内存的历程,体系把它分给了一号节点来实行,此时固然体系整体的可用内存年夜于该历程必要的内存,但由于一号节点自己残剩的可用内存不敷,以是仍旧大概会触发SWAP举动。
必要申明的一点事,numactl命令中看到的各节点残剩内存中时不包含Cache内存的,假如必要晓得,我们能够使用drop_caches参数先开释它:
  1. shell>sysctlvm.drop_caches=1
复制代码
注:这步操纵大概会引发体系负载的震动。
另:怎样断定一个历程的节点及内存分派情形?收集上有现成的剧本。
假如要躲避NUMA对SWAP的影响,最复杂的办法就是在启动历程的时分禁用它:
  1. shell>numactl--interleave=all...
复制代码
别的,内核参数zone_reclaim_mode一般也很主要,当某个节点可用内存不敷时,假如为0的话,那末体系会偏向于从远程节点分派内存;假如为1的话,那末体系会偏向于从当地节点接纳Cache内存。多半时分,Cache对功能很主要,以是0是一个更好的选择。
  1. shell>echo"vm.zone_reclaim_mode=0">>/etc/sysctl.confshell>sysctl-p
复制代码
另:收集上有一些关于MySQL和SWAP的会商,关于了解SWAP有必定意义,保举:

RedHatCentOS等等.学习linux不是逛自由市场,选定版本就要静下心来学习.不要今天换版本明天要升级.这样对你没有好处。
老尸 该用户已被删除
沙发
发表于 2015-1-20 11:44:59 | 只看该作者
最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。
乐观 该用户已被删除
板凳
发表于 2015-1-29 07:01:09 | 只看该作者
下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。
飘飘悠悠 该用户已被删除
地板
发表于 2015-2-1 14:18:52 | 只看该作者
Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
若相依 该用户已被删除
5#
发表于 2015-2-7 06:29:00 | 只看该作者
我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。
6#
发表于 2015-2-10 20:49:39 | 只看该作者
说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?
小妖女 该用户已被删除
7#
发表于 2015-2-17 02:17:28 | 只看该作者
眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。
小女巫 该用户已被删除
8#
发表于 2015-3-3 18:20:53 | 只看该作者
在学习的过程中,我们用的是VM虚拟机,开始时真的不真的该怎么去做,特别是我的是命令窗口界面,别人的是图形界面,我都不知道怎么调过来。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-3 20:20:25 | 只看该作者
在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。
飘灵儿 该用户已被删除
10#
发表于 2015-3-11 13:07:13 | 只看该作者
我们这一代90后,从小接触的是windows98,家里条件好的自己有电脑装的是2000,后来又有了XP,上大学时又有了win7。
因胸联盟 该用户已被删除
11#
发表于 2015-3-18 11:56:34 | 只看该作者
永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。
小魔女 该用户已被删除
12#
发表于 2015-3-25 20:14:41 | 只看该作者
再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-16 10:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表