ไฟล์ที่ใช้การบีบอัด NTFS แตกไฟล์ลงในดิสก์หรือในหน่วยความจำหรือไม่?


14

การแตกไฟล์ใน NTFS ทำงานใน Windows ได้อย่างไร? ตามที่ Microsoft นั้นการแตกไฟล์แบบ NTFS นั้นทำได้โดยการขยายไฟล์จากนั้นก็ใช้มัน ฟังดูดี แต่คำถามของฉันคือกระบวนการนี้เกิดขึ้นทางเทคนิคอย่างไร

Windows โหลดไฟล์บีบอัดลงในหน่วยความจำขยายในหน่วยความจำและอ่านจากหน่วยความจำหรือไม่ หรือโหลดไฟล์บีบอัดลงในหน่วยความจำขยายไปยังดิสก์หรือในหน่วยความจำเขียนลงดิสก์แล้วอ่านหรือไม่

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


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

คำตอบ:


19

Windows ขยายไฟล์ลงในหน่วยความจำ การทำเช่นนี้บนดิสก์จะกำจัดการปรับปรุงความเร็วอย่างสมบูรณ์และจะทำให้การเขียนดิสก์ที่ไม่จำเป็นจำนวนมาก ดูตอนท้ายของบทความบล็อกนี้ไมโครซอฟท์ไฟล์ NTFS เบาบางและการบีบอัด :

  1. NTFS กำหนดหน่วยการบีบอัดที่กำลังเข้าถึง
  2. ช่วงการจัดสรรหน่วยการบีบอัดทั้งหมดจะถูกอ่าน
  3. หากหน่วยไม่ถูกบีบอัดเราจะข้ามไปยังขั้นตอนที่ 5 มิฉะนั้น NTFS จะพยายามจอง (แต่ไม่จัดสรร) พื้นที่ที่ต้องใช้ในการเขียน CU ที่คลายการบีบอัดกลับไปที่ดิสก์ หากมีพื้นที่ว่างไม่เพียงพอบนดิสก์แอปพลิเคชันอาจได้รับ ERROR_DISK_FULL ระหว่างการอ่าน
  4. จุฬาฯ จะแตกในหน่วยความจำ
  5. ช่วงไบต์ที่คลายบีบอัดจะถูกแมปลงในแคชและกลับสู่แอปพลิเคชันที่ร้องขอ
  6. ...

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

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

หากคุณเขียนไปยังไฟล์บีบอัดเป็นจำนวนมากคุณสามารถเห็นความแปรปรวนของความเร็วได้มากมายเนื่องจากอัลกอริทึมการบีบอัดที่ใช้ (LZ)

อ่านเพิ่มเติม: การบีบอัด NTFS มีผลต่อประสิทธิภาพได้อย่างไร


1
> หากคุณมีหน่วยความจำเหลือน้อยข้อมูลที่คลายการบีบอัดอาจถูกส่งออกเป็นเพจและเขียนไปยังดิสก์ในไฟล์หน้า - อัลกอริธึมสมาร์ทก็จะโยนข้อมูลที่คลายการบีบอัดแล้วทำการแตกอีกครั้งในการเข้าถึงครั้งต่อไป สมมติฐานของการบีบอัด (de) เป็นคำสั่งของขนาดเร็วกว่าการเพจ ที่จริงแล้วเกิดอะไรขึ้นกับแคชของหน้า - และฉันคาดหวังว่า Windows จะใส่ข้อมูลที่แตกแล้วลงในแคชตัวเดียวกัน (ใน Windows ทุกไฟล์ R / W ผ่านไปแคชหน้าแม้ในขณะที่มันเขียนผ่าน.)
บ๊อบ

แน่นอนว่าอาจเป็นเช่นนั้น ฉันได้ปรับคำตอบส่วนนั้นแล้วขอบคุณ
Ben N

"ช่วงไบต์ที่คลายการบีบอัดจะถูกแมปไว้ในแคช " คุณรู้ไหมว่านิยามของแคชอยู่ที่นี่? แค่สงสัย. ----- "มิฉะนั้น NTFS จะพยายามสงวนพื้นที่ที่จำเป็นในการเขียน CU ที่คลายการบีบอัดกลับไปที่ดิสก์" เรารู้เหตุผลที่แน่นอนสำหรับสิ่งนี้หรือไม่? Microsoft สมมติว่าที่นี่การแก้ไขไฟล์จะไม่เพิ่มขนาดที่จะทำให้ขนาดที่บีบอัดรวมเกินขนาดที่ไม่บีบอัดดั้งเดิมหรือไม่ ดูเหมือนว่าเป็นข้อสันนิษฐานดูด
ก่อให้เกิดกระแสใต้ทุกที่

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

1
@CausingUnderflowsEverywhere แคชนั้นเป็นแคชIOซึ่งทำให้การอ่านหลายครั้งไม่จำเป็นต้องได้รับการบริการจากดิสก์ NTFS หวังว่าข้อมูลใหม่จะพอดีกับ CU ที่มีอยู่ แต่จะทำให้แน่ใจว่ามีที่ว่างถ้าไม่ ฉันเข้าใจว่าแคช IO ไม่ได้เฉพาะเจาะจงกับแอปพลิเคชั่นเดียว แต่ข้อมูลจะจบลงในหน่วยความจำส่วนตัวของโปรแกรมเมื่อมีการเรียกใช้
Ben N
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.