Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

จะตรวจสอบประสิทธิภาพของดิสก์ (IOPS และเวลาแฝง) ใน Linux ได้อย่างไร

ในบทความนี้ เราจะพูดถึงวิธีตรวจสอบประสิทธิภาพของดิสก์หรือสตอเรจอาร์เรย์ใน Linux IOPS (การดำเนินการอินพุต/เอาต์พุตต่อวินาที) คือจำนวนการดำเนินการอินพุต-เอาต์พุตที่ระบบจัดเก็บข้อมูลดำเนินการต่อวินาที (อาจเป็นดิสก์เดียว, อาร์เรย์ RAID หรือ LUN ในอุปกรณ์จัดเก็บข้อมูลภายนอก) โดยทั่วไป IOPS หมายถึงจำนวนบล็อกที่สามารถอ่านหรือเขียนไปยังสื่อได้

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

การใช้ FIO (Flexible I/O) Tool สำหรับการเปรียบเทียบสตอเรจ

ในการวัดประสิทธิภาพของดิสก์ IOPS ใน Linux คุณสามารถใช้ fio (เครื่องมือนี้พร้อมใช้งานสำหรับ CentOS/RHEL ในที่เก็บ EPEL) ดังนั้น ในการติดตั้ง fio ใน RHEL หรือ CentOS ให้ใช้ตัวจัดการแพ็คเกจ yum (dnf):

# yum install epel-release -y
# yum install fio -y

หรือ apt-get ใน Debian หรือ Ubuntu:

# apt-get install fio

จะตรวจสอบประสิทธิภาพของดิสก์ (IOPS และเวลาแฝง) ใน Linux ได้อย่างไร

จากนั้นคุณจะต้องระบุดิสก์ที่จะทดสอบ การทดสอบทำได้โดยดำเนินการอ่าน/เขียนในไดเร็กทอรีของดิสก์หรือ LUN ที่ติดตั้งอยู่

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

การทดสอบการอ่าน/เขียนแบบสุ่ม

เมื่อรันการทดสอบ ไฟล์ขนาด 8 GB จะถูกสร้างขึ้น จากนั้น fio จะอ่าน/เขียน 4KB บล็อก (ขนาดบล็อกมาตรฐาน) ด้วย 75/25% โดยจำนวนการดำเนินการอ่านและเขียนและวัดประสิทธิภาพ คำสั่งมีดังนี้:

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randrw --rwmixread=75

จะตรวจสอบประสิทธิภาพของดิสก์ (IOPS และเวลาแฝง) ใน Linux ได้อย่างไร

ฉันทำการทดสอบครั้งแรกกับอาร์เรย์ที่ประกอบด้วย SSD . สองตัว และได้ผลดี:

  • อ่าน: 3280MiB/s, IOPS เฉลี่ย 83000
  • เขียน: 110MiB/s, IOPS เฉลี่ย 28000

เนื่องจากเราได้ทำการทดสอบการอ่าน/เขียนแบบรวม ค่าสำหรับการทดสอบแยกจึงสูงขึ้น

ในการเปรียบเทียบ ฉันวัดประสิทธิภาพบน SATA ไดรฟ์:

จะตรวจสอบประสิทธิภาพของดิสก์ (IOPS และเวลาแฝง) ใน Linux ได้อย่างไร

  • อ่าน: IOPS=430, BW=1.7 MiB/s
  • เขียน: IOPS=143, BW=0.6 MiB/s

แน่นอนว่าผลลัพธ์ของ HDD นั้นแย่กว่าของ SSD

การทดสอบการอ่านแบบสุ่ม

ในการวัดประสิทธิภาพของดิสก์สำหรับการดำเนินการอ่านแบบสุ่มเท่านั้น ให้รันคำสั่งต่อไปนี้:

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=testfio --bs=4k --iodepth=64 --size=8G --readwrite=randread

ส่วนสุดท้ายของคำสั่งเปลี่ยนเป็น —readwrite=randread .

จะตรวจสอบประสิทธิภาพของดิสก์ (IOPS และเวลาแฝง) ใน Linux ได้อย่างไร

อย่างที่ฉันบอกไปก่อนหน้านี้ ประสิทธิภาพในการอ่าน/เขียนจะสูงขึ้นหากวัดแยกกัน:

READ: IOPS=150k, BW=584MiB/s (612MB/s)

การทดสอบการเขียนแบบสุ่ม

ในการวัดประสิทธิภาพของดิสก์สำหรับการดำเนินการเขียนแบบสุ่ม ให้รันคำสั่งนี้:

# fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fiotest --filename=fiotest --bs=4k --iodepth=64 --size=8G --readwrite=randwrite

WRITE: IOPS=84.7k, BW=331MiB/s (347MB/s)

ประสิทธิภาพการทำงานเขียนบน SSD ที่ดีนั้นสูงมากเช่นกัน เช่นเดียวกับการทดสอบการอ่าน ความแตกต่างเมื่อเปรียบเทียบกับการทดสอบแบบผสมจะสูงถึง 200-250 MiB/s และ 50000 IOPS

หากคุณอ้างถึงเอกสารประกอบอย่างเป็นทางการของผู้ผลิต (นี่คือ Intel SSD) ก็สามารถพูดได้ว่าค่านี้เป็นความจริง

ตัวอย่างไฟล์ Fio Config

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

# nano read.fio

และเพิ่มเนื้อหาต่อไปนี้ลงไป:

[global]
rw=randread
size=8G
filename=/tmp/testfio
ioengine=libaio
iodepth=4
invalidate=1
direct=1
[bgread]
rw=randread
iodepth=64

จากนั้นเริ่มการทดสอบ:

# fio read.fio

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

[global]
rw=randwrite
size=8G
filename=/tmp/testfio
ioengine=libaio
iodepth=4
invalidate=1
direct=1
[bgwrite]
rw=randwrite
iodepth=64

การวัดเวลาแฝงของดิสก์โดยใช้ Ioping

นอกจาก IOPS แล้ว ยังมีพารามิเตอร์สำคัญอีกตัวหนึ่งที่บ่งบอกถึงคุณภาพของพื้นที่จัดเก็บข้อมูลของคุณ นั่นคือ เวลาแฝง เวลาในการตอบสนอง คือความล่าช้าของคำขออินพุต/เอาต์พุตที่กำหนดเวลาในการเข้าถึงที่เก็บข้อมูล (วัดเป็นมิลลิวินาที) ยิ่งเวลาแฝงยิ่งสูง แอปของคุณยิ่งต้องรอจนกว่าจะได้รับข้อมูลจากดิสก์ของคุณ ค่าแฝง มากกว่า 20 ms สำหรับระบบจัดเก็บข้อมูลทั่วไปถือว่าแย่

ในการตรวจสอบเวลาแฝงของดิสก์ใน Linux ioping เครื่องมือที่ใช้:

# yum install ioping -y

# apt-get install ioping

เรียกใช้การทดสอบเวลาแฝงสำหรับดิสก์ของคุณ (เรียกใช้คำขอ 20 รายการ):

# ioping -c 20 /tmp/

4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=1 time=1.55 ms (warmup)
......................
4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=19 time=176.3 us (fast)
4 KiB <<< /tmp/ (ext4 /dev/md126p5): request=20 time=356.9 us
--- /tmp/ (ext4 /dev/md126p5) ioping statistics ---
19 requests completed in 5.67 ms, 76 KiB read, 3.35 k iops, 13.1 MiB/s
generated 20 requests in 19.0 s, 80 KiB, 1 iops, 4.21 KiB/s
min/avg/max/mdev = 176.3 us / 298.7 us / 368.9 us / 45.7 us

ค่าเฉลี่ยคือ 298.7 เรา (ไมโครวินาที) ดังนั้นเวลาแฝงเฉลี่ยในกรณีของเราคือ 0.3 ms , เยี่ยมมาก

ค่าเวลาแฝงสามารถระบุได้ใน เรา (ไมโครวินาที) หรือ มิลลิวินาที (มิลลิวินาที). ในการรับค่า ms จากค่า us หนึ่ง ให้หารด้วย 1,000

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