Nos últimos anos, Linus Torvalds não teve muito tempo para escrever um novo código original para o kernel do Linux. Atualmente, todo esse serviço é gerenciando principalmente desenvolvedores, fornecendo postagens de lista de discussão perspicazes e revisando o código para mesclar na árvore do kernel junto com tarefas relacionadas. No entanto, para o Linux 6.4, ele conseguiu escrever um novo código. Assim, Linus Torvalds limpa o código de cópia de memória x86 para Linux 6.4.
Na semana passada, Linus Torvalds fundiu sua própria ramificação “x86-rep-insns” ao kernel para a janela de mesclagem do Linux 6.4. O foco no código de Torvalds para Linux 6.4 está na limpeza do código de cópia de memória x86.
Linus Torvalds limpa o código de cópia de memória x86 para Linux 6.4. Ele explicou na fusão do Git:
Isso limpa muito do nosso código de cópia de memória x86, principalmente para acessos de usuários. Há muito tempo venho pressionando por suporte de microarquitetura para uma boa cópia e limpeza de memória, e isso é visível em como o kernel tem usado agressivamente ‘rep movs’ e ‘rep stos’ sempre que possível.
E esse suporte micro-arquitetural foi melhorando ao longo dos anos, a ponto de nas CPUs modernas a melhor opção para uma cópia de memória que se tornaria uma chamada de função (em vez de ser algo que pode ser transformado em instruções ‘mov’ individuais) agora é inline a sequência de instruções de string.No entanto, isso só faz sentido quando temos os marcadores modernos para isso: os recursos x86 FSRM e FSRS (“Fast Short REP MOVS/STOS “).Portanto, isso limpa muito do nosso código histórico, elimina o uso do marcador herdado (“REP_GOOD” e “ERMS”) dos casos memcpy/memset e o substitui por essa realidade moderna. Observe que REP_GOOD e ERMS acabam sendo usados ??ainda pelos casos grandes conhecidos (ou seja, cópia e limpeza de página).
A razão pela qual muito disso acaba sendo sobre acessos à memória do usuário é que os casos normais no kernel são feitos pelo compilador (__builtin_memcpy() e __builtin_memset()) e chegando ao ponto em que podemos usar nossa reescrita de instruções para inline aqueles para As instruções be string precisarão de algum suporte do compilador.
Em contraste, as funções do acessador do usuário são totalmente controladas pelo código do kernel, portanto, podemos alterá-las arbitrariamente.
A janela de mesclagem do Linux 6.4 permanece aberta até o próximo fim de semana, com mais códigos de recursos sendo publicados.
Linux 6.4 tem muitas mudanças de rede de um novo desempenho ajustável para mais WiFi 7
Com o Linux rodando em tudo, desde minúsculos computadores de placa única com WiFi básico ou rede Ethernet até enormes clusters de supercomputadores, o subsistema de rede do Linux continua vendo melhorias imensas a cada ciclo do kernel. Com o Linux 6.4, as mudanças de rede são pesadas, desde o novo suporte de hardware (incluindo Apple M1 Pro/Max WiFi!) até o trabalho contínuo em torno do suporte WiFi 7 , bem como o trabalho sem fim em otimizações de desempenho.
As alterações de rede do Linux 6.4 foram enviadas e já foram inseridas no Linux Git. Alguns dos destaques de recursos no lado da rede para esta próxima versão do kernel incluem:
- Adicionada uma nova opção de configuração “MAX_SKB_FRAGS” que ao aumentar pode render melhor performance de BIG TCP. A opção pode permitir o ajuste de até 45 segmentos por SKB e esse valor já está em uso no Google há “anos”, de acordo com o engenheiro Eric Dumazet, que enviou o patch para upstream. O valor padrão /proc/sys/net/core/max_skb_frags é mantido em 17 até que haja mais cobertura de teste para um valor padrão melhor atualizado e para não causar nenhum problema de driver.
- O driver WiFi “iwlwifi” da Intel passou por preparações para suporte WiFi 7 EHT e suporte multi-link.
- O driver MediaTek MT76 adicionou suporte a WiFi 7.
- Com o código do núcleo de rede do kernel do Linux, o suporte à malha WiFi 7 (EHT) agora está ativado.
- Pesquisa de rota otimizada para endereços IPv6.
- Os agendadores de fluxo Fair Capacity Scheduler e Weighted Fair Queuing Scheduler foram adicionados ao código SCTP.
- O suporte Ethernet do dispositivo principal AMD Pensando foi adicionado. O suporte AMD Pensando SoC continua trabalhando no upstreaming .
- Suporte Ethernet adicionado para os seguintes SoCs: MediaTek MT7981, MediaTek MT7988, Broadcom BCM53134, Qualcomm EMAC3 DWMAC e StarFive JH7110 RISC-V.
- Suporte WiFi para os dispositivos Apple M1 Pro e Apple M1 Max.
- Suporte de hardware WiFi Realtek rtl8710bu/rtl8188gu, rtl8822bs, rtl8822cs e rtl8821cs.
- O driver de rede 100G ICE da Intel funcionou para oferecer suporte a IOV escalável. Enquanto isso, o driver i40e da Intel adicionou suporte a vários buffers XDP.
- Suporte de barramento SDIO para o driver Realtek RTW88.
- O driver Realtek RTW89 tem melhor suporte para digitalização de 6 GHz.
- Várias melhorias de rede em relação ao manuseio de cópia zero.
- Várias outras otimizações de desempenho/eficiência com aprimoramentos de segmentação, layouts de estrutura otimizados etc.
Mais detalhes sobre a enorme quantidade de mudanças de rede do Linux para o ciclo do kernel v6.4 através desta postagem da lista de discussão.