<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[并发网卡]linux ethtool 查看网卡状态，lspci下是否支持多队列网卡的简介.]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Fri, 16 Dec 2016 03:56:24 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景：网卡流量80，如果是100M的网卡可能是瓶颈，而如何知道这个网卡是100M还是1000M的？用命令查询一下。阿里云的虚拟机好像看不到，用另一个命令看，这块涉及到网卡是否支持多队列网卡识别,Capabilities: [70] MSI-X: Enable+Masked-TabSize=10，阿里的是：Capabilities: [40] MSI-X: Enable+ Count=3 Masked-，参考链接：http://blog.sina.com.cn/s/blog_aed82f6f0102vwjx.html ，http://blog.csdn.net/wyaibyn/article/details/14109325。<br/>lspci -vvv&#124;grep network -B 1 -A 15<br/><br/><textarea name="code" class="php" rows="15" cols="100">
[root@iZ88bkcgbr3Z ~]# lspci -vvv&#124;grep network -B 1 -A 15

00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Subsystem: Red Hat, Inc Device 0001
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Physical Slot: 3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast &gt;TAbort- &lt;TAbort- &lt;MAbort- &gt;SERR- &lt;PERR- INTx-
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Latency: 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Interrupt: pin A routed to IRQ 10
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Region 0: I/O ports at c060 [size=32]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Region 1: Memory at febd1000 (32-bit, non-prefetchable) [size=4K]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expansion ROM at feb80000 [disabled] [size=256K]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Capabilities: [40] MSI-X: Enable+ Count=3 Masked-
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vector table: BAR=1 offset=00000000
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PBA: BAR=1 offset=00000800
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kernel driver in use: virtio-pci
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kernel modules: virtio_pci
</textarea><br/><br/><br/>物理机上：<br/>ethtool eth0<br/><textarea name="code" class="php" rows="15" cols="100">
ethtool eth0
Settings for eth0:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supported ports: [ TP ]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supported link modes:&nbsp;&nbsp; 10baseT/Half 10baseT/Full 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100baseT/Half 100baseT/Full 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000baseT/Full 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supported pause frame use: Symmetric
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supports auto-negotiation: Yes
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Advertised link modes:&nbsp;&nbsp;10baseT/Half 10baseT/Full 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100baseT/Half 100baseT/Full 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1000baseT/Full 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Advertised pause frame use: Symmetric
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Advertised auto-negotiation: Yes
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Speed: 1000Mb/s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//1000M网卡
</textarea><br/><br/>1.使用lspci -vvv命令查看网卡的参数。<br/>Ethernet controller的条目内容，如果有MSI-X &amp;&amp; Enable+ &amp;&amp; TabSize &gt; 1，则该网卡是多队列网卡。<br/>2.如何打开网卡多队列<br/>cat /etc/modprobe.conf查看网卡驱动。<br/>broadcom网卡的驱动为e1000，默认打开网卡多队列<br/>修改完驱动后需要重启。查看是否打开了网卡多队列，以broadcom网卡为例。cat /proc/interrupt &#124; grep eth。产生了8个网卡队列，并且对应着不同的中断。<br/><br/>3.设置中断CPU亲和性方法<br/>将中断52-59分别绑定到CPU0-7上。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>echo &quot;1&quot; &gt; /proc/irq/52/smp_affinity&nbsp;&nbsp;<br/>echo &quot;2&quot; &gt; /proc/irq/53/smp_affinity&nbsp;&nbsp;<br/>echo &quot;4&quot; &gt; /proc/irq/54/smp_affinity&nbsp;&nbsp;<br/>echo &quot;8&quot; &gt; /proc/irq/55/smp_affinity&nbsp;&nbsp;<br/>echo &quot;10&quot; &gt; /proc/irq/56/smp_affinity&nbsp;&nbsp;<br/>echo &quot;20&quot; &gt; /proc/irq/57/smp_affinity&nbsp;&nbsp;<br/>echo &quot;40&quot; &gt; /proc/irq/58/smp_affinity&nbsp;&nbsp;<br/>echo &quot;80&quot; &gt; /proc/irq/59/smp_affinity&nbsp;&nbsp;<br/>/proc/irq/$&#123;IRQ_NUM&#125;/smp_affinity为中断号为IRQ_NUM的中断绑定的CPU核的情况。以十六进制表示，每一位代表一个CPU核。<br/>1（00000001）代表CPU0<br/>2（00000010）代表CPU1<br/>3（00000011）代表CPU0和CPU1<br/><br/><br/><br/>阿里私有云虚拟的网卡有些简单：<br/>ethtool eth0<br/>Settings for eth0:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link detected: yes<br/><br/><br/>ethtool 工具关于网络协商功能介绍； <br/><br/>ethtool - Display or change ethernet card settings（ethtool 是用来显示和更改网卡设置的工具）；这个工具比较复杂，功能也特别多。由于洋文比较难懂。所以我们还是把网络设备协商方式的设置方法说一说。<br/><br/>2.1 ethtool 显示网络端口设置功能；<br/>这个功能比较好办。就是ethtool 后面直接接网絽接口就行；比如下面的例子；<br/>[root@localhost ~]# ethtool eth0<br/>Settings for eth0:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supported ports: [ TP MII ]<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supported link modes: 10baseT/Half 10baseT/Full<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100baseT/Half 100baseT/Full<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supports auto-negotiation: Yes<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Advertised link modes: 10baseT/Half 10baseT/Full<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100baseT/Half 100baseT/Full<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Advertised auto-negotiation: No 注：自动协商关闭<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Speed: 100Mb/s 注：速度 100Mb<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Duplex: Full 注：全双工<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Port: MII<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PHYAD: 32<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transceiver: internal<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Auto-negotiation: off<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Supports Wake-on: pumbg<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wake-on: d<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Current message level: 0x00000007 (7)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link detected: yes 注：eth0已经激活；<br/><br/><br/>摘自：https://my.oschina.net/u/1986074/blog/517033<br/><br/><br/>======================================================================<br/>现象<br/>Redis 进程 cpu 跑满<br/><br/>原因<br/><br/>没有开启网卡多队列，导致只有一个cpu被使用 <br/>网卡在同一时刻只能产生一个中断，CPU在同一时刻只能响应一个中断，由于配置的原因，只有一颗cpu去响应中断（这个是可调的），所以所有的流量都压在了一个CPU上 ，把CPU跑满了。<br/><br/>为什么只有一颗cpu去响应中断？<br/><br/>这个是历史设计的问题，一开始CPU都是一核的，只能由唯一的CPU去响应，后来逐步发展出了多核的CPU，才有了可调整的参数去调整到底由几个CPU去处理。<br/><br/>处理方法<br/><br/>修改方案 <br/>1. 修改/etc/modprobe.d/modprobe.conf <br/>在文件最后追加三行 <br/>alias eth0 igb <br/>alias eth1 igb <br/>options igb RSS=8,8 <br/>image001.png <br/>2. 修改完之后就需要重启网络才能生效<br/><br/>只需要重新加载内核模块和重启网络服务就可以了，实际测试需要20s时间<br/><br/>操作命令 <br/>nohup rmmod igb &amp;&amp; modprobe igb &amp;&amp; /etc/init.d/network restart &amp;&amp; /etc/rc3.d/S27route<br/><br/>来自：http://blog.csdn.net/fjq5a/article/details/53747444
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [并发网卡]linux ethtool 查看网卡状态，lspci下是否支持多队列网卡的简介.]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>