全部产品
Search
文档中心

Alibaba Cloud Linux:Konfigurasikan fitur throttling berbasis bobot blk-iocost

更新时间:Jul 15, 2025

Fitur throttling berbasis bobot blk-iocost adalah peningkatan Alibaba Cloud Linux untuk fitur throttling disk berbasis bobot dari subsistem I/O cgroup (blkcg). blk-iocost adalah pengontrol I/O yang digunakan untuk mengalokasikan bandwidth ke operasi I/O pada perangkat blok berdasarkan prioritas aplikasi atau proses. blk-iocost juga dapat mengontrol penggunaan bandwidth I/O perangkat blok oleh aplikasi atau proses tertentu berdasarkan nilai bobot yang ditentukan. blk-iocost membantu Anda mengelola sumber daya disk I/O dengan lebih baik.

Catatan

cgroup v1 dan cgroup v2 adalah dua versi fitur manajemen sumber daya di kernel Linux. Di kernel Alibaba Cloud Linux, fitur blk-iocost mendukung antarmuka cgroup v1 dan v2. Dalam kebanyakan kasus, hanya satu versi yang diaktifkan dan digunakan dalam sistem. Anda dapat menjalankan perintah stat -fc %T /sys/fs/cgroup untuk memeriksa.

  • Jika tmpfs dikembalikan, antarmuka cgroup v1 digunakan.

  • Jika cgroup2fs dikembalikan, antarmuka cgroup v2 digunakan.

Batasan pada sistem operasi

  • Alibaba Cloud Linux 2 dengan versi kernel 4.19.81-17 atau lebih baru

  • Alibaba Cloud Linux 3

Catatan penggunaan untuk antarmuka cost.qos

cost.qos adalah antarmuka baca/tulis yang digunakan untuk mengaktifkan atau menonaktifkan fitur blk-iocost dan membatasi laju kualitas layanan (QoS) I/O berdasarkan bobot latensi. File antarmuka hanya ada di grup root blkcg, dan nama lengkapnya bervariasi berdasarkan versi cgroup.

  • cgroup v1: blkio.cost.qos

  • cgroup v2: io.cost.qos

Konfigurasi

Setiap baris dalam file konfigurasi dimulai dengan nomor mayor (MAJ) dan minor (MIN) disk dalam format MAJ:MIN, diikuti oleh parameter dalam tabel berikut. Untuk menanyakan nomor MAJ dan MIN disk, jalankan perintah lsblk | grep <nama disk>.

Parameter

Deskripsi

enable

Menentukan apakah akan mengaktifkan fitur blk-iocost.

  • 0: menonaktifkan fitur blk-iocost. Ini adalah nilai default.

  • 1: mengaktifkan fitur blk-iocost.

ctrl

Mode kontrol. Nilai valid:

  • auto: Sistem secara otomatis mendeteksi kategori disk dan menggunakan parameter bawaan.

    Penting

    Jika Anda mengatur ctrl=auto dan kategori disk yang terpasang pada Instance ECS adalah SSD, seperti SSD standar, Enterprise SSD (ESSD), atau NVMe SSD, atur atribut rotational SSD menjadi 0. blk-iocost dapat lebih akurat mengevaluasi biaya I/O dan menyesuaikan kebijakan penjadwalan untuk meningkatkan Kinerja I/O SSD. Contoh perintah:

    sudo sh -c 'echo 0 > /sys/block/<DISK_NAME>/queue/rotational'

    Ganti <DISK_NAME> dengan nama disk sebenarnya.

  • user: Konfigurasikan parameter kontrol berikut:

    • rpct: persentil latensi baca. Nilai valid: 0 hingga 100.

    • rlat: ambang batas latensi baca. Satuan: mikrodetik.

    • wpct: persentil latensi tulis. Nilai valid: 0 hingga 100.

    • wlat: ambang batas latensi tulis. Satuan: mikrodetik.

    • min: persentase penskalaan minimum. Nilai valid: 1 hingga 10000.

    • max: persentase penskalaan maksimum. Nilai valid: 1 hingga 10000.

Aktifkan fitur blk-iocost

Aktifkan fitur blk-iocost untuk disk. Dalam contoh ini, disk 254:48 digunakan, dan mode kontrol diatur ke user. Jika lebih dari 95% permintaan baca dan tulis memiliki latensi (rlat|wlat) lebih lama dari 5 milidetik, disk dianggap jenuh. Kernel menyesuaikan laju pengiriman permintaan ke disk dalam rentang 50% hingga 150%.

  • Antarmuka cgroup v1

    sudo sh -c 'echo "254:48 enable=1 ctrl=user rpct=95.00 rlat=5000 wpct=95.00 wlat=5000 min=50.00 max=150.00" > /sys/fs/cgroup/blkio/blkio.cost.qos'
  • Antarmuka cgroup v2

    sudo sh -c 'echo "254:48 enable=1 ctrl=user rpct=95.00 rlat=5000 wpct=95.00 wlat=5000 min=50.00 max=150.00" > /sys/fs/cgroup/io.cost.qos'

Catatan penggunaan untuk antarmuka cost.model

cost.model adalah antarmuka baca/tulis yang digunakan untuk mengonfigurasi model biaya. File antarmuka hanya ada di grup root blkcg, dan nama lengkapnya bervariasi berdasarkan versi cgroup.

  • cgroup v1: blkio.cost.model

  • cgroup v2: io.cost.model

Konfigurasi

Setiap baris dalam file konfigurasi dimulai dengan nomor mayor (MAJ) dan minor (MIN) disk dalam format MAJ:MIN, diikuti oleh parameter dalam tabel berikut. Untuk menanyakan nomor MAJ dan MIN disk, jalankan perintah lsblk | grep <nama disk>.

Parameter

Deskripsi

ctrl

Mode kontrol. Nilai valid:

  • auto: Sistem secara otomatis mengoptimalkan kebijakan penjadwalan I/O berdasarkan beban kerja saat ini.

    Penting

    Jika Anda mengatur ctrl=auto dan kategori disk yang terpasang pada Instance ECS adalah SSD, seperti SSD standar, ESSD, atau NVMe SSD, Anda harus mengatur atribut rotational SSD menjadi 0. blk-iocost dapat lebih akurat mengevaluasi biaya I/O dan menyesuaikan kebijakan penjadwalan untuk meningkatkan Kinerja I/O SSD. Contoh perintah:

    sudo sh -c 'echo 0 > /sys/block/<DISK_NAME>/queue/rotational'

    Ganti <DISK_NAME> dengan nama disk sebenarnya.

  • user: Konfigurasikan parameter model.

model

Parameter model. Nilai valid: linear. Jika Anda mengatur parameter model ke linear, tentukan parameter pemodelan berikut:

  • [r|w]bps: throughput I/O sekuensial maksimum. Satuan: byte/detik.

  • [r|w]seqiops: batas operasi input/output sekuensial per detik (IOPS).

  • [r|w]randiops: batas IOPS acak.

    Catatan

    Anda dapat menggunakan skrip tools/cgroup/iocost_coef_gen.py dalam kode sumber kernel untuk menghasilkan parameter di atas dan kemudian menulis parameter tersebut ke file antarmuka cost.model untuk mengonfigurasi model biaya.

Gunakan antarmuka cost.model untuk mengonfigurasi model biaya

Dalam contoh ini, disk 254:48 digunakan. Atur parameter model ke linear dan tentukan parameter pemodelan untuk mengonfigurasi model biaya.

  • Antarmuka cgroup v1

    sudo sh -c 'echo "254:48 ctrl=user model=linear rbps=2706339840 rseqiops=89698 rrandiops=110036 wbps=1063126016 wseqiops=135560 wrandiops=130734" > /sys/fs/cgroup/blkio/blkio.cost.model'
  • Antarmuka cgroup v2

    sudo sh -c 'echo "254:48 ctrl=user model=linear rbps=2706339840 rseqiops=89698 rrandiops=110036 wbps=1063126016 wseqiops=135560 wrandiops=130734" > /sys/fs/cgroup/io.cost.model'

Catatan penggunaan untuk antarmuka weight/cost.weight

Antarmuka weight Alibaba Cloud Linux 3 dan antarmuka cost.weight Alibaba Cloud Linux 2 adalah antarmuka inti dalam kernel yang digunakan untuk mengontrol alokasi sumber daya I/O. Kedua antarmuka tersebut adalah antarmuka baca/tulis. Anda dapat secara dinamis mengalokasikan bandwidth disk I/O dengan mengonfigurasi nilai bobot dalam rentang [1,10000]. File antarmuka hanya ada di subgrup blkcg, dan nama lengkapnya bervariasi berdasarkan versi cgroup.

  • Alibaba Cloud Linux 3

    • cgroup v1: blkio.cost.weight

    • cgroup v2: io.weight

  • Alibaba Cloud Linux 2

    • cgroup v1: blkio.cost.weight

    • cgroup v2: io.cost.weight

Konfigurasi

  • Tetapkan nilai bobot <bobot> untuk antarmuka untuk mengubah bobot default blkcg.

  • Tetapkan nomor port dan nilai bobot MAJ:MIN <bobot> untuk antarmuka untuk mengubah bobot blkcg pada disk yang ditentukan.

Ubah bobot

Setelah Anda mengaktifkan fitur blk-iocost, buat grup kontrol blkcg1 cgroup v1 dan grup kontrol cg1 cgroup v2, dan gunakan antarmuka cost.weight untuk cgroup v1 dan antarmuka weight untuk cgroup v2 untuk mengubah bobot default grup kontrol menjadi 50. Kemudian, atur bobot grup kontrol pada disk 254:48 menjadi 50.

  • Antarmuka cgroup v1

    sudo mkdir /sys/fs/cgroup/blkio/blkcg1    # Buat grup kontrol blkcg1
    sudo sh -c 'echo "50" > /sys/fs/cgroup/blkio/blkcg1/blkio.cost.weight'    # Ubah bobot default menjadi 50
    sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/blkio/blkcg1/blkio.cost.weight'    # Atur bobot pada disk menjadi 50
  • Antarmuka cgroup v2

    • Alibaba Cloud Linux 3

      sudo mkdir /sys/fs/cgroup/cg1    # Buat grup kontrol cg1
      sudo sh -c 'echo "50" > /sys/fs/cgroup/cg1/io.weight'    # Ubah bobot default menjadi 50
      sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/cg1/io.weight'    # Atur bobot pada disk menjadi 50
    • Alibaba Cloud Linux 2

      sudo mkdir /sys/fs/cgroup/cg1    # Buat grup kontrol cg1
      sudo sh -c 'echo "50" > /sys/fs/cgroup/cg1/io.cost.weight'    # Ubah bobot default menjadi 50
      sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/cg1/io.cost.weight'    # Atur bobot pada disk menjadi 50

Alat pemantauan umum

blk-iocost perlu memantau dan mengevaluasi Kinerja I/O sistem Anda. Anda dapat menggunakan alat atau antarmuka berikut untuk memantau penggunaan sumber daya I/O dan mengoptimalkan pemanfaatan sumber daya.

  • Skrip pemantau iocost

    Skrip tools/cgroup/iocost_monitor.py dalam kode sumber kernel menggunakan debugger drgn untuk mendapatkan parameter kernel dan menyediakan data pemantauan Kinerja I/O. Lakukan langkah-langkah berikut untuk menggunakan skrip:

    1. Instal debugger drgn.

      sudo pip3 install drgn
    2. Unduh skrip iocost_monitor.py.

      wget https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/cgroup/iocost_monitor.py
    3. Jalankan skrip iocost_monitor.py.

      Dalam contoh ini, disk vdd digunakan.

      sudo python3 ./iocost_monitor.p vdd

      Keluaran perintah berikut dikembalikan:

      vdd RUN  per=500.0ms cur_per=3930.839:v14620.321 busy= +1 vrate=6136.22% params=hdd
                                active    weight      hweight% inflt% dbt  delay usages%
      blkcg1                       *    50/   50   9.09/  9.09   0.00   0  0*000 009:009:009
      blkcg2                       *   500/  500  90.91/ 90.91   0.00   0  0*000 089:091:092
  • File antarmuka blkio.cost.stat cgroup v1

    Kernel Alibaba Cloud Linux menyediakan file antarmuka blk-iocost (blkio.cost.stat) dari antarmuka cgroup v1. File antarmuka ini mencatat data QoS setiap perangkat yang dikontrol. Jalankan perintah berikut untuk melihat file antarmuka:

    cat /sys/fs/cgroup/blkio/blkcg1/blkio.cost.stat

    Keluaran perintah berikut dikembalikan:

    254:48 is_active=1 active=50 inuse=50 hweight_active=5957 hweight_inuse=5957 vrate=159571
  • Alat ftrace

    Kernel Alibaba Cloud Linux menyediakan alat ftrace terkait fitur blk-iocost. Untuk fitur blk-iocost, ftrace dapat membantu melacak proses pengambilan keputusan scheduler dan pemrosesan permintaan I/O secara detail untuk memberikan analisis kinerja mendalam. Lakukan langkah-langkah berikut untuk menggunakan alat ftrace:

    1. Atur atribut enable menjadi 1 untuk mengaktifkan alat ftrace.

      sudo sh -c 'echo 1 > /sys/kernel/debug/tracing/events/iocost/enable'
    2. Lihat informasi keluaran.

      sudo cat /sys/kernel/debug/tracing/trace_pipe

      Keluaran perintah berikut dikembalikan:

          dd-1593  [008] d...   688.565349: iocost_iocg_activate: [vdd:/blkcg1] now=689065289:57986587662878 vrate=137438 period=22->22 vtime=0->57986365150756 weight=50/50 hweight=65536/65536
          dd-1593  [008] d.s.   688.575374: iocost_ioc_vrate_adj: [vdd] vrate=137438->137438 busy=0 missed_ppm=0:0 rq_wait_pct=0 lagging=1 shortages=0 surpluses=1
      <idle>-0     [008] d.s.   688.608369: iocost_ioc_vrate_adj: [vdd] vrate=137438->137438 busy=0 missed_ppm=0:0 rq_wait_pct=0 lagging=1 shortages=0 surpluses=1
          dd-1594  [006] d...   688.620002: iocost_iocg_activate: [vdd:/blkcg2] now=689119946:57994099611644 vrate=137438 period=22->26 vtime=0->57993412421644 weight=250/250 hweight=65536/65536
      <idle>-0     [008] d.s.   688.631367: iocost_ioc_vrate_adj: [vdd] vrate=137438->137438 busy=0 missed_ppm=0:0 rq_wait_pct=0 lagging=1 shortages=0 surpluses=1
      <idle>-0     [008] d.s.   688.642368: iocost_ioc_vrate_adj: [vdd] vrate=137438->137438 busy=0 missed_ppm=0:0 rq_wait_pct=0 lagging=1 shortages=0 surpluses=1
      <idle>-0     [008] d.s.   688.653366: iocost_ioc_vrate_adj: [vdd] vrate=137438->137438 busy=0 missed_ppm=0:0 rq_wait_pct=0 lagging=1 shortages=0 surpluses=1
      <idle>-0     [008] d.s.   688.664366: iocost_ioc_vrate_adj: [vdd] vrate=137438->137438 busy=0 missed_ppm=0:0 rq_wait_pct=0 lagging=1 shortages=0 surpluses=1