网卡罢工原因探寻之IRQ中断冲突的修改 (1779人路过)

19:17 , 引用(0) Via 本站原创

很奇怪,公司的服务器已经正常运行两年多了,最近问题不断,网卡出现了问题!机器启动完了,网卡灯也闪了,但上网有点问题.用ifconfig查看发现问题网卡eth0

eth0 Link encap:Ethernet HWaddr 00:E0:4D:2A:23:6F
inet addr:10.1.3.1 Bcast:10.1.255.255 Mask:255.255.0.0
inet6 addr: fe80::2e0:4dff:fe2a:236f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:15219156 dropped:9698703 overruns:15218512 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:11 Base address:0xbc00

看到了吧,竟然发送数据为0,接收的数据包为0,剩下的全是错误、丢弃还有overruns,幸亏这个网卡是链接内网的,影响不到公司对外服务,但怎么也 搞不定,卸载网卡、重装网卡、拔下重插。。。都不行,郁闷了好几天,今天突然想到是不是冲突呢?查看了些IRQ的资料如下:

IRQ(中断要求),可能很多人都有种畏难情绪,前几天我在安装海蜘蛛软路由的到时候就遇到了这个问题,由于我们这里是多线接入,所以我主板上的PCI插 上了4块网卡,安装好路由以后在控制页面上发现提示我网卡IRQ冲突。相信很多和我一样的朋友也遇到过这类似的问题。那么怎么来解决IRQ中断冲突的问题 了,首先我们先了解下IRQ
IRQ的全称是“Interupt ReQuest”,即“中断要求”。当电脑内的周边硬件需要处理器去执行某些工作时,该硬件就会发出一个硬件信号,通知处理器工作,而这个信号就是 IRQ。那为什么叫做“中断”呢?“中断”的意思是即使处理器正在执行其他工作,当它收到周边设备传来的中断信号时,处理器也会停下来,优先处理这个信号 代表的工作,完成后再继续处理之前未完成的工作。

IRQ的数目有限,一部电脑虽然一共有16个IRQ(从IRQ0至IRQ15),但是其中很多IRQ已经预先分配给特定的硬件,具体如下:

IRQ0:系统计时器
IRQ1:键盘
IRQ2:可设置中断控制卡
IRQ3:COM2(串行接口2)
IRQ4:COM1(串行接口1)
IRQ5:未预先配置
IRQ6:磁盘机
IRQ7:并行接口
IRQ8:CMOS/时钟
IRQ9:未预先配置
IRQ10:未预先配置
IRQ11:未预先配置
IRQ12:PS/2鼠标
IRQ13:算术处理器(Arithmetic Processor)
IRQ14:Primary(主)IDE控制器
IRQ15:Secondary(从)IDE控制器

由上可见,IRQ5、IRQ9、IRQ10和IRQ11都是空置的。但大家不要以为这就代表着有多余的IRQ可以使用。因为要使用IRQ的周边设备实在是 太多了,例如声卡、网卡等PCI或ISA设备都需要配置一个IRQ。如果有两个设备配置了同一个IRQ的话,就会出现IRQ冲突的问题,从而使两者都不能 正常工作。

当遇到IRQ中断冲突的时候,我们的解决之道就是手动分配IRQ,一般情况下,调整网卡的PCI插槽位置可解决中断冲突的问题,如果换网卡位置后,仍然出 现冲突,则可在 BIOS 中将一些不用的设备禁用,比如如串口、并口、USB 等,来释放中断号。以上方法如果不行的话,那么我们需要在BIOS内进行设置。

假设一块主板上有五根PCI插槽,现在五根插槽全部插满了(包括MODEM卡、网卡、声卡、电视卡等等)。但无论将声卡插在任何一根PCI插槽内,都无法正常工作。解决步骤如下:

  1、查看主板说明书,找出哪一根PCI插槽是不与其他插槽共用IRQ的(一般是第三根插槽),然后将声卡插到第三根PCI插槽中。同时,由于第一和第五根PCI插槽需共用IRQ,我们还应检查插在上面的硬件设备及其驱动程序是否支持共用IRQ。

  2、启动电脑,进入BIOS,开启“Advanced”一栏最底下的“PCI Configuration”。

  3、在“PCI Configuration”设置页面的上半部分有一项“Slot 3 IRQ”,它就是第三根PCI插槽所分配的IRQ位置。系统默认为“Auto”(自动)。

  4、将光标移到“Slot 3 IRQ”一行上按回车键,画面会显示“0-15”的数字。这时用户可选择四个空闲中断(IRQ5、IRQ9、IRQ10或IRQ11)的任一个,这里笔者选择“IRQ10”。

  5、再为其他的Slot插槽设置其他的IRQ。例如Slot 1/5的IRQ设置成“IRQ3”、Slot 2 IRQ设置为“IRQ9”,Slot 4设置为“IRQ11”等。

  6、此外,如果你使用的主板集成有老一代的ISA插槽的话,还要在“PCI IRQ Resource Exclusion”选项中,对个别的ISA总线硬件所需的IRQ进行更改设置。

  7、完成设置后选择保存设置并重新启动电脑,就可以向烦人的IRQ冲突说BYEBYE啦。

在BIOS中apic是什么?

apic: Advanced Programmable Interrupt Controller高级程序中断控制器. 对计算机来讲有两个作用,
一是管理IRQ的分配
可以把传统的16个IRQ扩展到24个(传统的管理方式叫PIC),以适应更多的设备。

二是管理多CPU

APIC关闭直接的影响是减少了可用的IRQ。
如果板卡不是非常多的话,关闭 APIC对系统是没有什么影响的。

因此,大家把apic表用slic取代,直接的表现就是超线程cpu和多核cpu无法正常工作,只能用一个cpu。
如果主板上集成网卡、声卡,那么有可能他们的irq就缺失,这也是很多主板刷了以后声卡、网卡不能正常工作的原因。解决的办法也很简单,查看主板剩余的irq,将空闲的irq赋予声卡、网卡一般就能够解决问题。
在整合主板的bios中,有声卡和网卡的irq定义的选项,简单设置一下就行了。

怀疑是中断冲突问题。

中断冲突一般是由于BIOS中断号已用完,不能给新加设备分配中断号造成的,我们可以禁用一些不必要的设备来释放中断号,以解决中断冲突问题。

重启系统,进入BIOS设置,将不用的设备全部禁用。

AC97 Audio Select(AC97音频)

AC97声效支持,设定值有[Enabled]、[Disabled]。直接Disabled。

IO Devices Configuration(IO设备配置)

Onboard FDC Controller(板载FDC控制器)

软驱控制器,设定值有[Enabled]、[Disabled]。不用软驱很多年了,直接Disabled

COM Port(COM端口)串口支持

设定值有[3F8/IRQ4]、[2F8/IRQ3]、[3E8/IRQ4]、[2E8/IRQ3]、[Disabled]。我不用串口,Disable掉,有需要的可以启用。

Onboard Parallel Port(板载并口)
并口支持,我没有使用网络打印机,Disabled掉,需要使用打印机的可以启用。

USB Controller(USB控制器)

开启或关闭USB控制器,设定值有[Disabled]、[Enabled]。本可以禁止的,但要用到鼠标键盘等,不disabled。

USB Keyboard/Mouse Support(USB键盘鼠标支持)

支持USB接口的鼠标键盘,设定值有[Disabled]、[Enabled]。

按F10保存退出,系统重启。

遗憾的是,故障如故。继续郁闷!


作者:77run@齐齐奔跑 -- 骑士威科技
地址:http://blog.77run.com/PCI-IRQ-0-15/
版权所有©转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: 77run 编辑于2011/09/15 23:55
| |
0 Responses to "A Sample Post with Links"
发表评论
  • 昵称 [注册]
  • 密码 游客无需密码
  • 网址
  • 电邮
打开HTML 打开UBB 打开表情 隐藏 记住我