仓酷云

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

[其他Linux] Linux编程:纪录一个软中止成绩仓酷云

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

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

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

x
系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last
前些天发明XEN假造机上的Nginx服务器存在一个成绩:软中止太高,并且年夜部分都会合在统一个CPU,一旦体系忙碌,此CPU就会成为木桶的短板。
<p>
在成绩服务器上运转「top」命令能够很分明看到「si」存在异常,年夜部分软中止都会合在1号CPU上,别的的CPU完整使不上劲儿:
  1. shell>topCpu0:11.3%us,4.7%sy,0.0%ni,82.5%id,...0.8%si,0.8%stCpu1:21.3%us,7.4%sy,0.0%ni,51.5%id,...17.8%si,2.0%stCpu2:16.6%us,4.5%sy,0.0%ni,77.7%id,...0.8%si,0.4%stCpu3:15.9%us,3.6%sy,0.0%ni,79.3%id,...0.8%si,0.4%stCpu4:17.7%us,4.9%sy,0.0%ni,75.3%id,...1.2%si,0.8%stCpu5:23.6%us,6.6%sy,0.0%ni,68.1%id,...0.9%si,0.9%stCpu6:18.1%us,4.9%sy,0.0%ni,75.7%id,...0.4%si,0.8%stCpu7:21.1%us,5.8%sy,0.0%ni,71.4%id,...1.2%si,0.4%st
复制代码
查询一下软中止相干数据,发明次要会合在NET_RX上,推测是网卡成绩:
  1. shell>watch-d-n1cat/proc/softirqsCPU0CPU1CPU2...CPU7HI:000...0TIMER:369256628436929600893692546970...3693032995NET_TX:130800410652649368154773818...308945843NET_RX:4436274923802219918792341500...2546517156BLOCK:000...0BLOCK_IOPOLL:000...0TASKLET:000...0SCHED:15187162953356295211520873304...1444792018HRTIMER:1601351131...196RCU:420129201939827611514184401659...4039269755
复制代码
增补:有一个检察中止(Interrupt)的top作风小工具itop。
确认一下宿主机上的网卡信息,发明其运转在单行列形式下:
  1. shell>grep-A10-inetwork/var/log/dmesgInitalizingnetworkdropmonitorserviceIntel(R)GigabitEthernetNetworkDriver-version3.0.19igb0000:05:00.0:Intel(R)GigabitEthernetNetworkConnectionigb0000:05:00.0:eth0:(PCIe:2.5GT/s:Widthx4)00:1b:21:bf:b3:2cigb0000:05:00.0:eth0:PBANo:G18758-002igb0000:05:00.0:UsingMSI-X...1rxqueue(s),1txqueue(s)igb0000:05:00.1:Intel(R)GigabitEthernetNetworkConnectionigb0000:05:00.1:eth1:(PCIe:2.5GT/s:Widthx4)00:1b:21:bf:b3:2digb0000:05:00.1:eth1:PBANo:G18758-002igb0000:05:00.1:UsingMSI-X...1rxqueue(s),1txqueue(s)
复制代码
接着确认一下网卡的中止号,由于是单行列,以是只要一其中断号45:
  1. shell>grepeth/proc/interrupts|awk{print$1,$NF}45:eth0
复制代码
晓得了网卡的中止号,就能够查询个中断亲缘性设置「smp_affinity」:
  1. shell>cat/proc/irq/45/smp_affinity02
复制代码
这里的02实践上是十六进制,暗示1号CPU,盘算办法以下(参考材料):
  1. BinaryHexCPU000011CPU100102CPU201004+CPU310008-----------------------both1111f
复制代码
申明:假如4个CPU都介入中止处置,那末设为f;同理8个CPU的就设置成ff:
  1. shell>echoff>/proc/irq/45/smp_affinity
复制代码
别的另有一个相似的设置「smp_affinity_list」:
  1. shell>cat/proc/irq/45/smp_affinity_list1
复制代码
两个设置是相通的,修正了一个,另外一个会随着变。不外「smp_affinity_list」利用的是十进制,比拟较「smp_affinity」的十六进制,可读性更好些。
懂得了这些基础常识,我们能够实验换一个CPU碰运气会产生甚么:
  1. echo7>/proc/irq/45/smp_affinity_list
复制代码
再经由过程「top」命令察看,会发明处置软中止的CPU酿成了7号CPU。
申明:假如但愿多个CPU介入中止处置的话,可使用相似上面的语法:
  1. echo3,5>/proc/irq/45/smp_affinity_listecho0-7>/proc/irq/45/smp_affinity_list
复制代码
坏动静是对单行列网卡而言,「smp_affinity」和「smp_affinity_list」设置多CPU有效。
好动静是Linux撑持RPS,普通点来讲就是在软件层面摹拟完成硬件的多行列网卡功效。
起首看看怎样设置RPS,假如CPU个数是8个的话,能够设置成ff:
  1. shell>watch-d-n1cat/proc/softirqsCPU0CPU1CPU2...CPU7HI:000...0TIMER:369256628436929600893692546970...3693032995NET_TX:130800410652649368154773818...308945843NET_RX:4436274923802219918792341500...2546517156BLOCK:000...0BLOCK_IOPOLL:000...0TASKLET:000...0SCHED:15187162953356295211520873304...1444792018HRTIMER:1601351131...196RCU:420129201939827611514184401659...40392697550
复制代码
接着设置内核参数rps_sock_flow_entries(官方文档保举设置:32768):
  1. shell>watch-d-n1cat/proc/softirqsCPU0CPU1CPU2...CPU7HI:000...0TIMER:369256628436929600893692546970...3693032995NET_TX:130800410652649368154773818...308945843NET_RX:4436274923802219918792341500...2546517156BLOCK:000...0BLOCK_IOPOLL:000...0TASKLET:000...0SCHED:15187162953356295211520873304...1444792018HRTIMER:1601351131...196RCU:420129201939827611514184401659...40392697551
复制代码
最初设置rps_flow_cnt,单行列网卡的话设置成rps_sock_flow_entries便可:
  1. shell>watch-d-n1cat/proc/softirqsCPU0CPU1CPU2...CPU7HI:000...0TIMER:369256628436929600893692546970...3693032995NET_TX:130800410652649368154773818...308945843NET_RX:4436274923802219918792341500...2546517156BLOCK:000...0BLOCK_IOPOLL:000...0TASKLET:000...0SCHED:15187162953356295211520873304...1444792018HRTIMER:1601351131...196RCU:420129201939827611514184401659...40392697552
复制代码
申明:假如是多行列网卡,那末就依照行列数目设置成rps_sock_flow_entries/N。
做了如上的优化后,我们再运转「top」命令能够看到软中止已分离到了两个CPU:

如果你学不好的话,你在linux中开发的机会就很少,或者说几乎没有,它的优势就消失了,然后随着时间的流逝,你就会全部忘记她;
爱飞 该用户已被删除
沙发
发表于 2015-1-20 22:38:28 | 只看该作者
这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-26 12:58:56 来自手机 | 只看该作者
为了更好的学习这门课程,我不仅课上认真听讲,课下也努力学习,为此还在自己的电脑上安装了Ubuntu系统。
深爱那片海 该用户已被删除
地板
发表于 2015-2-4 14:27:21 | 只看该作者
期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?
蒙在股里 该用户已被删除
5#
发表于 2015-2-6 07:24:59 | 只看该作者
和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。
飘飘悠悠 该用户已被删除
6#
 楼主| 发表于 2015-2-7 03:03:06 | 只看该作者
熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:
山那边是海 该用户已被删除
7#
发表于 2015-2-9 12:48:06 | 只看该作者
永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。
再现理想 该用户已被删除
8#
发表于 2015-2-18 06:52:05 | 只看该作者
以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。
小妖女 该用户已被删除
9#
发表于 2015-3-6 01:12:54 | 只看该作者
直到学习Linux这门课以后,我才知道,原来我错了。?
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-12 18:04:06 | 只看该作者
通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。
兰色精灵 该用户已被删除
11#
发表于 2015-4-8 08:39:10 | 只看该作者
下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 00:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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