Olhando em volta, vejo que a correção padrão é adicionar isso aos parâmetros de inicialização do kernel.
Usando systemd-boot, meu arch.conf fica assim:
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=PARTUUID="98b3b4f7-e7f9-6f49-be81-a2ee709c7a3e" rw
Como adiciono CONFIG_TASK_DELAY_ACCT à options
entrada?
Outra linha?
Ou usando algum delimitador, adicioná-lo à linha existente?
Qual valor devo definir?
Esta é uma opção de compilação do kernel , portanto, você não pode "adicioná-la" em tempo de execução.
Ou construa seu próprio kernel, ou peça ao seu mantenedor para construir o kernel com esta opção, o que eles podem ou não fazer porque algumas opções do kernel dependem de outras e essas dependências podem ser muito indesejáveis, por exemplo, elas podem tornar o kernel consideravelmente lento.
Na verdade, há uma correção simples para o erro iotop que você encontrou, mas chegar lá a partir daqui é um desvio.
[TL;DR: Se estiver usando systemd-boot, basta adicionar uma nova linha de leitura
options delayacct
ao final do arquivo de configuração de entrada sd-boot. O GRUB tem a sintaxe correspondente. Também existem opções de configuração alternativas, sem gerenciador de inicialização, que podem ser preferíveis.]@Artem está correto que
CONFIG_TASK_DELAY_ACCT
é uma opção de configuração ou compilação do kernel. Ele também está correto ao dizer que, como tal, depende de como o kernel é compilado e não pode ser adicionado em tempo de execução, ou seja , na inicialização.Ainda assim, o iotop geralmente lança esse erro mesmo quando
CONFIG_TASK_DELAY_ACCT
está definido como "y" porque muitas distribuições compilam o kernel com essa opção, mas a desativam por padrão.Isso significa que recompilar o kernel provavelmente é uma perda de tempo, apesar do significado literal da mensagem de erro iotop. Para confirmar, basta verificar o arquivo de configuração do kernel. Este arquivo (config -kernel-version ) normalmente está no mesmo diretório que os arquivos kernel (vmlinuz- kernel-version ) e initrd (initrd.img -kernel-version ), por exemplo ,
/boot
ou talvez/efi
dependendo de onde a partição do sistema EFI está montado. Então, faça, por exemplo :Isso pode retornar algo como:
O
=y
nos diz que o kernel foi compilado com esta opção. Isso não torna a mensagem de erro do iotop menos enigmática, mas confirma que o kernel está OK. Em caso afirmativo, verifique o parâmetro do kernel correspondente,kernel.task_delayacct
, pois ativá-lo deve corrigir o erro iotop. Para verificar o parâmetro, faça:Se retornar 0, está desabilitado; 1, habilitado. Para habilitar o parâmetro, faça um dos seguintes:
Para a sessão atual:
echo 1 > /proc/sys/kernel/task_delayacct
Isso deve ter efeito imediato sem reinicialização.
De forma mais persistente, adicione o seguinte em uma nova linha em um
/etc/sysctl.conf
ou em um arquivo .conf drop-in em/etc/sysctl.d
:kernel.task_delayacct=1
ou apenas faça:
# echo "kernel.task_delayacct=1" >> /etc/sysctl.d/20-kernel-task-delayacct.conf
Reinicie para entrar em vigor.
Adicionar
delayacct
à linha de comando do kernel, dependendo do gerenciador de inicialização. Esta é a abordagem que você estava buscando ao perguntar sobre o systemd-boot.Para GRUB2 , adicione ou edite a seguinte linha
/etc/default/grub
para ler:GRUB_CMDLINE_LINUX_DEFAULT="delayacct"
então salve e feche o arquivo e faça:
# update-grub
Reinicie para entrar em vigor.
Para systemd-boot , edite seu arquivo .conf de entrada e simplesmente adicione uma nova linha de leitura:
options delayacct
O Systemd-boot permite a
options
chave apareça em um arquivo de entrada do carregador de inicialização mais de uma vez, portanto, simplesmente adicionar uma linha adicional, em vez de editar umaoptions
chave existente, deve ser suficiente.Reinicie para entrar em vigor.