飘飘悠悠 发表于 2015-1-18 11:22:51

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

系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last
前些天发明XEN假造机上的Nginx服务器存在一个成绩:软中止太高,并且年夜部分都会合在统一个CPU,一旦体系忙碌,此CPU就会成为木桶的短板。
<p>
在成绩服务器上运转「top」命令能够很分明看到「si」存在异常,年夜部分软中止都会合在1号CPU上,别的的CPU完整使不上劲儿:
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上,推测是网卡成绩:
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。
确认一下宿主机上的网卡信息,发明其运转在单行列形式下:
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:
shell>grepeth/proc/interrupts|awk{print$1,$NF}45:eth0晓得了网卡的中止号,就能够查询个中断亲缘性设置「smp_affinity」:
shell>cat/proc/irq/45/smp_affinity02这里的02实践上是十六进制,暗示1号CPU,盘算办法以下(参考材料):
BinaryHexCPU000011CPU100102CPU201004+CPU310008-----------------------both1111f申明:假如4个CPU都介入中止处置,那末设为f;同理8个CPU的就设置成ff:
shell>echoff>/proc/irq/45/smp_affinity别的另有一个相似的设置「smp_affinity_list」:
shell>cat/proc/irq/45/smp_affinity_list1两个设置是相通的,修正了一个,另外一个会随着变。不外「smp_affinity_list」利用的是十进制,比拟较「smp_affinity」的十六进制,可读性更好些。
懂得了这些基础常识,我们能够实验换一个CPU碰运气会产生甚么:
echo7>/proc/irq/45/smp_affinity_list再经由过程「top」命令察看,会发明处置软中止的CPU酿成了7号CPU。
申明:假如但愿多个CPU介入中止处置的话,可使用相似上面的语法:
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:
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):
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便可:
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的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?

蒙在股里 发表于 2015-2-6 07:24:59

和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。

飘飘悠悠 发表于 2015-2-7 03:03:06

熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:

山那边是海 发表于 2015-2-9 12:48:06

永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。

再现理想 发表于 2015-2-18 06:52:05

以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。

小妖女 发表于 2015-3-6 01:12:54

直到学习Linux这门课以后,我才知道,原来我错了。?

愤怒的大鸟 发表于 2015-3-12 18:04:06

通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。

兰色精灵 发表于 2015-4-8 08:39:10

下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。
页: [1]
查看完整版本: Linux编程:纪录一个软中止成绩仓酷云