A limitação baseada em peso do blk-iocost aprimora o controle de disco do subsistema de E/S cgroup (blkcg) no Alibaba Cloud Linux. Esse recurso aloca a largura de banda de E/S de dispositivos de bloco conforme a prioridade da aplicação ou do processo. Configure os valores de peso para limitar a largura de banda de E/S por aplicação ou processo.
O kernel do Alibaba Cloud Linux suporta as interfaces cgroup v1 e v2 para blk-iocost, mas apenas uma pode estar ativa por vez. Execute stat -fc %T /sys/fs/cgroup para verificar qual versão está ativa.
O valor de retorno
tmpfsindica a interface cgroup v1.O valor de retorno
cgroup2fsindica a interface cgroup v2.
Sistemas operacionais compatíveis
Alibaba Cloud Linux 2 com versão de kernel
4.19.81-17ou posteriorAlibaba Cloud Linux 3
Usar a interface cost.qos
A interface cost.qos ativa ou desativa o blk-iocost e limita a taxa de qualidade de serviço (QoS) de E/S com base na latência e no peso. Ela existe apenas no grupo raiz blkcg, e seu nome varia entre as versões do cgroup.
cgroup v1:
blkio.cost.qoscgroup v2:
io.cost.qos
Configuração
Cada linha começa com o número do dispositivo no formato MAJ:MIN (execute lsblk | grep <Cloud_Disk_Name> para encontrá-lo), seguido pelos parâmetros abaixo:
|
Parâmetro |
Descrição |
|
enable |
Ativa ou desativa o blk-iocost.
|
|
ctrl |
Modo de controle.
|
Ativar o recurso blk-iocost
Este exemplo ativa o blk-iocost para o dispositivo 254:48 no modo user. O disco é considerado saturado quando 95% das latências de leitura e escrita (rlat e wlat) excedem 5000 μs (5 ms), e o kernel ajusta a taxa de despacho entre 50% e 150%.
-
Interface 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' -
Interface 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'
Usar a interface cost.model
A interface cost.model configura o modelo de custo de E/S. Ela existe apenas no grupo raiz blkcg, e seu nome varia entre as versões do cgroup.
cgroup v1:
blkio.cost.modelcgroup v2:
io.cost.model
Configuração
Cada linha começa com o número do dispositivo no formato MAJ:MIN (execute lsblk | grep <Cloud_Disk_Name> para encontrá-lo), seguido pelos parâmetros abaixo:
|
Parâmetro |
Descrição |
|
ctrl |
Modo de controle.
|
|
model |
Atualmente, apenas o modelo
|
Definir um modelo de custo
Este exemplo define um modelo de custo linear para o dispositivo 254:48 com parâmetros definidos pelo usuário.
-
Interface 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' -
Interface 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'
Usar a interface weight/cost.weight
Esta interface controla a alocação de recursos de E/S por meio de um valor weight entre 1 e 10000. O nome da interface varia conforme a versão do cgroup e o sistema operacional. Esses arquivos existem apenas em subgrupos blkcg.
-
Alibaba Cloud Linux 3
cgroup v1:
blkio.cost.weightcgroup v2:
io.weight
-
Alibaba Cloud Linux 2
cgroup v1:
blkio.cost.weightcgroup v2:
io.cost.weight
Configuração
Para modificar o peso padrão de um
blkcg, defina um valor de peso para a interface:<weight>.Para modificar o peso de um
blkcgem um dispositivo específico, use o seguinte formato:MAJ:MIN <weight>.
Modificar pesos
Após ativar o blk-iocost, estes exemplos criam grupos de controle (blkcg1 para cgroup v1, cg1 para cgroup v2) e definem tanto o peso padrão quanto o peso específico do dispositivo para 254:48 como 50.
-
Interface cgroup v1
sudo mkdir /sys/fs/cgroup/blkio/blkcg1 # Create the control group blkcg1 sudo sh -c 'echo "50" > /sys/fs/cgroup/blkio/blkcg1/blkio.cost.weight' # Change the default weight to 50 sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/blkio/blkcg1/blkio.cost.weight' # Set the weight on the disk to 50 -
Interface cgroup v2
-
Alibaba Cloud Linux 3
sudo mkdir /sys/fs/cgroup/cg1 # Create the control group cg1 sudo sh -c 'echo "50" > /sys/fs/cgroup/cg1/io.weight' # Change the default weight to 50 sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/cg1/io.weight' # Set the weight on the disk to 50 -
Alibaba Cloud Linux 2
sudo mkdir /sys/fs/cgroup/cg1 # Create the control group cg1 sudo sh -c 'echo "50" > /sys/fs/cgroup/cg1/io.cost.weight' # Change the default weight to 50 sudo sh -c 'echo "254:48 50" > /sys/fs/cgroup/cg1/io.cost.weight' # Set the weight on the disk to 50
-
Ferramentas comuns de monitoramento
As ferramentas a seguir ajudam a monitorar e ajustar o desempenho de E/S com o blk-iocost.