Todos os produtos
Search
Central de documentação

Alibaba Cloud Linux:Group identity feature

Última atualização: Jun 29, 2026

O Alibaba Cloud Linux 2 com kernel versão 4.19.91-24.al7 ou posterior e o Alibaba Cloud Linux 3 com kernel versão 5.10.46-7.al8 ou posterior oferecem suporte ao recurso group identity. Use esse recurso para configurar diferentes identidades em grupos de controle (cgroups) de CPU e definir as prioridades dos processos (tarefas) nesses cgroups.

Informações básicas

Ao implantar tarefas sensíveis a latência e tarefas de computação na mesma instância, o escalonador do kernel Linux deve oferecer mais oportunidades de escalonamento às tarefas de alta prioridade. Isso minimiza a latência de escalonamento e reduz o impacto das tarefas de baixa prioridade no kernel. Para esse cenário, o Alibaba Cloud Linux disponibiliza o recurso group identity e adiciona interfaces para configurar prioridades de escalonamento em cgroups de CPU. As tarefas com diferentes prioridades apresentam as seguintes características:

  • Tarefas de alta prioridade têm latência mínima de ativação.

  • Tarefas de baixa prioridade não afetam o desempenho das tarefas de alta prioridade.

    • A ativação de tarefas de baixa prioridade não prejudica o desempenho das tarefas de alta prioridade.

    • Tarefas de baixa prioridade não compartilham unidades de hardware nem causam impactos negativos no desempenho das tarefas de alta prioridade.

Pré-requisitos

Nota
  • No Alibaba Cloud Linux 2 com kernel versão 4.19.91-26, 4.19.91-26.1, 4.19.91-26.2 ou 4.19.91-26.3, o recurso group identity vem desativado no kernel. Execute o comando uname -r para consultar a versão do kernel do Alibaba Cloud Linux 2.

  • No Alibaba Cloud Linux 3 com kernel versão 5.10.112-11.al8, 5.10.112-11.1.al8, 5.10.112-11.2.al8, 5.10.134-12.al8, 5.10.134-12.1.al8 ou 5.10.134-12.2.al8, o recurso group identity vem desativado no kernel.

  • O uso do recurso group identity no Alibaba Cloud Linux 2 com kernel entre as versões 4.19.91-25.1.al7 e 4.19.91-25.5.al7 causa tempo de inatividade. Nesse caso, atualize o kernel para a versão 4.19.91-25.6.al7 ou posterior. Para mais informações, consulte a seção Atualizar o kernel do tópico "Alterar a versão do kernel".

  • Se o Alibaba Cloud Linux 3 com kernel versão 5.10.134-12.2.al8 utilizar a arquitetura x86_64, execute os comandos a seguir para ativar o recurso group identity:

    yum makecache
    sudo yum install scheduler-group-identity.x86_64 -y
  • No Alibaba Cloud Linux 2 com kernel versão 4.19.91-26.4 ou posterior e no Alibaba Cloud Linux 3 com kernel versão 5.10.134-13.al8 ou posterior, a interface /proc/sys/kernel/sched_group_identity_enabled foi adicionada para permitir a ativação do recurso group identity. Antes de usar o recurso, execute o comando sudo sh -c 'echo 1 > /proc/sys/kernel/sched_group_identity_enabled' para ativá-lo.

Funcionamento do recurso group identity

O recurso group identity permite configurar identidades em cgroups de CPU para definir as prioridades das tarefas nesses cgroups. Esse recurso baseia-se em uma arquitetura de árvore rubro-negra dupla. Uma árvore rubro-negra de baixa prioridade, baseada na árvore rubro-negra da fila de escalonamento do Completely Fair Scheduler (CFS), armazena tarefas de baixa prioridade.

Ao escalonar tarefas com identidades configuradas, o kernel as processa de acordo com suas prioridades. A tabela a seguir descreve as identidades em ordem decrescente de prioridade.

Identidade

Descrição

ID_HIGHCLASS

Identifica uma tarefa de alta prioridade. Tarefas de alta prioridade têm mais oportunidades de preemptar recursos do que tarefas de prioridade normal ou baixa.

Quando o CFS escalona tarefas de alta prioridade, podem ocorrer os seguintes cenários:

  • Se uma tarefa de alta prioridade for ativada durante a execução de uma tarefa de baixa prioridade, a tarefa de alta prioridade poderá preemptar recursos da tarefa de baixa prioridade incondicionalmente.

  • Se uma tarefa de alta prioridade for ativada durante a execução de uma tarefa de prioridade normal e o tempo de execução virtual (vruntime) da tarefa de alta prioridade for menor que o vruntime da tarefa de prioridade normal, a tarefa de alta prioridade poderá ignorar a política de escalonamento original e preemptar recursos. A política original especifica que uma tarefa não pode preemptar recursos quando seu tempo de execução em uma CPU for inferior ao tempo mínimo de execução.

  • Se uma tarefa de prioridade baixa ou normal estiver em execução enquanto outras tarefas aguardam na fila, uma tarefa de alta prioridade cujo vruntime seja menor que o vruntime da tarefa em execução poderá ignorar a política de escalonamento original e preemptar recursos. A política original especifica que uma tarefa não pode preemptar recursos quando seu tempo de execução em uma CPU for inferior ao tempo mínimo de execução.

ID_NORMAL

Identifica uma tarefa de prioridade normal. Tarefas de prioridade normal têm mais oportunidades de preemptar recursos do que tarefas de baixa prioridade.

Quando o CFS escalona tarefas de prioridade normal, podem ocorrer os seguintes cenários:

  • Se uma tarefa de prioridade normal for ativada durante a execução de uma tarefa de baixa prioridade, a tarefa de prioridade normal poderá preemptar recursos da tarefa de baixa prioridade incondicionalmente.

  • Se uma tarefa de baixa prioridade estiver em execução enquanto outras tarefas aguardam na fila, uma tarefa de prioridade normal cujo vruntime seja menor que o vruntime da tarefa em execução poderá ignorar a política de escalonamento original e preemptar recursos. A política original especifica que uma tarefa não pode preemptar recursos quando seu tempo de execução em uma CPU for inferior ao tempo mínimo de execução.

ID_UNDERCLASS

Identifica uma tarefa de baixa prioridade.

Quando o CFS escalona tarefas de baixa prioridade, podem ocorrer os seguintes cenários:

Se uma tarefa ID_SMT_EXPELLER estiver em execução na CPU par de multithreading simultâneo (SMT), as tarefas de baixa prioridade serão expulsas da CPU atual.

As identidades acima são aplicadas com base nas políticas de gerenciamento de recursos dos cgroups de CPU.

  • Para tarefas em cgroups de CPU do mesmo nível, as prioridades de identidade entram em vigor.

  • Para tarefas em cgroups de CPU de níveis diferentes, as prioridades de identidade não se aplicam às tarefas nos cgroups pai, mas entram em vigor para as tarefas nos cgroups filho.

  • Para tarefas com a mesma prioridade de identidade, a disputa por recursos segue as políticas do CFS. Observe que o tempo de execução de tarefas identificadas como ID_UNDERCLASS ou ID_NORMAL pode não atingir o valor mínimo.

Outras identidades

Identidade

Descrição

ID_SMT_EXPELLER

Identifica uma tarefa SMT expeller. Quando uma tarefa SMT expeller é executada em uma CPU SMT, ela expulsa as tarefas identificadas como ID_UNDERCLASS da CPU par.

ID_IDLE_SEEKER

Especifica que, ao ser ativada, a tarefa tenta encontrar CPUs ociosas dentro dos limites das políticas do escalonador.

ID_IDLE_SAVER

Utilizada em conjunto com o parâmetro de kernel sched_idle_saver_wmark. Use sched_idle_saver_wmark para configurar um limite (watermark) para o tempo de ociosidade da CPU. Quando uma tarefa identificada como ID_IDLE_SAVER é ativada, ela tenta encontrar uma CPU cujo tempo de ociosidade exceda o limite especificado.

Interfaces

  • Interfaces para configuração de identidades

    O recurso group identity fornece as seguintes interfaces para configurar identidades de tarefas: /sys/fs/cgroup/cpu/$cg/cpu.identity e /sys/fs/cgroup/cpu/$cg/cpu.bvt_warp_ns. A variável $cg especifica o nó de diretório do cgroup filho onde a tarefa é executada. Antes de usar essas interfaces, observe os seguintes pontos:

    • A interface cpu.bvt_warp_ns é uma interface de configuração rápida. O valor gravado nessa interface é convertido em valores de identidade.

    • Use as interfaces cpu.identity e cpu.bvt_warp_ns para alterar as identidades dos cgroups.

    • O valor de identidade gravado pela interface cpu.identity substitui o valor gravado anteriormente pela interface cpu.bvt_warp_ns, mas o valor da interface cpu.bvt_warp_ns permanece inalterado.

    • O valor de identidade gravado pela interface cpu.bvt_warp_ns substitui o valor gravado anteriormente pela interface cpu.identity, mas o valor da interface cpu.identity permanece inalterado.

    • Utilize apenas uma das interfaces para configurar as identidades das tarefas. Não use ambas simultaneamente.

    • Caso não tenha familiaridade com operações relacionadas ao kernel do sistema operacional, evite usar a interface cpu.identity.

    A tabela a seguir descreve as interfaces.

    Interface

    Descrição

    cpu.identity

    O valor padrão é 0, que especifica a identidade ID_NORMAL.

    Esta interface é um campo de 5 bits. Valores válidos para cada bit: 0 e 1. O valor 0 indica que a identidade não está assumida. O valor 1 indica que a identidade está assumida. Descrição de cada bit:

    • Se a interface estiver vazia, a identidade ID_NORMAL será usada.

    • Bit 0: especifica a identidade ID_UNDERCLASS.

    • Bit 1: especifica a identidade ID_HIGHCLASS.

    • Bit 2: especifica a identidade ID_SMT_EXPELLER.

    • Bit 3: especifica a identidade ID_IDLE_SAVER.

    • Bit 4: especifica a identidade ID_IDLE_SEEKER.

    Por exemplo, para definir a identidade de um cgroup como ID_HIGHCLASS e ID_IDLE_SEEKER, defina o bit 1 e o bit 4 como 1 e os demais bits como 0, obtendo o valor binário 10010, que corresponde ao valor decimal 18. Em seguida, execute o comando echo 18 > /sys/fs/cgroup/cpu/$cg/cpu.identity para gravar 18 na interface cpu.identity.

    cpu.bvt_warp_ns

    O valor padrão é 0, que especifica a identidade ID_NORMAL. Valores válidos:

    • 2: especifica as identidades ID_SMT_EXPELLER, ID_IDLE_SEEKER e ID_HIGHCLASS. O valor correspondente na interface cpu.identity é 22.

    • 1: especifica as identidades ID_HIGHCLASS e ID_IDLE_SEEKER. O valor correspondente na interface cpu.identity é 18.

    • 0: especifica a identidade ID_NORMAL. O valor correspondente na interface cpu.identity é 0.

    • -1: especifica as identidades ID_UNDERCLASS e ID_IDLE_SAVER. O valor correspondente na interface cpu.identity é 9.

    • -2: especifica as identidades ID_UNDERCLASS e ID_IDLE_SAVER. O valor correspondente na interface cpu.identity é 9.

    Nota

    Por padrão, o Alibaba Cloud Linux oferece suporte às interfaces cgroup v1. O Alibaba Cloud Linux 3 com kernel versão 5.10.134-13 ou posterior na série de kernel 5.10 também oferece suporte às seguintes interfaces cgroup v2 para o recurso group identity:

    /sys/fs/cgroup/$cg/cpu.identity e /sys/fs/cgroup/$cg/cpu.bvt_warp_ns. A variável $cg especifica o nó de diretório do cgroup filho onde a tarefa é executada.

  • Interfaces para ativar ou desativar recursos de escalonamento do kernel

    Execute o comando a seguir para visualizar as configurações padrão dos recursos de escalonamento do kernel por meio da interface sched_features:

    sudo cat /sys/kernel/debug/sched_features

    A tabela a seguir descreve os recursos de escalonamento do kernel.

    Recurso de escalonamento do kernel

    Descrição

    Valor padrão

    ID_IDLE_AVG

    Use este recurso em conjunto com a identidade ID_IDLE_SAVER para contabilizar o tempo de execução das tarefas ID_UNDERCLASS como tempo de ociosidade. Isso garante que nenhuma CPU permaneça ociosa quando apenas tarefas ID_UNDERCLASS estiverem em execução, evitando desperdício de recursos.

    ID_IDLE_AVG: indica que o recurso está ativado.

    ID_RESCUE_EXPELLEE

    Recurso utilizado em cenários de balanceamento de carga. Se as tarefas não encontrarem recursos de CPU disponíveis, CPUs que estiverem expulsando tarefas ID_UNDERCLASS serão usadas para balancear a carga. Este recurso ajuda a remover as tarefas ID_UNDERCLASS do estado de expulsão o mais rápido possível.

    ID_RESCUE_EXPELLEE: indica que o recurso está ativado.

    ID_EXPELLEE_NEVER_HOT

    Quando este recurso está ativado, se houver uma solicitação para migrar uma tarefa que está sendo expulsa para outra CPU, o cache quente não causará a negação da solicitação de migração. Isso ajuda a remover as tarefas ID_UNDERCLASS do estado de expulsão o mais rápido possível.

    NO_ID_EXPELLEE_NEVER_HOT: indica que o recurso está desativado.

    ID_LOOSE_EXPEL

    Quando este recurso está ativado, as CPUs não atualizam o status de expulsão toda vez que selecionam tarefas, mas atualizam automaticamente o status com base no tempo especificado pelo parâmetro de kernel sched_expel_update_interval. A configuração deste recurso afeta apenas as atualizações de status durante a seleção de tarefas pelas CPUs. As atualizações para interrupções interprocessador (IPIs) não são afetadas.

    NO_ID_LOOSE_EXPEL: indica que o recurso está desativado.

    ID_LAST_HIGHCLASS_STAY

    Quando este recurso está ativado, a última tarefa ID_HIGHCLASS em execução em uma CPU não pode ser migrada para outra CPU.

    ID_LAST_HIGHCLASS_STAY: indica que o recurso está ativado.

    ID_EXPELLER_SHARE_CORE

    • Se este recurso estiver ativado, as tarefas ID_SMT_EXPELLER podem ser executadas preferencialmente em núcleos físicos onde já existem tarefas ID_SMT_EXPELLER em execução.

    • Se este recurso estiver desativado, as tarefas ID_SMT_EXPELLER são distribuídas entre os núcleos físicos. Dessa forma, as tarefas ID_SMT_EXPELLER não interferem umas nas outras.

    ID_EXPELLER_SHARE_CORE: indica que o recurso está ativado.

    ID_ABSOLUTE_EXPEL

    No Alibaba Cloud Linux 3, este recurso foi introduzido na versão de kernel 5.10.134-16.3 e pode ser usado na versão 5.10.134-16.3 ou posterior na série de kernel 5.10. Quando ativado, as tarefas ID_UNDERCLASS são suprimidas absolutamente e não podem ser escalonadas se existirem tarefas ID_NORMAL ou ID_HIGHCLASS nas filas de execução. Nos piores cenários, as tarefas ID_UNDERCLASS podem sofrer inanição (starvation). Em cenários de implantação híbrida, avalie as cargas das tarefas com diferentes identidades antes de ativar o recurso.

    NO_ID_ABSOLUTE_EXPEL: indica que o recurso está desativado.

    ID_LOAD_BALANCE

    No Alibaba Cloud Linux 3, este recurso foi introduzido na versão de kernel 5.10.134-16.3 e pode ser usado na versão 5.10.134-16.3 ou posterior na série de kernel 5.10. Quando ativado, o escalonador considera as CPUs que executam apenas tarefas ID_UNDERCLASS como ociosas e tenta migrar tarefas ID_HIGHCLASS para essas CPUs ociosas durante o balanceamento de carga. Durante a migração, o escalonador tenta distribuir as tarefas ID_HIGHCLASS entre as CPUs. Isso evita contenção de recursos de CPU e interferência de Hyper-Threading (HT) entre as tarefas ID_HIGHCLASS, garantindo que cada tarefa obtenha recursos de CPU suficientes.

    NO_ID_LOAD_BALANCE: indica que o recurso está desativado.

  • Interfaces do sysctl para configuração de parâmetros do kernel

    Capacidades específicas do recurso group identity dependem dos valores dos parâmetros do kernel. A tabela a seguir descreve esses parâmetros.

    Parâmetro do kernel

    Descrição

    Unidade

    Valor padrão

    /proc/sys/kernel/sched_expel_update_interval

    Intervalo no qual o status de expulsão é atualizado automaticamente quando uma CPU seleciona tarefas. Este parâmetro só entra em vigor se o recurso ID_LOOSE_EXPEL estiver ativado.

    ms

    10

    /proc/sys/kernel/sched_expel_idle_balance_delay

    Intervalo mínimo de idle balance quando uma CPU está expulsando tarefas. Um valor de -1 especifica que o idle balance não é permitido.

    Se existirem apenas tarefas ID_UNDERCLASS em uma CPU e elas estiverem sendo expulsas, a CPU é considerada ociosa. O Idle balance é executado na CPU para melhorar os efeitos de balanceamento de carga. No entanto, isso pode prejudicar as tarefas ID_UNDERCLASS. Defina o parâmetro sched_expel_idle_balance_delay para mitigar esse problema.

    ms

    -1

    /proc/sys/kernel/sched_idle_saver_wmark

    Limite (watermark) para o tempo de ociosidade da CPU. Quando uma tarefa ID_IDLE_SAVER é ativada, ela tenta encontrar uma CPU ociosa cujo tempo de ociosidade exceda o limite especificado.

    ns

    0

    /proc/sys/kernel/sched_group_identity_enabled

    A partir da versão de kernel 4.19.91-26.4, a interface /proc/sys/kernel/sched_group_identity_enabled foi adicionada para permitir a ativação do recurso group identity. Antes de usar o recurso, execute o comando echo 1 > /proc/sys/kernel/sched_group_identity_enabled para ativá-lo.

    Após a ativação do recurso group identity, não é possível gravar dados na interface /proc/sys/kernel/sched_group_identity_enabled se o valor da interface cpu.bvt_warp_ns ou cpu.identity do cgroup for diferente de zero.

    Nota

    Se a sua versão de kernel for 4.19.91-26.4.al7, 4.19.91-26.5.al7 ou 4.19.91-26.6.al7, a interface sched_group_identity_enabled estiver definida como 1 e o valor da interface cpu.bvt_warp_ns do cgroup for diferente de zero, ocorrerão erros ao ler as configurações de /proc/sys/kernel/sched_group_identity_enabled. Trata-se de um bug de leitura que não afeta o uso normal da interface. Esse bug foi corrigido na versão de kernel 4.19.91-27.al7 e posteriores.

    N/A

    0

Saída de informações

Ao utilizar o recurso group identity, execute o comando a seguir para visualizar diversos parâmetros:

cat /proc/sched_debug

A tabela a seguir descreve os parâmetros de saída.

Parâmetro

Descrição

nr_high_running

Quantidade de tarefas ID_HIGHCLASS em execução na CPU atual.

nr_under_running

Quantidade de tarefas ID_UNDERCLASS em execução na CPU atual.

nr_expel_immune

Quantidade de tarefas não ID_UNDERCLASS em execução na CPU atual.

smt_expeller

Indica se há tarefas ID_SMT_EXPELLER em execução na CPU atual. O valor 1 indica que tarefas ID_SMT_EXPELLER estão em execução na CPU atual. O valor 0 indica que não há tarefas ID_SMT_EXPELLER em execução na CPU atual.

on_expel

Indica se há tarefas ID_SMT_EXPELLER em execução na CPU SMT par. O valor 1 indica que tarefas ID_SMT_EXPELLER estão em execução na CPU SMT par. O valor 0 indica que não há tarefas ID_SMT_EXPELLER em execução na CPU SMT par.

high_exec_sum

Tempo acumulado de execução das tarefas ID_HIGHCLASS na CPU atual.

under_exec_sum

Tempo acumulado de execução das tarefas ID_UNDERCLASS na CPU atual.

h_nr_expel_immune

Quantidade de tarefas não ID_UNDERCLASS em execução em cfs_rq.

expel_start

Diferença entre os vruntimes mínimos das duas árvores rubro-negras no momento em que a CPU começa a expulsar tarefas.

expel_spread

Diferença acumulada entre os vruntimes mínimos das duas árvores rubro-negras causada pelo status de expulsão da CPU.

min_under_vruntime

Vruntime mínimo da árvore rubro-negra de baixa prioridade.