醒來聞到咖啡香 https://www.ywc.im/wp Wake Up and Smell the Coffee Thu, 05 Mar 2009 17:08:42 +0000 zh-TW hourly 1 https://wordpress.org/?v=5.2.3 42227782 32位元Windows XP和Vista下安裝4G記憶體的問題 https://www.ywc.im/wp/32%e4%bd%8d%e5%85%83windows-xp%e5%92%8cvista%e4%b8%8b%e5%ae%89%e8%a3%9d4g%e8%a8%98%e6%86%b6%e9%ab%94%e7%9a%84%e5%95%8f%e9%a1%8c/ https://www.ywc.im/wp/32%e4%bd%8d%e5%85%83windows-xp%e5%92%8cvista%e4%b8%8b%e5%ae%89%e8%a3%9d4g%e8%a8%98%e6%86%b6%e9%ab%94%e7%9a%84%e5%95%8f%e9%a1%8c/#comments Sat, 12 Jul 2008 14:40:12 +0000 http://www.yannicafe.info/wp/2008/07/12/66.html 其實這是個老問題了,只是剛好最近又有人問到我這個問題。也就是為什麼在他的XP/Vista中,4G的記憶體只看的 … 繼續閱覽 32位元Windows XP和Vista下安裝4G記憶體的問題

這篇文章 32位元Windows XP和Vista下安裝4G記憶體的問題 最早出現於 醒來聞到咖啡香

]]>
其實這是個老問題了,只是剛好最近又有人問到我這個問題。也就是為什麼在他的XP/Vista中,4G的記憶體只看的到3G左右而已。所以我把先前在BBS上寫的文章再拿出來貼到blog做個記錄…

※ 引述《eoda (eoda)》之銘言:
> 32bit OS 的只能定址到 4GB 的實體記憶體,這也是為什麼當你
> 實體記憶體超過 4GB 時預設是無法使用 4GB 以上的實體記憶體
> (因為定址不到)。Intel 在 Pentium Pro 後加上了
> PAE(Physical Address Extension) 增加 4bit 來讓定址能到 64GB。
> 所以以你的例子來說要在 boot.ini 中加上 /PAE 參處才能定址到所
> 有的記憶體。
> [略]

關於這個問題,我有稍微研究過。因為公司買的一批4GB RAM機器讓我花了不少時間解決這個問題,以下是我survey的一點心得,若有錯誤歡迎指教。

很不幸的,雖然32bits的OS可以定址到4GB的RAM,或是透過PAE擴展到36bits的位址線以支援到64GB [1]。但當你在32bits的XP/VISTA上安裝了4GB的RAM時,你在系統(OS)中看到的只會有不到4GB的記憶體(視硬體而定),也就是說你的可用記憶體到不了4GB的,可能是 2.x ~ 3.x GB。

雖然定址空間可以到4GB(或是開啟PAE到64GB)。但別忘了!硬體的記憶體也是需要定址,OS才能存取到的!所以僅管你可以定址到4GB,你也裝了4GB的RAM,但因為要做硬體記憶體映射,所以在4GB頂端的那些定址空間中,有部分的位址會被拿去mapping到hardware的memory,也是是所謂的MMIO (Memory Mapped Input/Output) [2]。

這部分的位址佔用是很恐怖的,光PCI, Chipset, DMI…等,就要用去600~1G以上不等的定址空間(如果有PCI-E的卡更傷,每張要額外佔用256MB的定址空間)。試想,如果你有1GB的定址空間被硬體映射佔用了,那不管你裝了幾GB的RAM,OS最多就只能用剩下的那3G的定址空間,因此你在OS裡當然就只看(抓)到的3G的RAM了,更別提如果是內建顯卡還要分記憶去放材質。

除此之外,因為當初Intel的標準是使用4GB頂端的那些位址(當時覺得沒人會有那麼多的RAM吧 XD),因此就算你的定址空間到64GB,你也裝了超過4G的RAM。但由於定址空間已因MMIO而不連續,所以將導致OS無法使用,所以還是不能使用到4GB以上的RAM。

在現今記憶體越來越便宜,容量越來越大的情況下,這實在是很令人傷心的一件事。因此廠商(Intel)就研發了新的技術來解決這個問題,也就是Memory Remapping [3]。(或稱 Intel Memory Remapping,畢竟Intel的錯誤還是要由他自已來解決XD)。簡單的來說就是可以將MMIO的部分搬移到實體記憶體之上的位址空間。如此一來就不會佔用了實體記憶體的定址空間,自然也就不會有上述問題了。但可惜的是只有伺服器的晶片組或桌上型較新的晶片組/CPU才有這樣的功能。如:
Intel: 955X, 975X, P965和多數的Server Chipset
AMD:   Athlon 64以上(AMD的記憶體控制是做在CPU內的,不是在北橋晶片)
NVidia:680i SLI (for Intel CPU)

不過還有很重要的一點,就是作業系統本身支援度的問題。比方說像32bits的XP/Vista,雖然說在"規格"上支援到4GB的RAM(甚至說開啟PAE理論上可以支援到64GB的RAM),但由於作業系統本身對記憶體和Memory Remapping的支援不足,因此不管你怎麼搞,最多最多就是只有3.5GB的RAM出現在OS中(視硬體不同而定)。但像32bits的Windows 2003 Server Standard以上就可以正確的抓到4GB以上的RAM(With PAE mode)。

因此目前想在32bits的OS上使用4GB以上的RAM,以Windows來說只有2003 Server這個選擇,不然就只能選64bits的OS了(64bits的OS也不存在PAE的問題)。

除此之外,驅動程式的支援也是一環,像NVidia之前的driver是無法在4GB以上的位址運作的,因此一但被Remapping到4GB以上的位址就會有問題。(ATI就無此問題,這或許也是server onboard的vga幾乎ati的關係吧)

所以,要能完整的使用超過4GB的RAM,以下項目缺一不可 [4]
1.要有插4GB以上的RAM(廢話)
2.硬體支援Memory Remapping(通常BIOS中會有此選項,或像多數的server chipset預設就是開啟)
3.64bit的作業系統(或32bit+PAE,但XP/Vista支援不足)
4.驅動程式的支援

BTW, 64bits的Windows作業系統是沒有AWE API的,因為它原生就支援到8TB的RAM

References:
[1] PAE – http://en.wikipedia.org/wiki/Physical_Address_Extension

[2] MMIO – http://en.wikipedia.org/wiki/Memory-mapped_IO

[3] Intel® Chipset 4 GB System Memory Support White Paper, February 2005 Revision 1.0, Chapter 4 – http://dlsvr01.asus.com/pub/ASUS/mb/4GB_Rev1.pdf

[4] The system memory that is reported in the System Information dialog box in Windows Vista is less than you expect if 4 GB of RAM is installed – http://support.microsoft.com/?scid=kb%3Ben-us%3B929605&x=12&y=11

這篇文章 32位元Windows XP和Vista下安裝4G記憶體的問題 最早出現於 醒來聞到咖啡香

]]>
https://www.ywc.im/wp/32%e4%bd%8d%e5%85%83windows-xp%e5%92%8cvista%e4%b8%8b%e5%ae%89%e8%a3%9d4g%e8%a8%98%e6%86%b6%e9%ab%94%e7%9a%84%e5%95%8f%e9%a1%8c/feed/ 3 66
利用tar做檔案分片打包 https://www.ywc.im/wp/%e5%88%a9%e7%94%a8tar%e5%81%9a%e6%aa%94%e6%a1%88%e5%88%86%e7%89%87%e6%89%93%e5%8c%85/ https://www.ywc.im/wp/%e5%88%a9%e7%94%a8tar%e5%81%9a%e6%aa%94%e6%a1%88%e5%88%86%e7%89%87%e6%89%93%e5%8c%85/#respond Mon, 19 May 2008 14:08:49 +0000 http://www.yannicafe.info/wp/2008/05/19/65.html 這次系統移機時,因gallery的部分照片檔案就佔了幾十gigabyte的空間。原本是將整個目錄tar成單一檔 … 繼續閱覽 利用tar做檔案分片打包

這篇文章 利用tar做檔案分片打包 最早出現於 醒來聞到咖啡香

]]>
這次系統移機時,因gallery的部分照片檔案就佔了幾十gigabyte的空間。原本是將整個目錄tar成單一檔案想利用FTP傳到另一台主機上。花了好久的時間壓完的檔案,結果因為忘了ftp有單檔無法傳輸超過2G的限制(Windows上有套FTP client可突破此限制,不過我用的是Linux上的ftp指令,就沒辦法了),一直停在傳到2G那一刻好幾個小時後才被我發現。於是乎改用wget透過HTTP的方式來下載,沒想到Apache default也不支援超過2G的檔案,下載時會出現403 forbidden error。我不死心的找了一下解決方法,有文章提到只要在configure apache之前加上一段flag,便可開啟apache對大檔(大於2G)的支援:

CFLAGS=”-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64″

於是乎我便將apache整個重新build一遍,結果看是看的到檔案了,HTTP也存取的到檔案,但問題是,下載下來的大小永遠都是 0 byte!

到此,我已經累了,只好放棄一次下載的想法,乖乖的man一下tar指令,研究了一下分片打包的方法,其用法如下:

tar cf ./g2data01.tar -M -L 20000000 /raid/g2data

其中 -M 是開啟 multi-volume 的功能,-L 則是指定每個volume的大小,單位是1024 bytes

因此上述的指令便會將 /raid/g2data 下所有的內容打包為每包約2G左右的檔案。

當每一個指定大小的分片檔案打包完成後,系統會出現如下訊息,提示你輸入下一個分片檔案的檔名:

Prepare volume #2 for `./g2data01.tar' and hit return:

此時請輸 "n 下一個檔名" 後按二次Enter鍵,便可繼續打包下一個分片檔。

Prepare volume #2 for `./g2data01.tar' and hit return: n g2data02.tar
Prepare volume #2 for `g2data02.tar' and hit return:

是的,你想的沒錯,就是要一個檔一個檔的指定檔名。因此如果你分片成50個檔,那就得輸入50次檔名,按100次Enter鍵,這就是最麻煩的地方。除此之外,multi-volume無法與compress功能合併使用,所以無法加上 z 參數來使用zip壓縮以減小檔案size。(會出現 Cannot use multi-volume compressed archives 的錯誤)。不過總算是把所有內容分裝成一堆小於2G可以用ftp下載的檔案了。待所有檔案下載到另一台server後,接下來就是解開的動作啦,指令與打包很類似:

tar -xf g2date01.tar -M

便可將檔案解開到到當前目錄下,不過不幸的是,和打包時一樣,你得一個一個地指定要解開來的檔案名稱,因此看到如下提示訊息時,記得再用 "n" 指令來指定下一個要解開來的檔名後按二次Enter鍵囉。

Prepare volume #2 for g2date01.tar and hit return: n g2data02.tar
Prepare volume #2 for g2date01.tar and hit return:

這篇文章 利用tar做檔案分片打包 最早出現於 醒來聞到咖啡香

]]>
https://www.ywc.im/wp/%e5%88%a9%e7%94%a8tar%e5%81%9a%e6%aa%94%e6%a1%88%e5%88%86%e7%89%87%e6%89%93%e5%8c%85/feed/ 0 65
吃掉所有CPU資源的 svchost.exe https://www.ywc.im/wp/%e5%90%83%e6%8e%89%e6%89%80%e6%9c%89cpu%e8%b3%87%e6%ba%90%e7%9a%84-svchostexe/ https://www.ywc.im/wp/%e5%90%83%e6%8e%89%e6%89%80%e6%9c%89cpu%e8%b3%87%e6%ba%90%e7%9a%84-svchostexe/#comments Sun, 18 Feb 2007 07:06:41 +0000 http://www.yannicafe.info/wp/2007/02/18/61.html 過年回到家後發現,家裡的 PC 和老媽的 Notebook ,莫名其妙的都會被 svchost.exe 佔用掉 … 繼續閱覽 吃掉所有CPU資源的 svchost.exe

這篇文章 吃掉所有CPU資源的 svchost.exe 最早出現於 醒來聞到咖啡香

]]>
過年回到家後發現,家裡的 PC 和老媽的 Notebook ,莫名其妙的都會被 svchost.exe 佔用掉所有的 CPU 資源(難怪老媽一直跟我抱怨新買的 Notebook 總是跑的很慢 XD)。一看到這個情況,腦中馬上浮現「不會是中毒了吧」的念頭,於是在 CPU 使用率總是停在100%的狀態下,花了半天的時間才把兩台電腦做掃毒、掃木馬以及Windows Update。結果當然,事情不是憨人想的那麼簡單,好幾個小時換來的代價就是,連個子兒都沒掃到,神秘的svchost.exe仍舊霸道地侵佔我的CPU。無可耐何之下只好求助Google大神,試了好多種解法都禺用,不過總算是皇天不負苦心人,最後還是讓我找到了解決的方法。

svchost.exe 吃掉所有 CPU 資源的原因很多,不過我的狀況都是在執行 Windwos Update 時發生的(或是自動更新服務 Automatic Updates 執行時)。因此解決方法主要就是把 Windows 的自動更新重設一次,步驟如下:

一、首先檢查系統服務的狀態。
1. 點「開始」–>「執行」,輸入「services.msc」後按「確定」。
2. 在服務「Automatic Updates」上點二下。
3. 點選「登入」頁籤,確定登入身分為「本機系統帳戶」且「允許服務與桌面互動」“沒有”被選取。
4. 確認服務已在目前的「硬體設定檔」中被啟用,如果沒有,按下「啟用」按鈕。
5. 點選「一般」頁籤,確定「啟動類型」為「自動」,然後按下「啟動」按鈕以啟動服務。
6. 對「Background Intelligent Transfer Service (BITS) 」服務重覆 2 ~ 5 的步驟。

二、接著重新註冊 Windwos Update 的元件。
1. 點選「開始」–>「執行」。
2. 輸入「REGSVR32 WUAPI.DLL」後按 Enter。
3. 當看到 “DllRegisterServer 在 WUAPI.DLL 成功” 的訊息後按下「確定」。
4. 重覆上述步驟重新註冊下列元件
REGSVR32 WUAUENG.DLL
REGSVR32 WUAUENG1.DLL
REGSVR32 ATL.DLL
REGSVR32 WUCLTUI.DLL
REGSVR32 WUPS.DLL
REGSVR32 WUPS2.DLL
REGSVR32 WUWEB.DLL

三、最後清除可能已損壞了的 Windows Update 暫存目錄。
1. 點「開始」–>「執行」,輸入「cmd」後按「確定」。
2. 在命令提示字元中鍵入以下指令。(若出現錯誤訊息請先重開機後再報執行一次
net stop WuAuServ
2. 點「開始」–>「執行」,輸入「%windir%」後按「確定」。
3. 找到「SoftwareDistribution」並更名為「SDold」。
4. 點「開始」–>「執行」,輸入「cmd」後按「確定」,並在在命令提示字元中鍵入以下指令。
net start WuAuServ

四、大功告成!

這篇文章 吃掉所有CPU資源的 svchost.exe 最早出現於 醒來聞到咖啡香

]]>
https://www.ywc.im/wp/%e5%90%83%e6%8e%89%e6%89%80%e6%9c%89cpu%e8%b3%87%e6%ba%90%e7%9a%84-svchostexe/feed/ 334 61
莫非定律 https://www.ywc.im/wp/%e8%8e%ab%e9%9d%9e%e5%ae%9a%e5%be%8b/ https://www.ywc.im/wp/%e8%8e%ab%e9%9d%9e%e5%ae%9a%e5%be%8b/#comments Sat, 01 Oct 2005 15:39:49 +0000 http://www.yannicafe.info/wp/?p=29 莫非定律 (Murphy’s law) 說:「會出錯的事,一定會出錯。」(If anything … 繼續閱覽 莫非定律

這篇文章 莫非定律 最早出現於 醒來聞到咖啡香

]]>
莫非定律 (Murphy’s law) 說:「會出錯的事,一定會出錯。」(If anything can go wrong, it will.)這句由已故美國空軍上尉Edward A. Murphy, Jr.創立的名言,無時無刻不在我們日常生活中用慘痛的實例來提醒我們它的真理。沒錯!會出錯的事,一定會出錯,而且一定出錯在你最不想它出錯的時候!

上個星期我的 XP 發生空間短少事件後,雖然事後證明是微軟的錯,可是也讓我一度以為是硬碟故障而嚇出一身冷汗,因為整棵滿滿的資料,完全沒有任何備份,所以第二天就馬上去買了硬碟來做Raid 1。同時也讓我想到我的server好久沒備份了,應該趕快找個時間備個份才對…

結果,28號教師節的那天下午,我又收到系統的通知說我空間不足(這次換Linux了 =,=),我一想,老天呀!不會吧,連Linux也給我來這套!好不容易查出來,結果竟然是一個我已經停用了的Apache error log,突然暴增成 “39GB” 的一個檔案!39GB!我想打開來看看都沒辦法!於是當下我就將它砍了,然後重開機;只是沒想到這一重開機,就出現磁區錯誤開不了機了。這真的是晴天霹靂呀!什麼時候不死,偏偏死在我要備份前;什麼時候不掛,一定要在我很忙的時候掛。

莫非定律呀!難怪搞笑諾貝爾會頒發工程學獎給你 @@

沒事給我來這兩下,只好利用周末來個大翻新,也順便把裝了三年了的RH9更新為CentOS 4.1 (RHEL4),硬碟也加裝了80G的Raid 1來放資料。改天有空再來弄個異地備援,我想如果這樣還能再給我出事,那…我也只好認了…

Murphy’s law 全文
Murphy’s law Wikipedia

這篇文章 莫非定律 最早出現於 醒來聞到咖啡香

]]>
https://www.ywc.im/wp/%e8%8e%ab%e9%9d%9e%e5%ae%9a%e5%be%8b/feed/ 10 29
消失的空間 https://www.ywc.im/wp/%e6%b6%88%e5%a4%b1%e7%9a%84%e7%a9%ba%e9%96%93/ https://www.ywc.im/wp/%e6%b6%88%e5%a4%b1%e7%9a%84%e7%a9%ba%e9%96%93/#comments Sun, 25 Sep 2005 08:08:34 +0000 http://www.yannicafe.info/wp/?p=28 前幾個星期Windows突然通知我說系統空間不足,我一看才發現,C槽竟然只剩下10MB不到的空間,問題是我明明 … 繼續閱覽 消失的空間

這篇文章 消失的空間 最早出現於 醒來聞到咖啡香

]]>
前幾個星期Windows突然通知我說系統空間不足,我一看才發現,C槽竟然只剩下10MB不到的空間,問題是我明明就記得還有20幾G的容量,怎麼可能會用光了。但奇怪的是當我全選所有的檔案是,包含所有的系統隱藏檔在內只用了19G,也就是有20G的空間就這樣憑空消失了。

找了很久都沒找出原因,只好把一些不常用的軟體移除,好不容易清出個4G來,想說過陣子在來重灌好了。沒想到才一個多星期,Windows又跟我說空間不夠!這不禁讓我懷疑是不是中毒了。此時我才突然想到,不會是那個不讓我進去看內容的 “System Volumn Information” 吧?沒想到果然被我猜中!這個目錄預設是沒有權限進去的,所以當我把權限打開進入後,才發現裡頭有個20幾G上萬個檔案的子目錄!這個目錄是給 XP 的系統還原功能備份系統檔案用的,當容量不夠時就是自動停止備分,所以正常來說是不會把空間用光的。而且重點是,早在四月我一裝好 XP 時,我就停掉了這功能,且在這怪事發生的當下,我的系統還原功能仍然是關閉的,這真的是見鬼了。
後來在Buddy的提醒下,我把系統還原功能重新打開,再關閉一次,這下總算是恢復正常了!

這篇文章 消失的空間 最早出現於 醒來聞到咖啡香

]]>
https://www.ywc.im/wp/%e6%b6%88%e5%a4%b1%e7%9a%84%e7%a9%ba%e9%96%93/feed/ 5 28