前段時間接到有客戶反映在大容量內(nèi)存進行文件復制時出現(xiàn)機器卡機的現(xiàn)象,后來經(jīng)過我反復的測試終于發(fā)現(xiàn)了其中的一些規(guī)律。我在這里把方式公布出來,如果有興趣的朋友可以測試一下我說的這個方法看是否有效。 其實這個問題最重要的地方是出在內(nèi)存的緩存數(shù)據(jù),相信學過計算機的朋友都知道,計算機在運行時,一些數(shù)據(jù)會儲存在你的內(nèi)存緩存里面。這樣是為了在你進行第二次同樣操作的時候就可以直接從緩存里面讀取文件。而導致卡機現(xiàn)象正式因為數(shù)據(jù)從緩存里面被復制出來的速度遠遠大與數(shù)據(jù)從磁盤里面拷貝出來的速度。不知道大家是否能夠理解這句話。舉個例子。我的服務器上使用的是8G 16G或者32G的FBD內(nèi)存,要復制的文件大小大概在4G左右 我從磁盤D復制到磁盤E大概需要2-3分鐘(D盤→內(nèi)存緩存然→E盤),但是如果我從內(nèi)存緩存里面把數(shù)據(jù)復制到D盤 那就只需要10秒鐘(內(nèi)存緩存→E盤)。從這點大家就可以看出傳輸速度上的差別很大的。雖然說我們看到時間顯示從緩存復制出來的文件只要10秒但是這個時間只是個理論上的時間,并不是實際復制上的時間。所以雖然在10秒鐘的時間我們可以看到屏幕上文件被復制完,實際上當屏幕顯示的10秒復制完成以后磁盤任然是在進行復制工作的。這個就是理論時間和實際工作時間之間存在著一種差異。 我現(xiàn)在說說我的具體操作過程:我分別用了這幾張主板做過測試.都是intel的主板:S5000VSA-4DIMM S3000AH S3200SH S5000VSA-8DIMM S5000VSA-SAS 這幾張都是屬于服務器的主板性能很不錯的 。3000系列的主板我上的是8G的內(nèi)存 5000系列的主板我上的是16G。首先做好系統(tǒng),要讓系統(tǒng)能夠完全識別內(nèi)存大小(有些系統(tǒng)是識別不完大容量的內(nèi)存的)。然后在系統(tǒng)里面單獨分個區(qū)出來 (分區(qū)最好大一些,比如100G)然后就可以拷貝數(shù)據(jù)了。我先拿了一個3個多G的文件進行拷貝,我先把文件放在C盤上 然后從C盤往D盤里面進行復制,第一次復制使用時間大概在3分鐘左右 然后我把已經(jīng)復制在D盤的文件刪除 然后在從C盤復制同一個文件到D盤,第二次復制只需要10秒鐘。在進行第二次復制的時候我邊復制邊進行操作,這時就會出現(xiàn)卡機的現(xiàn)象了。然后我又換了一個大概在7個多G的文件,進行相同的操作。這個時候內(nèi)存在8G的時候機器就不會出現(xiàn)卡機的現(xiàn)象,而16個G的機器還是會出現(xiàn)相同的現(xiàn)象。后來查了一些資料才知道 這種情況是由于內(nèi)存的緩存引起的原因。 最后我總結出了這種現(xiàn)象的規(guī)律,當你要拷貝的數(shù)據(jù)大余你機器內(nèi)存的可用數(shù)時,無論你怎么樣反復復制相同文件這種現(xiàn)象就不會出現(xiàn)。還有一種就是當你在才開機情況下的時候進行第一次復制也不會出現(xiàn)這樣現(xiàn)象。后來我給intel官方技術工程師和微軟技術工程師打電話詢是否有解決的辦法,但是都沒有給出一個解決方案。只有靠大家在以后的應用過程中能不能找出合理的解決辦法了。