Mulai dari versi kernel 4.19.81-17.al7, Alibaba Cloud Linux 2 dan Alibaba Cloud Linux 3 menyediakan antarmuka untuk meningkatkan pemantauan throttling I/O blok. Topik ini menjelaskan antarmuka tersebut serta memberikan contoh penggunaannya.
Informasi latar belakang
Throttling I/O blok Linux (BPS atau IOPS) diperlukan dalam berbagai skenario, terutama saat cgroup writeback diaktifkan. Alibaba Cloud Linux menyediakan antarmuka untuk meningkatkan pemantauan throttling I/O blok, sehingga mempermudah operasi terkait throttling I/O.
Antarmuka
Antarmuka | Deskripsi |
blkio.throttle.io_service_time | Jumlah total waktu antara pengiriman permintaan dan penyelesaian permintaan untuk operasi I/O. Satuan: nanodetik. |
blkio.throttle.io_wait_time | Jumlah total waktu yang dihabiskan oleh operasi I/O menunggu di antrian penjadwal. Satuan: nanodetik. |
blkio.throttle.io_completed | Jumlah operasi I/O yang telah selesai. Digunakan untuk menghitung latensi rata-rata pada lapisan throttling I/O blok. |
blkio.throttle.total_io_queued | Jumlah operasi I/O yang telah di-throttle. Jumlah operasi I/O yang di-throttle dalam siklus saat ini dapat dihitung berdasarkan data pemantauan periodik dan digunakan untuk menganalisis apakah latensi I/O terkait dengan throttling. |
blkio.throttle.total_bytes_queued | Jumlah byte I/O yang telah di-throttle. Satuan: byte. |
Antarmuka tersebut tersimpan di /sys/fs/cgroup/blkio/<cgroup>/, dengan <cgroup> menunjukkan grup kontrol yang digunakan.
Contoh
Anda dapat menghitung latensi I/O rata-rata disk menggunakan antarmuka di atas. Contoh ini memantau latensi tulis I/O rata-rata disk vdd setiap interval 5 detik untuk menghitung latensi I/O rata-rata disk vdd. Tabel berikut menjelaskan parameter yang relevan.
Parameter | Deskripsi |
write_wait_time<N> | Durasi throttling pada lapisan throttling I/O blok. |
write_service_time<N> | Jumlah total waktu antara pengiriman permintaan dan penyelesaian permintaan untuk operasi I/O. |
write_completed<N> | Jumlah operasi I/O yang telah selesai. |
Peroleh data pemantauan pada waktu T1.
write_wait_time1 = `cat /sys/fs/cgroup/blkio/blkcg1/blkio.throttle.io_wait_time | grep -w "254:48 Write" | awk '{print $3}'` write_service_time1 = `cat /sys/fs/cgroup/blkio/blkcg1/blkio.throttle.io_service_time | grep -w "254:48 Write" | awk '{print $3}'` write_completed1 = `cat /sys/fs/cgroup/blkio/blkcg1/blkio.throttle.io_completed | grep -w "254:48 Write" | awk '{print $3}'`Tunggu selama 5 detik, lalu peroleh data pemantauan pada waktu T2 (T1 + 5s).
write_wait_time2 = `cat /sys/fs/cgroup/blkio/blkcg1/blkio.throttle.io_wait_time | grep -w "254:48 Write" | awk '{print $3}'` write_service_time2 = `cat /sys/fs/cgroup/blkio/blkcg1/blkio.throttle.io_service_time | grep -w "254:48 Write" | awk '{print $3}'` write_completed2 = `cat /sys/fs/cgroup/blkio/blkcg1/blkio.throttle.io_completed | grep -w "254:48 Write" | awk '{print $3}'`Hitung latensi I/O rata-rata selama 5 detik menggunakan rumus berikut:
Latensi I/O rata-rata = (Total durasi I/O pada waktu T2 - Total durasi I/O pada waktu T1)/(Jumlah operasi I/O yang selesai pada waktu T2 - Jumlah operasi I/O yang selesai pada waktu T1)
avg_delay = `echo "((write_wait_time2 + write_service_time2) - (write_wait_time1+write_service_time1)) / (write_completed2 - write_completed1)" | bc`