Lançamento do núcleo Linux 6.14

Após dois meses de desenvolvimento, Linus Torvalds apresentou o lançamento do núcleo Linux 6.14. Entre as mudanças mais notáveis estão: driver ntsync com primitivas de sincronização Windows NT, configuração de balanceamento de operações de leitura no Btrfs RAID1, suporte a reflink no XFS em modo realtime, possibilidade de entrada/saída em buffer não armazenável, cgroup dmem para limitação de memória da GPU, aproveitamento do io_uring no FUSE, delegação de atributos no NFS, suporte a gravação atômica no Device mapper, aceleração de links simbólicos, gerenciamento da capacidade de execução de scripts, suporte a chips Qualcomm Snapdragon 8 Elite, driver para NPU AMD.

Na nova versão, foram aceitas 12115 correções de 1984 desenvolvedores, o tamanho do patch é de 39 MB (as alterações afetaram 10170 arquivos, adicionadas 531586 linhas de código e removidas 235999 linhas). Na versão anterior, havia 14172 correções de 2086 desenvolvedores, com um tamanho de patch de 46 MB. Cerca de 41% de todas as alterações apresentadas no 6.14 estão relacionadas a drivers de dispositivos, aproximadamente 13% dizem respeito à atualização de código específico para arquiteturas de hardware, 14% estão relacionadas à pilha de rede, 7% a sistemas de arquivos e 4% a subsistemas internos do núcleo.

As principais novidades no núcleo 6.14:

  • Subsistema de disco, entrada/saída e sistemas de arquivos
    • No sistema de arquivos Btrfs, foi adicionado suporte a novos métodos de balanceamento de operações de leitura entre os dispositivos que compõem o array RAID1. Além da estratégia anterior de distribuição de carga com base nas identificações de processo (pid), a nova versão oferece três novos modos de balanceamento: "rotation" (distribuição uniforme da carga em todos os dispositivos, modo ativado por padrão); "latency" (distribuição considerando latências, útil em falhas ou funcionamento instável dos dispositivos); devid (gerenciamento manual). Para alterar o modo de balanceamento, foi adicionado um interface em "\/sys\/fs\/btrfs\/\/read_policy". Entre outras mudanças no Btrfs, está a implementação do ioctl FS_IOC_READ_VERITY_METADATA.
    • Foi adicionado um modo de entrada/saída em buffer não cacheado, onde os dados são removidos do cache de página assim que as operações de leitura ou gravação são concluídas. Essa alteração pode ser útil ao usar dispositivos de armazenamento muito rápidos, cujo cache de operações na memória é redundante. Para esses dispositivos, o novo modo permite evitar o desperdício desnecessário de memória pelo cache de página, sem recorrer a uma API complexa de entrada/saída direta (Direct I/O).
    • No fsnotify, o mecanismo de rastreamento de mudanças no sistema de arquivos, foi adicionado um novo evento FS_PRE_ACCESS, gerado na fase anterior ao acesso ao conteúdo do arquivo. O evento é tratado de forma síncrona, ou seja, o núcleo envia o evento e aguarda a resposta. Se a resposta for recebida, a operação é realizada; caso contrário, a chamada de sistema retorna um código de erro ao espaço do usuário. Com o FS_PRE_ACCESS, um processo no espaço do usuário pode, por exemplo, organizar o preenchimento do arquivo à medida que os dados se tornam disponíveis em um armazenamento lento.
    • No subsistema FUSE, que permite a criação de implementações de sistemas de arquivos no espaço do usuário, foi adicionada a suporte para troca de dados entre o núcleo e o manipulador no espaço do usuário, utilizando o mecanismo de entrada/saída io_uring. A alteração permite aumentar o desempenho do FUSE ao reduzir as mudanças de contexto entre o núcleo e o espaço do usuário.
    • No sistema de arquivos XFS, foi adicionado o suporte para mapeamento reverso (rmap, reverse-mapping) em modo de operação com latências previsíveis ("dispositivo em tempo real"). O mapeamento reverso permite determinar qual arquivo está sendo armazenado em um bloco específico no dispositivo de armazenamento. Com o rmap, o modo em tempo real do XFS suporta a operação reflink, que permite criar cópias de arquivos clonando os metadados do arquivo e criando uma referência aos dados já existentes, sem copiar efetivamente os dados.
    • No VFS, foi implementado o cache do tamanho de links simbólicos, resultando em um aumento de 1,5% na velocidade da operação readlink (no teste com /initrd.img no ext4). O cache está habilitado nos sistemas de arquivos ext4 e tmpfs.
    • A implementação do NFSv4.2 adicionou suporte para delegação de atributos de arquivos, permitindo gerenciar atributos de arquivos, como tempo de modificação (mtime), do lado do cliente NFS, sem a necessidade de reintegrar as alterações no servidor. Também foi melhorado o suporte ao protocolo "LOCALIO" no NFS, permitindo determinar se o cliente e o servidor NFS estão no mesmo host, para ativar as otimizações apropriadas, como o uso de entrada/saída direta (Direct I/O) pelo cliente.
    • Desempenho de operações de leitura em sistemas de arquivos NETFS, CIFS e AFS (Andrew File System) foi aprimorado.
    • O Squashfs agora inclui um modo de carregamento direto de blocos para o cache de páginas (SQUASHFS_FILE_DIRECT), permitindo a operação sem um cache separado read_page. Esta alteração reduziu o tamanho da memória consumida durante a operação do Squashfs.
    • O sistema de chamada statx() implementou a flag STATX_DIO_READ_ALIGN, para determinar o alinhamento necessário para operações de leitura de arquivos.
    • No sistema de arquivos Bcachefs, o formato das estruturas de disco foi atualizado e estabilizado. Quaisquer futuras mudanças no formato serão consideradas não obrigatórias e implementadas na forma de complementos opcionais. A velocidade de verificação de integridade do FS foi significativamente aumentada. Além disso, o funcionamento no modo somente leitura foi melhorado; problemas que levavam a acessos à memória após a liberação (use after free) foram corrigidos; problemas com ponteiros reflink em fsck foram resolvidos; e o tratamento de reinício de transações foi corrigido.
    • O módulo md-linear foi restaurado, destinado a combinar dispositivos de bloco. Este módulo foi anteriormente declarado obsoleto e removido do kernel 6.8, mas, como se mostrou necessário, agora foi restaurado.
    • Os sistemas de arquivos F2FS e SQUASHFS foram convertidos para o uso de folhetos de páginas de memória (page folios).
    • Os sistemas de arquivos OCFS2 e DLMFS foram convertidos para utilizar a nova API de montagem de partições.
    • No driver null_blk, foi implementado o atributo "rotational", ajustado através do configfs, que permite simular operações com dispositivos baseados em discos rotativos para facilitar a testagem de funções do kernel.
    • No sistema Device mapper e nos módulos dm-mirror, dm-io, dm-table, dm-linear, dm-stripe e dm-raid1, foi implementado suporte para gravação atômica.
  • Memória e serviços do sistema
    • A integração no núcleo do driver ntsync foi concluída, implementando o dispositivo simbólico /dev/ntsync e um conjunto de primitivas para sincronização, utilizadas no núcleo do Windows NT. A implementação dessas primitivas em nível de núcleo permite um aumento significativo no desempenho de jogos Windows que são executados com o Wine. O ganho de performance é alcançado ao eliminar as sobrecargas associadas ao uso de RPC no espaço do usuário. A criação de um driver separado para o núcleo Linux se justifica pela dificuldade de uma implementação correta da API de sincronização NT sobre as primitivas existentes no núcleo.
    • Um novo controlador cgroup DMEM foi adicionado para contabilizar separadamente as áreas de memória de dispositivos, como GPUs. O DMEM permite criar cgroups separados para diferentes tarefas que operam com GPUs, de modo que possam ser executadas sem interferir umas nas outras. Essa nova funcionalidade resolve o problema de encerramento forçado de operações com GPUs ao esgotar a memória disponível, graças à contabilização da memória refletida da GPU e da memória utilizada pelos drivers da CPU em cgroups separados.
    • Foram realizadas otimizações na escalabilidade da operação de limpeza (flush) do cache TLB (Translation Lookaside Buffer), utilizado para acelerar a conversão de endereços virtuais em físicos. As otimizações adicionadas consistem na atualização adiada de algumas estruturas de dados durante a troca de contexto, o que permite melhorar o desempenho em determinados testes.
    • O desempenho do mecanismo MGLRU (Multi-Generational LRU) foi aprimorado, utilizado para determinar quais páginas de memória estão em uso e quais podem ser deslocadas para a área de swap.
    • Continua a transferência de alterações da ramificação Rust-for-Linux, relacionadas ao uso da linguagem Rust como segunda linguagem para o desenvolvimento de drivers e módulos do núcleo (o suporte a Rust não está ativado por padrão, e não gera a inclusão do Rust entre as dependências obrigatórias para compilação do núcleo). Foi fornecida a possibilidade de usar no código do núcleo o macro "derive(CoercePointee)", que permite o uso de ponteiros inteligentes com objetos trait. O núcleo agora inclui ligações Rust para PCI, plataformas, Open Firmware, dispositivos de caracteres e algumas funções de entrada/saída. Greg Kroah-Hartman, responsável pelo suporte à ramificação estável do núcleo Linux, caracterizou o estado atual como "quase pronto para escrever um driver real em Rust."
    • Nos cenários de compilação, foi proposto um novo código para gerar versões de símbolos de depuração para módulos carregáveis, que agora utiliza informações de registros de depuração no formato DWARF, em vez de analisar o código-fonte diretamente. Essa alteração permite a aplicação de versionamento de símbolos de depuração para módulos escritos na linguagem Rust. A antiga implementação também foi mantida no núcleo, e a escolha do gerador é feita ao nível das opções de compilação.
    • Para a arquitetura PowerPC, foi implementado suporte para o modo de pré-empcão de tarefas preguiçosa (PREEMPT_LAZY), que corresponde ao modo de pré-empcão total ("full preemption") para tarefas em tempo real (RR/FIFO/DEADLINE), mas adia a pré-empcão de tarefas normais (SCHED_NORMAL) até o limite do tick.
    • Adicionou-se suporte a contadores de consumo de energia dos processadores AMD no subsistema de perfil de desempenho "perf". A possibilidade de operação em sistemas com até 2048 núcleos de CPU foi adicionada.
    • Foi fornecida a possibilidade de usar o parâmetro sysctl pid_max com espaços de nomes de identificadores de processos (ID namespace). O parâmetro pid_max é destinado a limitar o valor máximo dos identificadores de processos (PID) e agora pode ser usado para limitar o número máximo de processos que podem ser executados no espaço de nomes especificado. O tratamento do parâmetro é realizado de forma hierárquica, ou seja, as restrições nos espaços de nomes externos se aplicam aos espaços de nomes aninhados.
    • Ao usar para iniciar o processo de chamada de sistema execveat, agora será exibido o nome do arquivo executado no sistema de arquivos /proc, em vez do número do descritor de arquivo.
    • Foi adicionada ao código-fonte do núcleo (no diretório samples/vfs) a ferramenta mountinfo, demonstrando o uso das chamadas de sistema statmount() e listmount().
    • Na subsidiária BPF, foram introduzidas novas funções bpf_local_irq_save() e bpf_local_irq_restore() para desativar temporariamente as interrupções no CPU local. As funções podem ser usadas para implementar estruturas cuja manipulação não seja interrompida.
    • Na chamada de sistema madvise(), ao usar os flags MADV_DONTNEED e MADV_FREE, foi garantida a liberação das tabelas de páginas de memória associadas ao intervalo de endereços liberados, pois em algumas situações páginas de memória vazias podem ocupar uma quantidade considerável de memória.
    • Para a arquitetura OpenRISC, foi implementado suporte ao mecanismo de sequências reiniciáveis (rseq, restartable sequences), projetado para a execução atômica rápida de operações que, em caso de interrupção por outro thread, são limpas e uma nova tentativa de execução é feita.
    • Foi realizada a reorganização do código com a implementação dos algoritmos CRC32 e CRC-T10DIF, que agora não se sobrepõe mais à subsistema crypto e é chamado diretamente da interface da biblioteca. Esta mudança permitiu simplificar o código e aumentar sua eficiência.
    • Foi adicionado à sistema de entrada/saída assíncrona io_uring uma interface para transmitir metadados adicionais de integridade durante a execução de operações de leitura e gravação.
  • Virtualização e segurança
    • Na chamada de sistema execveat, foi adicionado o sinalizador AT_EXECVE_CHECK, que permite verificar a validade da execução de um arquivo sem realmente executá-lo, mas levando em consideração políticas de segurança, permissões de acesso e módulos LSM ativos. Para uso em conjunto com AT_EXECVE_CHECK, foram sugeridos os sinalizadores securebit SECBIT_EXEC_RESTRICT_FILE e SECBIT_EXEC_DENY_INTERACTIVE, que podem ser usados para restringir a execução de arquivos com scripts em linguagens de programação interpretadas. O sinalizador SECBIT_EXEC_RESTRICT_FILE exige que vinculadores e intérpretes usem a opção AT_EXECVE_CHECK para verificar a validade da execução, enquanto o sinalizador SECBIT_EXEC_DENY_INTERACTIVE proíbe o processamento de comandos interativos. A ideia principal da alteração é a possibilidade de aplicar políticas de segurança não apenas a arquivos executáveis tradicionais, mas também a arquivos de texto com scripts que podem ser carregados através da execução de um interpretador (ou seja, a proibição da execução pode ser implementada não apenas ao chamar './script.sh', mas também ao executar na forma 'sh script.sh').
    • Em sistemas x86, foi implementado suporte para contadores de tempo protegidos para sistemas convidados, que não permitem alterar os relógios do sistema convidado a partir do ambiente do host. Essa possibilidade é baseada no mecanismo AMD SEV (Secure Encrypted Virtualization), utilizado em sistemas de virtualização para proteção. máquinas virtuais contra interferências do hipervisor ou do administrador do sistema host.
    • O sistema de controle de acesso mandatário SELinux adicionou suporte para regras xperm, permitindo vincular políticas SELinux a chamadas específicas de ioctl() ou mensagens netlink.
    • Para a verificação de módulos do kernel por assinatura digital, o algoritmo SHA512 é utilizado por padrão em vez do SHA1.
    • Nos drivers para sistemas convidados do VirtualBox, foi adicionado suporte à arquitetura ARM64.
    • No hipervisor KVM O trabalho na implementação do mecanismo Intel TDX (Trusted Domain Extensions) para a criptografia da memória dos sistemas convidados foi continuado.
    • No virtio_blk, foi adicionado suporte ao modo de recuperação de erros.
  • Subsistema de Rede
    • Na implementação do protocolo RxRPC, agora é possível usar quadros UDP grandes para aumentar a largura de banda.
    • Para TCP, foi adicionado suporte ao algoritmo RACK-TLP para detecção de perda de pacotes.
    • Adicionado um novo parâmetro sysctl tcp_tw_reuse_delay, que opera vinculado ao espaço de nomes (network namespace) e permite definir o atraso antes que o sistema possa reutilizar o número da porta de rede após o fechamento do socket TCP.
    • Adicionada a possibilidade de escolher o provedor de tempo preciso (PTP) para formação de timestamps nos níveis PHY e MAC.
    • Para o IPsec, foi implementado o suporte para o mecanismo de agregação e fragmentação de pacotes IP encapsulados — IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
    • No sistema de sockets de rede, foi adicionada a suporte para transmissão de informações de prioridade (SO_PRIORITY) na forma de mensagens de controle (cmsg). Para sockets de rede, foi adicionada a opção SO_RCVPRIORITY, que habilita na função recvmsg() a transmissão de informações de prioridade do socket.
  • Hardware
    • Adicionado o driver amdxdna para aceleradores NPU (Neural Processing Unit) integrados na CPU AMD baseados na arquitetura XDNA, destinados a acelerar operações relacionadas ao aprendizado de máquina. O NPU baseado na arquitetura XDNA é fornecido nas séries 7040 e 8040 de processadores AMD Ryzen, aceleradores AMD Alveo V70 e SoC AMD Versal.
    • No driver i915, foram adicionados identificadores de novas GPUs, implementado um manipulador para falhas na inicialização HDMI, e aumentada a confiabilidade do reset dos motores GPU em sistemas Haswell e mais antigos.
    • O trabalho no driver drm (Direct Rendering Manager) Xe para GPUs baseadas na arquitetura Intel Xe, utilizada em placas gráficas Intel da família Arc e gráficos integrados, foi continuado a partir dos processadores Tiger Lake.
    • No driver Nouveau, foi adicionada a capacidade de transmitir buffers com logs GSP-RM através do debugfs.
    • No driver AMDGPU, foi implementado o suporte para o mecanismo DRM panic, que exibe uma semelhança ao 'tela azul da morte' em caso de falhas. Continuou a preparação para suporte à futura série de placas gráficas Radeon RX 9000 com arquitetura RDNA4. O suporte para DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS e ISP foi atualizado.
    • No driver DRM msm (GPU Qualcomm Adreno), foi adicionado suporte para a plataforma Qualcomm SM6150 (QCS615).
    • No driver DRM panfrost, foi adicionado suporte para SoC MediaTek MT8188 com GPU Mali-G57.
    • No driver DRM vc4, foi adicionado suporte para SoC Broadcom BCM2712 (Raspberry Pi 5).
    • No driver vfio nvgrace-gpu, foi adicionado suporte para chips NVIDIA Grace Blackwell 200.
    • Inclui o driver para controladores Intel THC (Touch Host Controller), utilizado para interagir com telas sensíveis ao toque e touchpads em alguns laptops. Suporte adicionado para dispositivos Wacom com interface PCI. Suporte adicionado para controladores de jogos da QH Electronics.
    • Suporte adicionado para placas ARM, SoCs e dispositivos: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Suporte adicionado para SoC SpacemiT K1 baseado na arquitetura RISC-V.
    • No subsistema de áudio ALSA para MIDI 2.0, as APIs rawmidi e sequencer foram expandidas. No API para execução de operações de compressão na placa de som, foi adicionado suporte para ASRC (Conversão Assíncrona de Taxa de Amostragem).
    • Suporte adicionado para sistemas de áudio de dispositivos Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 e 18i20. Suporte adicionado para fones de ouvido sem fio SteelSeries Arctis 9.

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