ที่นี่ฉันเขียนหนังสือโดยไม่ตั้งใจ รับกาแฟก่อน
เหตุใดการล้างพื้นที่ว่างในดิสก์จึงเพิ่มความเร็วคอมพิวเตอร์
ไม่อย่างน้อยก็ไม่ได้ทำเอง นี่เป็นตำนานที่พบบ่อยมาก เหตุผลที่มันเป็นตำนานที่พบบ่อยเป็นเพราะการเติมขึ้นฮาร์ดไดรฟ์ของคุณมักจะเกิดขึ้นในเวลาเดียวกับสิ่งอื่น ๆ ที่แบบดั้งเดิมอาจชะลอตัวลง†คอมพิวเตอร์ของคุณ ประสิทธิภาพของ SSD มีแนวโน้มที่จะลดลงเมื่อไดรฟ์เต็มแต่นี่เป็นปัญหาใหม่ที่ไม่เหมือนใครสำหรับ SSD และไม่เห็นได้ชัดเจนสำหรับผู้ใช้ทั่วไป โดยทั่วไปพื้นที่ว่างในดิสก์ต่ำเป็นเพียงปลาชนิดหนึ่งสีแดง
ตัวอย่างเช่น:
การกระจายตัวของไฟล์ การแตกแฟรกเมนต์ของไฟล์เป็นปัญหาspace แต่การขาดพื้นที่ว่างในขณะที่ปัจจัยหนึ่งในหลาย ๆปัจจัยไม่ได้เป็นสาเหตุของมันเท่านั้น บางประเด็นสำคัญที่นี่:
โอกาสของไฟล์ที่มีการแตกแฟรกเมนต์ไม่เกี่ยวข้องกับจำนวนพื้นที่ว่างที่เหลืออยู่ในไดรฟ์ พวกเขามีความสัมพันธ์กับขนาดของบล็อกติดกันที่ใหญ่ที่สุดของพื้นที่ว่างในไดรฟ์ (เช่น "หลุม" ของพื้นที่ว่าง) ซึ่งปริมาณของพื้นที่ว่างที่เกิดขึ้นจะนำขอบเขตบน นอกจากนี้ยังเกี่ยวข้องกับวิธีที่ระบบไฟล์จัดการกับการจัดสรรไฟล์ (ด้านล่าง) ข้อควรพิจารณา:ไดรฟ์ที่เต็ม 95% พร้อมพื้นที่ว่างทั้งหมดในหนึ่งบล็อกต่อเนื่องกันมีโอกาส 0% ในการแยกแฟรกเมนต์ไฟล์ใหม่††† (และโอกาสในการแยกไฟล์เป็นไฟล์ที่ผนวกจะขึ้นอยู่กับพื้นที่ว่าง) ไดรฟ์ที่เต็ม 5% แต่มีการกระจายข้อมูลทั่วไดรฟ์เท่า ๆ กันมีโอกาสสูงในการกระจายตัว
โปรดทราบว่าการแตกแฟรกเมนต์ของไฟล์มีผลเฉพาะกับประสิทธิภาพเมื่อเข้าถึงไฟล์ที่แตกแฟรกเมนต์เท่านั้น ลองพิจารณา:คุณมีไดรฟ์ที่ดีและดีแฟรกเมนต์ที่ยังมี "รู" ฟรีอยู่มากมาย สถานการณ์ทั่วไป ทุกอย่างทำงานได้อย่างราบรื่น อย่างไรก็ตามในที่สุดคุณก็มาถึงจุดที่ไม่มีพื้นที่ว่างเหลืออีกต่อไป คุณดาวน์โหลดภาพยนตร์ขนาดใหญ่ไฟล์จะถูกแยกส่วนอย่างรุนแรง สิ่งนี้จะไม่ทำให้คอมพิวเตอร์ของคุณช้าลง ไฟล์แอปพลิเคชันทั้งหมดของคุณและไฟล์ที่เคยใช้งานได้ก่อนหน้านี้จะไม่แยกส่วนทันที สิ่งนี้อาจทำให้ภาพยนตร์ใช้เวลาโหลดนานกว่า (แม้ว่าอัตราบิตภาพยนตร์ทั่วไปจะต่ำมากเมื่อเทียบกับอัตราการอ่านฮาร์ดไดรฟ์ซึ่งเป็นไปได้ว่าจะไม่มีใครสังเกตเห็นได้มากที่สุด) และอาจส่งผลต่อประสิทธิภาพของ I / O-bound ในขณะที่ภาพยนตร์กำลังโหลด ไม่มีอะไรเปลี่ยนแปลง
ในขณะที่การแตกไฟล์เป็นปัญหาอย่างแน่นอน แต่บ่อยครั้งที่เอฟเฟกต์ถูกลดทอนลงโดยระบบปฏิบัติการและการบัฟเฟอร์และแคชระดับฮาร์ดแวร์ การเขียนล่าช้าการอ่านล่วงหน้ากลยุทธ์เช่นprefetcherใน Windows ฯลฯ จะช่วยลดผลกระทบของการแตกแฟรกเมนต์ คุณมักไม่จริงได้สัมผัสกับผลกระทบอย่างมีนัยสำคัญจนการกระจายตัวกลายเป็นความรุนแรง (ฉันยังต้องการร่วมกล่าวว่าตราบใดที่แลกเปลี่ยนไฟล์ของคุณไม่ได้แยกส่วนคุณอาจจะไม่เคยทราบ)
การจัดทำดัชนีการค้นหาเป็นอีกตัวอย่างหนึ่ง สมมติว่าคุณเปิดการทำดัชนีอัตโนมัติและระบบปฏิบัติการที่ไม่จัดการสิ่งนี้อย่างสง่างาม ในขณะที่คุณบันทึกเนื้อหาที่จัดทำดัชนีได้มากขึ้นในคอมพิวเตอร์ของคุณ (เอกสารและอื่น ๆ ) การทำดัชนีอาจใช้เวลานานขึ้นและนานขึ้นและอาจเริ่มมีผลต่อความเร็วที่รับรู้ของคอมพิวเตอร์ของคุณขณะที่กำลังทำงานทั้งในการใช้ I / O และ CPU . สิ่งนี้ไม่เกี่ยวข้องกับพื้นที่ว่าง แต่เกี่ยวข้องกับปริมาณเนื้อหาที่คุณจัดทำดัชนีได้ อย่างไรก็ตามการใช้พื้นที่ว่างหมดไปควบคู่ไปกับการจัดเก็บเนื้อหาเพิ่มเติมดังนั้นจึงมีการเชื่อมต่อที่ผิดพลาด
โปรแกรมแอนตี้ไวรัส. คล้ายกับตัวอย่างการจัดทำดัชนีการค้นหา สมมติว่าคุณมีซอฟต์แวร์ป้องกันไวรัสตั้งค่าให้ทำการสแกนพื้นหลังของไดรฟ์ของคุณ เมื่อคุณมีเนื้อหาที่สแกนได้มากขึ้นการค้นหาใช้ทรัพยากร I / O และ CPU มากขึ้นซึ่งอาจรบกวนการทำงานของคุณ อีกครั้งนี้เกี่ยวข้องกับปริมาณเนื้อหาที่สแกนได้ที่คุณมี เนื้อหาเพิ่มเติมมักเท่ากับพื้นที่ว่างที่น้อยลง แต่การขาดพื้นที่ว่างไม่ใช่สาเหตุ
ซอฟต์แวร์ที่ติดตั้ง สมมติว่าคุณมีซอฟต์แวร์จำนวนมากติดตั้งอยู่ซึ่งจะโหลดเมื่อคอมพิวเตอร์ของคุณบู๊ตดังนั้นจึงทำให้เวลาเริ่มต้นทำงานช้าลง สิ่งนี้ช้าลงเกิดขึ้นเนื่องจากมีการโหลดซอฟต์แวร์จำนวนมาก อย่างไรก็ตามซอฟต์แวร์ที่ติดตั้งใช้พื้นที่ฮาร์ดไดรฟ์ ดังนั้นพื้นที่ว่างบนฮาร์ดไดรฟ์จึงลดลงในเวลาเดียวกับที่เกิดเหตุการณ์นี้ขึ้นและสามารถทำการเชื่อมต่อที่ผิดพลาดได้อีกครั้ง
- ตัวอย่างอื่น ๆ อีกมากมายตามแนวเหล่านั้นซึ่งเมื่อนำมารวมกันดูเหมือนว่าจะเชื่อมโยงการขาดพื้นที่ว่างอย่างใกล้ชิดกับประสิทธิภาพที่ต่ำลง
ข้างต้นแสดงให้เห็นถึงเหตุผลอื่นที่ว่านี่เป็นตำนานทั่วไป: ในขณะที่การขาดพื้นที่ว่างไม่ได้เป็นสาเหตุโดยตรงของการชะลอตัวลงการถอนการติดตั้งแอปพลิเคชันต่าง ๆ การลบเนื้อหาที่จัดทำดัชนีหรือสแกน ฯลฯ บางครั้ง (แต่ไม่เสมอไป; คำตอบ) เพิ่มประสิทธิภาพอีกครั้งด้วยเหตุผลที่ไม่เกี่ยวข้องกับจำนวนพื้นที่ว่างที่เหลืออยู่ แต่นี่ก็ทำให้พื้นที่ฮาร์ดไดรฟ์เป็นอิสระ ดังนั้นอีกครั้งการเชื่อมต่อที่ชัดเจน (แต่เท็จ) ระหว่าง "พื้นที่ว่างเพิ่มเติม" และ "คอมพิวเตอร์ที่เร็วขึ้น" สามารถทำได้
ลองพิจารณา:หากคุณมีเครื่องจักรที่ทำงานช้าเนื่องจากมีซอฟต์แวร์ที่ติดตั้งอยู่จำนวนมากและคุณโคลนฮาร์ดไดรฟ์ของคุณไปยังฮาร์ดไดรฟ์ขนาดใหญ่จากนั้นขยายพาร์ติชันของคุณเพื่อให้มีพื้นที่ว่างมากขึ้น ขึ้น โหลดซอฟต์แวร์เดียวกันไฟล์เดิมยังคงกระจัดกระจายในวิธีเดียวกันตัวค้นหาดัชนีตัวเดิมยังคงทำงานไม่มีอะไรเปลี่ยนแปลงแม้ว่าจะมีพื้นที่ว่างมากขึ้น
มันเกี่ยวข้องกับการค้นหาพื้นที่หน่วยความจำที่จะบันทึกสิ่งต่าง ๆ หรือไม่?
ไม่มันไม่ใช่ มีสองสิ่งที่สำคัญมากที่ควรสังเกตคือ
ฮาร์ดไดรฟ์ของคุณไม่ค้นหาเพื่อค้นหาสถานที่ที่จะนำสิ่งต่างๆ ฮาร์ดไดรฟ์ของคุณโง่ ไม่เป็นไร. มันเป็นบล็อกขนาดใหญ่ของที่เก็บข้อมูลที่มีการสุ่มสี่สุ่มห้าซึ่งทำให้สิ่งต่าง ๆ ที่ระบบปฏิบัติการของคุณบอกและอ่านสิ่งที่ถูกถาม ไดรฟ์สมัยใหม่มีกลไกการแคชและการบัฟเฟอร์ที่ซับซ้อนซึ่งออกแบบมาเพื่อคาดการณ์สิ่งที่ระบบปฏิบัติการจะขอตามประสบการณ์ที่เราได้รับเมื่อเวลาผ่านไป ไดรฟ์ของคุณเป็นเพียงแหล่งเก็บข้อมูลขนาดใหญ่ที่มีคุณสมบัติโบนัสเป็นครั้งคราว
ระบบปฏิบัติการของคุณไม่ค้นหาสถานที่ที่จะนำสิ่งของมาด้วย ไม่มี "การค้นหา" มีความพยายามอย่างมากในการแก้ไขปัญหานี้เนื่องจากมีความสำคัญต่อประสิทธิภาพของระบบไฟล์ วิธีการจัดระเบียบข้อมูลจริงบนไดรฟ์ของคุณจะถูกกำหนดโดยระบบไฟล์ของคุณ. ตัวอย่างเช่น FAT32 (พีซี DOS และ Windows เก่า), NTFS (Windows รุ่นใหม่กว่า), HFS + (Mac), ext4 (Linux บางตัว) และอื่น ๆ อีกมากมาย แม้แต่แนวคิดของ "ไฟล์" และ "ไดเรกทอรี" ก็เป็นเพียงผลิตภัณฑ์ของระบบไฟล์ทั่วไป - ฮาร์ดไดรฟ์ไม่ทราบเกี่ยวกับสัตว์ลึกลับที่เรียกว่า "ไฟล์" รายละเอียดอยู่นอกขอบเขตของคำตอบนี้ แต่โดยพื้นฐานแล้วระบบไฟล์ทั่วไปทั้งหมดมีวิธีการติดตามว่าพื้นที่ว่างที่มีอยู่บนไดรฟ์เพื่อให้การค้นหาพื้นที่ว่างอยู่ภายใต้สถานการณ์ปกติ (เช่นระบบไฟล์ที่มีสุขภาพดี) ไม่จำเป็น ตัวอย่าง:
NTFSมีตารางไฟล์ต้นแบบซึ่งรวมถึงไฟล์พิเศษ$Bitmap
ฯลฯ และข้อมูลเมตามากมายที่อธิบายถึงไดรฟ์ โดยพื้นฐานแล้วมันจะคอยติดตามตำแหน่งของฟรีบล็อกถัดไปเพื่อให้สามารถเขียนไฟล์ใหม่ไปยังบล็อกฟรีได้โดยตรงโดยไม่ต้องสแกนไดรฟ์ทุกครั้ง
อีกตัวอย่างหนึ่งext4มีสิ่งที่เรียกว่า"ตัวจัดสรรบิตแมป"การปรับปรุงต่อ ext2 และ ext3 ที่โดยทั่วไปแล้วช่วยให้ทราบได้โดยตรงว่าบล็อกว่างอยู่ที่ไหนแทนที่จะสแกนรายการบล็อกว่าง Ext4 ยังรองรับ "การจัดสรรที่ล่าช้า" นั่นคือการบัฟเฟอร์ข้อมูลใน RAM โดยระบบปฏิบัติการก่อนที่จะเขียนลงในไดรฟ์เพื่อการตัดสินใจที่ดีขึ้นเกี่ยวกับตำแหน่งที่จะนำไปใช้เพื่อลดการกระจายตัว
ตัวอย่างอื่น ๆ อีกมากมาย
หรือมีการเคลื่อนย้ายสิ่งต่าง ๆ เพื่อสร้างพื้นที่ต่อเนื่องนานพอที่จะบันทึกบางสิ่ง
ไม่สิ่งนี้ไม่ได้เกิดขึ้นอย่างน้อยก็ไม่มีในระบบไฟล์ใด ๆ ที่ฉันทราบ ไฟล์จบลงด้วยการแยกส่วน
กระบวนการของการ "ย้ายสิ่งต่าง ๆ รอบเพื่อให้ได้พื้นที่ที่ต่อเนื่องกันนานพอสำหรับการบันทึกบางสิ่งบางอย่าง" ที่เรียกว่าการจัดเรียงข้อมูล สิ่งนี้จะไม่เกิดขึ้นเมื่อเขียนไฟล์ สิ่งนี้จะเกิดขึ้นเมื่อคุณเรียกใช้ตัวจัดเรียงข้อมูลบนดิสก์ อย่างน้อยใน Windows รุ่นใหม่สิ่งนี้จะเกิดขึ้นโดยอัตโนมัติตามกำหนดเวลา แต่จะไม่มีการทริกเกอร์โดยการเขียนไฟล์
ความสามารถในการหลีกเลี่ยงการเคลื่อนย้ายสิ่งต่าง ๆ ในลักษณะนี้เป็นกุญแจสำคัญในประสิทธิภาพของระบบไฟล์และเป็นสาเหตุที่ทำให้การแตกแฟรกเมนต์เกิดขึ้นและทำไมการจัดเรียงข้อมูลจึงเป็นขั้นตอนแยกต่างหาก
ฉันควรปล่อยให้มีที่ว่างเหลืออยู่บนฮาร์ดดิสก์เท่าไหร่
นี่เป็นคำถามที่ตอบยากกว่าและคำตอบนี้กลายเป็นหนังสือเล่มเล็ก ๆ ไปแล้ว
กฎของหัวแม่มือ:
สำหรับไดรฟ์ทุกประเภท:
- สิ่งสำคัญที่สุดคือปล่อยให้พื้นที่ว่างพอสำหรับคุณที่จะใช้เครื่องคอมพิวเตอร์ของคุณได้อย่างมีประสิทธิภาพ หากคุณใช้พื้นที่ไม่เพียงพอในการทำงานคุณจะต้องการไดรฟ์ที่ใหญ่กว่า
- เครื่องมือจัดเรียงข้อมูลบนดิสก์จำนวนมากต้องการพื้นที่ว่างขั้นต่ำ (ฉันคิดว่าเครื่องมือที่มี Windows ต้องใช้กล่องเล็กสุด 15%) ในการทำงานพวกเขาใช้พื้นที่ว่างนี้เพื่อเก็บไฟล์ที่มีการแยกส่วนชั่วคราว
- เว้นที่ว่างไว้สำหรับฟังก์ชั่นระบบปฏิบัติการอื่น ๆ ตัวอย่างเช่นหากเครื่องของคุณไม่มี RAM จริงและคุณมีหน่วยความจำเสมือนที่เปิดใช้งานด้วยไฟล์หน้าขนาดแบบไดนามิกคุณจะต้องมีพื้นที่เพียงพอสำหรับขนาดสูงสุดของไฟล์หน้า หรือถ้าคุณมีแล็ปท็อปที่คุณเข้าสู่โหมดไฮเบอร์เนตคุณจะต้องมีพื้นที่ว่างเพียงพอสำหรับไฟล์สถานะไฮเบอร์เนต สิ่งที่ต้องการ
SSD เฉพาะ:
- เพื่อความน่าเชื่อถือสูงสุด (และในระดับที่ต่ำกว่าประสิทธิภาพ) SSD ต้องการพื้นที่ว่างบางส่วนซึ่งโดยไม่ต้องลงรายละเอียดมากเกินไปพวกเขาใช้สำหรับการกระจายข้อมูลรอบ ๆ ไดรฟ์เพื่อหลีกเลี่ยงการเขียนไปยังสถานที่เดิมอย่างสม่ำเสมอ แนวคิดของการออกจากพื้นที่ว่างนี้จะเรียกว่ามากกว่าการจัดเตรียม มันเป็นสิ่งสำคัญแต่ใน SSDs หลายบังคับพื้นที่มากกว่าการจัดเตรียมอยู่แล้ว นั่นคือไดรฟ์มักมี GB มากกว่าสองสามโหลมากกว่าที่รายงานไปยังระบบปฏิบัติการ ไดรฟ์สิ้นลงมักต้องการให้คุณออกด้วยตนเองunpartitionedพื้นที่ แต่สำหรับไดรฟ์ที่มี OP บังคับคุณไม่จำเป็นต้องออกจากพื้นที่ว่างใด ๆ สิ่งสำคัญที่ควรทราบที่นี่คือพื้นที่ที่ได้รับการจัดสรรมากเกินไปมักจะนำมาจากพื้นที่ที่ไม่ได้แบ่งพาร์ติชันเท่านั้น ดังนั้นหากพาร์ติชันของคุณใช้พื้นที่ทั้งหมดของคุณและคุณปล่อยให้มีพื้นที่ว่างเหลืออยู่นั่นไม่นับรวมอยู่เสมอ การจัดสรรพื้นที่ด้วยตนเองหลายครั้งคุณต้องลดขนาดพาร์ติชันให้เล็กลงกว่าขนาดของไดรฟ์ ตรวจสอบคู่มือผู้ใช้ SSD ของคุณสำหรับรายละเอียด TRIM และการรวบรวมขยะและมีผลเช่นกัน แต่อยู่นอกขอบเขตของคำตอบนี้
โดยส่วนตัวแล้วฉันมักจะคว้าไดรฟ์ที่ใหญ่กว่าเมื่อฉันมีพื้นที่ว่างเหลืออีกประมาณ 20-25% นี่ไม่เกี่ยวข้องกับประสิทธิภาพ แต่เมื่อฉันไปถึงจุดนั้นฉันคาดว่าฉันอาจจะมีพื้นที่ว่างสำหรับข้อมูลในไม่ช้าและถึงเวลาที่จะได้รับไดรฟ์ที่ใหญ่กว่า
สำคัญกว่าการดูพื้นที่ว่างทำให้แน่ใจว่ามีการเปิดใช้งานการจัดเรียงข้อมูลตามที่กำหนดไว้อย่างเหมาะสม (ไม่ใช่ใน SSD) ดังนั้นคุณจะไม่เคยไปถึงจุดที่มันจะน่ากลัวพอที่จะส่งผลกระทบต่อคุณ ความสำคัญเท่าเทียมกันคือการหลีกเลี่ยงการปรับแต่งที่เข้าใจผิดและปล่อยให้ระบบปฏิบัติการของคุณทำสิ่งนั้นเช่นอย่าปิดใช้งาน prefetcher ของ Windows ( ยกเว้น SSD ) เป็นต้น
มีสิ่งสุดท้ายที่ควรพูดถึง หนึ่งในคำตอบอื่น ๆ ที่นี่กล่าวถึงว่าโหมด half-duplex ของ SATA ช่วยป้องกันการอ่านและการเขียนในเวลาเดียวกัน ในขณะที่เป็นจริงสิ่งนี้มีความซับซ้อนอย่างมากและส่วนใหญ่ไม่เกี่ยวข้องกับปัญหาด้านประสิทธิภาพที่กล่าวถึงที่นี่ สิ่งนี้หมายความว่าเพียงแค่ว่าข้อมูลไม่สามารถถ่ายโอนทั้งสองทิศทางบนเส้นลวดในเวลาเดียวกัน อย่างไรก็ตาม SATA มีสเปคที่ค่อนข้างซับซ้อนที่เกี่ยวข้องกับขนาดบล็อกสูงสุดเล็ก ๆ (ประมาณ 8kB ต่อบล็อกบนเส้นลวดฉันคิดว่า) คิวการอ่านและเขียน ฯลฯ และไม่ขัดขวางการเขียนลงในบัฟเฟอร์ที่เกิดขึ้นในขณะที่กำลังอ่านอยู่ การดำเนินงาน ฯลฯ
การบล็อกใด ๆ ที่เกิดขึ้นอาจเนื่องมาจากการแข่งขันเพื่อทรัพยากรทางกายภาพมักจะบรรเทาลงด้วยแคชจำนวนมาก โหมดดูเพล็กซ์ของ SATA นั้นแทบไม่เกี่ยวข้องเลย
† "ช้าลง" เป็นคำที่กว้าง ที่นี่ฉันใช้เพื่ออ้างถึงสิ่งต่าง ๆ ที่เป็น I / O-bound (เช่นหากคอมพิวเตอร์ของคุณนั่งอยู่ที่นั่นมีตัวเลขที่กระทืบเนื้อหาของฮาร์ดไดรฟ์ไม่มีผลกระทบ) หรือ CPU-bound และแข่งขันกับสิ่งที่เกี่ยวข้องกันแบบสัมผัส การใช้งาน CPU สูง (เช่นการสแกนไฟล์ซอฟต์แวร์ป้องกันไวรัสจำนวนตัน)
†† SSDs จะรับผลกระทบจากการกระจายตัวในการที่เข้าถึงลำดับความเร็วโดยทั่วไปมักจะเร็วกว่าการเข้าถึงโดยสุ่มแม้จะไม่ได้หันหน้า SSDs ข้อ จำกัด เช่นเดียวกับอุปกรณ์เครื่องจักรกล (แม้แล้วขาดการกระจายตัวไม่ได้รับประกันการเข้าถึงลำดับเนื่องจากการสวมใส่ leveling ฯลฯ ตามที่ James Snell บันทึกในความคิดเห็น) อย่างไรก็ตามในเกือบทุกสถานการณ์การใช้งานทั่วไปนี่เป็นปัญหาที่ไม่ใช่ ความแตกต่างด้านประสิทธิภาพอันเนื่องมาจากการแตกแฟรกเมนต์บน SSD นั้นมักจะเล็กน้อยสำหรับสิ่งต่างๆเช่นการโหลดแอปพลิเคชันการบูตคอมพิวเตอร์ ฯลฯ
umสมมติว่าระบบไฟล์มีเหตุผลที่ไม่ได้ทำการแยกไฟล์ตามวัตถุประสงค์