Kernel Linux versão 6.0

Após dois meses de desenvolvimento, Linus Torvalds apresentou o lançamento do kernel Linux 6.0. A mudança significativa no número da versão é por motivos estéticos e é um passo formal para aliviar o desconforto de acumular um grande número de exemplares na série (Linus brincou que o motivo da mudança no número da filial era mais provável porque ele estava ficando sem dedos e dedos dos pés para contar números de versão). Entre as mudanças mais notáveis: suporte para escrita assíncrona em buffer em XFS, driver de bloco ublk, otimização do agendador de tarefas, mecanismo para verificar o correto funcionamento do kernel, suporte para cifra de bloco ARIA.

Principais inovações no kernel 6.0:

  • Subsistema de disco, E/S e sistemas de arquivos
    • O sistema de arquivos XFS adicionou suporte para gravações assíncronas em buffer usando o mecanismo io_uring. Testes de desempenho realizados usando ferramentas fio (1 thread, tamanho de bloco de 4kB, 600 segundos, gravação sequencial) mostram um aumento nas operações de entrada/saída por segundo (IOPS) de 77k para 209k, velocidade de transferência de dados de 314MB/s para 854MB/s, e queda na latência de 9600ns para 120ns (80 vezes).
    • O sistema de arquivos Btrfs implementa uma segunda versão do protocolo para o comando “send”, que implementa suporte para metadados adicionais, enviando dados em blocos maiores (mais de 64K) e transmitindo extensões em formato compactado. O desempenho das operações de leitura direta aumentou significativamente (até 3 vezes) devido à leitura simultânea de até 256 setores. Redução da contenção de bloqueio e aceleração da verificação de metadados, reduzindo metadados reservados para elementos adiados.
    • Novas operações ioctl EXT4_IOC_GETFSUUID e EXT4_IC_SETFSUUID foram adicionadas ao sistema de arquivos ext4 para recuperar ou definir o UUID armazenado no superbloco.
    • O sistema de arquivos F2FS oferece um modo de baixo consumo de memória, que otimiza a operação em dispositivos com pequena quantidade de RAM e permite reduzir o consumo de memória ao custo de desempenho reduzido.
    • Adicionado suporte para autenticação de unidade NVMe.
    • O servidor NFSv4 implementa um limite no número de clientes ativos, que é definido como 1024 clientes válidos para cada gigabyte de RAM no sistema.
    • A implementação do cliente CIFS melhorou o desempenho no modo de transmissão multicanal.
    • Um novo sinalizador FAN_MARK_IGNORE foi adicionado ao subsistema de rastreamento de eventos no fanotify FS para ignorar eventos específicos.
    • No Overlayfs FS, quando montado sobre um FS com mapeamento de ID de usuário, é fornecido suporte correto para listas de controle de acesso compatíveis com POSIX.
    • Adicionado o driver de bloco ublk, que move lógica específica para o lado do processo em segundo plano no espaço do usuário e usa o subsistema io_uring.
  • Serviços de memória e sistema
    • Novos recursos foram adicionados ao subsistema DAMON (Data Access MONitor), permitindo não apenas monitorar o acesso do processo à RAM a partir do espaço do usuário, mas também influenciar o gerenciamento da memória. Em particular, foi proposto um novo módulo “LRU_SORT”, que permite o reagrupamento de listas LRU (menos usadas recentemente) para aumentar a prioridade de certas páginas de memória.
    • A capacidade de criar novas regiões de memória foi implementada usando os recursos do barramento CXL (Compute Express Link), usado para organizar a interação de alta velocidade entre a CPU e os dispositivos de memória. CXL permite conectar novas regiões de memória fornecidas por dispositivos de memória externos e usá-las como recursos adicionais de espaço de endereço físico para expandir a memória de acesso aleatório (DDR) ou memória permanente (PMEM) do sistema.
    • Resolvidos problemas de desempenho com processadores AMD Zen causados ​​por código adicionado há 20 anos para contornar um problema de hardware em alguns chipsets (uma instrução WAIT adicional foi adicionada para desacelerar o processador para que o chipset tivesse tempo de entrar em estado inativo). A mudança resultou na redução do desempenho em cargas de trabalho que frequentemente alternam entre estados inativos e ocupados. Por exemplo, depois de desativar a solução alternativa, as pontuações médias dos testes de bancada aumentaram de 32191 MB/s para 33805 MB/s.
    • O código com heurística foi retirado do agendador de tarefas, garantindo a migração dos processos para as CPUs menos carregadas, levando em consideração o ganho previsto no consumo de energia. Os desenvolvedores concluíram que a heurística não era útil o suficiente e que era mais fácil removê-la e migrar processos sem avaliação adicional sempre que tal migração pudesse resultar potencialmente em menor consumo de energia (por exemplo, quando a CPU de destino estiver em um nível de energia mais baixo). A desativação da heurística levou a uma redução no consumo de energia ao realizar tarefas intensivas, por exemplo, no teste de decodificação de vídeo, o consumo de energia diminuiu 5.6%.
    • A distribuição de tarefas entre núcleos de CPU em sistemas grandes foi otimizada, o que melhorou o desempenho para determinados tipos de carga de trabalho.
    • A interface de E/S assíncrona io_uring oferece um novo sinalizador, IORING_RECV_MULTISHOT, que permite usar o modo multi-shot com a chamada de sistema recv() para executar múltiplas operações de leitura do mesmo soquete de rede de uma só vez. io_uring também suporta transferência de rede sem buffer intermediário (cópia zero).
    • Implementada a capacidade de colocar programas BPF anexados ao uprobe em estado de suspensão. O BPF também adiciona um novo iterador ksym para trabalhar com tabelas de símbolos do kernel.
    • A interface obsoleta “efivars” no sysfs, destinada ao acesso às variáveis ​​de inicialização UEFI, foi removida (o FS virtual efivarfs agora é usado universalmente para acessar dados EFI).
    • O utilitário perf possui novos relatórios para analisar conflitos de bloqueio e o tempo gasto pelo processador na execução de componentes do kernel.
    • A configuração CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 foi removida, o que permitiu que o kernel fosse construído no modo de otimização "-O3". Observa-se que experimentos com modos de otimização podem ser realizados passando sinalizadores durante a montagem (“make KCFLAGS=-O3”), e adicionar uma configuração ao Kconfig requer um perfil de desempenho repetível, mostrando que o desenrolamento de loop usado no modo “-O3” oferece um benefício em comparação com o nível de otimização “-O2”.
    • Uma interface debugfs foi adicionada para obter informações sobre a operação de “redutores de memória” individuais (manipuladores chamados quando não há memória suficiente e compactação de estruturas de dados do kernel para reduzir seu consumo de memória).
    • Para as arquiteturas OpenRISC e LoongArch, é implementado suporte para o barramento PCI.
    • Para a arquitetura RISC-V, a extensão “Zicbom” foi implementada para gerenciar dispositivos com DMA que não são coerentes com cache.
  • Virtualização e Segurança
    • Um mecanismo de verificação RV (Runtime Verification) foi adicionado para verificar a operação correta em sistemas altamente confiáveis ​​que garantem a ausência de falhas. A verificação é realizada em tempo de execução anexando manipuladores a pontos de rastreamento que verificam o progresso real da execução em relação a um modelo determinístico de referência predeterminado da máquina que define o comportamento esperado do sistema. A verificação com o modelo em tempo de execução se posiciona como um método mais leve e fácil de implementar para confirmar a exatidão da execução em sistemas críticos, complementando os métodos clássicos de verificação de confiabilidade. Entre as vantagens do RV está a capacidade de fornecer verificação rigorosa sem uma implementação separada de todo o sistema em uma linguagem de modelagem, bem como resposta flexível a eventos imprevistos.
    • Componentes de kernel integrados para gerenciamento de enclaves baseados na tecnologia Intel SGX2 (Software Guard eXtensions), que permite que aplicativos executem código em áreas criptografadas isoladas da memória, às quais o resto do sistema tem acesso limitado. A tecnologia Intel SGX2 é suportada nos chips Intel Ice Lake e Gemini Lake e difere do Intel SGX1 em instruções adicionais para gerenciamento dinâmico de memória de enclaves.
    • Para a arquitetura x86, foi implementada a capacidade de transferir a semente para o gerador de números pseudoaleatórios através das configurações do bootloader.
    • O módulo SafeSetID LSM agora tem a capacidade de gerenciar alterações feitas por meio da chamada setgroups(). SafeSetID permite que os serviços do sistema gerenciem usuários com segurança sem aumentar privilégios (CAP_SETUID) e sem obter privilégios de root.
    • Adicionado suporte para cifra de bloco ARIA.
    • O módulo de gerenciamento de segurança baseado em BPF fornece a capacidade de anexar manipuladores a processos individuais e grupos de processos (cgroups).
    • Um mecanismo com implementação de watchdog foi adicionado para detectar travamentos de sistemas convidados com base no monitoramento da atividade da vCPU.
  • subsistema de rede
    • Manipuladores para geração e verificação de cookies SYN foram adicionados ao subsistema BPF. Também foi adicionado um conjunto de funções (kfunc) para acessar e alterar o estado das conexões.
    • A pilha wireless adicionou suporte ao mecanismo MLO (Multi-Link Operation), definido na especificação WiFi 7 e que permite que dispositivos recebam e enviem dados simultaneamente usando diferentes bandas de frequência e canais, por exemplo, para estabelecer simultaneamente vários canais de comunicação entre um ponto de acesso a um dispositivo cliente.
    • O desempenho do protocolo TLS integrado ao kernel foi melhorado.
    • Adicionada uma opção de linha de comando do kernel "hostname=" para permitir que o nome do host seja definido no início do processo de inicialização, antes que os componentes do espaço do usuário sejam iniciados.
  • Оборудование
    • O driver i915 (Intel) fornece suporte para placas de vídeo discretas Intel Arc (DG2/Alchemist) A750 e A770. Foi proposta uma implementação inicial de suporte para GPUs Intel Ponte Vecchio (Xe-HPC) e Meteor Lake. O trabalho continua para oferecer suporte à plataforma Intel Raptor Lake.
    • O driver amdgpu continua a fornecer suporte para as plataformas AMD RDNA3 (RX 7000) e CDNA (Instinct).
    • O driver Nouveau reformulou o código de suporte para mecanismos de exibição de GPU NVIDIA nv50.
    • Adicionado novo driver DRM logicvc para telas LogiCVC.
    • O driver v3d (para GPU Broadcom Video Core) oferece suporte a placas Raspberry Pi 4.
    • Adicionado suporte para GPU Qualcomm Adreno 619 ao driver msm.
    • Adicionado suporte para GPU ARM Mali Valhall ao driver Panfrost.
    • Adicionado suporte inicial para processadores Qualcomm Snapdragon 8cx Gen3 usados ​​em laptops Lenovo ThinkPad X13s.
    • Adicionados drivers de som para plataformas AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake e Mediatek MT8186.
    • Adicionado suporte para aceleradores de aprendizado de máquina Intel Habana Gaudi 2.
    • Adicionado suporte para ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Ao mesmo tempo, a Fundação Latino-Americana de Software Livre formou uma versão do kernel 6.0 totalmente gratuito - Linux-libre 6.0-gnu, livre de elementos de firmware e drivers contendo componentes ou seções de código não livres, cujo escopo é limitado pelo fabricante. A nova versão desabilita o uso de blobs no driver de áudio HD CS35L41 e no driver UCSI para microcontroladores STM32G0. Os arquivos DTS dos chips Qualcomm e MediaTek foram limpos. A desativação de blobs no driver MediaTek MT76 foi reformulada. Código de limpeza de blob atualizado nos drivers e subsistemas AMDGPU, Adreno, Tegra VIC, Netronome NFP e Habanalabs Gaudi2. Parou de limpar o driver VXGE, que foi removido do kernel.

Fonte: opennet.ru

Adicionar um comentário