A Oracle apresentou a primeira versão estável do Unbreakable Enterprise Kernel 8 (UEK R8), uma variante do kernel Linux desenvolvida para uso na distribuição Oracle Linux como uma alternativa ao pacote padrão com kernel do Red Hat Enterprise Linux. O kernel está disponível apenas para arquiteturas x86_64 e ARM64 (aarch64). O código-fonte do kernel, incluindo a divisão em patches separados, foi publicado no repositório Git público da Oracle.
O pacote Unbreakable Enterprise Kernel 8 é baseado no kernel Linux 6.12 (a versão UEK R7 foi baseada no kernel 5.4, e na versão beta do RHEL 10, foi proposto o kernel 6.11), complementado com novos recursos, otimizações e correções, além de ser testado quanto à compatibilidade com a maioria dos aplicativos que funcionam no RHEL, e otimizado para trabalhar com software e hardware industrial da Oracle. Pacotes de instalação e src do kernel UEK R8 foram preparados para o Oracle Linux 9.5 (não há obstáculos para o uso deste kernel em versões semelhantes do RHEL, CentOS, Alma Linux e Rocky Linux).
Novidades principais do Unbreakable Enterprise Kernel 8:
- A separação dos componentes do kernel UEK em pacotes distintos foi modificada. Os módulos do kernel foram separados da imagem base do kernel e transferidos para coleções fornecidas em pacotes distintos: kernel-uek-modules-core (mínimo básico), kernel-uek-modules (para servidores), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb e kernel-uek-modules-wireless. As utilitários auxiliares foram transferidos do pacote base kernel-uek-core para um pacote separado kernel-uek-tools. Os arquivos de configuração com a lista de módulos proibidos para carregamento foram renomeados de 'blacklist' para 'denylist' como parte da iniciativa de usar terminologia inclusiva.
- Para sistemas ARM Ampere, utilizados na Oracle Cloud, foi formada uma compilação separada do kernel kernel-uek64k, cujo tamanho básico das páginas de memória foi aumentado de 4 para 64 KB.
- Foi adicionada suporte ao fornecido pela implementação de hardware Intel SGX2 (Software Guard Extensions) do mecanismo EDMM (Enclave Dynamic Memory Management), permitindo gerenciar o acesso a páginas de memória individuais do enclave e adicionar/remover páginas de memória para o enclave de forma dinâmica.
- No driver Intel QAT com suporte a dispositivos Intel Quick Assist Technology (QAT), foi adicionada suporte para a 4ª geração de processadores Intel Xeon.
- Foi adicionada uma nova sistemática para detectar bloqueios 'split-lock' que ocorrem quando se acessa dados desalinhados na memória devido ao fato de que, ao executar uma instrução atômica, os dados cruzam duas linhas de cache da CPU. Esses bloqueios resultam em uma queda significativa de desempenho (1000 ciclos mais lento do que uma operação atômica com dados que ficam em uma única linha de cache).
- Foi implementado um novo método de proteção contra a vulnerabilidade Retbleed nos CPUs da Intel e da AMD, utilizando rastreamento de profundidade de chamadas, que não retarda o desempenho tanto quanto a proteção anterior contra Retbleed.
- Nos sistemas x86, foi garantida a ativação simultânea de núcleos secundários da CPU, o que reduziu o tempo de inicialização do núcleo em sistemas com um grande número de núcleos.
- Adicionado o parâmetro da linha de comando do núcleo 'ia32_emulation', permitindo ativar e desativar o suporte à emulação de 32 bits durante a inicialização em núcleos compilados para a arquitetura x86-64.
- Por padrão, em vez do CFS (Completely Fair Scheduler), foi ativador o planejador de tarefas EEVDF (Earliest Eligible Virtual Deadline First). Ao escolher o próximo processo para executar, o novo planejador considera processos que não receberam os recursos da CPU que mereciam ou que receberam tempo de CPU excessivo. No primeiro caso, a transferência é forçada para o processo, enquanto no segundo, é adiada. O planejador CFS antigo usava heurísticas e ajustes finos para determinar processos que exigiam atenção especial, enquanto o novo planejador os monitora de forma mais explícita e não requer ajustes finos. O EEVDF reduzirá latências na execução de tarefas que enfrentavam problemas de planejamento com o CFS.
- Continua a entrega do sistema de depuração dinâmica DTrace 2.0, que foi adaptado para usar a subsistema do núcleo eBPF. O DTrace 2.0 funciona sobre o eBPF, assim como as ferramentas de rastreamento existentes no Linux.
- No hipervisor KVM, é permitido o uso de até 4096 CPUs virtuais (VCPU).
- Continua a utilização do KTLS, implementação do protocolo TLS em nível de núcleo.
- Foi atualizada a implementação do gerador de números pseudoaleatórios RDRAND, responsável pela operação do dispositivo /dev/random, que foi convertida para usar a função de hash BLAKE2s em vez de SHA1 para as operações de mistura de entropia. Essa alteração melhorou a segurança do gerador de números pseudoaleatórios. Para acelerar a obtenção de números aleatórios através da chamada de sistema getrandom(), foi utilizado o mecanismo vDSO (virtual dynamic shared object), que transfere o manipulador da chamada de sistema do kernel para o espaço do usuário, evitando mudanças de contexto.
- Adicionada a suportabilidade da extensão BIG TCP, que permite aumentar o tamanho máximo do pacote TCP para 4GB, otimizando o funcionamento de redes internas de alta velocidade em data centers. Esse aumento no tamanho do pacote, considerando o campo de 16 bits no cabeçalho, é alcançado através da implementação de pacotes jumbo, cujo tamanho no cabeçalho IP é definido como 0, enquanto o tamanho real é transmitido em um campo de 32 bits separado em um cabeçalho anexado.
- Para sockets de rede, foi implementada a opção SO_RESERVE_MEM, com a qual é possível reservar uma certa quantidade de memória para o socket, que permanecerá sempre disponível e não será retirada. O uso dessa opção permite aumentar o desempenho, reduzindo as operações de alocação e liberação de memória na pilha de rede, especialmente em situações de escassez de memória no sistema.
- Foi realizada uma otimização no desempenho do agendador de pacotes fq (Fair Queuing), aumentando a capacidade em 5% sob cargas elevadas no teste tcp_rr (TCP Request/Response) e em 13% com um fluxo de pacotes UDP ilimitado.
- Foi realizada a reorganização das estruturas de rede do kernel para aumentar a eficácia do cache de dados pelo processador, melhorando o desempenho da pilha TCP em sistemas que atendem a um grande número de solicitações paralelas.
- Adicionada a suportabilidade da biblioteca ASMLib 3 para gerenciamento automático de armazenamento em bancos de dados Oracle.
- Foi realizado um trabalho de otimização de desempenho e aumento da segurança do mecanismo de entrada/saída assíncrona io_uring. Otimizações baseadas em io_uring foram adicionadas para os sistemas de arquivos XFS e Ext4, permitindo gravação direta em arquivos em múltiplas threads de forma paralela.
- Apoio aprimorado para o sistema de arquivos Btrfs. Para dispositivos que suportam trim/discard, a opção de montagem 'discard=async' está ativada por padrão, permitindo a execução dessas operações para todos os sistemas de arquivos em modo assíncrono. Suporte foi adicionado para enviar e receber dados comprimidos sem transformações. Adicionado suporte para gravação em blocos maiores que 64 KB. A contagem de cotas foi simplificada. Suporte à montagem de dispositivos clonados foi implementado. As verificações de gravação no modo NOCOW foram melhoradas (a largura de banda aumentou em 9%). Opções de montagem 'ignoremetacsums' e 'ignoresuperflags' foram adicionadas para ignorar somas de verificação de metadados inválidas e flags do superbloco. A execução de tarefas de remoção de dispositivos, balanceamento e redistribuição de blocos foi garantida em modo paralelo.
- No sistema de arquivos XFS, o uso de tamanhos de bloco maiores que o tamanho da página de memória foi autorizado. Contadores de extensões grandes foram adicionados para discos virtuais muito grandes. Foi adicionado o modo de confirmação atômica (commit) para o conteúdo dos arquivos. Uma implementação experimental de verificação (fsck) e recuperação do sistema de arquivos em modo online foi proposta.
- No NFS, o uso da operação READ_PLUS, definida na especificação NFS 4.2 e aplicada para uma leitura de dados mais eficiente de arquivos que contêm buracos, está ativado por padrão.
- O sistema de gerenciamento de memória foi transferido para usar a estrutura de dados folios (fólios de páginas de memória). Os fólios são semelhantes a páginas de memória compostas, mas diferem pela semântica aprimorada e por uma organização de trabalho mais clara.
- Para operações de mapeamento de memória, foi utilizada a estrutura de dados 'maple tree', que se apresenta como uma substituição mais eficiente para a estrutura 'red-black tree'. A maple tree é uma variante da árvore B, que suporta indexação por intervalos de valores e foi projetada para um uso eficaz do cache de processadores modernos. de processadores modernos.
- Em mmap, foram implementados bloqueios no nível de cada VMA (Área de Memória Virtual), permitindo aumentar o desempenho de aplicativos multithread.
- Uma estrutura de dados ptdesc foi adicionada, otimizando o trabalho com tabelas de páginas de memória através da separação de estruturas de metadados e dados para páginas de memória.
Fonte: opennet.ru
