Pular para o conteúdo
Esta página está desatualizada. Por favor, consulte a documentação mais recente em /features/kernel/

Kernel CachyOS

O Kernel CachyOS é um kernel personalizado que utiliza melhorias, configurações e patches provenientes do upstream.

  • Compilação Avançada: PKGBUILD altamente personalizável com suporte para compiladores GCC e Clang.
  • Link Time Optimization (LTO): Thin LTO ativado por predefinição para um melhor desempenho.
  • Otimização Guiada por Perfil (PGO): Perfilagem AutoFDO + Propeller para uma geração de código ideal (Saber mais).
  • Kernel Control Flow Integrity (kCFI): Disponível ao utilizar LLVM para maior segurança.
  • Opções de Frequência de Temporizador (Timer): Configurável entre 300Hz, 500Hz, 600Hz, 750Hz e 1000Hz (predefinição: 1000Hz).
  • Otimizações de Arquitetura: Suporte para builds específicas de x86-64-v3, x86-64-v4 e AMD Zen4.
  • Otimizações de Compilador: Flags de GCC avançadas, incluindo -fivopts e -fmodulo-sched.
  • Múltiplos Agendadores (Schedulers): Agendadores BORE, EEVDF e BMQ para diferentes otimizações de carga de trabalho.
  • Melhorias AMD P-State: Suporte para “Preferred Core” e as mais recentes melhorias amd-pstate do linux-next.
  • Suporte Real-Time: Builds de kernel RT disponíveis com integração do agendador BORE.
  • CachyOS Sauce: Configuração personalizada CONFIG_CACHY com ajustes de agendador e de sistema.
  • Otimizações de Baixa Latência: Patches para melhor capacidade de resposta e redução de jitter.
  • Suporte ZFS: Suporte nativo para o sistema de ficheiros ZFS com módulos pré-compilados.
  • Integração NVIDIA:
    • Módulos de controlador proprietário NVIDIA com patches.
    • Suporte para controlador NVIDIA open-source.
    • Módulos prontos a usar no repositório.
  • Melhorias no Agendador de I/O:
    • Desempenho melhorado de BFQ e mq-deadline.
    • Suporte para o agendador de I/O alternativo ADIOS.
  • Gestão de Memória:
    • Patch le9uo para prevenir o “page thrashing” sob pressão de memória.
    • Ajustes de gestão de memória do Zen-kernel (compactação, otimização de watermark).
  • Hardware de Gaming: Patches para Steam Deck (Áudio, HW Quirks, HID) e suporte para ROG Ally.
  • Hardware Apple: Suporte para MacBook T2 incluído por predefinição.
  • Hardware ASUS: Patches de compatibilidade alargada para hardware ASUS.
  • Gráficos: Suporte para HDR ativado, override de min_powercap em AMDGPU (amdgpu_ignore_min_pcap).
  • Multimédia: Módulos v4l2loopback incluídos por predefinição.
  • Virtualização: Suporte ACS Override para pass-through de VFIO/GPU.
  • Integração Upstream: Patches selecionados (cherry-picked) do Clear Linux e linux-next.

O kernel CachyOS também possui outras funcionalidades notáveis que são subtis, mas melhoram a experiência do utilizador:

  • Inclui uma variante “debug” do kernel que fornece um binário não despido (unstripped) para fins de depuração. Este pacote é necessário para perfilar o kernel com AutoFDO.
  • Binder, o módulo necessário para o Waydroid, está ativado por predefinição na configuração do kernel e já se encontra configurado.

O CachyOS oferece uma gama diversificada de opções de kernel. Todos os kernels que fornecemos são distribuídos com o CachyOS Base Patchset. Para cada um dos kernels, existe uma variante -lto correspondente que é compilada com clang em vez de GCC.

  • linux-cachyos
    • O kernel predefinido. Este é o recomendado se não tiver a certeza de qual utilizar.
    • Taxa de atualização (tickrate) de 1000Hz para melhor resposta.
    • Compilado com Clang e ThinLTO.
    • Perfilado com o nosso próprio perfil AutoFDO para melhor desempenho. Script utilizado para perfilar o kernel.
  • linux-cachyos-bore
    • Utiliza o agendador BORE.
  • linux-cachyos-bmq
    • Utiliza o agendador BMQ do Project C de Alfred Chen.
      • Não suporta sched-ext.
  • linux-cachyos-deckify
    • O kernel predefinido para consolas portáteis (handhelds). Não é recomendado e não é suportado o uso de qualquer outro kernel em dispositivos portáteis.
    • Utiliza o agendador BORE.
    • Patches específicos para portáteis sobre o patchset base para melhorar a compatibilidade e a experiência geral nestes dispositivos.
  • linux-cachyos-eevdf
    • Ajusta o agendador predefinido do kernel para uma melhor capacidade de resposta.
  • linux-cachyos-lts
    • Baseado no mais recente kernel de Suporte de Longo Prazo (LTS).
    • Utiliza o agendador BORE.
    • Aplicados patches mínimos comparado com outros kernels para garantir a máxima estabilidade.
  • linux-cachyos-hardened
    • Utiliza o agendador BORE.
    • Inclui o patchset linux-hardened.
    • Configuração do kernel baseada na configuração linux-hardened.
      • Contém endurecimento (hardening) muito agressivo que prejudica significativamente o desempenho e a experiência do utilizador.
      • Não suporta sched-ext.
  • linux-cachyos-rc
    • Baseado no kernel “mainline” mais recente da árvore do Linus.
    • Utiliza o agendador BORE.
    • Kernel principal para introduzir novas funcionalidades no nosso patchset.
  • linux-cachyos-server
    • Otimizado para cargas de trabalho de servidor em vez de uso doméstico.
      • Tickrate de 300Hz.
      • Sem preempção (No preemption).
      • EEVDF original (Stock).
  • linux-cachyos-rt-bore
    • Preempção em tempo real (Real-time preemption).
    • Utiliza o agendador BORE.

Por favor, abra um “issue” no GitHub do linux-cachyos para sugestões e melhorias que possam ser adicionadas ao kernel predefinido.

Terminal window
linux-cachyos # Pacote base do kernel predefinido. Compilado com Clang e ThinLTO
linux-cachyos-hardened # Pacote base do kernel hardened (endurecido). Compilado com GCC
linux-cachyos-hardened-lto # Equivalente compilado com clang para o linux-cachyos-hardened
linux-cachyos-hardened-{,lto-}headers
linux-cachyos-hardened-{,lto-}nvidia
linux-cachyos-hardened-{,lto-}nvidia-open
linux-cachyos-hardened-{,lto-}zfs
linux-cachyos-hardened-{,lto-}dbg

Para acomodar uma base de utilizadores mais vasta, o CachyOS distribui alguns dos módulos de kernel mais conhecidos e utilizados juntamente com o kernel. Isto significa que os utilizadores já não terão de recompilar esses módulos após cada atualização de kernel ou em cada nova instalação; bastará instalá-los a partir do repositório, uma vez que já se encontram pré-compilados. Isto torna efetivamente obsoletos quaisquer pacotes -dkms que o utilizador possa ter e que forneçam o mesmo módulo que a versão pré-compilada.

O ZFS é um dos muitos sistemas de ficheiros suportados no CachyOS. Devido ao facto de estar licenciado sob CDDL, é incompatível com a licença do kernel Linux e, por isso, não pode ser incorporado diretamente no código-fonte (in-tree). O módulo distribuído inclui as funcionalidades e correções mais recentes do upstream para garantir a compatibilidade com o kernel mais recente.

O CachyOS distribui versões pré-compiladas tanto dos módulos de kernel de código fechado como dos de código aberto. Dado que o desenvolvimento do módulo de kernel da NVIDIA é feito fora da árvore principal (out-of-tree) e, como tal, não segue o ritmo de lançamento do kernel, a configuração padrão pode por vezes ser incompatível com o kernel mais recente. Como solução, o CachyOS aplica patches aos módulos recorrendo a correções criadas pela comunidade ou partilhadas diretamente pela NVIDIA.

Porque é que o AutoFDO não é utilizado em todas as outras variantes do kernel?

Seção intitulada “Porque é que o AutoFDO não é utilizado em todas as outras variantes do kernel?”

Porque a sua compilação é dispendiosa, uma vez que requer basicamente compilar o kernel duas vezes, resultando em mais tempo e recursos dedicados à compilação. O processo de compilar um kernel com AutoFDO envolve os seguintes passos:

  1. Compilar o kernel com AutoFDO e capacidades de depuração (debugging) ativadas.
  2. Criar um perfil, o que significa executar cargas de trabalho para recolher dados de perfilagem para as possíveis otimizações.
  3. Recompilar o kernel com o perfil AutoFDO.

Por esse motivo, por agora, esta funcionalidade está apenas presente na variante linux-cachyos.

Para mais informações sobre o AutoFDO, clique aqui.

O kernel “realtime” melhora o desempenho em jogos?

Seção intitulada “O kernel “realtime” melhora o desempenho em jogos?”

Não, não melhora. O kernel “realtime” torna muito mais código preemptível em comparação com um kernel preemptível (PREEMPT) normal. Isto significa que muito mais tarefas (incluindo processos de jogos) são frequentemente interrompidas e forçadas a ceder recursos do sistema, resultando num desempenho pior.