การทดสอบการจัดเก็บที่มีประโยชน์จะจับคู่ขนาดการดำเนินการ รูปแบบการเข้าถึง ภาวะพร้อมกัน และข้อกำหนดด้านความทนทาน เข้ากับแอปพลิเคชัน บันทึกเงื่อนไขการทดสอบและการกระจายความหน่วง แล้วยืนยันผลลัพธ์ด้วยการวัดจากแอปพลิเคชัน
เริ่มต้นด้วยคำถามเรื่องการจัดเก็บ ไม่ใช่คะแนน
ตัดสินใจว่าคุณต้องรู้อะไรก่อนรันการทดสอบ benchmark คุณอาจกำลังตรวจสอบการคอมมิตฐานข้อมูลที่ช้า ปริมาณงานการกระจายไฟล์ หรือกระบวนการบิลด์ที่สร้างไฟล์ขนาดเล็กจำนวนมาก ภาระงานเหล่านี้ไม่ได้ขอให้ดิสก์ทำสิ่งเดียวกัน การคัดลอกแบบลำดับขนาดใหญ่อาจดูน่าประทับใจ แต่บอกได้น้อยมากเกี่ยวกับความล่าช้าที่บริการซึ่งอ่านแบบสุ่มขนาดเล็กประสบอยู่
NVMe ถูกออกแบบสำหรับสื่อที่ไม่ลบเลือนและ I/O แบบขนานที่มีประสิทธิภาพ แต่ชื่อโปรโตคอลไม่ได้อธิบายทุกส่วนของเส้นทางการจัดเก็บแบบโฮสต์ การเสมือน ระบบไฟล์ การแย่งชิงทรัพยากร และแอปพลิเคชันยังคงมีความสำคัญ เขียนสมมติฐานการทดสอบ เช่น ความหน่วงของการจัดเก็บกำลังทำให้การดำเนินการหนึ่งช้าลงหรือไม่ แทนที่จะพยายามสร้างตัวเลขที่พิสูจน์ว่าเซิร์ฟเวอร์ทั้งหมดเร็ว
อธิบายภาระงานในแง่ที่ทำซ้ำได้
บันทึกขนาดการดำเนินการ รูปแบบลำดับหรือสุ่ม สัดส่วนการอ่านต่อการเขียน จำนวนงาน และความลึกของคิว รวมขนาดชุดข้อมูลและระยะเวลาทดสอบ เอกสาร fio อธิบายการควบคุมภาระงานเหล่านี้และเอนจิน I/O ที่มีอยู่ ความลึกที่ตั้งใจไว้อาจไม่บรรลุด้วยทุกเอนจินหรือทุกการตั้งค่า ดังนั้นอ่านพฤติกรรมที่รายงานควบคู่กับการกำหนดค่าที่คุณร้องขอ
เก็บสำเนาคำอธิบายการทดสอบไว้ข้างผลลัพธ์ บันทึกระบบปฏิบัติการ ระบบไฟล์ ตัวเลือกการเมานต์ กิจกรรมของบริการ และความจุที่มีอยู่ หากเปรียบเทียบการกำหนดค่า ให้เปลี่ยนเงื่อนไขที่เกี่ยวข้องทีละอย่าง การทดสอบที่มีรูปแบบการเข้าถึงหรือภาวะพร้อมกันต่างกันไม่สามารถนำเสนออย่างเป็นธรรมราวกับว่าเปลี่ยนเฉพาะสื่อจัดเก็บ
| รูปแบบแอปพลิเคชัน | มิติการทดสอบที่ต้องอธิบาย | ผลลัพธ์ที่ต้องตรวจสอบ |
|---|---|---|
| การส่งไฟล์ขนาดใหญ่ | การอ่านแบบลำดับและไคลเอนต์พร้อมกัน | ปริมาณงานต่อเนื่องและการใช้ CPU |
| การค้นหาบันทึก | การอ่านแบบสุ่มขนาดเล็กและภาวะพร้อมกันที่เป็นตัวแทน | การกระจายความหน่วงและการดำเนินการที่เสร็จสมบูรณ์ |
| ธุรกรรมที่ทนทาน | ข้อกำหนดการเขียนและการซิงโครไนซ์ | ความล่าช้าที่เกี่ยวข้องกับการคอมมิต ไม่ใช่ความเร็วการเขียนแบบบัฟเฟอร์เพียงอย่างเดียว |
| การบิลด์หรือการแตกไฟล์ | การดำเนินการไฟล์ขนาดเล็กแบบผสม | ระยะเวลางานแบบครบวงจรและการรอ I/O |
ควบคุมแคชโดยไม่แสร้งว่าไม่สำคัญ
ชุดข้อมูลที่พอดีกับหน่วยความจำอาจวัดพฤติกรรมแคชเป็นส่วนใหญ่หลังรอบแรก ซึ่งมีประโยชน์ได้หากแอปพลิเคชันได้รับประโยชน์จากแคชเดียวกันตามปกติ แต่ไม่ควรติดป้ายว่าเป็นประสิทธิภาพของอุปกรณ์ดิบ เลือกอย่างตั้งใจว่าการทดสอบตรวจสอบเส้นทางแอปพลิเคชันที่อุ่น ชุดข้อมูลที่เย็นกว่า หรือโหมด I/O ที่ตั้งใจลดผลของบัฟเฟอร์ระบบปฏิบัติการ
การรองรับ Direct-I/O และการจัดแนวขึ้นอยู่กับแพลตฟอร์มและเอนจิน อีกทั้งไม่ได้แสดงข้อกำหนดด้านความทนทานของแอปพลิเคชันโดยอัตโนมัติ หรือกำจัดแคชทั้งหมดในสแตก ระบุโหมดที่เลือกอย่างชัดเจน และหลีกเลี่ยงการเปรียบเทียบการทดสอบแบบบัฟเฟอร์กับการทดสอบแบบไม่บัฟเฟอร์ราวกับเป็นงานเดียวกัน แยกช่วงวอร์มアップและช่วงที่วัดออกจากกันเมื่อช่วยในการตีความ
อ่านค่าความหน่วงส่วนปลายควบคู่กับปริมาณงาน
ความหน่วงเฉลี่ยอาจซ่อนการดำเนินการที่ช้าซึ่งส่งผลต่อคำขอจริง ตรวจสอบเปอร์เซ็นไทล์ที่รายงานและจำนวนตัวอย่างที่รองรับ เปอร์เซ็นไทล์สูงอธิบายขอบเขตที่ต่ำกว่าซึ่งสัดส่วนที่ระบุของการดำเนินการที่สังเกตพบตกลงในช่วงการทดสอบนั้น ไม่ใช่การรับประกันบริการถาวร การรันสั้นหรือไม่เป็นตัวแทนให้หลักฐานจำกัดเกี่ยวกับช่วงการผลิตที่ยุ่ง
ความลึกของคิวที่สูงขึ้นอาจปรับปรุงปริมาณงานที่เสร็จสมบูรณ์ในขณะที่เพิ่มเวลารอ การแลกเปลี่ยนนี้อาจเหมาะกับการประมวลผลแบบกลุ่มและเป็นผลเสียต่อบริการแบบโต้ตอบ เปรียบเทียบผลลัพธ์ที่ภาวะพร้อมกันคล้ายกับแอปพลิเคชัน และตรวจสอบ CPU และแรงกดดัน I/O ไปพร้อมกัน หยุดก่อนที่การทดสอบจะสร้างความรบกวนที่ไม่จำเป็นต่อภาระงานอื่นที่ใช้สภาพแวดล้อมร่วมกัน
ให้การทดสอบได้รับอนุญาตและไม่ทำลายข้อมูล
ใช้ไดเรกทอรีทดสอบเฉพาะหรือวอลุ่มแบบใช้แล้วทิ้งที่เตรียมไว้ โดยมีพื้นที่ว่างเพียงพอและแผนการล้างข้อมูลที่ชัดเจน อย่าชี้ benchmark การเขียนไปยังอุปกรณ์ดิบหรือชุดข้อมูลการผลิตที่ยังไม่ได้ตรวจสอบ ตรวจสอบเป้าหมายและพฤติกรรมการเขียนของเครื่องมือก่อนเริ่ม และเริ่มด้วยการรันแบบจำกัด I/O สังเคราะห์สามารถใช้ความจุและรบกวนบริการได้ แม้จะไม่ได้เขียนทับไฟล์ที่มีประโยชน์
สำหรับการประเมินที่คล้ายการผลิต ให้ตกลงช่วงเวลาบำรุงรักษาและเก็บการตรวจสอบแอปพลิเคชันไว้ ใช้ข้อมูลที่สร้างขึ้นเมื่อเป็นไปได้ อย่าสรุปความน่าเชื่อถือของการจัดเก็บจาก speed test การตรวจสอบความสมบูรณ์ การสำรองข้อมูล และการกู้คืนเป็นงานแยกกัน อุปกรณ์ที่ทำ benchmark เสร็จยังต้องมีกลยุทธ์การกู้คืนสำหรับการลบ ความผิดพลาดของซอฟต์แวร์ หรือการสูญเสียเครื่อง
ปิดวงจรด้วยหลักฐานจากแอปพลิเคชัน
สมมติว่าบริการรายงานใช้เวลาส่วนใหญ่รอการอ่านแบบสุ่ม ทีมทดสอบรูปแบบการอ่านที่เป็นตัวแทน แล้วรันรายงานจริงซ้ำกับข้อมูลที่เทียบเคียงได้ หากรายงานดีขึ้นในขณะที่งานอื่นคงที่ ผลลัพธ์สนับสนุนสมมติฐานเรื่องการจัดเก็บ หากไม่ดีขึ้น ให้ตรวจสอบการออกแบบคิวรี หน่วยความจำ หรือ dependency อื่น แทนการรันการทดสอบสังเคราะห์ที่กว้างขึ้นซ้ำ
Pulse NVMe และการกำหนดค่าเฉพาะที่เลือกไว้ระบุการจัดเก็บ NVMe ในแค็ตตาล็อก SwissOctet ป้ายกำกับของ它们是ข้อกำหนดทางเทคนิค ไม่ใช่ benchmark แอปพลิเคชันที่เผยแพร่ ใช้วิธีการควบคุมเพื่อประเมินสภาพแวดล้อมที่ส่งมอบและเก็บเงื่อนไขไว้พร้อมกับสิ่งที่ค้นพบ การตัดสินใจจะแข็งแกร่งขึ้นเมื่อการวัดการจัดเก็บและผลลัพธ์ที่ผู้ใช้มองเห็นตอบคำถามเดียวกัน
รายการตรวจสอบปฏิบัติของคุณ
- กำหนดคำถามของแอปพลิเคชันก่อน
- บันทึกรูปแบบ ขนาดบล็อก ภาวะพร้อมกัน และระยะเวลา
- ระบุสมมติฐานเรื่องแคชและโหมด I/O
- ตรวจสอบเปอร์เซ็นไทล์ความหน่วงควบคู่กับปริมาณงาน
- ใช้เป้าหมายแบบใช้แล้วทิ้งที่ตรวจสอบแล้วและโหลดเริ่มต้นแบบจำกัด
- ยืนยันสิ่งที่ค้นพบด้วยการทดสอบแอปพลิเคชัน
รายละเอียดที่สำคัญ
การคัดลอกแบบลำดับเพียงพอต่อการเปรียบเทียบการจัดเก็บฐานข้อมูลหรือไม่+
โดยปกติไม่เพียงพอ การเข้าถึงฐานข้อมูลอาจเกี่ยวข้องกับการอ่านแบบสุ่มขนาดเล็ก การเขียน และการซิงโครไนซ์ จำลองรูปแบบที่เกี่ยวข้องและตรวจสอบแอปพลิเคชันจริง
Direct I/O พิสูจน์การเขียนที่ทนทานได้หรือไม่+
ไม่ใช่ การบัฟเฟอร์และความทนทานเป็นเรื่องแยกกัน จับคู่พฤติกรรมการซิงโครไนซ์ที่แอปพลิเคชันต้องการ
ฉันสามารถเผยแพร่การทดสอบหนึ่งครั้งเป็นความเร็วแผนที่รับประกันได้หรือไม่+
ไม่ใช่ เผยแพร่เงื่อนไขและขอบเขตของมัน ผลลัพธ์ที่วัดจากการรันหนึ่งครั้งไม่ใช่การรับประกันระดับบริการหรือประสิทธิภาพในอนาคต
ไปที่ต้นทาง
แหล่งอ้างอิงเหล่านี้สนับสนุนแนวคิดทางเทคนิคในคู่มือนี้ ปฏิบัติตามเอกสารปัจจุบันก่อนเปลี่ยนระบบโปรดักชัน
- fio: เอกสารเครื่องมือทดสอบ I/O แบบยืดหยุ่น fio.readthedocs.io
- NVM Express: ภาพรวมข้อกำหนดและคำถามที่พบบ่อย nvmexpress.org
- เคอร์เนล Linux: Pressure Stall Information docs.kernel.org
คำแนะนำด้านบรรณาธิการโดย SwissOctet ตัวอย่างมีไว้เพื่อประกอบ ข้อมูลจำเพาะของบริการ ตัวเลือกที่มี และเงื่อนไขตามสัญญาต้องได้รับการตรวจสอบแยกต่างหาก