下面是小编精心整理的浅谈watchdog timeout出现的原因Unix系统(共含4篇),仅供参考,大家一起来看看吧。同时,但愿您也能像本文投稿人“苏色”一样,积极向本站投稿分享好文章。
解决步骤具体如下:
1、将两端的网线对换重插线路几次;
2、更改MAC地址的后六位为任意十六进制数;
3、重新安装网卡驱动,重新安装计算机系统;
4、尝试更换MODEM设备或更换网卡;
5、设备端口故障,可致电9600169宽带专家热线;
6、对于ADSL宽带的用户,我们只要尝试重启MODEM设备,重启计算机;
7、重新创建一个新的宽带连接,
Win7系统网络连接出现错误676是什么原因
,
[code:1:2d85a50892]浅谈watchdogtimeout出现的原因 最近有比较多的人谈到网卡的”watchdogtimeout“问题,究竟是什么原因造成的,大多数人都 把网卡的 性能 不佳做为问题的根源所在,我认为网卡的性能只是一方面的因素,他还涉及到缓冲的 大
[code:1:2d85a50892]浅谈“watchdog timeout”出现的原因
最近有比较多的人谈到网卡的”watchdog timeout“问题,究竟是什么原因造成的,大多数人都
把网卡的性能不佳做为问题的根源所在。我认为网卡的性能只是一方面的因素,他还涉及到缓冲的
大小、单位时间内的包的数量、及网卡驱动程序等一系列因素。以下将从源代码的角度来对他进行
分析。
首先,我们看看到底是哪个函数发出了“watchdog timeout”字符串,只要你查一下源代码
不难看出,在各网卡的驱动程序里的XX_watchdog(XX是各网卡的名称,如:8139是rl,AMD7990
是pcn,Inter是fxp等等)函数发出的。函数比较简单:
static void rl_watchdog(ifp)
struct i.net*ifp;/*申明ifp是一个ifnet结构,结构存放了该网卡的输入输
出的函数指针和一些重要参数,当然也包括rl_watchdog函数的
指针*/
{
struct rl_softc *sc;
sc = ifp->if_softc; /*ifnet是softc结构的一个子集,softc包含了更多的该网卡的参数*/
printf(“rl%d: watchdog timeout\n”, sc->rl_unit);/*打印出是哪块网卡出现问题。
sc->rl_unit代办该种网卡的第几快。我们知道在一个机器里同样
的网卡可能有几块,当然此参数是由网卡驱动程序的初始化程序填充*/
ifp->if_oerrors++; /*累计输出出现的错误包数量(o代表输出)*/
rl_txeof(sc);/*这里是每个驱动程序不同的,此处为8139的,不过我觉得用rl_stop(sc)更好*/
rl_rxeof(sc);/*这里也是每个驱动程序不同。我觉得来一个rl_reset(sc)也不错。*/
rl_init(sc);/*这里大家都一样,重新初始芯片。*/
return;
}
好了,到这我们知道是XX_watchdog函数发出了watchdog timeout信息。那么是谁来调用该函数呢?
我们接着来看另一个函数:if_slowtimo函数,该函数在if.c中。if.c是interface(接口)的简称,
即系统在启动过程中初始化时必须调用其中的一些函数。ifinit函数是其中被调用的一个,这个函数很
简单:
void
ifinit
{
static struct timeout if_slowtim;
timeout_set(&if_slowtim, if_slowtimo, &if_slowtim);/*简单的说就是设置一定时器*/
if_slowtimo(&if_slowtim);/*哈哈,等不急了,先调用了再说*/
}
这样一来,if_slowtimo就成了一个一定时间内就要执行的一个函数了,此时候,大家应该能猜到if_slowtimo
的大概功能,无非是定时查看各网卡的发送数据的情况,如果没发送完成,就给该卡加一个计数器,到
计数器达到一定的值时还没发送出去就调用该卡的XX_watchdog函数。下面我们来看看if_slowtimo函数。
void
if_slowtimo(arg)
void *arg;
{
struct timeout *to = (struct timeout *)arg;
struct ifnet *ifp;
int s = splimp();/*在做以下操作的时候必须关中断*/
TAILQ_FOREACH(ifp, &ifnet, if_list) {/*搜索每一个接口设备,TAILQ_FOREACH实际上是for(...)*/
if (ifp->if_timer == 0 || --ifp->if_timer)
continue;/*如果是if_timer为0或if_timer减1以后还为真,实际上是对每块网卡
的计数器if_timer减1后判断他是否还大于0,小于0就调用watchdog函数。*/
if (ifp->if_watchdog) /*不过调用之前看看该卡有没有watchdog函数*/
(*ifp->if_watchdog)(ifp);
}
splx(s);
timeout_add(to, hz / IFNET_SLOWHZ);/*每次计时器完成后都会清除,你不得不又加上去。hz是计算
机的主频,就是说调度的间隔时间是和主频成正比的关系。*/
}
到这里一切都很明白了,我们只要在驱动程序的输出包时给定一个值(if_timer,大多数是5),而输出函数是一个
直到输出成功才跳出的循环,不成功他就一直重试来输出此包,而我们上面的程序就会时间一到就给你的值减1,如果
减到小于0了,就watchdog timeout。我们还是来看一看程序吧:
static void rl_start(ifp)
struct ifnet *ifp;
{
struct rl_softc *sc;
struct mbuf *m_head = NULL;
sc = ifp->if_softc;
while(RL_CUR_TXMBUF(sc) == NULL) {/* 1:当输出缓冲区为空时才进行新的输出*/
IF_DEQUEUE(&ifp->if_snd, m_head);/*把将要输出的数据加入到输出队列中。*/
if (m_head == NULL)/* 2:申请内存失败*/
break;
if (rl_encap(sc, m_head)) {/*8139卡的弱智表现在此,多加一个头部,还要长字节对齐,影响
到数据必须重新搬迁。花时间啊!*/
IF_PREPEND(&ifp->if_snd, m_head);
ifp->if_flags |= IFF_OACTIVE;
break;
}
if (ifp->if_bpf)/* 3:如果包过滤存在就进行过滤*/
bpf_mtap(ifp, RL_CUR_TXMBUF(sc));
CSR_WRITE_4(sc, RL_CUR_TXADDR(sc),/* 4:以下为硬件输出的IO指令*/
vtophys(mtod(RL_CUR_TXMBUF(sc), caddr_t)));
CSR_WRITE_4(sc, RL_CUR_TXSTAT(sc),
RL_TXTHRESH(sc->rl_txthresh) |
RL_CUR_TXMBUF(sc)->m_pkthdr.len);
RL_INC(sc->rl_cdata.cur_tx);
}
if (RL_CUR_TXMBUF(sc) != NULL)/*如果传送缓冲不为空,说明数据放到缓冲中已经准备传了*/
ifp->if_flags |= IFF_OACTIVE;/*加上正在传标志*/
ifp->if_timer = 5;/*设定计数器为5*/
return;
}
大家注意看我注释中的1,2,3,4标号,即是4个有可能使传送出现问题的地方,
但大家也会问:即使我传送
成功了也会if_timer变成5啊,那么成功了后是怎么消除这个5的呢,答案在当传送完一个包后,网卡将产生一个
中断,我们来看中断程序:
static void rl_intr(arg)
{
... 这中间我就不写了
if ((status & RL_ISR_TX_OK) || (status & RL_ISR_TX_ERR)) /*如果中断后状态寄存器的标识
是成功或出错,就调用下面的程序。*/
rl_txeof(sc);
...
}
再看rl_txeof:
static void rl_txeof(sc)
{
...
ifp->if_timer = 0;/*哈哈,在这清0了,也就是说,只要你不是反复在那传,不过错误和传输正确
都不会出现“watchdog timeout”*/
...
}
综上所述:引起watchdog timeout的主要原因为:1、缓冲区不够大,前面的没发完后面的又跟的来了。2、内核
的内存分配出现问题,此情况比较少发生。3、卡的质量(在IO时的吞吐量)。4、bpf过滤过于复杂引起。
如何解决这个问题:
首先我们必须查出导致出现该问题的原因,即是4个问题中的哪个引起的,我们来修改驱动程序和相关的程序:
在if.h中定义一全局变量:
u_int8_t myerror; /*意思是出错的原因代码,按我列的来吧,1是缓冲区不够...*/
在函数static void rl_start(ifp)中加入:
static void rl_start(ifp)
struct ifnet *ifp;
{
struct rl_softc *sc;
struct mbuf *m_head = NULL;
sc = ifp->if_softc;
u_int8_t tmperror;
if (RL_CUR_TXMBUF(sc) != NULL) {/*新加,如果是缓冲区不够问题*/
myerror=1;
}
while(RL_CUR_TXMBUF(sc) == NULL) {
IF_DEQUEUE(&ifp->if_snd, m_head);
if (m_head == NULL)
{
myerror=2; /*内存分配出错*/
break;
}
if (rl_encap(sc, m_head)) {
IF_PREPEND(&ifp->if_snd, m_head);
ifp->if_flags |= IFF_OACTIVE;
break;
}
if (ifp->if_bpf)
bpf_mtap(ifp, RL_CUR_TXMBUF(sc));
tmperror=myerror;/*在进行写IO口前先保存前面出错的原因*/
CSR_WRITE_4(sc, RL_CUR_TXADDR(sc),
vtophys(mtod(RL_CUR_TXMBUF(sc), caddr_t)));
CSR_WRITE_4(sc, RL_CUR_TXSTAT(sc),
RL_TXTHRESH(sc->rl_txthresh) |
RL_CUR_TXMBUF(sc)->m_pkthdr.len);
myerror=tmperror;/*上面两句没问题的话再还原前面的出错原因*/
RL_INC(sc->rl_cdata.cur_tx);
}
if (RL_CUR_TXMBUF(sc) != NULL)
ifp->if_flags |= IFF_OACTIVE;
ifp->if_timer = 5;
return;
}
最后再改一下rl_watchdog中的显示部分
printf(“rl%d: watchdog timeout:error number is %x\n”, sc->rl_unit,myerror);
当然这只是我个人的见解,可能有许多不足或没考虑到的地方,也希望大家能提出更好、更容易
的方法。
xie_minix 于 -3-15[/code:1:2d85a50892]
原文转自:www.ltesting.net
最终用户或任何为 网络 不通而付出代价的用户都会关注电缆的一个主要问题,这就是为什么光缆会出故障,任何使用光缆的网络,其光缆链路对整个网络的 性能 都是至关重要的。所以确保光缆链路始终处于最佳状态无疑是非常关键的。为了帮助了解光缆故障的原因,
最终用户或任何为网络不通而付出代价的用户都会关注电缆的一个主要问题,这就是为什么光缆会出故障。任何使用光缆的网络,其光缆链路对整个网络的性能都是至关重要的。所以确保光缆链路始终处于最佳状态无疑是非常关键的。为了帮助了解光缆故障的原因,福禄克网络通过第三方独立调查分析了大量网络最终用户和光缆安装商关于光缆链路的问题。调查研究是由Martin Technical Research独立完成的,题目是光缆链路的故障原因。调查研究是评估800个电缆安装商,他们有20%以上的工作是光缆的安装。在这些公司中,50%是采用随机的调查和询问,另外50%还直接询问了网络上最终用户关于光缆的问题。最后福禄克网络和 Martin Technical Research公司认为这种混合调查的结果基本可以代表光缆故障的整体情况。
背景资料:
安装商包括数据通讯合同商,电气合同商,电信合同商,独立的光缆合同商,系统集成商,网络咨询商。平均每个公司有15.4个光缆的技术人员。这些合同商平均起来有36%的工作与光缆相关。3500个最终用户平均每个单位有2.3个光缆的技术人员,他们包括了教育、制造、政、银行、人寿保险、零售连锁商、印刷/出版商、研究实验室以及公用事业。并不令人吃惊的是92%的最终用户都有光缆主干网,28%的用户有光缆到桌面的网络。那些光缆到桌面的用户有38%的站点是光缆到桌面。
光缆链路的安装
安装高性能光缆链路的过程包括铺设光缆,光缆双端连接器的端接,双端跳线和网络设备的连接。铺设光缆时不要严重地弯曲光缆,它们会造成过量的损耗。被调查的网络用户主要安装的是62.5/125mm的光缆,但数据显示50/125mm的光缆也有明显的增加。此外目前使用最广泛的仍然是ST和SC连接口。
端接对链路损耗的影响非常大,而且它们会对多模光缆产生模式干扰。连接器可以是在事先抛光好的光缆连接处熔接安装,或在现场进行抛光。当使用事先抛光的连接器时,安装商一般不会感觉到检测连接器端接面的重要性,因为连接器的端接面是供应商在可以控制的环境中抛光的。对现场抛光的连接器,安装商使用100或200倍放大镜检查端接面。当安装商确信连接器端接完好后将其安装到配线架或信息点出口等待后来的损耗测试。此时,对光缆进行标识就变得非常重要,因为安装商必须确保光缆一侧的发送端必须标识为对应光缆另一侧的接收端。
我们发现能够完成优良工程的安装商都有优良的工具。研究显示86%的安装商使用放大镜来检测光缆的端接面,而80%的最终用户也使用这种方法。
背景资料:
当使用放大镜检测光缆端接面时,一定使用激光安全滤波等级的工具以防止正在工作的光缆中不可见的红外线伤害眼睛。
安装过程中常见的光缆故障原因
调查的结果一致表明(89%的用户和合同商)在光缆安装过程中最常见的故障是光缆连接器端接面不洁。无需多说,C先生需要和D先生沟通来解决安装的问题。
一般,安装商使用100倍放大镜检查连接器的端接面,但它并不能查出所有端接面不洁和划痕的问题。250倍放大镜和400倍放大镜检查端接面不洁的区别。虽然整体看不出不洁的端接面,但是高倍的放大镜可以揭示信号传输的光缆核心的微小不洁问题。
光缆链路故障诊断中的常见问题
光缆链路的故障诊断发生在安装过程的最后一步。很多时侯故障诊断发生在当安装的链路不能通过损耗测试的指标。故障诊断还发生在安装网络设备的时侯。非常奇怪的是,此时光缆端接面的检测并不总是进行来保证光缆性能。例如只有60%的合同商涉及光缆端接面的检查。而网络用户只有46%检查光缆端接面。
此时不进行端接面检查的主要原因是在配线架或信息点出口探测连接器的端接面是非常麻烦的,使得测试非常费时。在配线架后面将光缆的适配器拆下,检查端接面,重新连接适配器,该过程的平均时间是10分钟左右。即使如此,还寄希望于安装人员不会意外地接触到光缆端接面以造成光缆端接面更大的损伤。
检查光缆端接面最有效的方法是使用视频放大镜,
视频放大镜可以直接插入到配线架以及设备的接口。由于不必在配线架背板拆开适配器进行检查以及检查后再重新连接,从而节省了大量的时间。视频放大镜提供直至400倍的放大能力以及各种类型的光缆连接器探头,包括微型连接器(SFF),同时它还避免了可能由于工作中的红外光源对眼睛的损伤。和传统方法相比,用这种方式检查端接面可以节省大约90%的时间。也就是说6个连接器用6分钟检测完毕,而用传统方法需要60分钟。验证并确保光缆端接面的清洁就排除了光缆性能最大的潜在问题。
视频放大镜也可以安全地使用在工作中的光缆上。例如如果一个100BASE-FX 24口交换机 的一个口有问题,你可以使用视频放大镜直接检测端口的洁净度,即使交换机是开机以及其它端口都在工作的情况下。在这种情况下,你就可以直接查找故障并且和设备供应商一起确认问题所在,而且只要不断电,也不影响交换机其它端口的正常工作。在这次调研中67%的安装合同商都遇到了设备的光缆端口不清洁的问题,而44%的网络用户也遇到过同样的问题。
背景资料:
视频放大镜检查网络设备端口可能会发现污染非常严重的端口。在对这些不洁的端口进行清洁之前,请联系设备供应商以确保没有违反保修的规则。
一个有趣的事情是清洁了一个连接器但是却弄脏了另一个连接器。因为检查完一个脏的连接器后没有清洁测试仪上的探头就又去测试另外的连接器导致了交叉污染。所以清洁测试仪的探头是非常重要的。如果使用不洁的测试跳线,极可能将污染扩散导致非常高的损耗。还请记住,跳线是可以被不洁的连接器所污染。同样,请认真想一下,有多少安装的跳线的端接面是没有清洁过以及测试过。例如不小心用手接触到光缆的端接面可以导致非常严重的污染?图4?。这些跳线被发现是很多网络故障的直接原因。不被人知的是,安装商和网络最终用户将网络设备连接的时侯没有检查过跳线和设备端口的洁净度情况,这带来了50%以上的潜在问题。
有趣的是,90%的合同商和80%的最终用户在每次安装连接器的时侯都对端接面进行检查。他们的一般做法是使用100或200倍的放大镜进行检查。清洁端接面和适配器时,92%的合同商和82%的最终用户使用酒精。另一个常用的清洁方法是压缩空气,30%的合同商和12%的网络用户使用这种方法。有些人同时使用两种方法。还有其他人使用潮湿的酒精布清洁并使用非麻丝布擦拭,因为酒精和压缩空气可能仍然会在光缆端接面留下残留物。
光缆的测试仪器
最常用的光缆测试仪器是光功率损耗测试包(OLTS)以及光时域反射计(OTDR)。此外,调研结果中还有部分用户使用可视故障定位仪(VFLs)来检测光的极性、断点,以及大的衰减,例如配线架上光缆的过紧捆扎。某些VFLs可以产生两个光源,一个稳定一个振荡,来帮助识别微型接口(SFF)的光缆极性。调查也说明OTDRs也被用来定位连接器,熔接点以及弯曲过度的故障。调查说明在很多情况下用户也要求OTDR曲线和OLTS(损耗测试)一起提供来保证所安装的光缆没有过度弯曲,不良的熔接以及连接器。此时最终用户不仅确保光缆应用是在损耗限之内,而且对光缆的安装质量非常有信心,对他们所付出的费用也感到放心。图5是光缆的测试仪器使用情况。
小结
灰尘以及其他的污染是光缆数据传输的主要敌人,特别是那些高速网络。千兆以太网标准规定对光缆链路损耗的余量只有2.38dB,很小的不洁就可以造成严重的影响。简单地检查连接器的洁净度以及使用防尘盖(套)就可以有效地保护连接器不受污染。然而,在光缆故障诊断的时侯,合适的测试工具,例如视频放大镜、OTDR,可以大大地缩短故障诊断的时间,从而缩短网络出故障的时间,减少由于网络中断而造成的损失。
背景资料:10个减少光缆故障最有效的方法
1. 记住光缆的强度系数,不可大力拖拽光缆,不可过度弯曲光缆。
2. 按照厂商的要求在安装过程中清洁连接器。
3. 使用视频放大镜检查连接器的洁净度和划伤情况。
4. 使用VFL检验光缆的方向。
5. 按照标准,使用OLTS和OTDR测试安装的光缆。
6. 当测试光缆链路时,使用清洁的跳线?并始终保持其清洁?。
7. 所有连接器都要安装防尘罩套?。
8. 使用视频放大镜检查跳线的端接面。
9. 在清洁光缆端口之前咨询设备厂商。
10. 出现故障时使用合适的工具可以减少故障诊断的时间并节省用户的费用。
原文转自:www.ltesting.net
这篇文章主要介绍了Win7系统突然出现卡屏的几种原因,本文总结了系统中的垃圾文件过多、硬盘老化、病毒三种可能会导致系统卡屏的原因,需要的朋友可以参考下
第一种原因:系统中的垃圾文件过多
伴随着win7旗舰版电脑使用的时间越来越长,自然的,其中堆积的垃圾文件也就越来越多了,这不禁包括了电脑中没有删除的文件,也包含了其中的临时文件,还有一些是系统自己生成的文件,这无疑是一个十分庞大的文件群,因此,咱们可以试着清理一下自己的电脑,看是否可以解决问题,
Win7系统突然出现卡屏的几种原因
,
第二种情况:硬盘老化
硬盘是win7旗舰版电脑很重要的一个硬件设施,也是咱们每次使用电脑都需要使用到的一个设备,长久下来,硬盘就可能因为使用过多而出现老化的现象,也有可能导致win7旗舰版电脑卡屏,而这种原因则只能更换硬盘来解决。
第三种情况:病毒
这个原因是不应该忽视的,也是比较重要的一个原因,电脑中毒不算是什么稀罕事儿吧?有些病毒可能表面没有什么,也不容易被察觉,但是实际上却在慢慢的危害我们的电脑,因此,清查电脑中是否有病毒也是很重要的一个步骤。
★ 出现脱发的原因
★ 出现的反义词
★ 高考满分作文出现
★ IT系统承包合同