国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

Linux 硬件穩(wěn)定性指南,第 2 部分

2024-07-21 02:38:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  作者 :Daniel Robbins
  
  驅(qū)動(dòng)程序、IRQ 與 PCI 等待時(shí)間
  
  linux 之所以聲譽(yù)卓著是它擁有非凡的穩(wěn)定性。但假如硬件有缺陷或配置不當(dāng),即便是世界上最穩(wěn)定的操作系統(tǒng),也不能發(fā)揮其優(yōu)越之處。在本文中,Daniel Robbins 分享他在讓 NVIDIA TNT 圖形卡使用 NVIDIA 的加速驅(qū)動(dòng)程序在 Linux 下工作方面的經(jīng)歷。如同他所做的那樣,向您演示如何診斷以及解決 IRQ 和 PCI 等待時(shí)間計(jì)時(shí)器問(wèn)題 -可以使用這些技術(shù),來(lái)確保系統(tǒng)不會(huì)經(jīng)歷死鎖、不一致行為或數(shù)據(jù)丟失。
  不穩(wěn)定性的諸多原因
  穩(wěn)定性問(wèn)題通常不是由有缺陷的硬件所引起的,但硬件配置不當(dāng)或選擇異常的驅(qū)動(dòng)程序會(huì)造成這類(lèi)問(wèn)題。當(dāng)我試圖在 Linux 下讓我的帝盟 Viper V550(一種基于 NVIDIA TNT 芯片的 AGP 圖形卡)使用 NVIDIA 自己的加速驅(qū)動(dòng)程序時(shí),就開(kāi)始了這方面的經(jīng)歷。
  
  NVIDIA 有它們自己的 Linux 顯示驅(qū)動(dòng)程序,它們是 NVIDIA、SGI 和 VA Linux 的合作結(jié)晶。與包括在 Xfree86 4.0 中的標(biāo)準(zhǔn)的僅 2D NVIDIA 驅(qū)動(dòng)程序相比,這些驅(qū)動(dòng)程序有許多優(yōu)越之處。例如,它們有完全加速的 3D 支持。而且,這些驅(qū)動(dòng)程序的特色是以 OpenGL 1.2 為實(shí)現(xiàn),而不只是 Mesa 的增強(qiáng)版。所以,總而言之,若您有基于 NVIDIA 的圖形卡,則這些加速驅(qū)動(dòng)程序是您希望使用的,至少理論上如此。我讓這些驅(qū)動(dòng)程序正常工作的嘗試,最終轉(zhuǎn)變成一次極佳的學(xué)習(xí)經(jīng)歷,至少可以這么說(shuō)。
  
  在安裝完加速 Linux NVIDIA 驅(qū)動(dòng)程序之后(請(qǐng)參閱本文后面的參考資料),啟動(dòng) Xfree86,開(kāi)始擺弄所有 3D 應(yīng)用程序,現(xiàn)在,有應(yīng)該有的出色加速。到那時(shí)為止,以前我必須重新引導(dǎo)到 Windows NT 才能利用 3D 加速。現(xiàn)在,雖然我不介意 NT,但必須重新引導(dǎo)才能使用 3D 應(yīng)用,就有點(diǎn)讓人惱火了,我非常興奮又少了一個(gè)要離開(kāi) Linux 而重新引導(dǎo)機(jī)器的原因。然而,在大約擺弄了一小時(shí)左右,我對(duì)于Linux 3D 渴望,經(jīng)歷了一次致命挫折 -機(jī)器死鎖了。鼠標(biāo)完全一動(dòng)不動(dòng),屏幕凍結(jié),并且必須重新引導(dǎo)系統(tǒng)。
  
  是的,碰到了某種穩(wěn)定性問(wèn)題。但我無(wú)法確切知道是什么造成這一問(wèn)題。是異常的硬件,還是圖形卡配置不當(dāng)呢?或者可能是驅(qū)動(dòng)程序有問(wèn)題- 是它不喜歡基于 VIA KT133 芯片的 Athlon 主板嗎?無(wú)論什么問(wèn)題,我希望盡快解決它。在本文中,我將分享如何解決硬件穩(wěn)定性問(wèn)題的過(guò)程。雖然,您所碰到的問(wèn)題不一定與這完全相同,但我用來(lái)診斷和(大多數(shù))解決問(wèn)題的步驟在本質(zhì)上是大同小異的,并且也可應(yīng)用到許多不同類(lèi)型的 Linux 硬件問(wèn)題。
  
  首先,硬件
  我首先想到,可能是異常或需要冷卻的硬件。一方面,帝盟 Viper V550 好象在 Windows NT 下沒(méi)有問(wèn)題。另一方面,可能是 Linux 使芯片有些過(guò)載,然后引起與發(fā)熱相關(guān)的死鎖。V550 確實(shí)極燙,它的 OEM 散熱片似乎來(lái)不及散熱。死鎖和圖形卡不夠冷卻的事實(shí)合在一起說(shuō)服我轉(zhuǎn)向 PC Power and Cooling(請(qǐng)參閱參考資料),為我的 V550 購(gòu)買(mǎi)了一個(gè)迷你集成的散熱片/風(fēng)扇。
  
  所以,在我收到 Video Cool 后,將顯示卡上的 OEM 散熱片去掉(造成質(zhì)保無(wú)效),清潔 TNT 芯片,然后將 Video Cool 固定在芯片上。結(jié)果呢?顯示卡不燙了,但死鎖仍然存在。我從這段非凡的經(jīng)歷所吸取的教訓(xùn)是-假如一開(kāi)始就確定系統(tǒng)冷卻充足,那么根本不必?fù)?dān)心由于不充足冷卻引起的元件故障。這本身就是要投入時(shí)間和精力來(lái)確保工作站和服務(wù)器涼爽運(yùn)行的極佳理由。既然已經(jīng)考慮了發(fā)熱問(wèn)題,我知道死鎖問(wèn)題不太可能由異常的硬件引起,并且開(kāi)始查看其它地方。
  
  新驅(qū)動(dòng)程序 -以及可能的解決方案?
  我對(duì) NVIDIA 驅(qū)動(dòng)程序本身是否是問(wèn)題所在,有點(diǎn)半信半疑。幸運(yùn)的是,新版本的驅(qū)動(dòng)程序剛剛發(fā)布,所以我立即升級(jí),希望它能解決穩(wěn)定性問(wèn)題。遺憾的是,它沒(méi)有,在 openPRojects.net 上的 #nvidia 頻道,我與其他人討論之后,發(fā)現(xiàn)不是每個(gè)人都能夠使驅(qū)動(dòng)程序穩(wěn)定運(yùn)行,然而,對(duì)于許多人,它是穩(wěn)定運(yùn)行的。
  
  在 #nvidia 上,有人建議我確保 V550 沒(méi)有與另一塊卡共用一個(gè) IRQ。與標(biāo)準(zhǔn)的 XFree86 驅(qū)動(dòng)程序不同,加速 NVIDIA 驅(qū)動(dòng)程序需要一個(gè) IRQ 來(lái)正常運(yùn)行。要查看它是否有自己的專(zhuān)用 IRQ,輸入 "cat /proc/interrupts",您瞧,V550 與 IDE 控制器共用一個(gè)中斷。在我解釋這個(gè)問(wèn)題之前,先講述一點(diǎn)有關(guān) IRQ 的簡(jiǎn)要背景。
  
  PC 通常使用 IRQ 以及硬件中斷,來(lái)答應(yīng)外設(shè),如視頻卡和磁盤(pán)控制器,用信號(hào)通知 CPU,它們預(yù)備處理數(shù)據(jù)。在 PCI 總線(xiàn)出現(xiàn)以前,機(jī)器中的每個(gè)設(shè)備都有自己專(zhuān)用的 IRQ,這一點(diǎn)是很重要的。假如您的機(jī)器仍然使用 ISA 外設(shè),那么這仍然是一個(gè)事實(shí) - 所有非 PCI 設(shè)備都應(yīng)該有自己專(zhuān)用的 IRQ。
  
  IRQ 與 PCI
  然而,PCI 總線(xiàn)有點(diǎn)不同。在系統(tǒng)中,PCI 分配了四個(gè) IRQ 可供 PCI/AGP 卡使用。通常,多個(gè)設(shè)備可以共享這些 IRQ。
(假如是這種情況,要確保共享 IRQ 的所有設(shè)備是 PCI 和 AGP。)尤其對(duì)于在可能有五個(gè) PCI 和一個(gè) AGP 插槽的現(xiàn)代機(jī)器,共享 IRQ 技術(shù)是非常重要的。沒(méi)有共享 IRQ 技術(shù),系統(tǒng)中使用 IRQ 的卡不可能超過(guò)四個(gè)。
  
  但是,PCI IRQ 共享有一些限制。現(xiàn)代主板的 BIOS 和 Linux 內(nèi)核通常支持 PCI IRQ 共享技術(shù),但也有某些 PCI 卡在與另一個(gè)設(shè)備共享 IRQ 時(shí),會(huì)直接拒絕正常工作。假如碰到系統(tǒng)隨機(jī)死鎖,非凡是死鎖發(fā)生與使用某個(gè)特定的硬件設(shè)備相關(guān)時(shí),不妨嘗試讓 PCI 設(shè)備使用自己的 IRQ。第一步是查看系統(tǒng)中是否有任何設(shè)備共享 IRQ。可以遵循以下步驟來(lái)做到:
  
  使用系統(tǒng)中的各種設(shè)備,如,磁盤(pán)、聲卡、顯示卡、SCSI 卡等等。這確保 Linux 會(huì)處理這些設(shè)備的中斷。
  用 "cat /proc/interrupts" 命令,會(huì)顯示 Linux 內(nèi)核到目前為止處理的所有中斷的列表及其數(shù)目。查看該列表的最右欄。假如同一行中列有兩個(gè)或更多設(shè)備,那么這些設(shè)備共享那個(gè)特定的 IRQ。
  假如碰到有問(wèn)題的設(shè)備是非 PCI 設(shè)備(ISA 或其它舊卡),那么您會(huì)發(fā)現(xiàn) IRQ 沖突,可以嘗試通過(guò) BIOS、isapnptools 包或者對(duì)外設(shè)進(jìn)行物理跳線(xiàn)來(lái)解決。請(qǐng)注重,假如設(shè)備是集成在主板上,即使它不占用物理 PCI 插槽,它也是 PCI 設(shè)備。
  
  假如有問(wèn)題的所有設(shè)備是 PCI 或 AGP 設(shè)備,那么是否有問(wèn)題取決于硬件。通過(guò)以下步驟使所有的 PCI/AGP 設(shè)備有自己的 IRQ:
  
  進(jìn)入系統(tǒng) BIOS,禁用所有不用的外設(shè)(USB、并行端口等等)。這可以釋放一些 IRQ, 讓每個(gè)設(shè)備盡可能的分配它自己的唯一的 IRQ。
  進(jìn)入 BIOS 的 PnP 部分,確保 BIOS 被配置成“非 PnP”操作系統(tǒng)。選中 "Reset ESCD data" 選項(xiàng)。這會(huì)強(qiáng)制 BIOS 在下次重新引導(dǎo)系統(tǒng)時(shí)給所有硬件設(shè)備重新分配 IRQ。
  重新引導(dǎo) Linux,使用硬件,用 "cat /proc/interrupts" 命令查看結(jié)果。現(xiàn)在,希望所有設(shè)備都使用自己的 IRQ。
  假如仍有兩個(gè)受懷疑的設(shè)備共享 IRQ,那么還有兩種額外選項(xiàng)。有些 BIOS 設(shè)置程序可以答應(yīng)您將確定的某個(gè) IRQ 分配給特定的 PCI 插槽。很少見(jiàn)這種 BIOS 設(shè)置程序,假如您有其中之一,可以使用這種功能來(lái)消除沖突。假如 BIOS 中沒(méi)有這個(gè)選項(xiàng)(大多數(shù)情況下沒(méi)有),那么還有一種方法可以確保解決這種問(wèn)題-關(guān)機(jī),關(guān)閉電源,從插座上拔掉電源,并等幾分鐘。然后,打開(kāi)系統(tǒng)機(jī)箱, 將 PCI 卡換一個(gè)插槽。這種辦法好象不常見(jiàn),但絕對(duì)管用,非凡是當(dāng)系統(tǒng)中有多余的 PCI 插槽時(shí),這種辦法非凡有用(但您要花一些時(shí)間來(lái)給每一塊卡找正確的插槽。)
  
  我使用了這個(gè)“PCI 調(diào)換訣竅”,能夠使系統(tǒng)中的所有設(shè)備都使用唯一的 IRQ。差不多了。正如您所見(jiàn),有兩個(gè) IDE 設(shè)備仍然共享一個(gè) IRQ:
  
  
  # cat /proc/interrupts
   CPU0
   0: 52063600 XT-PIC timer
   1: 616810 XT-PIC keyboard
   2: 0 XT-PIC cascade
   5: 89084 XT-PIC ide2, ide3
   7: 1515741 XT-PIC eth0
   8: 155928 XT-PIC rtc
   9: 1139761505 XT-PIC nvidia
   10: 164000 XT-PIC Ensoniq AudioPCI
   12: 4458823 XT-PIC PS/2 Mouse
   14: 664176 XT-PIC ide0
   15: 38661 XT-PIC ide1
  NMI: 0
  ERR: 0
  
  
  
  
  但這是正常的,因?yàn)?ide2 和 ide3 設(shè)備是集成在 Promise FastTrak IDE 卡的同一芯片上。
  
  現(xiàn)在(幾乎)所有設(shè)備都有唯一的 IRQ,我嘗試加速驅(qū)動(dòng)程序,并且……仍然在不到一個(gè)小時(shí)內(nèi)經(jīng)歷了一次死鎖。顯然,共享的 PCI IRQ 根本不是問(wèn)題所在。唉……得花些時(shí)間看看其它地方(再一次)。
  
  解決一個(gè)問(wèn)題,發(fā)現(xiàn)另一個(gè)
  一段時(shí)間后,我發(fā)現(xiàn)禁用 AGP 可以使 NVIDIA 驅(qū)動(dòng)程序運(yùn)行正常,但有一點(diǎn)慢。盡管不想這樣做,但目前驅(qū)動(dòng)程序的版本答應(yīng)關(guān)閉 AGP,這可以在 XF86Config 中簡(jiǎn)單地添加一行來(lái)實(shí)現(xiàn)。關(guān)閉 AGP,我將視頻的內(nèi)存帶寬降低了 4x,但是相當(dāng)慢的 3D 仍然比根本無(wú)硬件 3D 加速快很多。在禁用 AGP 后,終于有了一個(gè)穩(wěn)定的系統(tǒng)!然而,這種臨時(shí)解決方案又造成另一個(gè)問(wèn)題。每當(dāng)運(yùn)行 3D OpenGL 動(dòng)畫(huà),聲音回放會(huì)變得極端扭曲并且斷斷續(xù)續(xù)。唷!
  
  幸運(yùn)的是,能夠找到解決聲音問(wèn)題的方案。用 setpci 實(shí)用程序?yàn)?PCI 設(shè)備設(shè)置較理想的等待時(shí)間。過(guò)一會(huì)兒,我會(huì)向您演示具體的解決方案 -但首先介紹一些背景知識(shí)。
  
  您可能知道,PCI 總線(xiàn)是共享資源 - 所有 PCI 卡通過(guò)總線(xiàn)輪流進(jìn)行通信,通常情況下,一切都正常。但由于 PCI 總線(xiàn)是具有有限帶寬(雖然通常情況下足夠)的共享資源,某個(gè) PCI 卡可能會(huì)對(duì)系統(tǒng)中的其它 PCI 卡產(chǎn)生負(fù)面影響。例如,假如

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 依兰县| 海南省| 洪雅县| 大悟县| 财经| 改则县| 肥乡县| 贡山| 比如县| 清镇市| 阳高县| 阳西县| 曲周县| 长丰县| 怀化市| 凉城县| 商城县| 许昌县| 焦作市| 鹤岗市| 锦州市| 两当县| 青海省| 北海市| 濮阳市| 酒泉市| 醴陵市| 中超| 阳谷县| 义马市| 梓潼县| 读书| 精河县| 北票市| 黄山市| 梁河县| 元阳县| 基隆市| 景谷| 定南县| 桓仁|