โครงสร้างพื้นฐาน OFFSHORE ส่วนตัว
ที่จัดเก็บและกู้คืนขั้นสูง · อ่าน 6 นาที

วัดประสิทธิภาพ NVMe โดยไม่หลอกตัวเอง

กำหนดรูปแบบ I/O ควบคุมผลของแคช และตรวจสอบการกระจายความหน่วงก่อนสรุปผลเกี่ยวกับแอปพลิเคชันจากการทดสอบดิสก์

โดย SwissOctet Editorial
คำตอบตรงประเด็น

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

01

เริ่มต้นด้วยคำถามเรื่องการจัดเก็บ ไม่ใช่คะแนน

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

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

02

อธิบายภาระงานในแง่ที่ทำซ้ำได้

บันทึกขนาดการดำเนินการ รูปแบบลำดับหรือสุ่ม สัดส่วนการอ่านต่อการเขียน จำนวนงาน และความลึกของคิว รวมขนาดชุดข้อมูลและระยะเวลาทดสอบ เอกสาร fio อธิบายการควบคุมภาระงานเหล่านี้และเอนจิน I/O ที่มีอยู่ ความลึกที่ตั้งใจไว้อาจไม่บรรลุด้วยทุกเอนจินหรือทุกการตั้งค่า ดังนั้นอ่านพฤติกรรมที่รายงานควบคู่กับการกำหนดค่าที่คุณร้องขอ

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

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

ควบคุมแคชโดยไม่แสร้งว่าไม่สำคัญ

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

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

04

อ่านค่าความหน่วงส่วนปลายควบคู่กับปริมาณงาน

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

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

05

ให้การทดสอบได้รับอนุญาตและไม่ทำลายข้อมูล

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

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

06

ปิดวงจรด้วยหลักฐานจากแอปพลิเคชัน

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

Pulse NVMe และการกำหนดค่าเฉพาะที่เลือกไว้ระบุการจัดเก็บ NVMe ในแค็ตตาล็อก SwissOctet ป้ายกำกับของ它们是ข้อกำหนดทางเทคนิค ไม่ใช่ benchmark แอปพลิเคชันที่เผยแพร่ ใช้วิธีการควบคุมเพื่อประเมินสภาพแวดล้อมที่ส่งมอบและเก็บเงื่อนไขไว้พร้อมกับสิ่งที่ค้นพบ การตัดสินใจจะแข็งแกร่งขึ้นเมื่อการวัดการจัดเก็บและผลลัพธ์ที่ผู้ใช้มองเห็นตอบคำถามเดียวกัน

เปลี่ยนเป็น行動

รายการตรวจสอบปฏิบัติของคุณ

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

รายละเอียดที่สำคัญ

การคัดลอกแบบลำดับเพียงพอต่อการเปรียบเทียบการจัดเก็บฐานข้อมูลหรือไม่+

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

Direct I/O พิสูจน์การเขียนที่ทนทานได้หรือไม่+

ไม่ใช่ การบัฟเฟอร์และความทนทานเป็นเรื่องแยกกัน จับคู่พฤติกรรมการซิงโครไนซ์ที่แอปพลิเคชันต้องการ

ฉันสามารถเผยแพร่การทดสอบหนึ่งครั้งเป็นความเร็วแผนที่รับประกันได้หรือไม่+

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

แหล่งอ้างอิงหลัก

ไปที่ต้นทาง

แหล่งอ้างอิงเหล่านี้สนับสนุนแนวคิดทางเทคนิคในคู่มือนี้ ปฏิบัติตามเอกสารปัจจุบันก่อนเปลี่ยนระบบโปรดักชัน

  1. fio: เอกสารเครื่องมือทดสอบ I/O แบบยืดหยุ่น fio.readthedocs.io
  2. NVM Express: ภาพรวมข้อกำหนดและคำถามที่พบบ่อย nvmexpress.org
  3. เคอร์เนล Linux: Pressure Stall Information docs.kernel.org

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

เชื่อมโยงความรู้

โครงสร้างพื้นฐานที่เกี่ยวข้อง

รักษาสายไว้

บันทึกภาคสนามถัดไปของคุณ

สำรวจทุกคู่มือ
บันทึกภาคสนาม / 01
ที่จัดเก็บและกู้คืนพื้นฐาน

เมื่อ NVMe สร้างความแตกต่างให้แอปพลิเคชันของคุณ

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

อ่าน 4 นาทีอ่านคู่มือ
บันทึกภาคสนาม / 02
ที่จัดเก็บและกู้คืนประยุกต์

สแนปช็อตและการสำรองข้อมูล: เลือกความล้มเหลวที่คุณต้องรอด

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

อ่าน 4 นาทีอ่านคู่มือ
บันทึกภาคสนาม / 03
ที่จัดเก็บและกู้คืนพื้นฐาน

ที่จัดเก็บแบบ object, file หรือ block: เลือกอินเทอร์เฟซที่แอปพลิเคชันของคุณต้องการ

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

อ่าน 4 นาทีอ่านคู่มือ