เหตุใดการล้างพื้นที่ว่างในดิสก์จึงเพิ่มความเร็วคอมพิวเตอร์


191

ฉันได้ดูวิดีโอมากมายและตอนนี้เข้าใจดีขึ้นเล็กน้อยว่าคอมพิวเตอร์ทำงานอย่างไร ฉันเข้าใจดีขึ้นว่า RAM คืออะไรหน่วยความจำที่ระเหยได้และไม่ลบเลือนและกระบวนการแลกเปลี่ยน ฉันยังเข้าใจด้วยว่าทำไมการเพิ่ม RAM ถึงความเร็วคอมพิวเตอร์

ฉันไม่เข้าใจว่าทำไมการล้างข้อมูลบนดิสก์ทำให้คอมพิวเตอร์เร็วขึ้น ทำมัน? ทำไมมัน มันเกี่ยวข้องกับการค้นหาพื้นที่ว่างเพื่อบันทึกสิ่งต่าง ๆ หรือไม่? หรือด้วยการเคลื่อนย้ายสิ่งต่าง ๆ เพื่อให้มีพื้นที่ต่อเนื่องยาวนานพอที่จะบันทึกบางสิ่ง ฉันควรปล่อยให้มีที่ว่างเหลืออยู่บนฮาร์ดดิสก์เท่าไหร่


37
มันไม่ได้เพิ่มความเร็ว PC จริงๆเพียงลดโอกาสของการแตกแฟรกเมนต์ซึ่งทำให้ HDD ช้าลง นี่เป็นหนึ่งในตำนานพีซีที่ยิ่งใหญ่ที่สุดที่ทุกคนพูดซ้ำ ในการค้นหา bootlenecks บนพีซีให้ติดตามด้วย xperf / WPA
magicandre1981

9
FWIW speeds up the experience of using a PCมัน
edthethird

4
@ magicandre1981: มีอัญมณีแห่งความจริงเล็ก ๆ ยิ่งมีสิ่งต่าง ๆ ในแต่ละโฟลเดอร์มากเท่าไหร่การส่งผ่านไฟล์ช้าลงก็จะส่งผลต่อสิ่งใดก็ตามโดยใช้ไฟล์พา ธ ซึ่งก็คือ ... ทุกสิ่ง แต่มันเล็กมาก
Mooing Duck

4
@MooingDuck ในขณะที่เป็นจริงสิ่งนี้เกี่ยวข้องกับจำนวนไฟล์ในโฟลเดอร์ไม่ใช่ขนาดของไฟล์หรือจำนวนพื้นที่ที่เหลืออยู่ในไดรฟ์ ผลกระทบนั้นไม่เกี่ยวข้องกับพื้นที่ว่างในดิสก์ที่เหลือ เอฟเฟกต์ยัง จำกัด อยู่ในขอบเขตของโฟลเดอร์เท่านั้นมันจะไม่ "ทำให้คอมพิวเตอร์ช้าลง" บางระบบไฟล์เช่น ext3 / 4 ใช้ไดเรกทอรีต้นไม้ที่ถูกแฮชเพื่อทำการค้นหา (รวมถึงการเข้าถึงโฟลเดอร์ย่อย) อย่างรวดเร็วจึง จำกัด ขอบเขตของผลกระทบมากขึ้นเช่นเมื่อแสดงรายการเนื้อหาของไดเรกทอรีเท่านั้น
Jason C

4
คุณดูวิดีโออะไรกันแน่?
Loko

คำตอบ:


313

ที่นี่ฉันเขียนหนังสือโดยไม่ตั้งใจ รับกาแฟก่อน

เหตุใดการล้างพื้นที่ว่างในดิสก์จึงเพิ่มความเร็วคอมพิวเตอร์

ไม่อย่างน้อยก็ไม่ได้ทำเอง นี่เป็นตำนานที่พบบ่อยมาก เหตุผลที่มันเป็นตำนานที่พบบ่อยเป็นเพราะการเติมขึ้นฮาร์ดไดรฟ์ของคุณมักจะเกิดขึ้นในเวลาเดียวกับสิ่งอื่น ๆ ที่แบบดั้งเดิมอาจชะลอตัวลงคอมพิวเตอร์ของคุณ ประสิทธิภาพของ SSD มีแนวโน้มที่จะลดลงเมื่อไดรฟ์เต็มแต่นี่เป็นปัญหาใหม่ที่ไม่เหมือนใครสำหรับ SSD และไม่เห็นได้ชัดเจนสำหรับผู้ใช้ทั่วไป โดยทั่วไปพื้นที่ว่างในดิสก์ต่ำเป็นเพียงปลาชนิดหนึ่งสีแดง

ตัวอย่างเช่น:

  • การกระจายตัวของไฟล์ การแตกแฟรกเมนต์ของไฟล์เป็นปัญหาspace แต่การขาดพื้นที่ว่างในขณะที่ปัจจัยหนึ่งในหลาย ๆปัจจัยไม่ได้เป็นสาเหตุของมันเท่านั้น บางประเด็นสำคัญที่นี่:

    • โอกาสของไฟล์ที่มีการแตกแฟรกเมนต์ไม่เกี่ยวข้องกับจำนวนพื้นที่ว่างที่เหลืออยู่ในไดรฟ์ พวกเขามีความสัมพันธ์กับขนาดของบล็อกติดกันที่ใหญ่ที่สุดของพื้นที่ว่างในไดรฟ์ (เช่น "หลุม" ของพื้นที่ว่าง) ซึ่งปริมาณของพื้นที่ว่างที่เกิดขึ้นจะนำขอบเขตบน นอกจากนี้ยังเกี่ยวข้องกับวิธีที่ระบบไฟล์จัดการกับการจัดสรรไฟล์ (ด้านล่าง) ข้อควรพิจารณา:ไดรฟ์ที่เต็ม 95% พร้อมพื้นที่ว่างทั้งหมดในหนึ่งบล็อกต่อเนื่องกันมีโอกาส 0% ในการแยกแฟรกเมนต์ไฟล์ใหม่††† (และโอกาสในการแยกไฟล์เป็นไฟล์ที่ผนวกจะขึ้นอยู่กับพื้นที่ว่าง) ไดรฟ์ที่เต็ม 5% แต่มีการกระจายข้อมูลทั่วไดรฟ์เท่า ๆ กันมีโอกาสสูงในการกระจายตัว

    • โปรดทราบว่าการแตกแฟรกเมนต์ของไฟล์มีผลเฉพาะกับประสิทธิภาพเมื่อเข้าถึงไฟล์ที่แตกแฟรกเมนต์เท่านั้น ลองพิจารณา:คุณมีไดรฟ์ที่ดีและดีแฟรกเมนต์ที่ยังมี "รู" ฟรีอยู่มากมาย สถานการณ์ทั่วไป ทุกอย่างทำงานได้อย่างราบรื่น อย่างไรก็ตามในที่สุดคุณก็มาถึงจุดที่ไม่มีพื้นที่ว่างเหลืออีกต่อไป คุณดาวน์โหลดภาพยนตร์ขนาดใหญ่ไฟล์จะถูกแยกส่วนอย่างรุนแรง สิ่งนี้จะไม่ทำให้คอมพิวเตอร์ของคุณช้าลง ไฟล์แอปพลิเคชันทั้งหมดของคุณและไฟล์ที่เคยใช้งานได้ก่อนหน้านี้จะไม่แยกส่วนทันที สิ่งนี้อาจทำให้ภาพยนตร์ใช้เวลาโหลดนานกว่า (แม้ว่าอัตราบิตภาพยนตร์ทั่วไปจะต่ำมากเมื่อเทียบกับอัตราการอ่านฮาร์ดไดรฟ์ซึ่งเป็นไปได้ว่าจะไม่มีใครสังเกตเห็นได้มากที่สุด) และอาจส่งผลต่อประสิทธิภาพของ I / O-bound ในขณะที่ภาพยนตร์กำลังโหลด ไม่มีอะไรเปลี่ยนแปลง

    • ในขณะที่การแตกไฟล์เป็นปัญหาอย่างแน่นอน แต่บ่อยครั้งที่เอฟเฟกต์ถูกลดทอนลงโดยระบบปฏิบัติการและการบัฟเฟอร์และแคชระดับฮาร์ดแวร์ การเขียนล่าช้าการอ่านล่วงหน้ากลยุทธ์เช่นprefetcherใน Windows ฯลฯ จะช่วยลดผลกระทบของการแตกแฟรกเมนต์ คุณมักไม่จริงได้สัมผัสกับผลกระทบอย่างมีนัยสำคัญจนการกระจายตัวกลายเป็นความรุนแรง (ฉันยังต้องการร่วมกล่าวว่าตราบใดที่แลกเปลี่ยนไฟล์ของคุณไม่ได้แยกส่วนคุณอาจจะไม่เคยทราบ)

  • การจัดทำดัชนีการค้นหาเป็นอีกตัวอย่างหนึ่ง สมมติว่าคุณเปิดการทำดัชนีอัตโนมัติและระบบปฏิบัติการที่ไม่จัดการสิ่งนี้อย่างสง่างาม ในขณะที่คุณบันทึกเนื้อหาที่จัดทำดัชนีได้มากขึ้นในคอมพิวเตอร์ของคุณ (เอกสารและอื่น ๆ ) การทำดัชนีอาจใช้เวลานานขึ้นและนานขึ้นและอาจเริ่มมีผลต่อความเร็วที่รับรู้ของคอมพิวเตอร์ของคุณขณะที่กำลังทำงานทั้งในการใช้ I / O และ CPU . สิ่งนี้ไม่เกี่ยวข้องกับพื้นที่ว่าง แต่เกี่ยวข้องกับปริมาณเนื้อหาที่คุณจัดทำดัชนีได้ อย่างไรก็ตามการใช้พื้นที่ว่างหมดไปควบคู่ไปกับการจัดเก็บเนื้อหาเพิ่มเติมดังนั้นจึงมีการเชื่อมต่อที่ผิดพลาด

  • โปรแกรมแอนตี้ไวรัส. คล้ายกับตัวอย่างการจัดทำดัชนีการค้นหา สมมติว่าคุณมีซอฟต์แวร์ป้องกันไวรัสตั้งค่าให้ทำการสแกนพื้นหลังของไดรฟ์ของคุณ เมื่อคุณมีเนื้อหาที่สแกนได้มากขึ้นการค้นหาใช้ทรัพยากร I / O และ CPU มากขึ้นซึ่งอาจรบกวนการทำงานของคุณ อีกครั้งนี้เกี่ยวข้องกับปริมาณเนื้อหาที่สแกนได้ที่คุณมี เนื้อหาเพิ่มเติมมักเท่ากับพื้นที่ว่างที่น้อยลง แต่การขาดพื้นที่ว่างไม่ใช่สาเหตุ

  • ซอฟต์แวร์ที่ติดตั้ง สมมติว่าคุณมีซอฟต์แวร์จำนวนมากติดตั้งอยู่ซึ่งจะโหลดเมื่อคอมพิวเตอร์ของคุณบู๊ตดังนั้นจึงทำให้เวลาเริ่มต้นทำงานช้าลง สิ่งนี้ช้าลงเกิดขึ้นเนื่องจากมีการโหลดซอฟต์แวร์จำนวนมาก อย่างไรก็ตามซอฟต์แวร์ที่ติดตั้งใช้พื้นที่ฮาร์ดไดรฟ์ ดังนั้นพื้นที่ว่างบนฮาร์ดไดรฟ์จึงลดลงในเวลาเดียวกับที่เกิดเหตุการณ์นี้ขึ้นและสามารถทำการเชื่อมต่อที่ผิดพลาดได้อีกครั้ง

  • ตัวอย่างอื่น ๆ อีกมากมายตามแนวเหล่านั้นซึ่งเมื่อนำมารวมกันดูเหมือนว่าจะเชื่อมโยงการขาดพื้นที่ว่างอย่างใกล้ชิดกับประสิทธิภาพที่ต่ำลง

ข้างต้นแสดงให้เห็นถึงเหตุผลอื่นที่ว่านี่เป็นตำนานทั่วไป: ในขณะที่การขาดพื้นที่ว่างไม่ได้เป็นสาเหตุโดยตรงของการชะลอตัวลงการถอนการติดตั้งแอปพลิเคชันต่าง ๆ การลบเนื้อหาที่จัดทำดัชนีหรือสแกน ฯลฯ บางครั้ง (แต่ไม่เสมอไป; คำตอบ) เพิ่มประสิทธิภาพอีกครั้งด้วยเหตุผลที่ไม่เกี่ยวข้องกับจำนวนพื้นที่ว่างที่เหลืออยู่ แต่นี่ก็ทำให้พื้นที่ฮาร์ดไดรฟ์เป็นอิสระ ดังนั้นอีกครั้งการเชื่อมต่อที่ชัดเจน (แต่เท็จ) ระหว่าง "พื้นที่ว่างเพิ่มเติม" และ "คอมพิวเตอร์ที่เร็วขึ้น" สามารถทำได้

ลองพิจารณา:หากคุณมีเครื่องจักรที่ทำงานช้าเนื่องจากมีซอฟต์แวร์ที่ติดตั้งอยู่จำนวนมากและคุณโคลนฮาร์ดไดรฟ์ของคุณไปยังฮาร์ดไดรฟ์ขนาดใหญ่จากนั้นขยายพาร์ติชันของคุณเพื่อให้มีพื้นที่ว่างมากขึ้น ขึ้น โหลดซอฟต์แวร์เดียวกันไฟล์เดิมยังคงกระจัดกระจายในวิธีเดียวกันตัวค้นหาดัชนีตัวเดิมยังคงทำงานไม่มีอะไรเปลี่ยนแปลงแม้ว่าจะมีพื้นที่ว่างมากขึ้น

มันเกี่ยวข้องกับการค้นหาพื้นที่หน่วยความจำที่จะบันทึกสิ่งต่าง ๆ หรือไม่?

ไม่มันไม่ใช่ มีสองสิ่งที่สำคัญมากที่ควรสังเกตคือ

  1. ฮาร์ดไดรฟ์ของคุณไม่ค้นหาเพื่อค้นหาสถานที่ที่จะนำสิ่งต่างๆ ฮาร์ดไดรฟ์ของคุณโง่ ไม่เป็นไร. มันเป็นบล็อกขนาดใหญ่ของที่เก็บข้อมูลที่มีการสุ่มสี่สุ่มห้าซึ่งทำให้สิ่งต่าง ๆ ที่ระบบปฏิบัติการของคุณบอกและอ่านสิ่งที่ถูกถาม ไดรฟ์สมัยใหม่มีกลไกการแคชและการบัฟเฟอร์ที่ซับซ้อนซึ่งออกแบบมาเพื่อคาดการณ์สิ่งที่ระบบปฏิบัติการจะขอตามประสบการณ์ที่เราได้รับเมื่อเวลาผ่านไป ไดรฟ์ของคุณเป็นเพียงแหล่งเก็บข้อมูลขนาดใหญ่ที่มีคุณสมบัติโบนัสเป็นครั้งคราว

  2. ระบบปฏิบัติการของคุณไม่ค้นหาสถานที่ที่จะนำสิ่งของมาด้วย ไม่มี "การค้นหา" มีความพยายามอย่างมากในการแก้ไขปัญหานี้เนื่องจากมีความสำคัญต่อประสิทธิภาพของระบบไฟล์ วิธีการจัดระเบียบข้อมูลจริงบนไดรฟ์ของคุณจะถูกกำหนดโดยระบบไฟล์ของคุณ. ตัวอย่างเช่น 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สมมติว่าระบบไฟล์มีเหตุผลที่ไม่ได้ทำการแยกไฟล์ตามวัตถุประสงค์


คำตอบที่ครอบคลุมมากขอบคุณ ขอบคุณสำหรับการเตือนให้หยิบกาแฟมันก็ชื่นชมมาก
Hashim

22

นอกจากคำอธิบายของ Nathanial Meekสำหรับ HDD แล้วยังมีสถานการณ์ที่แตกต่างสำหรับ SSD

SSD ไม่ไวต่อข้อมูลที่กระจัดกระจายเพราะเวลาในการเข้าถึงสถานที่ใด ๆ บน SSD เหมือนกัน เวลาในการเข้าถึง SSD ทั่วไปคือ 0.1ms เทียบกับเวลาการเข้าถึง HDD ทั่วไป 10 ถึง 15ms อย่างไรก็ตามมีความอ่อนไหวต่อข้อมูลที่เขียนไว้แล้วบน SSD

แตกต่างจาก HDD ดั้งเดิมที่สามารถเขียนทับข้อมูลที่มีอยู่ SSD ต้องการพื้นที่ว่างในการเขียนข้อมูล ทำโดยฟังก์ชั่นที่เรียกว่า Trim and Garbage Collection ซึ่งทำการล้างข้อมูลที่ทำเครื่องหมายว่าถูกลบ Garbage Collection ทำงานได้ดีที่สุดเมื่อใช้ร่วมกับพื้นที่ว่างจำนวนหนึ่งบน SSD โดยปกติแล้วจะแนะนำให้ใช้พื้นที่ว่าง 15% ถึง 25%

หากการรวบรวมขยะไม่สามารถดำเนินการให้เสร็จทันเวลาการดำเนินการเขียนแต่ละครั้งจะถูกนำหน้าด้วยการล้างพื้นที่ที่ข้อมูลควรถูกเขียน ซึ่งจะเพิ่มเวลาเป็นสองเท่าสำหรับการดำเนินการเขียนแต่ละครั้งและลดประสิทธิภาพโดยรวม

นี่คือบทความที่ยอดเยี่ยมที่อธิบายการทำงานของ Trim และ Garbage Collection


โปรดทราบว่า SSD สามารถเขียนไปยังเซลล์ที่เต็มไปด้วยบางส่วนโดยการอ่านข้อมูลบางส่วนและเขียนกลับมาพร้อมกับเขียนเพิ่มเติม แต่มีแนวโน้มที่จะทำเฉพาะเมื่อมันหลีกเลี่ยงไม่ได้ แน่นอนว่านี่ยังค่อนข้างช้าและมักจะระบุว่าไดรฟ์มีการแยกส่วนที่ไม่ดีดังนั้นจึงต้องใช้เวลาค่อนข้างมากในการเขียนให้เร็วขึ้นอีกครั้ง
ปุย

ที่จะขึ้นอยู่กับคอนโทรลเลอร์ด้วย และเนื่องจากมีรูปแบบมากมายฉันไม่ต้องการเข้าไปดูรายละเอียดในระดับนั้น
เมื่อ

15-25% ที่คุณพูดถึงเรียกว่า "การจัดสรรพื้นที่ส่วนเกิน" ไดรฟ์บางตัวมีพื้นที่จัดสรรที่จำเป็นสำหรับสิ่งนี้อยู่แล้ว (เช่น 1TB EVO 840 มีการจอง 9% และไม่ได้รายงานไปยังระบบปฏิบัติการฟรี) สำหรับผู้ที่คุณไม่ต้องการออกจากพื้นที่ว่าง ฉันเชื่อว่าในบางกรณีพื้นที่ที่จัดสรรเกินควรจะไม่ได้รับการแบ่งพาร์ติชั่นด้วยและเพียงแค่ปล่อยให้พื้นที่ว่างในระบบไฟล์ของคุณไม่ลดลงคุณต้องออกจากพื้นที่ที่ไม่ได้ปันส่วน
Jason C

การจัดสรรพื้นที่ส่วนเกินเป็นอย่างอื่น สิ่งเหล่านี้คือ nands แบบสแตนด์บายเพื่อแทนที่ nands ที่ชำรุด จำเป็นต้องใช้ 15-25% สำหรับการเพิ่มบล็อก (หน้า) และสำหรับการปรับระดับการสึกหรอ คุณอาจต้องการอ่านรายละเอียดที่นี่ ==> thessdreview.com/daily-news/latest-buzz/…
เมื่อ

@ ไม่ได้และบทความที่คุณเชื่อมโยงไปนั้นไม่ได้หมายความว่าเป็น พื้นที่ที่จัดสรรเกิน (ดูแหล่งที่อ้างถึงในส่วนนั้นหรือ Google) คือกลุ่มของบล็อกว่างบล็อกในกลุ่มนี้ใช้สำหรับการรวบรวมขยะ / การเขียนที่รวดเร็วการปรับระดับการสึกหรอและการแทนที่เซลล์ที่ชำรุด สำหรับการแทนที่เซลล์ที่มีข้อบกพร่องมันทั้งหมดอยู่ในกลุ่มเดียวกัน เมื่อมันเต็มไปด้วยเซลล์ที่มีข้อบกพร่องคุณจะเริ่มเห็นข้อผิดพลาดที่สอดคล้องกัน ดูเพิ่มเติมเลื่อน 12 ในงานนำเสนอนี้จาก LSI ; สิ่งทั้งหมดมีค่าที่จะผ่านมันอยู่หัวข้อโดยตรง
Jason C

12

บางแห่งในฮาร์ดดิสก์แบบดั้งเดิมนั้นเป็นแผ่นโลหะหมุนซึ่งแต่ละบิตและไบต์จะถูกเข้ารหัสจริง เมื่อมีการเพิ่มข้อมูลลงในแผ่นเสียงตัวควบคุมดิสก์จะเก็บข้อมูลไว้ที่ด้านนอกของดิสก์ก่อน เมื่อมีการเพิ่มพื้นที่ข้อมูลใหม่จะถูกย้ายไปด้านในของดิสก์ล่าสุด

กับในใจมีสองผลกระทบที่ก่อให้เกิดประสิทธิภาพของดิสก์ที่จะลดลงเป็นดิสก์เติมขึ้น: ขอเวลาและความเร็วในการหมุน

ขอเวลา

ในการเข้าถึงข้อมูลฮาร์ดดิสก์แบบเดิมจะต้องย้ายหัวอ่าน / เขียนไปไว้ในตำแหน่งที่ถูกต้อง ต้องใช้เวลาเรียกว่า "แสวงหาเวลา" ผู้ผลิตเผยแพร่เวลาค้นหาดิสก์ของพวกเขาและโดยทั่วไปจะใช้เวลาเพียงไม่กี่มิลลิวินาที นั่นอาจฟังดูไม่มาก แต่สำหรับคอมพิวเตอร์มันเป็นนิรันดร์ หากคุณต้องอ่านหรือเขียนไปยังตำแหน่งดิสก์ที่แตกต่างกันจำนวนมากเพื่อทำงานให้เสร็จสมบูรณ์ (ซึ่งเป็นเรื่องปกติ) ผู้ที่ต้องการเวลาในการเพิ่มสามารถเพิ่มความล่าช้าหรือความล่าช้าที่สังเกตได้

ไดรฟ์ที่เกือบว่างเปล่าจะมีข้อมูลส่วนใหญ่อยู่ในหรือใกล้กับตำแหน่งเดียวกันโดยทั่วไปที่ขอบด้านนอกใกล้กับตำแหน่งที่เหลือของหัวอ่าน / เขียน สิ่งนี้จะช่วยลดความต้องการในการค้นหาข้ามดิสก์ช่วยลดเวลาในการค้นหาอย่างมาก ไดรฟ์ที่เกือบจะเต็มไม่เพียง แต่ต้องการค้นหาข้ามดิสก์บ่อยครั้งและต้องการการเคลื่อนไหวที่มากขึ้น / นานขึ้น แต่อาจมีปัญหาในการเก็บข้อมูลที่เกี่ยวข้องในเซกเตอร์เดียวกันเพิ่มการค้นหาดิสก์เพิ่มเติม สิ่งนี้เรียกว่าข้อมูลที่กระจัดกระจาย

การเพิ่มพื้นที่ว่างในดิสก์สามารถปรับปรุงเวลาในการค้นหาได้โดยการอนุญาตให้จัดเรียงข้อมูลบริการไม่เพียง แต่จะล้างข้อมูลไฟล์ที่กระจัดกระจายได้เร็วขึ้นเท่านั้น แต่ยังสามารถย้ายไฟล์ไปยังด้านนอกของดิสก์ได้ด้วย

ความเร็วการหมุน

ฮาร์ดไดรฟ์หมุนที่อัตราคงที่ (โดยทั่วไปคือ 5400 รอบต่อนาทีหรือ 7200 รอบต่อนาทีสำหรับคอมพิวเตอร์ของคุณและ 10,000 รอบต่อนาทีหรือ 15,000 รอบต่อนาทีบนเซิร์ฟเวอร์) นอกจากนี้ยังใช้พื้นที่บนไดรฟ์ (มากหรือน้อย) ในการจัดเก็บบิตเดียว สำหรับดิสก์ที่หมุนด้วยอัตราการหมุนคงที่ด้านนอกของดิสก์จะมีอัตราการเคลื่อนที่เชิงเส้นที่เร็วกว่าภายในของดิสก์ นี่หมายถึงบิตใกล้ขอบด้านนอกของดิสก์เคลื่อนผ่านหัวอ่านในอัตราที่เร็วกว่าบิตใกล้กับกึ่งกลางของดิสก์ดังนั้นหัวอ่าน / เขียนจึงสามารถอ่านหรือเขียนบิตเร็วใกล้ขอบด้านนอกของดิสก์ได้มากกว่า ภายใน

ไดรฟ์ที่เกือบจะว่างเปล่าจะใช้เวลาส่วนใหญ่ในการเข้าถึงบิตใกล้กับขอบด้านนอกของดิสก์ที่เร็วกว่า ไดรฟ์ที่เกือบจะเต็มจะใช้เวลาในการเข้าถึงบิตใกล้กับส่วนในของดิสก์ที่ช้ากว่า

อีกครั้งพื้นที่ว่างในดิสก์สามารถทำให้คอมพิวเตอร์เร็วขึ้นโดยอนุญาตให้บริการ defrag ย้ายข้อมูลไปยังด้านนอกของดิสก์ที่การอ่านและเขียนเร็วขึ้น

บางครั้งแผ่นดิสก์จะเคลื่อนที่เร็วเกินไปสำหรับหัวอ่านและเอฟเฟกต์นี้จะลดลงเพราะส่วนที่อยู่ใกล้กับขอบด้านนอกจะถูกส่าย ... เขียนออกมาเป็นระเบียบเพื่อให้หัวอ่านสามารถติดตามได้ แต่ทั้งหมดนี้ถือ

เอฟเฟกต์ทั้งสองนี้ลงมาที่ตัวควบคุมดิสก์จัดกลุ่มข้อมูลร่วมกันในส่วนที่เร็วกว่าของดิสก์ก่อนและไม่ได้ใช้ส่วนที่ช้ากว่าของดิสก์จนกว่ามันจะต้องทำ เมื่อดิสก์เต็มจึงใช้เวลามากขึ้นในส่วนที่ช้าลงของดิสก์

ผลกระทบยังนำไปใช้กับไดรฟ์ใหม่ สิ่งอื่น ๆ ที่เท่าเทียมกันไดรฟ์ 1TB ใหม่นั้นเร็วกว่าไดรฟ์ 200GB ใหม่เนื่องจาก 1TB นั้นจัดเก็บบิตไว้ใกล้กันและจะไม่เติมลงในแทร็กด้านในอย่างรวดเร็ว อย่างไรก็ตามการพยายามใช้สิ่งนี้เพื่อแจ้งการตัดสินใจซื้อไม่ค่อยมีประโยชน์เนื่องจากผู้ผลิตอาจใช้หลายจานเพื่อให้ได้ขนาด 1TB, จานเล็ก ๆ เพื่อ จำกัด ระบบ 1TB ถึง 200GB, ข้อ จำกัด ซอฟต์แวร์ / ดิสก์คอนโทรลเลอร์เพื่อ จำกัด แผ่น 1TB เหลือเพียง 200GB เท่านั้น พื้นที่หรือขายไดรฟ์ที่มี platters ที่เสร็จสมบูรณ์ / มีข้อบกพร่องบางส่วนจากไดรฟ์ 1TB ที่มีเซ็กเตอร์ที่ไม่ดีมากมายเช่นไดรฟ์ 200GB

ปัจจัยอื่น ๆ

มันน่าสังเกตที่นี่ว่าเอฟเฟกต์ข้างต้นค่อนข้างเล็ก วิศวกรฮาร์ดแวร์คอมพิวเตอร์ใช้เวลาทำงานอย่างหนักเพื่อหาวิธีลดปัญหาเหล่านี้และสิ่งต่าง ๆ เช่นบัฟเฟอร์ฮาร์ดไดรฟ์การแคช superfetch และระบบอื่น ๆ ทั้งหมดทำงานเพื่อลดปัญหา ในระบบที่มีสุขภาพดีที่มีพื้นที่ว่างมากมายคุณไม่น่าจะสังเกตเห็น นอกจากนี้ SSD ยังมีคุณสมบัติด้านประสิทธิภาพที่แตกต่างอย่างสิ้นเชิง อย่างไรก็ตามมีเอฟเฟกต์อยู่และคอมพิวเตอร์ก็ช้าลงตามกฎหมายเมื่อไดรฟ์เต็ม ในระบบที่ไม่แข็งแรงที่มีพื้นที่ดิสก์เหลือน้อยมากเอฟเฟกต์เหล่านี้สามารถสร้างสถานการณ์ที่ทำให้ดิสก์เกิดความเสียหายได้ซึ่งดิสก์จะค้นหาข้อมูลไปมาอย่างต่อเนื่องตลอดเวลาและการเพิ่มพื้นที่ว่างในดิสก์สามารถแก้ไขปัญหานี้ได้ .

นอกจากนี้การเพิ่มข้อมูลไปยังดิสก์หมายความว่าการดำเนินงานอื่น ๆ บางอย่างเช่นการจัดทำดัชนีหรือ AV สแกนและกระบวนการจัดระเบียบเป็นเพียงการทำมากขึ้นการทำงานในพื้นหลังแม้ว่าจะทำมันหรือใกล้ความเร็วเช่นเดียวกับก่อน

สุดท้ายประสิทธิภาพดิสก์ขนาดใหญ่ตัวบ่งชี้ประสิทธิภาพของเครื่องคอมพิวเตอร์โดยรวมวันนี้ ... เป็นตัวบ่งชี้แม้มีขนาดใหญ่กว่าความเร็วของ CPU แม้แต่การส่งผ่านข้อมูลในดิสก์เพียงเล็กน้อยก็มักจะเทียบเท่ากับการลดลงโดยรวมในประสิทธิภาพของพีซี นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งเนื่องจากประสิทธิภาพของฮาร์ดดิสก์ไม่ได้ทันกับการปรับปรุง CPU และหน่วยความจำ ดิสก์ 7200 RPM นั้นเป็นมาตรฐานเดสก์ทอปมานานกว่าทศวรรษแล้ว มากขึ้นกว่าเดิมแผ่นดิสก์แบบหมุนที่เป็นคอขวดในคอมพิวเตอร์ของคุณ


1
การหาเวลาเพิ่มไม่ได้เป็นผลมาจากพื้นที่ว่างที่ต่ำมันเป็นผลมาจากการจัดระเบียบข้อมูล การเพิ่มพื้นที่ว่างในดิสก์จะไม่ลดลงหากเวลาของคุณมีข้อมูลอยู่ทั่วไดรฟ์ ในทำนองเดียวกันการใช้พื้นที่ดิสก์ไม่เพียงพอก็จะไม่เพิ่มเวลาค้นหาข้อมูลที่ไม่เกี่ยวข้องซึ่งได้รับการจัดระเบียบอย่างดีอยู่แล้ว ที่สำคัญควรระวังการเชื่อมโยงสิ่งเหล่านี้กับ "คอมพิวเตอร์ช้า" ตัวอย่างเช่นคุณจะไม่ท่องเว็บเร็วขึ้นเพราะความสามารถในการเบราว์เซอร์ของคุณไม่มีการแยกส่วนและนอกไดรฟ์เชิงกลและ MP3 ของคุณจะยังคงเล่นได้อย่างราบรื่นแม้ในกรณีที่เลวร้ายที่สุด
Jason C

2
@ JasonC แต่ละประเด็นนั้นเป็นจริงในการแยก แต่นำมาเป็นส่วนหนึ่งของระบบทั้งหมดสามารถรวมถึงการชะลอตัวจริง ตัวอย่างคือการอ้างสิทธิ์: " Freeing disk space won't decrease seek times if your data is already all over the drive." ฉันไม่สามารถโต้แย้งได้ด้วยตัวเอง แต่ฉันสามารถชี้ให้เห็นว่าบริการการจัดเรียงข้อมูลตอนนี้สามารถย้ายข้อมูลนี้ไปยังด้านหน้าของไดรฟ์และตอนนี้สิ่งต่าง ๆ เหล่านี้จะปรับปรุงเวลาค้นหา จุดอื่น ๆ ในความคิดเห็นของคุณมีตัวนับที่คล้ายกัน: พื้นที่ดิสก์ไม่เพียงพอจะไม่เพิ่มการค้นหาสำหรับข้อมูลที่มีการจัดระเบียบอย่างดี แต่จะทำให้มีโอกาสน้อยที่ข้อมูลจะถูกจัดระเบียบ
Joel Coehoorn

1
@ JasonC อย่างไรก็ตามฉันเพิ่มสองบรรทัดในคำตอบของฉันตามความคิดเห็นของคุณเพื่อให้ตรงกับคำถามชื่อเรื่องมากขึ้น
Joel Coehoorn

แน่นอน; แต่ประเด็นหลักของฉันคือ 1) ที่ช้าลงเป็นผลมาจากสิ่งอื่นแม้ว่าพื้นที่ว่างที่ต่ำอาจเป็นหนึ่งในหลาย ๆ ปัจจัยและ 2) คุณต้องระวังให้ดีกับหัวข้อนี้มันเป็นหนึ่งในสิ่งที่คนยึดติด เร็วมาก หากผู้ใช้ทั่วไปสังเกตเห็นว่าคอมพิวเตอร์ของพวกเขาช้า แต่ในความเป็นจริงมันเป็นเรื่องผิดปกติอย่างมากสำหรับการพูดการแยกส่วน (เช่น) เป็นสาเหตุที่แท้จริง แต่แล้วพวกเขาก็อ่านสิ่งต่าง ๆ บนอินเทอร์เน็ตติดตั้ง ccleaner จัดเรียงข้อมูลบนดิสก์ 50 รายการทำ tweaks รีจิสตรีที่แย่ ฯลฯ ต้องให้ความสำคัญกับคนที่นี่ ฉลาดไม่ต้องการคำตอบของเรา
Jason C

คำตอบนี้มีคำใบ้สั้น ๆ (จำกัด ขนาด HD เพื่อเก็บข้อมูลในพื้นที่ที่รวดเร็วขึ้นนอกเขต) และปัญหาที่อาจเกิดขึ้น ฉันก็ชอบที่มันไม่ได้ปฏิเสธว่าในกรณีส่วนใหญ่สำหรับผู้ใช้ส่วนใหญ่ไดรฟ์จะได้รับการแยกส่วนมากขึ้นตามที่ได้รับเต็ม แม้ว่าจะเป็นเรื่องน่าสังเกตว่าพื้นที่ว่างไม่ใช่ปัญหาจริงแต่ก็ไม่มีประโยชน์ที่จะเพิกเฉยต่อประสบการณ์ของผู้ใช้ทั่วไปเมื่อต้องเผชิญกับคำถามประสบการณ์ผู้ใช้ทั่วไป
Smithers

6

คำตอบอื่น ๆ ทั้งหมดนั้นถูกต้องทางเทคนิค - แต่ฉันพบเสมอว่าตัวอย่างง่ายๆนี้อธิบายได้ดีที่สุด

การเรียงลำดับสิ่งต่าง ๆ เป็นเรื่องง่ายถ้าคุณมีพื้นที่มากมาย ... แต่ยากถ้าคุณไม่มีพื้นที่ ... คอมพิวเตอร์ต้องการพื้นที่เช่นกัน !

คลาสสิก " 15 ปริศนา " นี้ยุ่งยาก / ใช้เวลานานเพราะคุณมีเพียง 1 สแควร์ฟรีในการสับไพ่เพื่อให้ได้ลำดับ 1-15 ที่ถูกต้อง

ปริศนา 15 ฮาร์ด

อย่างไรก็ตามหากพื้นที่มีขนาดใหญ่ขึ้นมากคุณสามารถไขปริศนานี้ได้ภายใน 10 วินาที

15 ปริศนาง่าย

สำหรับทุกคนที่เคยเล่นกับจิ๊กซอว์นี้ ... การทำความเข้าใจความคล้ายคลึงดูเหมือนจะเป็นไปตามธรรมชาติ ;-)


2
สิ่งนี้ไม่คล้ายกับพฤติกรรมของระบบไฟล์ใด ๆ มันค่อนข้างคล้ายกับกระบวนการทั่วไปของการจัดเรียงข้อมูลผมเดาว่าถึงแม้จะมีการจัดเรียงข้อมูลที่เกี่ยวข้องกับการเปรียบเทียบปริศนานี้ช่วยให้คุณสามารถลบตัวเลขออกจากบอร์ดและวางพวกเขาใหม่ได้ทุกที่ที่คุณต้องการ
Jason C

2
นอกเหนือจากความคิดเห็นของเจสันข้างต้นฉันต้องการชี้ให้เห็นอย่างชัดเจน: คำตอบนี้เกี่ยวข้องกับการเรียงลำดับ (การจัดเรียงข้อมูล) แต่ไม่ได้อธิบายว่าทำไมการเข้าถึงไทล์แบบสุ่มเฉพาะเจาะจง (พูดแผ่นไทล์ "3") จะเร็วขึ้นในวินาที กรณีกว่าในกรณีแรก
CVN

เพราะคุณไม่ได้เข้าถึงแค่ "3" คุณกำลังเข้าถึง "1-15" ในขณะที่ฉันยอมรับว่าไม่ชัดเจนในตัวอย่างฉันเอามันเป็นที่เข้าใจ อาจมีค่ามากกว่าโดยเฉพาะการสังเกตบางสิ่งเช่น "ปริศนานี้คล้ายคลึงกับไฟล์แยกส่วนเดียว" คำตอบที่ดีทำให้สิ่งต่างๆเข้าถึงได้ทางจิตใจ!
Smithers

1
ในการชี้แจง: ปัญหาหลักที่มีการเปรียบเทียบที่นี่คือในจิ๊กซอว์จริงคุณสามารถย้ายไทล์ไปยังพื้นที่ว่างที่อยู่ติดกันเท่านั้น นั่นคือในตัวอย่างเล็ก ๆ มีเพียง 6 หรือ 13 เท่านั้นที่สามารถเคลื่อนย้ายเข้าไปในพื้นที่ว่างเปล่า นั่นคือสิ่งที่ทำให้ไขปริศนาท้าทาย มันเป็นจุดของเกมไพ่ อย่างไรก็ตามเมื่อทำการจัดเรียงข้อมูลฮาร์ดไดรฟ์คุณสามารถย้ายเช่น 4 ไปยังพื้นที่ว่าง 1 ไปยังตำแหน่งที่ถูกต้องและอื่น ๆ แก้ปัญหาได้ง่ายมากในการเคลื่อนย้ายมากเท่ากับกรณีที่มีพื้นที่มาก ดังนั้นการเปรียบเทียบจึงหยุดลงจริง ๆ เนื่องจากปมของปริศนาใช้ไม่ได้: ไม่มีระบบไฟล์ทำงานด้วยวิธีนี้
Jason C

'เพราะคุณไม่ได้เข้าถึงแค่ "3" คุณกำลังเข้าถึง "1-15" '- นี่เป็นเรื่องไร้สาระ คำตอบไม่ได้อธิบายว่าทำไมการเข้าถึงไทล์แบบสุ่มเฉพาะจะเร็วกว่าในกรณีที่สองในกรณีแรกเพราะคำตอบนั้นผิดอย่างสิ้นเชิง ไม่เพียง แต่การจัดเรียงข้อมูลจะไม่ จำกัด วิธีการไขปริศนา แต่การจัดเรียงข้อมูลแบบ "ยุ่งยาก / ใช้เวลานาน" ไม่มีผลต่อประสิทธิภาพของระบบ
Jim Balter

5

คอมพิวเตอร์ที่มีพื้นที่ดิสก์น้อยมากบนฮาร์ดไดรฟ์แบบกลไกหมุนเป็นระยะเวลานานโดยทั่วไปจะช้าลงเมื่อการแตกแฟรกเมนต์ของไฟล์เพิ่มขึ้น การแตกแฟรกเมนต์ที่เพิ่มขึ้นหมายถึงการอ่านช้า - ช้ามากในกรณีรุนแรง

เมื่อคอมพิวเตอร์อยู่ในสถานะนี้การเพิ่มพื้นที่ว่างในดิสก์จะไม่สามารถแก้ไขปัญหาได้ คุณต้องจัดเรียงข้อมูลบนดิสก์ ก่อนที่คอมพิวเตอร์จะอยู่ในสถานะนี้การเพิ่มพื้นที่ว่างจะไม่เพิ่มความเร็ว มันเพียงแค่จะลดโอกาสของการกระจายตัวของปัญหา

สิ่งนี้ใช้ได้กับคอมพิวเตอร์ที่มีฮาร์ดไดรฟ์แบบกลไกหมุนเท่านั้นเนื่องจากการแตกแฟรกเมนต์มีผลกระทบเล็กน้อยต่อความเร็วในการอ่านของ SSD


คำตอบที่ดีสะอาดและเรียบง่ายที่ให้ความสำคัญกับประเด็นหลัก
Smithers

4

ดิสก์แฟลชสามารถทำงานช้าลงได้อย่างแน่นอนเมื่อพวกเขาเต็มหรือแยกส่วนแม้ว่ากลไกสำหรับการชะลอตัวจะแตกต่างจากที่จะเกิดขึ้นกับฮาร์ดไดรฟ์ทางกายภาพ ชิปหน่วยความจำแฟลชทั่วไปจะถูกแบ่งออกเป็นบล็อกลบจำนวนหนึ่งซึ่งแต่ละอันประกอบด้วยหน้าเขียนจำนวนมาก (หลายร้อยหากไม่ใช่หลายพัน) และจะสนับสนุนการดำเนินการหลักสามประการ:

  1. อ่านหน้าแฟลช
  2. เขียนไปยังหน้าแฟลชก่อนหน้านี้ที่ว่างเปล่า
  3. ลบหน้าแฟลชทั้งหมดบนบล็อก

ในขณะที่ในทางทฤษฎีแล้วเป็นไปได้ที่จะให้แต่ละการเขียนไปยังแฟลชไดรฟ์อ่านหน้าทั้งหมดจากบล็อกเปลี่ยนหนึ่งในบัฟเฟอร์ลบบล็อกแล้วเขียนบัฟเฟอร์กลับไปยังอุปกรณ์แฟลชวิธีดังกล่าวจะเป็นอย่างยิ่ง ช้า; มันจะเป็นไปได้ที่จะทำให้ข้อมูลสูญหายหากไฟดับระหว่างการลบเริ่มต้นและการเขียนกลับเสร็จสมบูรณ์ นอกจากนี้ส่วนที่เขียนบ่อยของดิสก์จะเสื่อมสภาพอย่างรวดเร็วมาก หาก 128 ภาคแรกของ FAT ถูกเก็บไว้ในบล็อกแฟลชหนึ่งไดรฟ์จะตายหลังจากจำนวนการเขียนทั้งหมดของภาคส่วนเหล่านั้นถึง 100,000 ซึ่งไม่มากโดยเฉพาะอย่างยิ่งจากภาคที่ 128 จะมีรายการ FAT ประมาณ 16,384 รายการ

เนื่องจากวิธีการข้างต้นใช้งานได้อย่างน่ากลัวไดรฟ์จะทำให้หน้าเว็บว่างบางหน้าเขียนข้อมูลและบันทึกความจริงที่ว่าเซกเตอร์ตรรกะนั้นถูกเก็บไว้ที่ตำแหน่งนั้น ตราบเท่าที่มีหน้าว่างเพียงพอการดำเนินการนี้สามารถดำเนินการได้อย่างรวดเร็ว หากหน้าเปล่านั้นขาดตลาดไดรฟ์อาจต้องหาบล็อกที่มีหน้า "สด" ค่อนข้างน้อยให้ย้ายหน้าสดใด ๆ ในบล็อกเหล่านั้นไปยังหน้าว่างเปล่าที่เหลืออยู่และทำเครื่องหมายสำเนาเก่าเป็น " ตาย"; เมื่อทำอย่างนั้นไดรฟ์จะสามารถลบบล็อกที่มีหน้า "ตาย" เท่านั้น

หากไดรฟ์เต็มเพียงครึ่งหนึ่งจะมีบล็อกอย่างน้อยหนึ่งบล็อกซึ่งมีครึ่งหน้าเต็มมากที่สุด (และอาจมีบางช่วงที่มีจำนวนน้อยหรือไม่มีเลย) หากแต่ละบล็อกมี 256 หน้าและบล็อกเต็มน้อยที่สุดมี 64 หน้าสด (เป็นกรณีที่ไม่ดีพอสมควร) ดังนั้นสำหรับทุก 192 ภาคที่ร้องขอการเขียนไดรฟ์จะต้องทำสำเนาเพิ่มเติม 64 ภาคและลบหนึ่งบล็อก (ดังนั้นต้นทุนเฉลี่ย ของการเขียนแต่ละเซกเตอร์จะเขียนประมาณ 1.34 หน้าและลบบล็อก 0.005 บล็อก) แม้ในกรณีที่เลวร้ายที่สุดการเขียน 128 ภาคจะต้องใช้สำเนาเพิ่มเติมอีก 128 ภาคและการลบบล็อก (ค่าใช้จ่ายเฉลี่ยต่อการเขียน 2 หน้าการเขียนและการลบบล็อก 0.01 ครั้ง)

หากไดรฟ์เต็ม 99% และบล็อกที่เต็มน้อยที่สุดมี 248/256 เพจสดการเขียนทุก ๆ 8 ภาคจะต้องมีการเขียนหน้าเพิ่มอีก 248 หน้าและการลบบล็อกจึงทำให้ได้ต้นทุนต่อการเขียน 32 เพจที่เขียนและบล็อก 0.125 บล็อก ลบ - การชะลอตัวที่รุนแรงมาก

ขึ้นอยู่กับจำนวนไดรฟ์ "พิเศษ" ของไดรฟ์ที่มีมันอาจไม่อนุญาตให้สิ่งต่าง ๆ ได้รับค่อนข้างแย่ กระนั้นก็ตามแม้ ณ จุดที่ไดรฟ์เต็ม 75% ประสิทธิภาพที่แย่ที่สุดอาจจะแย่กว่าสองเท่าของประสิทธิภาพของเคสที่แย่ที่สุดเมื่อมันเต็ม 50%


3

คุณตอกมันมาก คุณสามารถนึกถึง SATA HDD เป็นสื่อการสื่อสารแบบดูเพล็กซ์ครึ่ง (นั่นคือมันสามารถยอมรับหรือส่งข้อมูลได้ในแต่ละครั้งเท่านั้นไม่ใช่ทั้งสองอย่าง) ดังนั้นเมื่อไดรฟ์ถูกเก็บไว้เป็นระยะเวลานาน ๆ ถึงมันไม่สามารถอ่านข้อมูลใด ๆ กับคุณ ตามกฎทั่วไปคุณไม่ควรโหลดไดรฟ์ของคุณเกินความจุ 80% ด้วยเหตุนี้ ยิ่งไฟล์เต็มมากเท่าไรก็ยิ่งมีโอกาสมากขึ้นที่จะแตกไฟล์ซึ่งทำให้ไดร์ฟผูกระหว่างการร้องขอการอ่าน (เช่นการบล็อกการร้องขอการเขียน)

มีหลายสิ่งที่คุณสามารถทำได้เพื่อช่วยแก้ไขปัญหาเหล่านี้:

  • ลดปริมาณข้อมูลที่คุณจัดเก็บและจัดเรียงข้อมูลไดรฟ์เป็นประจำ
  • เปลี่ยนเป็นที่เก็บข้อมูลแบบแฟลช
  • เก็บข้อมูลจำนวนมากไว้ในไดรฟ์แยกจากระบบปฏิบัติการของคุณ
  • เป็นต้นไป ...

1
เมื่อใช้แฟลชไดรฟ์สามารถอ่านหรือเขียน (อีกครั้งไม่ใช่ทั้งสองอย่าง) เกือบจะทันที (9ms เป็นเวลามาตรฐานการค้นหาบน HDD ที่ SSD มักจะมี "เวลาแสวงหา" ในขอบเขตของ pico และ nano วินาที) ตำแหน่งบนดิสก์ en.wikipedia.org/wiki/…
Nathanial Meek

7
การทำต่อเนื่อง 2: นี่คือสิ่งที่เช่น$Bitmapไฟล์สำหรับ NTFS หรือตัวจัดสรรบิตแมปใน ext4 นั่นคือคำตอบนี้แพร่กระจายข้อมูลที่ผิดบางอย่าง 3. มีการอ่านและเขียนบัฟเฟอร์และการแคชที่เกิดขึ้นมากมาย คำตอบนี้ค่อนข้างอธิบายถึงผลกระทบของการแตกแฟรกเมนต์และแม้จะถูก จำกัด อยู่ที่ระบบไฟล์รุ่นเก่าแน่นอนว่ามันไม่ใช่พื้นที่ว่างของ wrt ที่แม่นยำ การเพิ่มเนื้อที่ว่างบนดิสก์ไม่ทำให้คอมพิวเตอร์เร็วขึ้น
Jason C

4
@ JasonC คุณควรเปลี่ยนความคิดเห็นของคุณเป็นคำตอบ
Celos

6
สิ่งนี้จะไม่เกิดขึ้น : "ดังนั้นเมื่อไดรฟ์ถูกเก็บไว้เป็นระยะเวลานานเพื่อค้นหาตำแหน่งที่ว่างเพื่อเขียนถึงมันจะไม่สามารถอ่านข้อมูลใด ๆ กับคุณได้" - แต่ก็ไม่ได้ นั่นไม่ใช่วิธีการทำงานของระบบไฟล์ โปรดแก้ไขคำตอบของคุณเพื่อหยุดการเผยแพร่ข้อมูลที่ผิด
RomanSt

2
@NathanialMeek คุณกำลังผสมเลเยอร์เล็กน้อย :) โหมดฮาล์ฟดูเพล็กซ์ของ SATA หมายความว่ามันสามารถส่งข้อมูลบนลวดในทิศทางเดียวเท่านั้น การอ่านและเขียนระดับที่สูงขึ้นนั้นกระทำในบล็อกเล็ก ๆ (เรียกว่า FIS) ในคิวการดำเนินการที่ระบุโดย SATA ซึ่งสามารถเป็นแบบอะซิงโครนัสและสามารถอ่านและเขียนได้อย่างรวดเร็วไปยังและจากแคชออนบอร์ดและตรงไปยังหน่วยความจำระบบผ่าน DMA คอนโทรลเลอร์ SATA ยังมีอิสระในการจัดลำดับคำสั่งใหม่เพื่อเพิ่มประสิทธิภาพ ประเด็นสำคัญ: สายไม่ได้ถูกจัดสายขณะที่การดำเนินการทางกายภาพเสร็จสิ้นและโหมดฮาล์ฟดูเพล็กซ์ของ SATA ไม่มีผลกระทบที่คุณคิด
Jason C

3

การทำตามวิธีการสั้นและหวานคำตอบที่เกินความจริงของฉัน (จำกัด เฉพาะความสับสนหลักของคุณ) คือ:

ตราบใดที่คุณ

  1. ระบบปฏิบัติการมีพื้นที่เพียงพอ (สำหรับสถานการณ์กรณีที่เลวร้ายที่สุด) เพื่อทำหน้าที่เช่นเพจจิ้ง / การแลกเปลี่ยน / ฯลฯ
  2. ซอฟต์แวร์อื่นยังมีพื้นที่เพียงพอสำหรับความต้องการของตน
  3. ฮาร์ดดิสก์มีการจัดระเบียบ

จากนั้นคุณไม่สามารถบอกความแตกต่างในการทำงานของดิสก์ที่ว่าง 80% เทียบกับดิสก์ที่ว่าง 30% และไม่ควรกังวลเกี่ยวกับสิ่งอื่นใดนอกจากการเก็บข้อมูลใหม่ที่เพิ่มมากขึ้น

สิ่งอื่นใดที่จะต้องใช้พื้นที่เก็บข้อมูลเพิ่มเติมจะนำไปสู่ประสิทธิภาพที่ต่ำเนื่องจากขณะนี้อาจมีพื้นที่ว่างเหลืออยู่

แน่นอนว่าการล้างดิสก์ด้วยเครื่องมือก็ดีเช่น:

  1. ควรทำความสะอาดไฟล์ชั่วคราวเป็นประจำเพื่อเพิ่มพื้นที่ว่างในดิสก์
  2. ไฟล์บันทึกเก่าไม่มีอะไรนอกจากเสียพื้นที่
  3. สิ่งที่เหลืออยู่ของซอฟต์แวร์ที่ติดตั้ง / ถอนการติดตั้งนั้นน่ารังเกียจมาก
  4. ต้องล้างคุกกี้หากคุณให้ความสำคัญกับความเป็นส่วนตัวออนไลน์ของคุณ
  5. ทางลัดไม่ถูกต้อง ฯลฯ

เหตุผลทั้งหมดเหล่านี้ (และอีกมากมาย) นำไปสู่ประสิทธิภาพที่แย่ลงเนื่องจากสิ่งเหล่านี้ทำให้เกิดความสับสนกับระบบปฏิบัติการเมื่อค้นหาชุดบิตที่เหมาะสมในการทำงาน


บทสรุปที่ดี แต่ไม่แน่ใจเกี่ยวกับส่วน "BUT" โดยเฉพาะอย่างยิ่ง: 3) โดยทั่วไปจะไม่มีผลกระทบต่อประสิทธิภาพที่เห็นได้ชัดแม้จะมีความผิดปกติทั่วไป 4) คุกกี้ไม่ได้เป็นปัญหาโดยเนื้อแท้และไม่คำนึงถึงความเป็นส่วนตัวความเป็นส่วนตัวไม่เกี่ยวข้องกับประสิทธิภาพหรือพื้นที่ฮาร์ดไดรฟ์ 5) ไม่สมเหตุผล สิ่งนี้ไม่ "สับสน" ระบบปฏิบัติการทั่วไปใด ๆ ระมัดระวังเกี่ยวกับ "เคล็ดลับ" และ "ปรับแต่ง" ที่คุณติดตาม ระวังเครื่องมือการล้างข้อมูลที่ไม่จำเป็นเช่นกันโดยเฉพาะในการทำความสะอาดรีจิสทรีมักจะเสี่ยงต่ออันตรายเพื่อผลประโยชน์เป็นศูนย์
Jason C

2

ผลกระทบอย่างหนึ่งต่อไดรฟ์หมุนที่ฉันไม่ได้เห็นได้กล่าวถึง: ความเร็วในการเข้าถึงและความเร็วในการถ่ายโอนข้อมูลแตกต่างกันไปตามส่วนต่าง ๆ ของดิสก์

ดิสก์หมุนด้วยความเร็วคงที่ แทร็กที่อยู่ด้านนอกของดิสก์นั้นยาวกว่าและสามารถเก็บข้อมูลได้มากกว่าหนึ่งแทร็กกว่าแทร็กที่อยู่ด้านใน หากไดรฟ์ของคุณสามารถอ่าน 100 MB / วินาทีจากแทร็คนอกสุดความเร็วของแทร็กด้านในจะน้อยกว่า 50 MB / วินาที

ในเวลาเดียวกันมีแทร็กน้อยกว่าระหว่าง 1 GB ของข้อมูลบนแทร็กด้านนอกของดิสก์มากกว่าระหว่าง 1 GB ของข้อมูลบนแทร็กด้านในสุด ดังนั้นโดยเฉลี่ยสำหรับข้อมูลที่เก็บไว้ในการเคลื่อนไหวของหัวภายนอกที่น้อยกว่าจะต้องการมากกว่าข้อมูลบนแทร็กด้านในสุด

ระบบปฏิบัติการจะพยายามใช้แทร็กนอกสุดถ้าเป็นไปได้ แน่นอนว่าเป็นไปไม่ได้หากดิสก์เต็ม การลบข้อมูลจะทำให้มีพื้นที่ว่างเมื่อความเร็วการถ่ายโอนสูงขึ้นและทำให้สิ่งต่าง ๆ ทำงานได้เร็วขึ้น ด้วยเหตุผลเดียวกันคุณควรซื้อฮาร์ดไดรฟ์แบบหมุนที่มีขนาดใหญ่กว่าที่ต้องการหากคุณต้องการความเร็ว (ตราบเท่าที่มีราคาไม่แพง) เพราะคุณจะต้องใช้เฉพาะส่วนที่เร็วที่สุดของไดรฟ์


การเพิ่ม: en.wikipedia.org/wiki/Zone_bit_recordingซึ่งเข้าชมสิ่งนี้พร้อมรายละเอียดบางอย่าง น่าสังเกต: ข้อมูลที่มีอยู่จะไม่ถูกย้ายไปรอบ ๆ สิ่งนี้อาจส่งผลต่อการจัดเก็บข้อมูลใหม่ (ขึ้นอยู่กับตำแหน่งของไดรฟ์ไม่ใช่ในพื้นที่ว่างโดยตรง) แต่จะไม่ "ชะลอตัว" ไฟล์ที่มีอยู่ที่เข้าถึงได้อย่างมีความสุขก่อนที่จะเขียนภายใน FWIW 1TB 7200RPM 3.5" ไดรฟ์ถูกที่สุดที่ผมพบใน Amazon มีอัตราการอ่านใช้เทียบค่าเฉลี่ยของ 144MB / s;. แม้การบัญชีสำหรับความแตกต่างบนแทร็กภายในและภายนอกนี้อาจจะไม่เป็นคอขวดในการใช้งานสบาย ๆ
เจสันซี

@JasonC ประสิทธิภาพของ I / O ในแง่ของปริมาณงานต่อเนื่องนั้นแทบไม่เคยกังวลในทางปฏิบัติ แม้แต่ไดรฟ์ความเร็วต่ำ 4,900 rpm นั้นจะเร็วพอสำหรับผู้ใช้ทุกคน ประสิทธิภาพของ I / O ในแง่ของการดำเนินการอ่าน / เขียนต่อวินาทีจะเป็นสิ่งที่ฆ่าประสิทธิภาพในกรณีส่วนใหญ่ ถามดูแลระบบที่คุณชื่นชอบในท้องถิ่นของคุณเกี่ยวกับการหมุน IOPS เก็บข้อมูลในระบบผู้ใช้หลายครั้งถ้าคุณมีแนวโน้ม นั่นเป็นเหตุผลใหญ่ว่าทำไมไม่มีใครปรับใช้ระบบจัดเก็บข้อมูลแบบหมุนได้สำหรับระบบหลายผู้ใช้ในทุกวันนี้ คุณไม่สามารถเข้าใกล้ IOPS ของ SSD ได้
CVN
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.