CONFIG_TASK_DELAY_ACCT not enabled

In Без категория

Обожавам iotop защото позволява да видя кой процес работи по-сериозно със диска и така може да се видят дисково-интензивните операции. За HDD където iops е около 100-200 това е много полезно. За SSD където iops е от ранга на 30000-50000 също е много полезно.

Проблема е, че на текущо Ubuntu iotop не може да ми покаже swapin и io защото ключов параметър CONFIG_TASK_DELAY_ACCT е забранен.

На по-стари kernel-и това може да се реши като се активира това във /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT=“delayacct“
и се активира
sudo update-grub
и след това се рестартира.

Обаче на по-новите kernel 5.14 и нагоре това е изнесено като настройка и може да се активира/дезактивира без рестарт. Ето как се активира:
sudo sysctl kernel.task_delayacct=1
и как се дезактивира:
sudo sysctl kernel.task_delayacct=0

По-принцип е хубаво това да е изключено и да се пуска само когато ще се проверява нещо. При мен това е iotop. Затова може да се направи следния alias:

alias iotopd='bash -c "sudo sysctl kernel.task_delayacct=1 && sudo iotop ; sudo sysctl kernel.task_delayacct=0"'

при който се активира параметъра, пуска се iotop и при изход се деактивира параметъра.

Друг вариант е следния bash скрипт:

#!/bin/bash

# This script enables task delay accounting in the Linux kernel, runs iotop,
# then on exit sets task_delayacct back to 0.

# Disable task delay accounting when the script exits
disable_task_delayacct() {
  sudo sysctl kernel.task_delayacct=0
}

# Trap the EXIT signal to call the disable_task_delayacct function
trap 'disable_task_delayacct' EXIT

# Enable task delay accounting
sudo sysctl kernel.task_delayacct=1

# Run iotop with administrative privileges
sudo iotop

Както виждате варианти много.

Споделяне

Was this article helpful?
YesNo

Вашият коментар