IOPS

**IOPS** () หรือ **จำนวนปฏิบัติการ [[อินพุต/เอาต์พุต]] ต่อวินาที** อ่านออกเสียง *ไอ-ออปส์* ใช้เป็นมาตรวัดประสิทธิภาพการทำงานของหน่วยเก็บข้อมูลทางคอมพิวเตอร์ อาธิเช่น ฮาร์ดดิสก์ และโซลิดสเตตไดรฟ์ ดังเช่นเครื่องมือในการวัดประสิทธิภาพอื่น ๆ ปริมาณ IOPS ไม่ได้รับประกันถึงการใช้งานจริงในชีวิตประจำวัน เป็นเพียงการวัดเชียงเปรียบเทียบเท่านั้น

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

## รูปแบบการวัด
thumb|right|เปรียบเทียบลักษณะการเข้าถึงข้อมูลแบบต่อเนื่อง กับแบบสุ่ม
โดยทั่วไปปริมาณ IOPS จะวัดในกรณีแบบอ่านเขียนต่อเนื่องซึ่งก็มักจะใช้การส่งข้อมูลครั้งละมาก ๆ เช่น 128 กิโลไบต์ หรือไม่ก็อ่านเขียนแบบสุ่มซึ่งมักจะใช้การส่งข้อมูลทีละน้อย ๆ เช่น 4 กิโลไบต์

รูปแบบการวัด IOPS ที่พบเห็นได้ทั่วไป

สำหรับฮาร์ดดิสก์ และหน่วยความจำที่อาศัยการทำงานเชิงกล มักจะมีค่า random IOPS แปรผันตามเร็วในการเลื่อนหัวอ่านไปยังตำแหน่งที่ต้องการจะเขียนหรืออ่าน ซึ่งก็ย่อมขึ้นกับความเร็วในการหมุดของฮาร์ดดิสก์เองด้วย ในขณะที่หน่วยความจำแบบแฟลชอย่างเช่นโซลิดสเตตไดรฟ์ทั่วไปนั้นค่า random IOPS จะขึ้นกับความสามารถของตัวควบคุมและประสิทธิภาพของหน่วยความจำที่นำมาใช้ ส่วนค่า sequential IOPS ยิ่งถ้าหากส่งข้อมูลคราวละมาก ๆ เช่น 128 กิโลไบต์ ด้วยแล้วค่านี้จะเป็นตัวกำหนดอัตราการส่งข้อมูลสูงสุดของอุปกรณ์ได้ และหลายครั้งก็แสดงค่านี้ในหน่วยของ เมกะไบต์ต่อวินาที ซึ่งเป็นไปตามความสัมพันธ์ดังนี้

\text{IOPS} * \text{DataTransferSize} = \text{BytesPerSec}    (และสุดท้ายมักจะแปลงจากไบต์ต่อวินาทีเป็นเมกะไบต์ต่อวินาที)


ในฮาร์ดดิสก์บางชนิดมีความสามารถในการจัดลำดับก่อนหลังการทำงานของคำสั่งที่เข้ามาพร้อม ๆ กันได้ เช่นเทคนิค Tagged Command Queing (TCQ) และ Native Command Queuing (NCQ) การจัดลำดับก่อนหลังการทำงานนั้นเป็นการลดระยะทางการเคลื่อนที่ของหัวอ่าน และช่วยลดระยะเวลารอการหมุนของจานได้มากจึงส่งผลทำให้ IOPS สูงขึ้นได้มากเช่นกัน ซึ่งต้องอาศัยวงจรควบคุมที่มีความซับซ้อนมากขึ้น ทำให้ฮาร์ดดิสก์ SATA ส่วนใหญ่ในท้องตลาดไม่มีความสามารถนี้ติดตัวมาด้วย ส่วนฮาร์ดดิสก์ระดับองค์กร เช่น Western Digital Raptor และ Seagate Barracuda NL สามารถเพิ่ม IOPS ได้มากถึงเท่าตัวในกรณีที่มีคำสั่งเข้ามาในคิวเป็นปริมาณมาก ๆ

ฮาร์ดดิสก์ทั่วไปมี IOPS ของการอ่านและเขียนเท่า ๆ กัน แต่โซลิตสเตตไดรฟ์แบบแฟลชนั้นความสามารถในการเขียนด้อยกว่าการอ่านอย่างเห็นได้ชัด เนื่องจากไม่สามารถเขียนทับไปยังเซลล์ข้อมูลได้โดยตรง ต้องอาศัยการลบทั้งบล็อกข้อมูลซึ่งก็ต้องทำการคัดลอกข้อมูลบางส่วนไปยังบล็อกอื่นก่อนเรียกกระบวนการนี้ว่า garbage collection จึงเป็นเหตุผลที่ว่าการทดสอบ IOPS จึงต้องกำหนดให้แน่ชัดว่าจะวัดในส่วนการเขียน หรือการอ่าน หรือทั้งคู่และเป็นอัตราส่วนเท่าไหร่

โซลิดสเตตไดรฟ์ยุคใหม่ เช่น Intel X25-E มีค่า IOPS สูงถึง 10,000 IOPS การทดสอบโดย Xssist โดยใช้โปรแกรม IOmeter, การส่งข้อมูลคราวละ 4 กิโลไบต์, การเข้าถึงแบบสุ่ม, อัตราส่วนการ อ่าน/เขียน อยู่ที่ 70/30 และส่งคำสั่งพร้อมกัน 4 คำสั่ง ตัวเลข 10,000 IOPS จะตกลงมาอยู่ที่ 4,000 IOPS ใน 8 นาที และแกว่งระหว่าง 3,000 ถึง 4,000 ตั้งแต่นาทีที่ 50 และเป็นเช่นนี้ต่อไปในการทดสอบกว่า 8 ชั่วโมง แต่อย่างไรก็ดีตัวเลข 3,000 IOPS นั้นก็สูงกว่าฮาร์ดดิสก์ที่สามารถทำได้ในหลักร้อย IOPS อยู่มาก และโซลิดสเตตไดรฟ์บางตัวเช่น OCZ RevoDrive 3 x2 PICe ซึ่งใช้ตัวควมคุม SandForce 
ได้แสดงให้เห็นว่าความเร็วในการเขียนกับความเร็วในการอ่านห่างกันไม่มากอย่างที่เป็นมาในอดีต

## อ้างอิง

หมวดหมู่:การส่งผ่านข้อมูล
หมวดหมู่:มาตรวัดทางคอมพิวเตอร์