จะรับอ่านทั้งหมดและเขียน IOPS ทั้งหมดใน Linux ได้อย่างไร


32

ฉันจะอ่านและเขียน IOPS แยกกันใน Linux โดยใช้บรรทัดคำสั่งหรือวิธีการเขียนโปรแกรมได้อย่างไร ฉันได้ติดตั้งsysstatแพ็คเกจแล้ว

โปรดบอกฉันว่าฉันจะคำนวณสิ่งเหล่านี้แยกกันโดยใช้sysstatคำสั่งแพ็คเกจได้อย่างไร

หรือเป็นไปได้ที่จะคำนวณโดยใช้ระบบไฟล์?

อดีต: /procหรือ/sysหรือ/dev

คำตอบ:


46

iostatเป็นส่วนหนึ่งของsysstatแพ็คเกจซึ่งสามารถแสดง iops โดยรวมได้หากต้องการหรือแสดงโดยคั่นด้วยการอ่าน / เขียน

รันiostatด้วยแฟล็ก -d เพื่อแสดงหน้าข้อมูลอุปกรณ์เท่านั้นและ -x สำหรับข้อมูลรายละเอียด (สถิติการอ่าน / เขียนแยกต่างหาก) คุณสามารถระบุอุปกรณ์ที่คุณต้องการข้อมูลโดยเพียงเพิ่มอุปกรณ์ในบรรทัดคำสั่ง

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

โดยใช้awkข้อมูลที่ 4 จะทำให้คุณอ่าน / วินาทีในขณะที่เขต 5 จะทำให้คุณเขียน / วินาที

อ่าน / วินาทีเท่านั้น:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4; }'

เขียน / วินาทีเท่านั้น:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $5; }'

อ่าน / วินาทีและเขียน / วินาทีคั่นด้วยเครื่องหมายทับ:

iostat -dx <your disk name> | grep <your disk name> | awk '{ print $4"/"$5; }'

โดยรวม IOPS (สิ่งที่คนส่วนใหญ่พูดถึง):

iostat -d <your disk name> | grep <your disk name> | awk '{ print $2; }'

ตัวอย่างเช่นการรันคำสั่งสุดท้ายด้วยไดรฟ์หลักของฉัน / dev / sda มีลักษณะเช่นนี้:

dan@daneel ~ $ iostat -dx sda | grep sda | awk '{ print $4"/"$5; }' 15.59/2.70

โปรดทราบว่าคุณทำไม่ได้จำเป็นต้องรูทเพื่อใช้งานสิ่งนี้ทำให้เป็นประโยชน์สำหรับผู้ใช้ที่ไม่มีสิทธิพิเศษ

TL; DR: หากคุณสนใจsdaคำสั่งต่อไปนี้จะให้ IOPS โดยรวมสำหรับคุณsda:

iostat -d sda | grep sda | awk '{ print $2; }'

หากคุณต้องการเพิ่ม IOPS ในทุกอุปกรณ์คุณสามารถใช้ awk อีกครั้ง:

iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}'

สิ่งนี้สร้างผลลัพธ์เช่น:

dan@daneel ~ $ iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}' 18.88


ขอบคุณ Mr.Dannel มันมีประโยชน์ ถ้าฉันต้องการได้รับเต็มระบบอ่าน / เขียน IOPS วิธีการได้รับ?
Shas

เมื่อฉันเรียกใช้iostat -dx 1ฉันได้รับ ans เช่นนี้Linux 2.6.35.14-106.fc14.i686 (shashi) 08/24/2015 _i686_ (2 CPU) Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 2.46 13.80 2.27 2.03 136.26 123.91 60.53 0.11 25.77 4.43 1.91 dm-0 0.00 0.00 2.35 0.77 93.07 6.11 31.86 0.17 53.73 2.59 0.81 dm-1 0.00 0.00 1.02 2.83 8.14 22.66 8.00 0.83 214.34 0.60 0.23 dm-2 0.00 0.00 1.37 11.89 34.77 95.14 9.80 1.67 126.06 0.84 1.11สำหรับ DM-0, DM-1, DM-2 ฉันควรเพิ่มซ้ำ?
shas

sdaผมได้ปรับปรุงคำตอบกับแม่แบบโดยรวมและเป็นตัวอย่างสำหรับ หากคุณต้องการเห็น IOPS สำหรับฮาร์ดไดรฟ์ของคุณให้ใช้คำสั่งสุดท้ายนั้นสำหรับ IOPS โดยรวม ( iostat -d sda | grep sda | awk '{ print $2; }')
Daneel

ไม่ฉันต้องการแยกจากกันเมื่อพูดถึงคำตอบที่ 1 บิตสับสนกับdm-*ดังนั้นฉันถามว่าฉันต้องการที่จะดำเนินการนอกจากนี้บนพาร์ติชันเหล่านั้น
Shas

อ๊ะโอเค คุณสามารถใช้คำสั่งต่อไปนี้เพื่อตรวจสอบว่าแต่ละdm-xอุปกรณ์คือ: lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'- ฉันจะอัปเดตคำตอบด้วยสิ่งนี้รวมถึงวิธีเพิ่มผลลัพธ์
Daneel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.