Lançamento do núcleo Linux 6.0.

Após dois meses de desenvolvimento, Linus Torvalds lançou a versão do núcleo Linux 6.0. A mudança significativa do número da versão foi realizada por razões estéticas e representa um passo formal, removendo a incomodidade causada pelo acúmulo de várias versões na série (Linus brincou que a razão para a mudança de número de versão é que ele estava ficando sem dedos nas mãos e pés para contar as versões). Entre as mudanças mais notáveis estão: suporte à gravação em buffer assíncrona no XFS, driver em bloco ublk, otimização do planejador de tarefas, mecanismo de verificação da correção do funcionamento do núcleo e suporte ao cifrador em bloco ARIA.

Novidades principais no núcleo 6.0:

  • Subsistema de disco, entrada/saída e sistemas de arquivos
    • O sistema de arquivos XFS agora possui suporte à gravação em buffer assíncrona usando o mecanismo io_uring. Testes de desempenho realizados com a ferramenta fio (1 fluxo, tamanho de bloco de 4KB, 600 segundos, gravação sequencial) mostram um aumento de operações de entrada/saída por segundo (IOPS) de 77k para 209k, taxa de transferência de dados de 314MB/s para 854MB/s e redução das latências de 9600ns para 120ns (80 vezes).
    • No sistema de arquivos Btrfs, foi implementada a segunda versão do protocolo para o comando 'send', que suporta metadados adicionais, envio de dados em blocos maiores (acima de 64K) e transmissão de extensões de forma compactada. A performance das operações de leitura direta aumentou significativamente (até 3 vezes) por meio da leitura simultânea de até 256 setores. Conflitos de bloqueio foram reduzidos e a verificação de metadados acelerada através da diminuição da reserva de metadados para elementos adiados.
    • No sistema de arquivos ext4, foram adicionadas novas operações ioctl EXT4_IOC_GETFSUUID e EXT4_IC_SETFSUUID para extração ou definição do identificador UUID, armazenado no superbloco.
    • No sistema de arquivos F2FS, foi introduzido um modo de baixo consumo de memória, que otimiza o desempenho em dispositivos com pouca memória RAM e reduz o consumo de memória em troca de uma queda no desempenho.
    • Adicionado suporte à autenticação de dispositivos NVMe.
    • Em servidor O NFSv4 implementou um limite no número de clientes ativos, que é definido como 1024 clientes permitidos para cada gigabyte de RAM no sistema.
    • Na implementação do cliente CIFS, a performance foi aumentada no modo de transmissão multimodal.
    • Foi adicionado um novo flag FAN_MARK_IGNORE ao subsistema de rastreamento de eventos no sistema de arquivos fanotify para ignorar eventos específicos.
    • No sistema de arquivos Overlayfs, ao montar sobre um sistema de arquivos com mapeamento de identificadores de usuários, foi garantido suporte correto a listas de controle de acesso compatíveis com POSIX.
    • Adicionado o driver em bloco ublk, que transfere a lógica específica para o lado do processo em segundo plano no espaço do usuário e utiliza o subsistema io_uring.
  • Memória e serviços do sistema
    • Novas funcionalidades foram adicionadas ao subsistema DAMON (Data Access MONitor), permitindo não apenas monitorar o acesso dos processos à memória RAM do espaço do usuário, mas também influenciar a gestão da memória. Em particular, foi proposto um novo módulo chamado 'LRU_SORT', que proporciona a reorganização das listas LRU (Least Recently Used) para aumentar o priotidade de determinadas páginas de memória.
    • Foi implementada a capacidade de criar novas regiões de memória utilizando as capacidades do barramento CXL (Compute Express Link), utilizado para facilitar a interação de alta velocidade entre o CPU e dispositivos de memória. O CXL permite conectar novas regiões de memória fornecidas por dispositivos de memória externos e utilizá-las como recursos adicionais do espaço de endereços físicos para expandir a memória RAM (DDR) ou memória persistente (PMEM).
    • Foram resolvidos problemas de desempenho em sistemas com processadores AMD Zen, causados por um código adicionado há 20 anos para contornar um problema de hardware em alguns chipsets (uma instrução WAIT adicional era inserida, retardando o processador para que o chipset pudesse entrar em estado ocioso). Essa mudança resultava em uma redução de desempenho em cargas que frequentemente alternavam entre os estados de ociosidade (idle) e atividade (busy). Por exemplo, após a remoção da solução alternativa, os resultados médios do teste tbench aumentaram de 32191 MB/s para 33805 MB/s.
    • O código heurístico foi removido do planejador de tarefas, garantindo a migração de processos para CPUs menos carregadas, levando em consideração a expectativa de ganho no consumo de energia. Os desenvolvedores concluíram que a heurística não trazia os benefícios desejados e é mais simples mover processos sem avaliações adicionais sempre que essa movimentação puder potencialmente reduzir o consumo de energia (por exemplo, quando a CPU alvo opera em níveis de consumo mais baixos). A desativação da heurística resultou na redução do consumo de energia durante tarefas intensivas, como no teste de decodificação de vídeo, onde o consumo de energia caiu 5,6%.
    • Foi realizada uma otimização na distribuição de tarefas entre os núcleos de CPU em sistemas de grande porte, permitindo um aumento no desempenho em certos tipos de carga.
    • Na interface de entrada/saída assíncrona io_uring, foi introduzido um novo flag IORING_RECV_MULTISHOT, que permite o uso do modo 'multi-shot' com a chamada de sistema recv() para realizar várias operações de leitura de um único socket de rede de uma só vez. O io_uring também implementou suporte para transmissão de rede sem buffering intermediário (zero-copy).
    • Foi implementada a possibilidade de colocar programas BPF, anexados a uprobe, em modo de suspensão. No BPF, também foi adicionado um novo iterador ksym para trabalhar com tabelas de símbolos do kernel.
    • A interface obsoleta 'efivars' no sysfs, destinada ao acesso a variáveis de inicialização do UEFI, foi removida (os dados EFI agora são acessados universalmente através do sistema de arquivos virtual efivarfs).
    • Novos relatórios foram implementados na ferramenta perf para analisar conflitos de bloqueio e o tempo gasto pelo processador para executar componentes do kernel.
    • A configuração CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, que permitia compilar o kernel com a otimização '-O3', foi removida. Observa-se que experimentos com modos de otimização podem ser realizados através da passagem de flags durante a compilação ('make KCFLAGS=-O3'), e para adicionar a configuração ao Kconfig, é necessário garantir um perfil de desempenho reprodutível que mostre que a implementação de ciclos no modo '-O3' proporciona ganhos em relação ao nível de otimização '-O2'.
    • Adicionado o interface debugfs para obter informações sobre o funcionamento de "memory shrinkers" (manipuladores chamados em caso de falta de memória, que empacotam estruturas de dados do núcleo para reduzir seu consumo de memória).
    • Para as arquiteturas OpenRISC e LoongArch, foi implementado suporte ao barramento PCI.
    • Para a arquitetura RISC-V, foi implementada a extensão "Zicbom" para gerenciar dispositivos com DMA, não coerentes com o cache (non-cache-coherent).
  • Virtualização e segurança
    • Adicionado o mecanismo de verificação RV (Runtime Verification) para checar a correção de operações em sistemas de alta confiabilidade, garantindo a ausência de falhas. A verificação é realizada em tempo de execução através da vinculação de manipuladores a pontos de rastreamento, comparando o fluxo de execução real com um modelo determinístico de referência pré-definido que determina o comportamento esperado do sistema. A verificação em tempo de execução é posicionada como uma forma mais leve e prática de confirmar a correção das operações em sistemas críticos, complementando os métodos clássicos de validação de confiabilidade. Dentre as vantagens do RV, destaca-se a possibilidade de proporcionar uma verificação rigorosa sem a necessidade de implementar todo o sistema em uma linguagem de modelagem, além de uma resposta flexível a eventos imprevistos.
    • Integrados componentes do núcleo para gerenciar enclaves baseados na tecnologia Intel SGX2 (Software Guard eXtensions), permitindo que aplicativos executem código em áreas de memória isoladas e criptografadas, com acesso ao restante do sistema restrito. A tecnologia Intel SGX2 é suportada nos chips Intel Ice Lake e Gemini Lake, e se diferencia do Intel SGX1 por instruções adicionais para gerenciamento dinâmico da memória dos enclaves.
    • Para a arquitetura x86, foi implementada a possibilidade de passar a semente para o gerador de números pseudoaleatórios por meio das configurações do carregador.
    • No módulo LSM SafeSetID, foi adicionada a capacidade de gerenciar alterações feitas através da chamada setgroups(). O SafeSetID permite que serviços de sistema gerenciem usuários de forma segura, sem elevar privilégios (CAP_SETUID) e sem obter as permissões do usuário root.
    • Adicionada suporte ao bloco de cifra ARIA.
    • No módulo de gestão de segurança baseado em BPF, foi adicionada a opção de anexar manipuladores a processos individuais e grupos de processos (cgroup).
    • Foi adicionado um mecanismo com a implementação do watchdog para detectar travamentos nos sistemas convidados com base na monitoração da atividade do vCPU.
  • Subsistema de Rede
    • Handlers foram adicionados ao subsistema BPF para geração e verificação de cookies SYN. Também foi adicionado um conjunto de funções (kfunc) para acessar e modificar o estado das conexões.
    • O stack sem fio agora suporta o mecanismo MLO (Multi-Link Operation), definido na especificação WiFi 7, que permite que dispositivos enviem e recebam dados simultaneamente usando diferentes faixas de frequência e canais, por exemplo, para estabelecer múltiplos canais de comunicação entre o ponto de acesso e o dispositivo cliente ao mesmo tempo.
    • A performance da implementação do protocolo TLS embutida no kernel foi melhorada.
    • Um novo parâmetro de linha de comando do kernel "hostname=" foi adicionado, permitindo definir o nome do host em uma fase inicial de inicialização, antes que os componentes do espaço do usuário sejam iniciados.
  • Hardware
    • No driver i915 (Intel), foi adicionada a compatibilidade com as placas de vídeo discretas Intel Arc (DG2/Alchemist) A750 e A770. Uma implementação inicial do suporte para a GPU Intel Ponte Vecchio (Xe-HPC) e Meteor Lake foi proposta. O trabalho no suporte à plataforma Intel Raptor Lake continua.
    • No driver amdgpu, o trabalho no suporte às plataformas AMD RDNA3 (RX 7000) e CDNA (Instinct) foi continuado.
    • No driver Nouveau, o código de suporte para motores de exibição da GPU NVIDIA nv50 foi reformulado.
    • Um novo driver DRM logicvc para telas LogiCVC foi adicionado.
    • No driver v3d (para GPU Broadcom Video Core), o suporte para placas Raspberry Pi 4 foi implementado.
    • No driver msm, o suporte para a GPU Qualcomm Adreno 619 foi adicionado.
    • No driver Panfrost, o suporte para a GPU ARM Mali Valhall foi adicionado.
    • O suporte inicial para os processadores Qualcomm Snapdragon 8cx Gen3, utilizados em notebooks Lenovo ThinkPad X13s, foi adicionado.
    • Drivers de áudio para as plataformas AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake e Mediatek MT8186 foram adicionados.
    • O suporte para aceleradores de sistemas de aprendizado de máquina Intel Habana Gaudi 2 foi adicionado.
    • O suporte para ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530 e Google Chameleon v3 foi adicionado.

Simultaneamente, a Fundação de Software Livre da América Latina criou uma versão completamente livre do núcleo 6.0 — Linux-libre 6.0-gnu, livre de elementos de firmware e drivers que contêm componentes não livres ou trechos de código cuja aplicação é limitada pelo fabricante. Nesta nova versão, o uso de blobs no driver CS35L41 HD-audio e no driver com interface UCSI para microcontroladores STM32G0 foi desativado. Realizou-se uma limpeza dos arquivos dts para chips Qualcomm e MediaTek. O desligamento de blobs no driver MediaTek MT76 foi reescrito. O código de limpeza de blobs nos drivers e subsistemas AMDGPU, Adreno, Tegra VIC, Netronome NFP e Habanalabs Gaudi2 foi atualizado. A limpeza do driver VXGE, que foi removido do núcleo, foi interrompida.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster