gembin

          OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

          HBase, Hadoop, ZooKeeper, Cassandra

          Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

          There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

          About Me

           

          Windows系統(tǒng)變慢的原因---自行關(guān)閉硬盤DMA模式

                  硬盤的DMA模式大家應(yīng)該都知道吧,硬盤的PATA模式有DMA33、DMA66、DMA100和DMA133,最新的SATA-150都出來了!一般來 說現(xiàn)在大多數(shù)人用的還是PATA模式的硬盤,硬盤使用DMA模式相比以前的PIO模式傳輸?shù)乃俣纫?~8倍。DMA模式的起用對系統(tǒng)的性能起到了實質(zhì)的 作用。以前有很多文章介紹過如何打開DMA模式,我在這里也就不多說了。

          但發(fā)現(xiàn)一個新的“問題”——Windows 2000、XP、2003系統(tǒng)有時會自行關(guān)閉硬盤的DMA模式,自動改用PIO模式運行!這就造成在使用以上系統(tǒng)中硬盤性能突然下降,其中最明顯的現(xiàn)象 有:系統(tǒng)起動速度明顯變慢,一般來說正常Windows XP系統(tǒng)啟動時那個由左向右運動的滑條最多走2~4次系統(tǒng)就能啟動,但這一問題發(fā)生時可能會走5~8次或更多!而且在運行系統(tǒng)時進(jìn)行硬盤操作時明顯感覺變 慢,在運行一些大的軟件時CPU占用率時常達(dá)到100%而產(chǎn)生停頓,玩一些大型3D游戲時(比如極品飛車6)畫面時有明顯停頓(很多人這時以為是自己的顯 卡問題,當(dāng)然如果你使用的是三年前的顯卡玩這些游戲是有點老了,但如果你用的是今年才買的GF顯卡那就不是它的問題了),出現(xiàn)以上問題時大家最好看看自己 硬盤的DMA模式是不是被Windows 系統(tǒng)自行關(guān)閉了。查看自己的系統(tǒng)是否打開DMA模式:

          1. 雙擊“管理工具”,然后雙擊“計算機管理”;

          2. 單擊“系統(tǒng)工具”,然后單擊“設(shè)備管理器”;

          3. 展開“IDE ATA/ATAPI 控制器”節(jié)點;

          4. 雙擊您的“主要IDE控制器”;

          5. 點擊“高級設(shè)置”。

          看到“設(shè)備0”,下面的傳輸模式應(yīng)設(shè)為“DMA(若可用)”,再下面“當(dāng)前傳輸模式”,如果是“Ultra DMA Mode *(*為數(shù)字,DMA33為2,DMA66為4,DMA100為5、DMA133為6)”,那么你的系統(tǒng)正常,但如果以前你自己設(shè)的是“Ultra DMA Mode 6”又沒有改動,而現(xiàn)在是“Ultra DMA Mode 4”或“Ultra DMA Mode 2”更或者是“PIO 模式”而且改不過來!可能就是系統(tǒng)自行關(guān)閉了DMA模式了。

          分析問題:

          好了,先來說說問題是如何產(chǎn)生的。在Windows 2000/XP/2003中有這樣一個設(shè)定: Windows IDE/ATAPI 端口驅(qū)動程序 (Atapi.sys) 累積收到總共6個超時或循環(huán)冗余檢驗 (CRC) 錯誤后,驅(qū)動程序?qū)淹ㄐ潘俣龋▊魉湍J剑淖羁斓闹苯觾?nèi)存訪問 (DMA) 模式分步驟降為較慢的 DMA 模式。如果驅(qū)動程序繼續(xù)收到超時或 CRC 錯誤,則驅(qū)動程序最終將把傳送模式降為最慢的模式(PIO 模式)。 問題就在這里!一般來說一個正常的硬盤很少會有超時或循環(huán)冗余檢驗 (CRC) 錯誤,但是當(dāng)我們使用這些系統(tǒng)里的掛起(也有叫休眠)并恢復(fù)計算機后就很容易造成超時或循環(huán)冗余檢驗 (CRC) 錯誤。因為系統(tǒng)設(shè)定的超時值為4秒,當(dāng)系統(tǒng)向 ATA 磁盤發(fā)出讀取請求時如果硬盤回應(yīng)時間超過 4 秒的超時值時才會產(chǎn)生超時或循環(huán)冗余檢驗 (CRC) 錯誤,但因為系統(tǒng)在掛起(也有叫休眠)時硬盤是在停轉(zhuǎn)狀態(tài)中,恢復(fù)計算機時硬盤有個從停止到運動的過程,這就很容易造成大部分硬盤回應(yīng)時間超過 4 秒的超時值。也就是說當(dāng)我們使用計算機掛起6次后系統(tǒng)就會把通信速度(傳送模式)從最快的直接內(nèi)存訪問 (DMA) 模式分步驟降為較慢的 DMA 模式。如果掛起6次以上則驅(qū)動程序最終將把傳送模式降為最慢的模式(PIO 模式)。這就是Windows 系統(tǒng)突然變慢的原因。

          解決問題:

          若要為受影響的設(shè)備重新啟用典型DMA或更快DMA的傳送模式,請執(zhí)行以下操作:

          1. 雙擊“管理工具”,然后雙擊“計算機管理”;

          2. 單擊“系統(tǒng)工具”,然后單擊“設(shè)備管理器”;

          3. 展開“IDE ATA/ATAPI 控制器”節(jié)點;

          4. 雙擊您要為其恢復(fù)典型 DMA 傳送模式的控制器;

          5. 單擊“驅(qū)動程序”選項卡;

          6. 單擊“卸載”。

          當(dāng)此過程完成后,重新啟動您的計算機。當(dāng) Windows 重新啟動后,將重新枚舉硬盤控制器,同時與該控制器相連的每個設(shè)備的傳送模式將重置為默認(rèn)值。

          但這樣只是把硬盤設(shè)備的傳送模式重置為默認(rèn)值,當(dāng)我們再使用掛起系統(tǒng)時系統(tǒng)又會自行關(guān)閉DMA模式!所以我們還要做以下操作:

          1. 單擊“開始”,單擊“運行”,鍵入 Regedit,然后單擊“確定”。

          2. 在注冊表中找到并單擊以下項:

          HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0001



          HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}\0002

          3. 在“編輯”菜單上,指向“新建”,然后單擊“DWORD 值”。

          4. 鍵入 ResetErrorCountersOnSuccess,然后按 Enter 鍵。

          5. 在“編輯”菜單上,單擊“修改”。

          6. 鍵入 l,然后單擊“確定”。

          7. 按照下列步驟操作,然后退出注冊表編輯器:

          注意:上面注冊表最后的項“{4D36E96A-E325-11CE-BFC1-08002BE10318}”列出的帶有“0001”編號的子項對應(yīng) 于一臺僅有一個 IDE 控制器的計算機的主要 IDE 通道和次要 IDE 通道。如果您的計算機有兩個 IDE 控制器,則對于每個控制器,主要 IDE 通道和次要 IDE 通道的帶有編號的子項分別是:“0001、0002、0003、0004、0005、0006……”。

          為檢查是否找到了正確的子項,請檢查子項的 DriverDesc 值是包含字符串值“主要 IDE 通道”,還是包含字符串值“次要 IDE 通道”。

          建立以上注冊表鍵值的目的是:

          在Windows中,使系統(tǒng)向 ATA 磁盤發(fā)出讀取請求時的 4 秒的超時值更改為 10 秒。還實現(xiàn)了一種較不嚴(yán)格的變通策略以在發(fā)生超時錯誤和 CRC 錯誤時降低傳送模式(從較快的 DMA 模式到較慢的 DMA 模式,最終降為 PIO 模式)。以前的情況是,在每當(dāng)累積發(fā)生的超時錯誤或 CRC 錯誤的總數(shù)達(dá)到 6 次時,IDE/ATAPI 端口驅(qū)動程序 (Atapi.sys) 將降低傳送模式。當(dāng)我們建立以上注冊表鍵值實現(xiàn)新的策略后,Atapi.sys 僅在連續(xù)發(fā)生 6 次超時錯誤或 CRC 錯誤后才降低傳送模式。

          這一新的策略實現(xiàn)后將大大降低系統(tǒng)降低或關(guān)閉DMA傳送模式的機會。現(xiàn)在我們可以安心地使用掛起系統(tǒng)和高性能的DMA硬盤模式,再也不會發(fā)生系統(tǒng)性能突然下降的情況了。

          posted on 2008-07-25 14:16 gembin 閱讀(637) 評論(0)  編輯  收藏 所屬分類: 其他

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊

          收藏夾(9)

          Adobe

          Android

          AS3

          Blog-Links

          Build

          Design Pattern

          Eclipse

          Favorite Links

          Flickr

          Game Dev

          HBase

          Identity Management

          IT resources

          JEE

          Language

          OpenID

          OSGi

          SOA

          Version Control

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          free counters
          主站蜘蛛池模板: 龙口市| 垦利县| 宜川县| 隆尧县| 广元市| 万安县| 米泉市| 平江县| 轮台县| 黎城县| 上虞市| 莲花县| 屏南县| 鸡东县| 闻喜县| 绍兴县| 玉田县| 合作市| 盐亭县| 启东市| 新竹市| 凭祥市| 金溪县| 高陵县| 陇川县| 凌源市| 青铜峡市| 夹江县| 吴江市| 吉隆县| 清水河县| 新邵县| 万全县| 慈利县| 开阳县| 大化| 精河县| 阿尔山市| 汪清县| 齐齐哈尔市| 鸡泽县|