Todos os produtos
Search
Central de documentação

Alibaba Cloud Linux:Aprimorar o monitoramento de limitação de E/S de bloco

Última atualização: Jun 29, 2026

O Alibaba Cloud Linux 2 (versão do kernel 4.19.81-17.al7 e posteriores) e o Alibaba Cloud Linux 3 adicionam cinco interfaces ao subsistema de limitação blkio. A política de limitação upstream rastreia apenas bytes e contagens de operações, sem métricas de latência ou fila. Essas interfaces preenchem essa lacuna e permitem determinar se a latência de E/S observada resulta da limitação ou de contenção no dispositivo subjacente.

Motivo da existência dessas interfaces

A limitação de E/S de bloco do Linux restringe bytes por segundo (BPS) ou operações de entrada/saída por segundo (IOPS) para cgroups. O subsistema de limitação upstream não mede latência nem profundidade de fila. Assim, é impossível distinguir a latência causada pela limitação daquela originada no nível do dispositivo, especialmente com o writeback de cgroup ativado.

As cinco interfaces do Alibaba Cloud Linux adicionam essa observabilidade diretamente ao subsistema de limitação.

Interfaces disponíveis

Todas as interfaces residem em /sys/fs/cgroup/blkio/<cgroup>/, onde <cgroup> representa o grupo de controle alvo.

Interface

Descrição

Unidade

blkio.throttle.io_service_time

Tempo total entre o envio e a conclusão das operações de E/S

nanossegundos

blkio.throttle.io_wait_time

Tempo total de espera das operações de E/S nas filas do agendador

nanossegundos

blkio.throttle.io_completed

Quantidade de operações de E/S concluídas; use com as duas interfaces de tempo para calcular a latência média

blkio.throttle.total_io_queued

Número de operações de E/S limitadas; compare leituras periódicas para verificar se a latência de E/S tem relação com a limitação

blkio.throttle.total_bytes_queued

Volume de bytes de E/S limitados

bytes

Calcular a latência média de escrita

Este exemplo monitora a latência de E/S de escrita do disco vdd (dispositivo 254:48) no cgroup blkcg1 durante um intervalo de 5 segundos.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Um cgroup (blkcg1) com limite de limitação BPS ou IOPS configurado

  • O número major:minor do disco a ser monitorado (execute lsblk -o NAME,MAJ:MIN para obtê-lo)

  • Acesso root ao sistema

Executar o script de medição de latência

Execute o script abaixo como root:

#!/bin/bash

CGROUP_PATH="/sys/fs/cgroup/blkio/blkcg1"
DEVICE="254:48"
INTERVAL=5

# Collect T1 readings
write_wait_time1=$(cat "$CGROUP_PATH/blkio.throttle.io_wait_time" | grep -w "$DEVICE Write" | awk '{print $3}')
write_service_time1=$(cat "$CGROUP_PATH/blkio.throttle.io_service_time" | grep -w "$DEVICE Write" | awk '{print $3}')
write_completed1=$(cat "$CGROUP_PATH/blkio.throttle.io_completed" | grep -w "$DEVICE Write" | awk '{print $3}')

sleep "$INTERVAL"

# Collect T2 readings (T1 + 5 seconds)
write_wait_time2=$(cat "$CGROUP_PATH/blkio.throttle.io_wait_time" | grep -w "$DEVICE Write" | awk '{print $3}')
write_service_time2=$(cat "$CGROUP_PATH/blkio.throttle.io_service_time" | grep -w "$DEVICE Write" | awk '{print $3}')
write_completed2=$(cat "$CGROUP_PATH/blkio.throttle.io_completed" | grep -w "$DEVICE Write" | awk '{print $3}')

# Calculate average I/O latency over the interval
avg_delay=$(echo "((write_wait_time2 + write_service_time2) - (write_wait_time1 + write_service_time1)) / (write_completed2 - write_completed1)" | bc)

echo "Average write latency over ${INTERVAL}s: ${avg_delay} ns"

O script aplica a seguinte fórmula:

avg_delay = (total_io_duration_T2 - total_io_duration_T1) / (completed_ops_T2 - completed_ops_T1)

onde total_io_duration = io_wait_time + io_service_time.

Variável

Interface

Descrição

write_wait_time<N>

blkio.throttle.io_wait_time

Duração da limitação na camada de limitação de E/S de bloco

write_service_time<N>

blkio.throttle.io_service_time

Tempo acumulado entre o envio e a conclusão de solicitações de E/S de escrita, em nanossegundos

write_completed<N>

blkio.throttle.io_completed

Contagem acumulada de operações de E/S de escrita concluídas

Execute o script periodicamente — por exemplo, com watch ou uma tarefa cron — para acompanhar as tendências de latência ao longo do tempo.