全部产品
Search
文档中心

Alibaba Cloud Linux:Mendeteksi Hang I/O Sistem File dan Lapisan Blok

更新时间:Jul 02, 2025

Hang I/O terjadi ketika sistem menjadi tidak stabil atau bahkan mati akibat permintaan I/O yang memakan waktu. Untuk mendeteksi hang I/O secara akurat, Alibaba Cloud Linux 2 dan Alibaba Cloud Linux 3 memperluas struktur data inti guna menyediakan fitur yang dapat mengidentifikasi dan mendeteksi hang I/O dengan overhead sistem yang rendah. Topik ini menjelaskan antarmuka untuk fitur tersebut serta contoh penggunaannya.

Deskripsi Antarmuka

Antarmuka

Deskripsi

/sys/block/<device>/queue/hang_threshold

Antarmuka ini memungkinkan Anda untuk menanyakan dan memodifikasi ambang batas untuk hang I/O. Satuan ambang batas: ms. Nilai default: 5000.

/sys/block/<device>/hang

Antarmuka ini memungkinkan Anda untuk menanyakan jumlah operasi I/O yang melebihi ambang batas untuk hang I/O pada perangkat.

/sys/kernel/debug/block/<device>/rq_hang

Antarmuka ini memungkinkan Anda untuk menanyakan detail tentang hang I/O.

/proc/<pid>/wait_res

Antarmuka ini memungkinkan Anda untuk menanyakan informasi tentang sumber daya yang sedang ditunggu oleh proses.

/proc/<pid>/task/<tid>/wait_res

Antarmuka ini memungkinkan Anda untuk menanyakan informasi tentang sumber daya yang sedang ditunggu oleh thread.

Tabel berikut menjelaskan variabel dalam antarmuka di atas.

Variabel

Deskripsi

<device>

Nama perangkat penyimpanan blok.

<pid>

ID proses.

<tid>

ID thread.

Contoh 1

Anda dapat memanggil antarmuka /sys/block/<device>/queue/hang_threshold untuk memodifikasi ambang batas hang I/O. Dalam contoh ini, ambang batas diubah dari 5.000 ms menjadi 10.000 ms.

  1. Ubah ambang batas hang I/O disk vdb menjadi 10.000 ms.

    echo 10000 > /sys/block/vdb/queue/hang_threshold
  2. Lihat hasil perubahan.

    cat /sys/block/vdb/queue/hang_threshold

    Contoh keluaran:

    10000

Contoh 2

Anda dapat memanggil antarmuka /sys/block/<device>/hang untuk menanyakan jumlah operasi I/O yang menyebabkan hang I/O pada disk. Dalam contoh ini, disk vdb digunakan.

Contoh perintah:

cat /sys/block/vdb/hang

Contoh keluaran:

0        1     # Nilai di sebelah kiri menunjukkan jumlah operasi baca yang menyebabkan hang I/O. Nilai di sebelah kanan menunjukkan jumlah operasi tulis yang menyebabkan hang I/O.

Contoh 3

Anda dapat memanggil antarmuka /sys/kernel/debug/block/<device>/rq_hang untuk menanyakan detail hang I/O. Dalam contoh ini, disk vdb digunakan.

Contoh perintah:

cat /sys/kernel/debug/block/vdb/rq_hang

Contoh keluaran:

ffff9e50162fc600 {.op=WRITE, .cmd_flags=SYNC, .rq_flags=STARTED|ELVPRIV|IO_STAT|STATS, .state=in_flight, .tag=118, .internal_tag=67, .start_time_ns=1260981417094, .io_start_time_ns=1260981436160, .current_time=1268458297417, .bio = ffff9e4907c31c00, .bio_pages = { ffffc85960686740 }, .bio = ffff9e4907c31500, .bio_pages = { ffffc85960639000 }, .bio = ffff9e4907c30300, .bio_pages = { ffffc85960651700 }, .bio = ffff9e4907c31900, .bio_pages = { ffffc85960608b00 }}

Keluaran di atas menunjukkan detail operasi I/O. Parameter io_start_time_ns menunjukkan waktu mulai permintaan I/O, dan parameter ini memiliki nilai yang ditetapkan. Hal ini menunjukkan bahwa permintaan I/O tidak diproses tepat waktu, sehingga mengakibatkan waktu I/O yang berkepanjangan.

Contoh 4

Anda dapat memanggil antarmuka /proc/<pid>/wait_res untuk menanyakan informasi tentang sumber daya yang sedang ditunggu oleh suatu proses. Dalam contoh ini, proses 577 digunakan.

Contoh perintah:

cat /proc/577/wait_res

Contoh keluaran:

1 0000000000000000 4310058496 4310061448    # 1 adalah nilai Field 1, 0000000000000000 adalah nilai Field 2, 4310058496 adalah nilai Field 3, dan 4310061448 adalah nilai Field 4.

Tabel berikut menjelaskan parameter dalam keluaran contoh.

Parameter

Deskripsi

Field 1

Jenis sumber daya yang sedang ditunggu oleh proses. Nilai 1 menunjukkan halaman cache dalam sistem file. Nilai 2 menunjukkan lapisan I/O blok.

Field 2

Alamat sumber daya (halaman cache atau lapisan I/O blok) yang sedang ditunggu oleh proses.

Field 3

Waktu saat proses mulai menunggu sumber daya.

Field 4

Waktu saat ini ketika file sedang dibaca. Selisih antara Field 4 dan Field 3 adalah jumlah waktu yang dihabiskan oleh proses untuk menunggu sumber daya.