Minha instalação do Fedora 32

Olá pessoal.

Gostaria de compartilhar com vcs o processo de pós instalação que fiz no fedora para buscar o maior desempenho possível, mesmo sacrificando um pouco a segurança.

A intenção é criar uma uma instalação voltada para jogos, sendo que, em casos onde se tenha arquivos importantes, evite de usar as configurações descritas, como falei, essa instalação busca apenas performance.

A primeira coisa que fiz, foi instalar o fedora 32 com o sistema de arquivos BTRFS, não por conta dos snapshots, mas sim pela opção de compressão.

Após a instalação e atualização do sistema e adição dos pacotes rotineiros que cada um acha melhor, as otimizações que eu fiz começaram pela edição do arquivo /etc/dnf/dnf.conf e adicionar a linha fastestmirror=True, para agilizar o dnf.

Após isso, precisei editar o fstab, já que minha intenção era usar a compressão que o BTRFS disponibiliza. Assim, editei o arquio /etc/fstab e adicionei as seguites opções: noatime, ssd,space_cache,compress=zstd ante do subvol criado. Isso para meu caso, que tenho ssd.

Após isso, foi necessário reinicializa.
Continuando com as otimizações, foi a hora de comprimir o disco. o comoando é:
sudo btrfs filesystem defragment -r -v -czstd /
isso vai fazer a desfragmentação e a compressão..
Caso queira ver a diferença de uso do disco antes e depóis da compressão pode ser visto rodando o comando df -h antes e depois da operação.
Um programa legal para ver a taxa de compressão é o compsize, assim fica ainda mais fácil de ver.
o comando que eu uso para o compsize é:
sudo compsize /{etc,home,root,usr}

Seguindo, é hora de compilar um kernel com suporte à fsync, que é um recurso bem interessante para quem joga. No COPR tem o kernel do gloriouseggroll que é só ativar o repo e instalar, mas tem outras opções como por exemplo o kernel zen, o kernel xanmod e o kernel-tkg. bastando apenas clonar e usar o config no sistema para ele instalar.
O endereço do git para o kernel-tkg é:
https://github.com/Frogging-Family/linux-tkg.git
Para o kernel-zen -e:
https://github.com/zen-kernel/zen-kernel.git
e para o kernel xanmod é:
https://github.com/xanmod/linux.git

Como descrevi, bastou apenas fazer um git clone e o endereço do git e esperar fazer o download. no meu caso, eu instalei o kernel xanmod, portando ficou assim:
git clone https://github.com/xanmod/linux.git

Após o término irá criar uma pasta chamada linux,, basta entrar na pasta com o comando cd linux e pronto.
O próximo passo é verificar o arquivo config, que fica no /boot do fedora, esse arquivo será usado para definir os parâmetros do kernel usado no fodora e que tbm será usado no novo kernel.

no caso o arquivo config-5.7.14-200.fc32.x86_64 será usado, então basta copiar o arquivo e renomerar em .config. O comando usado para isso é:
cp /boot/config-5.7.14-200.fc32.x86_64 .config

Feito isso basta rodar o comando para maner as configurações do kernel atual para o novo, o comando é o:
make oldconfig

Pode ser que no processo, algumas dependências estejam faltando, mas o terminal mostrará o pacote faltante, mas para ter certezam certifique-se de ter os pacotes flex bison gcc ncurses-devel.

Seguindo, pode ser feitas alterações com o make menuconfig, mas é bom que saiba o que estpa fazendo.

Protno, hora de compilar o kernel, para iso masta rodar o comando make seguido de -j e do número de cores do CPU que vc deseja que compile por exemplo:
make -j8

Isso irá demorar um pouco e pode ser que esteja faltando algum pacote, mas isso é mostrado no terminal, caso aconteça.
Seguindo, o comando para instalar
sudo make modules_install install

Após isos o kernel novo já estará disponível. para testar no próximo boot.

Seguindo com mais ajustes.
O próxímo passo é fazer alguns ajustes finos no sistema.
O primeiro parâmetro é ajustar o agendador de leitura e escrita do disco.
Na wiki do arch, tno qual estou me baseando para fazer esse post, trata da seguinte situação; Para discos rotativos, o recomendado é bfq, para ssd sata o mq-deadline e para ssd nvme o none

Para verificar qual é o io scheduler usado no momendo basta rodar:
cat /sys/block/sda/queue/scheduler

Caso queira alterar o io scheduler em tempo real basta rodar:
echo XXXX > /sys/block/sdX/queue/scheduler

onde o XXXX é o nome do scheduler e o sdX é a partição do disco referente.

pode ser interessante criar regras no udev para tal, basta editar o arquivo:
sudo nano /etc/udev/rules.d/60-ioschedulers.rules
e colocar os seguinte argumentos:

set scheduler for NVMe

ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"

set scheduler for SSD and eMMC

ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"

set scheduler for rotating disks

ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"

Salvar e reiniciar o sistema.

Há mais um ajuste visando desempenho, e é desativando as mitigações para o caso das vulnerabilidades descobertas nos CPUs x86.
Para isso, basta adicionar aos parâmetros de boot mitigation=off no na inicialização do sistema.

Enfim, o último ajuste é desativar o watchdogs, para verificar se está ativo basta rodar o comando:
cat /proc/sys/kernel/watchdog
se retornar 1 significa que está ativo, se retornar 0 significa que está desativado.

Para desativar basta adicionar aos parâmetros de boot o nowatchdog

Após isso atualize o grub para fazer efeito. o comando é:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Reinicie o sistema e verifique se está com o watchdogs desativado.

Caso queira, pode ser adicionado o watchdogs no bleacklist, com o comando:
sudo nano /etc/modprobe.d/nobeep.conf

e inserir as linhas:

Comando para desativar watchdogs

blacklist iTCO_wdt.

É isso, mas o melhor é sempre manter o sistema o mais atualizado possível, principalmente para quem tem placa de vídeo da AMD e verificar se todos os pacotes para funcionar o vulkan estão instalados.

Para complementar, sugiro o post do Leandro Ramos com dicas adicionais para deixar o sistema com ainda mais performance.
https://fedorabr.org/discussion/comment/1113#Comment_1113

Espero ter ajudado.

A referência destes ajustes está em https://wiki.archlinux.org/index.php/Improving_performance