11 pontos por GN⁺ 2024-09-16 | 3 comentários | Compartilhar no WhatsApp
  • Linus Torvalds lançou o kernel 6.11
    • Mensagem dele: "Mais uma vez estou viajando e fora do meu fuso horário habitual, mas aqui em Viena é domingo à tarde, e o 6.11 saiu."
  • As principais mudanças desta versão incluem novas operações bind() e listen() no io_uring, patch de bloqueio aninhado de bottom-half, capacidade de gravar em executáveis em uso, suporte para escrever drivers de bloco em Rust, suporte a operações de escrita atômica na camada de bloco, um alocador slab de buckets dedicados e uma implementação em vDSO de getrandom(), entre outras

Mudanças por arquitetura

  • A arquitetura Arm de 64 bits agora oferece suporte a hotplug de CPU em sistemas ACPI. Veja mais detalhes neste commit da documentação
  • O kernel x86 agora pode rodar como guest usando o recurso de virtualização com criptografia segura SEV-SNP da AMD, por meio do módulo de serviços de VM segura
  • O recurso de "fake EFI memory map" do x86 foi removido. Esse recurso permitia criar entradas fictícias no mapa de memória na inicialização, mas não era compatível com configurações de computação confidencial
  • Nova implementação da cifra AES-GCM para sistemas x86-64. Melhorias de desempenho são sempre bem-vindas, mas esta contribuição também se destaca pela documentação extensa sobre o código e seu funcionamento. Veja mais detalhes neste commit
  • O suporte à plataforma PowerPC 40x foi removido
  • Foi adicionado suporte a hotplug de memória em sistemas RISC-V

Núcleo do kernel

  • O subsistema io_uring agora fornece operações que implementam bind() e listen()
  • Um novo conjunto de operações ioctl() no sistema de arquivos nsfs (namespace) realiza a conversão de IDs de processo e de grupo de threads entre namespaces PID
  • O sistema de arquivos pidfd agora oferece suporte a uma nova chamada ioctl() para obter descritores de arquivo de namespace do processo representado por um pidfd
  • O patch de bloqueio aninhado de bottom-half foi incorporado. Isso é voltado principalmente para melhorar a latência em kernels de tempo real, mas também deve beneficiar outros usuários
  • Há uma nova chamada de sistema, uretprobe(), atualmente implementada apenas em sistemas x86-64. Sua função é otimizar o tratamento de uretprobe (pontos de rastreamento de retorno de função) inseridos dinamicamente em processos no espaço do usuário
  • A restrição de usuário único para o function-graph tracer foi removida
  • Agora é possível reservar regiões nomeadas de memória com o novo parâmetro de linha de comando reserve_mem=. Isso foi feito para uso com o subsistema pstore, junto com o novo parâmetro ramoops.mem_name=

Sistemas de arquivos e I/O de bloco

  • A chamada de sistema statx() agora permite que o argumento de caminho seja um ponteiro nulo quando a flag AT_EMPTY_PATH estiver definida
  • Na versão 6.11, a chamada de sistema open_by_handle_at() teve a verificação de permissões um pouco flexibilizada em situações nas quais o kernel consegue confirmar que o chamador tem direitos adequados de acesso ao arquivo
  • O kernel Linux tradicionalmente bloqueava gravações em executáveis em uso por algum processo do sistema, para evitar surpresas desagradáveis em programas em execução. Os desenvolvedores do kernel vêm removendo gradualmente essa limitação há anos. A partir do 6.11, o kernel não impede mais gravações em executáveis em uso
  • O sistema de arquivos Btrfs agora reconhece alguns novos valores para a opção de montagem rescue= (ignoremetacsums e ignoresuperflags). Eles servem para apoiar a recuperação de sistemas de arquivos parcialmente convertidos por ferramentas de espaço do usuário, especialmente sistemas de arquivos submetidos à conversão de checksum
  • A forma como o Btrfs realiza a recuperação de block groups foi melhorada. Isso busca evitar situações em que o espaço livre não pode ser utilizado mesmo quando o sistema de arquivos não está cheio. Veja a explicação sobre o funcionamento dos novos limiares dinâmicos de recuperação neste commit

Suporte a hardware

  • Controlador de clock de câmera do Qualcomm SM8650
  • Monitoramento de hardware, incluindo sensores de temperatura compatíveis com SPD5118 e o controlador digital multiphase dual-loop Monolithic Power Systems MP2993
  • Outros itens, como sensores do controlador embarcado do ChromeOS e controladores de carga baseados em ChromeOS EC
  • Redes, incluindo o adaptador de rede sem fio USB Realtek RTL8192DU, a interface Renesas Ethernet-TSN e a interface CAN Vining 800
  • Itens relacionados a clocks, como o controlador de clock PLL do Amlogic C3 e os controladores de clock de display/câmera/vídeo do Qualcomm SM7150
  • GPIO e controle de pinos, incluindo a unidade de controle de pinos NXP IMX91 e os controladores de pinos e GPIO Nuvoton MA35
  • Gráficos, incluindo o painel Lincoln Technologies lcd197 e painéis baseados no Ilitek ILI9806E
  • Novo suporte a hardware em várias áreas, incluindo I/O industrial, dispositivos de entrada, mídia, outros, PHY, som e USB

Outros

  • Surgiu um novo subsistema de sequenciamento de energia para colocar os dispositivos do sistema em funcionamento na ordem correta
  • O módulo "sloppy logic analyzer" pode transformar um conjunto de linhas GPIO em um analisador lógico de baixo custo
  • Muitas novas funcionalidades foram adicionadas à ferramenta perf
  • Foi incorporado um pequeno conjunto de abstrações Rust para carregamento de firmware. Ainda faltam muitas peças para escrever drivers importantes em Rust, mas essa lista está diminuindo aos poucos

Rede

  • O novo ajuste sysctl net.tcp_rto_min_us permite configurar o tempo mínimo de timeout de retransmissão para sockets TCP
  • O utilitário ethtool agora pode fazer ajuste fino da configuração de interrupções para interfaces que usam Net DIM

Relacionado à segurança

Virtualização e contêineres

  • Foi adicionado suporte inicial no KVM ao mecanismo de virtualização com criptografia segura SEV-SNP da AMD
  • Há uma nova chamada ioctl() do KVM para preencher previamente a memória do guest antes de sua execução

Mudanças internas do kernel

  • A primeira mudança incorporada ao 6.11 foi um novo mecanismo de "constantes em tempo de execução" adicionado por Linus Torvalds
  • Alguma documentação do subsistema iomap finalmente foi produzida
  • A versão mínima necessária do GNU Make para compilar o kernel foi elevada para 4.0
  • No 6.11, 118 símbolos exportados foram removidos e 464 foram adicionados, para um aumento líquido de 346. Também há 6 novas kfuncs

Opinião do GN⁺

  • Nesta versão do kernel 6.11, impressionam as muitas melhorias específicas por arquitetura e a expansão do suporte a hardware. Em especial, o hotplug de CPU em ARM 64 bits e o suporte ao SEV-SNP da AMD no x86 têm relevância em termos de segurança e virtualização
  • Com novas funcionalidades adicionadas ao io_uring e ao BPF, reforça-se a tendência de ampliar o suporte em nível de kernel para I/O de alto desempenho e programação eBPF. Isso deve ajudar bastante na otimização de desempenho do sistema, no monitoramento e em redes
  • O surgimento de novos subsistemas e módulos, como sequenciamento de energia e o analisador lógico sloppy, deve ampliar o uso do kernel Linux em ambientes embarcados e de IoT
  • Melhorias internas, como constantes em tempo de execução e avanços na documentação, seguem acontecendo de forma contínua para otimização do código do kernel e melhoria da experiência de desenvolvimento. Ainda assim, como ainda faltam documentações em várias áreas, a cooperação da comunidade parece cada vez mais necessária
  • Na parte final da merge window do 6.11, o foco principal esteve em melhorias de desempenho para várias arquiteturas e em novo suporte a hardware. Em especial, a otimização da cifra AES-GCM no x86-64 e o suporte a hotplug de memória no RISC-V são mudanças dignas de destaque
  • Também houve avanço na segurança da virtualização, com a adição de suporte inicial ao SEV-SNP da AMD no KVM. Isso sugere que o papel do kernel Linux tende a crescer ainda mais em ambientes de cloud e edge computing
  • A introdução de abstrações Rust para carregamento de firmware e prevenção contra heap spraying mostra o potencial do Rust como linguagem de programação de sistemas. É provável que a presença de código Rust no kernel aumente gradualmente no futuro
  • O adiamento da integração da classe de escalonador escalável é lamentável, mas parece ter sido uma escolha inevitável para garantir revisão suficiente e estabilidade. Como o escalonador afeta diretamente o desempenho do sistema, é necessário adotar uma abordagem cuidadosa

3 comentários

 
ehlegeth 2024-10-03

"Mesmo depois de atualizar para 6.10.10, ainda não acorda do modo de suspensão de forma intermitente"
Então não era só comigo...

 
xcutz 2024-09-16

O Torvalds precisa viver pelo menos mais uns 200 anos.

 
GN⁺ 2024-09-16
Comentários do Hacker News
  • A versão 6.10 teve muitos problemas por causa de vários bugs importantes
    • 3 bugs relacionados ao amdgpu causaram corrupção de vídeo, travamentos do sistema e crashes
    • Mesmo após atualizar para a 6.10.10, às vezes ainda não volta do modo de suspensão
  • Houve muito progresso desde a versão Linux 3.11
  • Impressiona que o Torvalds ainda escreva as notas de lançamento do kernel Linux
  • Boas notícias para comemorar
    • Suporte para escrever drivers de bloco em Rust
    • Suporte a operações de escrita atômica na camada de bloco
  • Expectativa para a versão 6.12: sched_ext, PREEMPT_RT
  • Pedem opiniões sobre o novo suporte ao Snapdragon X
  • Curiosidade sobre como constantes de tempo de execução serão implementadas
  • Pergunta-se quando chegará a era do GNU/Linux em smartphones
    • Android não serve
    • Gostariam de poder instalar distribuições no smartphone tão facilmente quanto em um desktop
  • Pergunta-se se agora já é possível suspender notebooks Linux para RAM
  • Esperando o dia em que o Ubuntu vai dizer que aplicou e testou esse recurso por alguns dias no beta do Oracular