สวัสดี ไบรอัน วัฒตาสิริ
เมื่อเปิดใช้งาน “Enable write caching on the device” ระบบ Windows จะบังคับ flush แคชแบบ volatile ลงดิสก์จริงในหลายกรณี เช่นเมื่อมีการเรียก API ที่มี flag FILE_FLAG_WRITE_THROUGH, เมื่อแอปพลิเคชันหรือบริการเรียก FlushFileBuffers(), เมื่อระบบเข้าสู่โหมด shutdown/restart/hibernate, และเมื่อมีการ unmount หรือ eject volume โดยตรง ตัวควบคุมดิสก์เองก็อาจ trigger flush ตาม internal timer หรือเมื่อ buffer เต็ม แต่ Windows ไม่เปิดให้ปรับแต่ง interval ของการ flush โดยตรงผ่าน UI หรือ Group Policy การควบคุมได้เพียงระดับแอปพลิเคชันหรือ registry ที่เกี่ยวข้องกับ write-through I/O เท่านั้น ซึ่งไม่ใช่การตั้งค่า global ที่ปรับ delay ได้อย่างยืดหยุ่น.
หากตั้ง “Better performance” แต่ปิด write caching ที่อุปกรณ์ ผลคือระบบยังคงใช้ policy ของ Better performance เช่นการอนุญาตให้ background operations และ delayed flush โดย OS แต่เนื่องจาก caching ถูกปิดที่ระดับ device driver การเขียนจะลงดิสก์ทันทีโดยไม่ผ่าน cache ของตัวอุปกรณ์ พฤติกรรมจึงใกล้เคียงกับ “Quick removal” แต่ไม่เหมือนเสียทีเดียว เพราะ Quick removal ยังมีการ disable queue optimization บางอย่างเพื่อให้การถอดอุปกรณ์ปลอดภัยโดยไม่ต้อง eject อย่างเป็นทางการ ในขณะที่ Better performance + no caching ยังคงต้องการขั้นตอน eject เพื่อความถูกต้องของ protocol.
สำหรับเครื่องที่ใช้ HDD และมีความเสี่ยงจากการตัดไฟทันทีหลังการเขียน การตั้งค่า “Quick removal” ให้ความปลอดภัยสูงสุด เนื่องจากข้อมูลจะถูกเขียนลงดิสก์โดยตรงโดยไม่พึ่ง cache ที่อาจสูญหายเมื่อไฟดับ แม้ประสิทธิภาพจะลดลง แต่เป็นวิธีที่มั่นใจได้ว่าข้อมูลจะไม่ค้างอยู่ใน volatile cache และสูญหายไป.
แฮร์รี่.