題 為什麼清空磁盤空間會加速計算機?


我一直在看一堆視頻,現在了解計算機的工作原理。我更好地理解RAM是什麼,易失性和非易失性存儲器,以及交換過程。我也理解為什麼增加RAM可以加快計算機速度。

我不明白為什麼清理磁盤空間會加快計算機的運行速度。可以?為什麼呢?是否與搜索可用空間以保存事物有關?或者通過移動物體來製作足夠長的連續空間以節省一些東西?我應該免費留出多少硬盤上的空白空間?


188
2018-04-19 23:06


起源


它並沒有真正加速PC,它只減少了文件碎片的機會,使硬盤速度變慢。這是每個人都重複的最偉大的PC神話之一。要在PC上查找bootlenecks,請使用xperf / WPA進行跟踪。 - magicandre1981
FWIW吧 speeds up the experience of using a PC。 - edthethird
@ magicandre1981:有一個 小 真理的寶石。每個文件夾中的內容越多,文件遍歷越慢,這會影響使用文件路徑的任何內容,這就是......一切。但那是 小。 - Mooing Duck
@MooingDuck雖然為true,但這與文件夾中的文件數量有關,而與文件大小或驅動器上剩餘的空間量無關。該效果與剩餘磁盤空間無關。效果也限制在文件夾本身的範圍內,它不會“減慢”整個計算機的速度。一些文件系統,例如ext3 / 4,使用 哈希目錄樹 製作 查找 (包括子文件夾訪問)快速,從而進一步限制了效果的範圍,例如,只有當 清單 目錄的內容。 - Jason C
你在看什麼視頻? - Loko


答案:


在這裡,我偶然寫了一本書。先喝點咖啡。

為什麼清空磁盤空間會加速計算機?

它不,至少不是它自己。這是一個非常普遍的神話。這是一個常見的神話是因為填充你的硬盤往往與傳統的其他東西同時發生 可以 慢一點 你的電腦。 SSD性能確實傾向於 驅動器填滿時降級,但這是一個相對較新的問題,是SSD獨有的,對於臨時用戶來說並不是很明顯。通常,低可用磁盤空間只是一個 紅鯡魚

例如,像:

  • 文件碎片。文件碎片  一個問題††,但缺乏自由空間,而絕對是其中之一 許多 促成因素,不是 唯一的 原因。這裡有一些關鍵點:

    • 文件碎片的可能性是  與驅動器上剩餘的可用空間量有關。它們與驅動器上最大的連續自由空間塊的大小有關(例如自由空間的“空洞”),其中可用空間量 碰巧上限。它們還與文件系統如何處理文件分配有關(更多信息如下)。 考慮: 95%已滿的驅動器在一個連續塊中具有所有可用空間,有0%的可能性將新文件分段 ††† (並且對附加文件進行分段的可能性與可用空間無關)。一個5%已滿但驅動器均勻分佈在驅動器上的驅動器很可能存在碎片。

    • 請記住文件碎片 僅在訪問碎片文件時影響性能考慮: 你有一個很好的,碎片整理的驅動器,它仍然有很多免費的“漏洞”。常見的情況。一切都很順利。然而,最終,你得到了一個不再有大塊可用空間的地方。你下載了一部巨大的電影,該文件最終被嚴重破碎。 這不會減慢您的計算機速度。 所有以前都很好的應用程序文件都不會突然變得支離破碎。這可能會使 電影 需要更長時間才能加載(雖然典型的電影比特率與硬盤驅動器讀取速率相比非常低,因此很可能無法察覺),並且它可能會影響I / O限制性能 電影正在加載,但除此之外,沒有任何變化。

    • 雖然文件碎片肯定是一個問題,但通常情況下,操作系統和硬件級緩沖和緩存可以減輕這些影響。延遲寫入,預讀,類似的策略 預取 在Windows等中,所有這些都有助於減少碎片的影響。你通常不會 其實 在碎片變得嚴重之前經歷重大影響(我甚至冒昧地說,只要您的交換文件沒有碎片,您可能永遠不會注意到)。

  • 搜索索引是另一個例子。假設您已啟用自動索引,並且操作系統無法正常處理此問題。當您將越來越多的可索引內容保存到計算機(文檔等)時,索引可能需要更長時間,並且可能會開始影響計算機運行時的感知速度,包括I / O和CPU使用情況。這與可用空間無關,它與您擁有的可索引內容的數量有關。但是,用盡可用空間與存儲更多內容密切相關,因此會產生錯誤的連接。

  • 防毒軟件。與搜索索引示例類似。假設您已設置防病毒軟件來對驅動器進行後台掃描。隨著可掃描內容越來越多,搜索會佔用更多的I / O和CPU資源,可能會干擾您的工作。同樣,這與您擁有的可掃描內容的數量有關。更多內容通常等於更少的可用空間,但缺乏可用空間不是原因。

  • 已安裝的軟件。假設您安裝了許多在計算機啟動時加載的軟件,從而減慢了啟動時間。這種減速的發生是因為正在加載大量軟件。但是,安裝的軟件需要佔用硬盤空間。因此,硬盤驅動器自由空間在發生這種情況的同時減少,並且再次可以容易地進行錯誤連接。

  • 這些方面的許多其他例子,當合在一起時, 出現 將缺乏自由空間與低績效密切聯繫起來。

上面說明了這是一個常見的神話的另一個原因:雖然缺少可用空間不是導致速度減慢的直接原因,但有時會卸載各種應用程序,刪除索引或掃描內容等(但並非總是如此;超出此範圍回答) 增加 由於與剩餘可用空間量無關的原因再次表現。但這也自然地釋放了硬盤空間。因此,再次,可以在“更多自由空間”和“更快的計算機”之間建立明顯(但錯誤)的連接。

考慮: 如果由於安裝了大量軟件等而導致機器運行緩慢,並且您將硬盤驅動器克隆到更大的硬盤驅動器然後擴展分區以獲得更多可用空間,則機器不會神奇地加速。相同的軟件加載,相同的文件仍以相同的方式碎片化,相同的搜索索引器仍在運行,儘管有更多的可用空間,但沒有任何變化。

它是否與搜索存儲空間的地方有關?

不,不是的。這裡有兩件非常重要的事情值得注意:

  1. 你的硬盤驅動器不會四處尋找放置東西的地方。 你的硬盤是愚蠢的。沒什麼。它是一個很大的尋址存儲塊,它會盲目地將操作系統告訴它的內容放入其中並讀取所需的內容。現代驅動器具有復雜的緩存和緩衝機制,旨在根據我們隨著時間的推移獲得的經驗預測操作系統將要求的內容(某些驅動器甚至知道它們上面的文件系統),但實質上,想到你的駕駛只是一個很大的存儲磚,偶爾會有獎勵性能。

  2. 您的操作系統也不會搜索放置內容的位置。沒有“搜索”。 為解決這個問題付出了很多努力,因為它對文件系統性能至關重要。在您的驅動器上實際組織數據的方式取決於您的 文件系統。例如,FAT32(舊的DOS和Windows PC),NTFS(後來的Windows),HFS +(Mac),ext4(某些Linux)以及許多其他。甚至“文件”和“目錄”的概念也只是典型文件系統的產品 - 硬盤驅動器不知道被稱為“文件”的神秘野獸。詳細信息超出了本答案的範圍。但實際上,所有常見的文件系統都有跟踪驅動器上可用空間的位置的方法,以便在正常情況下(即健康狀況良好的文件系統)搜索可用空間是不必要的。例子:

    • NTFS 有個 主文件表,其中包括特殊文件 $Bitmap等等,以及大量描述驅動器的元數據。本質上,它會跟踪下一個空閒塊的位置,以便新文件可以直接寫入空閒塊,而無需每次都掃描驅動器。

    • 另一個例子, EXT4 有什麼叫做 “位圖分配器”,對ext2和ext3的改進基本上可以幫助它直接確定空閒塊的位置,而不是掃描空閒塊列表。 Ext4還支持“延遲分配”,即在將RAM寫入驅動器之前緩衝RAM中的數據,以便更好地決定將其放在何處以減少碎片。

    • 許多其他例子。

或者為了節省一些東西而用移動的東西來彌補足夠長的連續空間?

不會。這不會發生,至少不會發生我所知道的任何文件系統。文件最終碎片化。

人們稱之為“移動物體以構成足夠長的連續空間以保存物品”的過程 碎片整理。寫入文件時不會發生這種情況。運行磁盤碎片整理程序時會發生這種情況。至少在較新的Windows上,這會按計劃自動發生,但永遠不會通過編寫文件來觸發。

能夠 避免 像這樣移動事物是文件系統性能的關鍵,也就是碎片化發生的原因,以及為什麼碎片整理作為一個單獨的步驟存在。

我應該免費留出多少硬盤上的空白空間?

這是一個棘手的問題,這個答案已經變成了一本小書。

經驗法則:

  • 適用於所有類型的驅動器:

    • 最重要的是,留出足夠的空間 你有效地使用你的電腦。如果你的空間不足,你需要一個更大的驅動器。
    • 許多磁盤碎片整理工具需要最少的可用空間(我認為Windows需要15%的最壞情況)才能工作。他們使用這個可用空間臨時保存碎片文件,因為其他東西被重新排列。
    • 為其他OS功能留出空間。例如,如果您的計算機沒有大量物理RAM,並且您使用動態大小的頁面文件啟用了虛擬內存,則您需要為頁面文件的最大大小留出足夠的空間。或者如果你有一台筆記本電腦進入休眠模式,你將需要足夠的空間用於休眠狀態文件。像這樣的東西。
  • SSD專用:

    • 為了獲得最佳可靠性(並且在較小程度上,性能),SSD需要一些可用空間,這些空間不需要太多細節,而是用於在驅動器周圍傳播數據以避免不斷寫入相同的位置(將其磨損)。這種留下自由空間的概念被稱為 過度配置。這一點很重要, 但在許多SSD中,已經存在強制性過度配置空間。也就是說,驅動器通常比向操作系統報告的數量多了幾十GB。低端驅動器通常需要您手動離開 未分區 空間,但對於具有強制OP的驅動器, 你不需要留下任何自由空間。這裡需要注意的重要一點是 過度供應的空間通常只取自未分區的空間。因此,如果您的分區佔用整個驅動器並且在其上留下一些可用空間,則不會 總是 計數。很多時候,手動過度配置要求您將分區縮小到小於驅動器的大小。有關詳細信息,請查看SSD的用戶手冊。 TRIM和垃圾收集等也有影響,但這些都超出了本答案的範圍。

就個人而言,當我剩下大約20-25%的可用空間時,我通常會抓住更大的驅動器。這與性能無關,只是當我達到這一點時,我預計我很快就會耗盡數據空間,而且是時候更大的驅動器了。

比觀看可用空間更重要的是確保在適當的位置(而不是在SSD上)啟用計劃的碎片整理,這樣您就永遠無法達到足以影響您的程度。同樣重要的是避免誤導性調整併讓你的操作系統做其事情,例如 不要禁用Windows預取程序 (除SSD之外)等


還有一件值得一提的事情。這裡提到的另一個答案是SATA的半雙工模式可以防止同時讀寫。雖然如此,但這非常簡單,並且與這裡討論的性能問題大多無關。簡而言之,這意味著數據不能在兩個方向上傳輸 在電線上 同時。但是,SATA有一個 相當複雜的規格 涉及微小的最大塊大小(我認為,每個塊大約8kB,我認為),讀取和寫入操作隊列等,並且不排除在讀取正在進行時發生的緩衝區寫入,交錯操作等。

發生的任何阻塞都是由於競爭物理資源,通常通過大量緩存來緩解。 SATA的雙工模式幾乎完全無關緊要。


 “減速”是一個廣義的術語。在這裡,我用它來指代I / O綁定的東西(例如,如果你的計算機坐在那里處理數字,硬盤驅動器的內容沒有影響),或者CPU綁定並與切向相關的東西競爭高CPU使用率(例如,掃描大量文件的防病毒軟件)。

†† 固態硬盤  受到碎片影響的順序訪問速度通常比隨機訪問更快,儘管SSD沒有面臨與機械設備相同的限制(即便如此,缺乏碎片也不能保證順序訪問,由於磨損均衡等原因,如James Snell評論中的註釋)。但是,在幾乎所有常規使用場景中,這都不是問題。由於碎片碎片導致的性能差異通常可以忽略不計,例如加載應用程序,啟動計算機等。

††† 假設一個理智的文件系統沒有故意分段文件。


311
2018-04-20 10:08



非常全面的回答,謝謝。還要感謝提醒一些咖啡,非常感謝。 - Hashim


此外 Nathanial Meek的解釋 對於HDD,SSD有不同的場景。

SSD對分散數據不敏感,因為對SSD上任何位置的訪問時間都是相同的。典型的SSD訪問時間為0.1ms,而典型的HDD訪問時間為10到15ms。但是,它對已經寫在SSD上的數據很敏感

與可以覆蓋現有數據的傳統HDD不同,SSD需要完全空的空間來寫入數據。這是通過名為Trim和Garbage Collection的函數來完成的,該函數清除標記為已刪除的數據。垃圾收集最好與SSD上的一定數量的可用空間結合使用。通常建議使用15%到25%的可用空間。

如果垃圾收集無法及時完成它的作業,那麼每次寫入操作之前都會清空應該寫入數據的空間。這使每次寫入操作的時間加倍並降低整體性能。

這是 一篇優秀的文章這解釋了修剪和垃圾收集的功能


22
2018-04-19 23:37



請注意,SSD可以寫入部分填充的單元格,通過讀取部分數據並使用更多寫入來寫回,但它往往只在不可避免時才這樣做。這當然也很慢,並且通常表明驅動器是如此嚴重碎片,以至於它需要花費很多時間才能使它再次快速寫入。 - fluffy
這也取決於控制器。由於有太多的變化,我不想進入這個細節層次。 - whs
您所說的15-25%被稱為“過度配置”。某些驅動器已經為此分配了必需的空間(例如,1TB EVO 840有9%保留並且未向操作系統報告為免費),對於那些您不需要留下任何空閒空間的驅動器。我相信在某些情況下,過度配置的空間也必須是未分區的,只是在文件系統上留下空閒空間不會削減它,你需要實際留下未分配的空間。 - Jason C
過度配置是另一回事。這些是替換有缺陷的nands的待命。釋放塊(頁面)和磨損均衡需要15-25%。您可能需要閱讀此處了解詳細信息==> thessdreview.com/daily-news/latest-buzz/... - whs
@whs不是,你鏈接的文章並不暗示它是。 過度供應的空間 (參見該部分中引用的來源,或Google)是空閒塊池,此池中的塊用於垃圾收集/快速寫入,耗損均衡和缺陷單元的替換。至於更換有缺陷的細胞,它們都在同一個池中;一旦它充滿了有缺陷的細胞,你就會開始看到一致的錯誤。另見幻燈片12中 來自LSI的演講;整個事情值得經歷,它直接解決了這個話題。 - Jason C


傳統硬盤內部的某個位置是旋轉金屬盤片,其中各個位和字節實際上是編碼的。當數據被添加到盤片中時,磁盤控制器首先將其存儲在盤的外部。隨著新數據的添加,空間被用於最後移動到磁盤內部。

考慮到這一點,有兩種效果會導致磁盤性能隨著磁盤填滿而降低: 尋求時間 和 轉速

尋求時間

要訪問數據,傳統硬盤必須將讀/寫頭物理移動到正確的位置。這需要時間,稱為“尋找時間”。製造商公佈其磁盤的尋道時間,通常只需幾毫秒。這聽起來可能不是很多,但對於電腦來說這是永恆的。如果你必須讀或寫 批量 在完成任務(這是常見的)的不同磁盤位置中,那些尋求時間可以累加到明顯的延遲或延遲。

幾乎為空的驅動器將大部分數據放在相同位置或接近相同位置,通常位於讀/寫頭的靜止位置附近的外邊緣。這減少了跨磁盤搜索的需要,大大減少了搜索所花費的時間。幾乎已滿的驅動器不僅需要更頻繁地搜索磁盤並且需要更大/更長的搜索移動,而且可能難以將相關數據保存在同一扇區中,從而進一步增加磁盤搜索。這就是所謂的 支離破碎 數據。

釋放磁盤空間可以通過允許碎片整理服務不僅能夠更快地清理碎片文件,而且還可以將文件移動到磁盤外部,從而縮短搜索時間,從而縮短平均搜索時間。

轉速

硬盤以固定速率旋轉(對於您的計算機通常為5400rpm或7200rpm,在服務器上為10000rpm甚至15000rpm)。它還需要驅動器上的固定空間(或多或少)來存儲單個位。對於以固定旋轉速率旋轉的磁盤,磁盤外部的線性速率將比磁盤內部快。這意味著靠近磁盤外邊緣的位以比磁盤中心附近位更快的速率移過讀磁頭,因此讀/寫磁頭可以在磁盤外邊緣附近讀取或寫入更快的位。內。

幾乎為空的驅動器將花費大部分時間訪問光盤較快外邊緣附近的位。幾乎已滿的驅動器將花費更多時間訪問光盤較慢內部附近的位。

同樣,通過允許碎片整理服務將數據移向磁盤外部(其中讀取和寫入更快),清空磁盤空間可以使計算機更快。

有時光盤對於讀頭實際上移動得太快,並且這種效果會降低,因為外邊緣附近的扇區將交錯排列......按順序寫入以使讀取頭能夠跟上。但總的來說這是有道理

這兩種效果都歸結為磁盤控制器首先在磁盤的較快部分將數據分組在一起,而不是使用磁盤的較慢部分,直到它必須。隨著磁盤的填滿,磁盤速度較慢的部分會花費越來越多的時間。

效果也適用於新驅動器。在其他條件相同的情況下,新的1TB驅動器比新的200GB驅動器更快,因為1TB將位置靠得更近並且不會快速填充到內部軌道。然而,嘗試使用它來通知購買決策很少有用,因為製造商可能會使用多個盤片達到1TB尺寸,較小的盤片將1TB系統限制為200GB,軟件/磁盤控制器限制將1TB盤片限制為僅200GB空間,或出售帶有部分完成/有缺陷的盤片的驅動器,1TB驅動器有很多壞扇區作為200GB驅動器。

其他因素

值得注意的是,上述效果相當小。計算機硬件工程師花費大量時間研究如何最大限度地減少這些問題,硬盤緩衝區,Superfetch緩存和其他系統都可以最大限度地減少問題。在一個 健康 系統有充足的自由空間,你甚至不太可能注意到。此外,SSD具有完全不同的性能特徵。但是,效果確實存在,並且計算機在驅動器填滿時合法地變慢。在一個 不良 系統,磁盤空間非常低,這些影響可能會造成磁盤顛簸的情況,磁盤不斷在碎片數據之間來回搜索,釋放磁盤空間可以解決這個問題,從而帶來更顯著和顯著的改進。

此外,向磁盤添加數據意味著某些其他操作,如索引或AV掃描和碎片整理過程正在進行 更多 在後台工作,即使它以與之前相同或接近相同的速度進行。

最後,磁盤性能是 巨大 這些天整體PC性能的指標......比CPU速度更大的指標。即使磁盤吞吐量的小幅下降也常常等同於PC性能的實際感知總體下降。這尤其正確,因為硬盤性能並沒有真正跟上CPU和內存的改進步伐;目前,7200 RPM磁盤已成為台式機標準的十多年。傳統的旋轉磁盤比以往任何時候都更容易成為計算機的瓶頸。


12
2018-04-21 16:54



尋求時間增加不是由於可用空間低,而是數據組織的結果。如果您的數據已遍布驅動器,則釋放磁盤空間不會減少尋道時間。同樣,磁盤空間不足也不會突然增加已經組織良好的無關數據的查找時間。更重要的是,要非常謹慎地將這些中的任何一個與“慢速計算機”聯繫起來。例如,您不會因為瀏覽器的可執行文件未經分頁而在機械驅動器外部更快地瀏覽網頁,即使在最壞的情況下,您的MP3仍然可以流暢地播放。 - Jason C
@JasonC這些點中的每一個都是孤立的,但作為整個系統的一部分可以加起來真正的減速。這個說法就是一個例子:“Freeing disk space won't decrease seek times if your data is already all over the drive.“我不能自己提出異議,但我可以指出,碎片整理服務現在可以將這些數據移到驅動器的前端,現在這些東西 將 改善尋求時間。評論中的其他幾點有類似的計數器:磁盤空間不足不會增加對組織良好的數據的搜索,但它確實使數據保持組織的可能性降低。 - Joel Coehoorn
@JasonC但是,我根據你的評論在我的答案中添加了幾行,以便更直接地解決標題問題。 - Joel Coehoorn
當然;但我的要點是1)減速是某種後果的結果 其他儘管低可用空間可能是眾多因素中的一個,2)你必須非常小心這個主題,這是人們非常快速地抓住的那些之一。如果一個臨時用戶注意到他們的計算機很慢,那麼 現實 例如,碎片化(例如)是真正的原因是非常不尋常的。但後來他們在互聯網上閱讀了一堆東西,安裝了ccleaner,50個磁盤碎片整理程序,做了一堆糟糕的註冊表調整等。需要在這裡迎合群眾;明智的人不需要我們的答案。 - Jason C
這個答案暗示了短行程(人為地限制HD大小以保持數據在更快的外部區域)以及它的一些潛在問題。我也喜歡它,因為它並不否認在大多數情況下,對於大多數用戶來說,驅動器變得更加分散,因為它變得更加充實。雖然值得注意的是,自由空間不是 實際 問題是,在處理一般用戶體驗問題時忽略一般用戶體驗是毫無意義的。 - Smithers


所有其他答案都是 技術上 正確 - 但我總是發現這個簡單的例子最好地解釋了它。

對事物進行排序確實如此 簡單 如果你有很多空間......但是  如果你沒有空間...... 電腦也需要空間

這個經典的“15個謎題“是非常棘手/耗時的,因為你只有一個自由的正方形來重新調整平鋪,以便以正確的1-15順序獲得它們。

hard 15 puzzle

但是如果空間大得多,你可以在10秒內解決這個難題。

easy 15 puzzle

對於曾經玩過這個謎題的人來說......理解這個比喻似乎很自然。 ;-)


6
2018-04-22 17:24



但這與任何文件系統行為都不相似。它 有些 類似於碎片整理的一般過程,我想,雖然碎片整理,相對於這個拼圖類比,讓你從電路板上刪除數字,並在解決它時將它們重新放置在你想要的任何地方。 - Jason C
除了Jason上面的評論,我想指出顯而易見的:這個答案與此有關 排序 (碎片整理),但不解釋原因 訪問 在第二種情況下,特定的隨機區塊(例如,“3”區塊)將比在第一種情況下更快。 - α CVn
因為你不是只訪問“3”。你正在訪問“1-15”。雖然我承認在這個例子中並不是很清楚,但我理解它。可能值得特別注意的是,“這個謎題類似於單個碎片文件。”很棒的答案,使事情在精神上可以訪問! - Smithers
澄清:這裡類比的主要問題是,在實際的謎題中,你只能將瓷磚移動到相鄰的空白區域。也就是說,在一個微小的例子中,只有6或13可以移動到空白區域。這就是讓這個難題具有挑戰性的原因;這是平鋪遊戲的重點。但是,在對硬盤進行碎片整理時,您可以移動,例如4到空的空間,1到它的正確位置,依此類推,很容易解決, 與具有大量空間的情況一樣多的移動。所以這個類比真的打破了,因為拼圖的關鍵不適用:沒有文件系統以這種方式工作。 - Jason C
'因為你不是只訪問“3”。你正在訪問“1-15” - 這是胡說八道。答案並不能解釋為什麼在第二種情況下訪問特定隨機區塊的速度比在第一種情況下更快,因為答案是完全錯誤的。這種拼圖不僅限制了碎片整理的方式,而且“棘手/耗時”的碎片整理與系統性能無關。 - Jim Balter


在旋轉的機械硬盤驅動器上具有非常小的磁盤空間的計算機在相當長的時間內,隨著文件碎片的增長,通常會變慢。碎片增加意味著讀取速度慢 - 非常 在極端情況下很慢。

一旦計算機處於此狀態,釋放磁盤空間實際上不會解決問題。您還需要對磁盤進行碎片整理。在計算機處於此狀態之前,釋放空間不會加快速度;它只會減少碎片成為問題的機率。

這僅適用於具有旋轉機械硬盤驅動器的計算機,因為碎片對SSD的讀取速度的影響可以忽略不計。


5
2018-04-20 13:46



一個好的,乾淨的,簡單的答案,也解決了主要的核心問題。 - Smithers


閃存磁盤在完全或碎片化時肯定會變慢,但減速機制與物理硬盤驅動器不同。典型的閃存芯片將被分成若干個擦除塊,每個擦除塊由大量(數百個,如果不是數千個)寫入頁面組成,並將支持三個主要操作:

  1. 閱讀Flash頁面。
  2. 寫入以前空白的Flash頁面。
  3. 擦除塊上的所有閃存頁面。

雖然理論上可以讓每次寫入閃存驅動器從塊讀取所有頁面,更改緩衝區中的一個,擦除塊,然後將緩衝區寫回閃存設備,這樣的方法將非常慢;如果在擦除開始和寫回完成之間斷電,則也可能導致數據丟失。此外,磁盤的頻繁寫入部分會非常快速地磨損。例如,如果FAT的前128個扇區存儲在一個閃存塊中,那麼在對所有這些扇區的寫入總數達到大約100,000之後,驅動器將會死亡,這不是很多,特別是考慮到128個扇區將持有大約16,384個FAT條目。

因為上述方法可能會起作用,驅動器將使其識別一些空白頁,在那裡寫入數據,並以某種方式記錄有問題的邏輯扇區存儲在該位置的事實。只要有足夠的空白頁面,此操作就可以快速進行。但是,如果空白頁面供不應求,則驅動器可能需要找到包含相對較少“實時”頁面的塊,將這些塊中的任何實時頁面移動到剩餘的空白頁面中,並將舊副本標記為“死”;完成後,驅動器將能夠擦除僅包含“死”頁面的塊。

如果一個驅動器只有半滿,那麼肯定會有至少一個塊最多半滿的實時頁面(並且很可能會有一些塊包含很少或沒有)。如果每個塊保持256頁並且最小塊滿足64個實時頁面(中等不良情況),那麼對於每192個請求的扇區寫入,驅動器將必須執行64個額外的扇區復制和一個塊擦除(因此平均成本)每個扇區寫入將是大約1.34頁寫入和0.005塊擦除)。即使在最壞的情況下,每128個扇區寫入也需要128個額外的扇區復制和塊擦除(每次寫入2頁寫入和0.01塊擦除的平均成本)

如果驅動器已滿99%,並且最不完整的塊具有248/256個實時頁面,那麼每8個扇區寫入將需要248個額外的頁面寫入和塊擦除,因此產生每次寫入32頁寫入和0.125塊的成本擦除 - 非常嚴重的放緩。

根據驅動器的“額外”存儲量,它可能不會讓事情變得非常糟糕。儘管如此,即使在驅動器滿75%的情況下,最壞情況下的性能可能比最差情況下的性能高出50%。


4
2018-04-20 16:10





你幾乎釘了它。您可以將SATA HDD視為半雙工通信介質(也就是說,它一次只能接受或傳輸數據。不是兩者都有。)因此當驅動器長時間保持尋找空閒位置時到,它無法讀取任何數據給你。根據經驗,出於這個原因,您不應該將驅動器裝載超過80%的容量。它越飽滿越高,分片文件的可能性越大,導致驅動器在讀取請求期間佔用(從而阻止寫入請求)。

您可以採取一些措施來解決這些問題:

  • 減少存儲的數據量並定期對驅動器進行碎片整理。
  • 切換到基於閃存的存儲。
  • 將批量數據保存在與操作系統不同的驅動器上。
  • 等等等等...

3
2018-04-19 23:12



當使用閃存時,驅動器幾乎可以瞬間讀取或寫入(同樣,不是兩者)(9ms是硬盤上非常標準的尋道時間,而SSD通常在微微和毫秒秒內具有“尋道時間”)磁盤上的位置。 en.wikipedia.org/wiki/... - Nathanial Meek
繼續poing 2:這就是例如該 $Bitmap 文件適用於NTFS或 位圖分配器 在ext4。即這個答案傳播了一些嚴重的錯誤信息。 3.有大量的讀寫緩沖和緩存正在進行,這使得大部分都沒有實際意義。這個答案在某種程度上描述了碎片化的影響,即便限於較舊的文件系統,它肯定不是準確的自由空間。釋放磁盤空間不會加速計算機。 - Jason C
@JasonC,你應該把你的評論變成答案。 - Celos
這個 沒有發生: “因此,當驅動器長時間保持尋找要寫入的空閒位置時,它無法讀取任何數據給您” - 它只是沒有。這不是文件系統的工作方式。請編輯您的答案,以阻止傳播錯誤信息。 - RomanSt
@NathanialMeek你有點混合圖層。 :) SATA的半雙工模式意味著它只能傳輸數據 在電線上 在一個方向。在SATA指定的操作隊列中,以小塊(稱為FIS)完成更高級別的讀寫操作。它們可以是異步的,快速讀寫可以通過板上高速緩存完成,也可以通過DMA直接連接到系統內存。 SATA控制器還可以自由重新排序命令以優化效率。要點:物理操作完成時線路不會保持忙碌,而SATA的半雙工模式沒有您認為的那種效果。 - Jason C


遵循簡短而甜蜜的方法,我過於簡單的回答(嚴格限於你的主要困惑)是:

只要你的

  1. 操作系統有足夠的空間(對於最壞的情況)空間來履行其職責,如分頁/交換/等。
  2. 其他軟件也有足夠的空間來滿足各自的需求。
  3. 硬盤已碎片整理。

那麼你不能分辨80%空磁盤和30%空磁盤的性能差異,除了存儲越來越多的新數據之外別無其他。

任何需要更多存儲空間的東西都會導致性能不佳,因為現在可用空間可能不足。

當然,通過工具清潔磁盤的方法很好:

  1. 應定期清理臨時文件以獲得寶貴的磁盤空間。
  2. 舊日誌文件只是浪費空間。
  3. 已安裝/未安裝的軟件的剩餘部分非常討厭。
  4. 如果您重視在線隱私,則必須清除Cookie。
  5. 無效的快捷方式等

所有這些(以及更多)原因導致性能較差,因為當找到合適的位組時,所有這些都會使操作系統混亂。


3
2018-04-24 19:11



一個不錯的總結,但不太確定“BUT”部分。特別是:3)通常沒有明顯的性能影響,儘管常見的怪胎4)Cookie本身並不存在問題,無論意見如何,隱私與性能或硬盤空間無關,5)破損的快捷方式很難看但一般否則無關緊要。這些都不會真正“混淆”任何常見操作系統。對你所遵循的“提示”和“調整”要非常小心。同時要警惕不必要的清理工具,特別是註冊表清潔工通常會面臨零利益的風險。 - Jason C


對旋轉驅動器的一個影響我還沒有提到:磁盤的不同部分的訪問速度和數據傳輸速度是不同的。

磁盤以固定速度旋轉。磁盤外部的磁道較長,因此每個磁道可以容納比內部磁道更多的數據。如果您的驅動器可以從最外面的磁道讀取100 MB /秒,則最裡面磁道的速度將小於50 MB /秒。

同時,磁盤外部磁道上1 GB數據之間的磁道數少於最內層磁道上1 GB數據之間的磁道數。因此,平均而言,對於存儲在外部的數據,將需要比最內側軌道上的數據更少的頭部移動。

如果可能,操作系統將嘗試使用最外面的軌道。當然,如果磁盤已滿,則無法進行。刪除數據將使傳輸速度更高的空間可用,並使運行更快。出於同樣的原因,如果你想要速度(只要它是經濟實惠的),你應該購買比所需更大的旋轉硬盤,因為你最終只會使用驅動器中最快的部分。


2
2018-04-20 14:10



添加: en.wikipedia.org/wiki/Zone_bit_recording,詳細介紹了這一點。值得注意的是:現有數據不會被移動。這可能會影響新數據的存儲(取決於驅動器上的位置,而不是直接在可用空間上),但它不會“減慢”在內部寫入之前快樂訪問的現有文件。 Fwiw我在亞馬遜上發現的最便宜的1TB 7200RPM 3.5英寸驅動器的用戶基準平均讀取速率為144MB / s;即使考慮到內部和外部磁道的差異,這在隨意使用時也可能不是瓶頸。 - Jason C
@JasonC順序吞吐量方面的I / O性能在實踐中幾乎從不關注;對於幾乎任何個人用戶來說,即使是慢速4900轉的驅動器也足夠快。在大多數情況下,每秒讀/寫操作的I / O性能將成為殺死性能的因素;如果您願意的話,請在多用戶系統中詢問您當地最喜歡的系統管理員有關旋轉存儲IOPS的信息。這就是為什麼現在幾乎沒有人為多用戶系統部署旋轉存儲的重要原因;你甚至可以永遠不會接近固態硬盤的IOPS。 - α CVn