ในกรณีที่มีหลายเลเยอร์ (ฟิสิคัลไดรฟ์ -> md -> dm -> lvm) ตัวตั้งเวลาการตั้งค่า readahead และการตั้งค่าดิสก์อื่น ๆ จะทำงานอย่างไร
ลองนึกภาพคุณมีหลายดิสก์ (/ dev / sda - / dev / sdd) ทุกส่วนของอุปกรณ์ RAID ซอฟต์แวร์ (/ dev / md0) สร้างขึ้นด้วย mdadm แต่ละอุปกรณ์ (รวมถึงดิสก์ที่มีอยู่จริงและ / dev / md0) มีการตั้งค่าของตัวเองสำหรับตัวจัดกำหนดการ IO ( เปลี่ยนเช่นนั้น ) และ readahead ( เปลี่ยนโดยใช้ blockdev ) เมื่อคุณโยนสิ่งต่าง ๆ เช่น dm (crypto) และ LVM คุณจะเพิ่มเลเยอร์มากขึ้นด้วยการตั้งค่าของพวกเขาเอง
ตัวอย่างเช่นหากอุปกรณ์ทางกายภาพมีการอ่านล่วงหน้า 128 บล็อกและ RAID มี readahead 64 บล็อกซึ่งเป็นเกียรติเมื่อฉันอ่านจาก / dev / md0? ไดรเวอร์ md พยายามอ่าน 64 บล็อกซึ่งไดรเวอร์อุปกรณ์ฟิสิคัลแปลเป็น 128 บล็อกแล้วหรือไม่? หรือ RAID readahead "ส่งผ่าน" ไปยังอุปกรณ์อ้างอิงทำให้ 64 บล็อกอ่านหรือไม่
คำถามแบบเดียวกันนี้มีไว้สำหรับตัวกำหนดเวลาหรือไม่ ฉันต้องกังวลเกี่ยวกับตัวกำหนดเวลา IO หลายเลเยอร์และวิธีการโต้ตอบหรือไม่หรือ / dev / md0 มีผลแทนที่ตัวกำหนดเวลาพื้นฐานอย่างมีประสิทธิภาพหรือไม่
ในความพยายามของฉันที่จะตอบคำถามนี้ฉันได้ขุดข้อมูลที่น่าสนใจเกี่ยวกับ schedulers และเครื่องมือที่อาจช่วยให้เข้าใจสิ่งนี้:
/sys/block/md0/queue/scheduler
บนระบบของฉันnone
แต่เป็นทางเลือกในการมี