Проверка журналов планировщика с помощью dmesg
На этом последнем этапе мы рассмотрим сообщения ядра, связанные с планировщиком, с использованием команды dmesg
. dmesg
- это команда, которая отображает сообщения из кольцевого буфера ядра. Эти сообщения генерируются ядром во время загрузки и работы системы и могут содержать ценную информацию о железе, драйверах и системных событиях, включая действия планировщика.
В то время как sysctl
и /proc/sys
показывают текущую конфигурацию, dmesg
иногда может показать сообщения, связанные с инициализацией планировщика или важными событиями.
Для просмотра сообщений ядра введите следующую команду:
dmesg
Возможно, это выдаст очень длинный вывод, так как показываются все сообщения ядра с момента загрузки системы. Чтобы найти сообщения, конкретно связанные с планировщиком, мы можем использовать команду grep
для фильтрации вывода. Мы будем искать строки, содержащие слово "sched".
Введите следующую команду:
dmesg | grep sched
Символ |
называется пайпом (pipe). Он берет вывод команды слева (dmesg
) и передает его в качестве входных данных команде справа (grep sched
). Затем grep sched
ищет строки, содержащие "sched", во входных данных, которые он получает.
Вы, возможно, увидите вывод, похожий на следующий, показывающий сообщения, связанные с планировщиком во время запуска системы:
[ 0.000000] Linux version ... (gcc version ...) #... SMP ...
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[ 0.000000] PID scheduler: ...
[ 0.000000] Mount-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[ 0.000000] Mountpoint-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[ 0.000000] CPU: Testing write buffer coherency: ...
[ 0.000000] smpboot: CPU0: ...
[ 0.000000] setup_percpu: System has ... CPUs.
[ 0.000000] percpu: Embedded ... pages/cpu s...
[ 0.000000] pcpu: PCPU: ...
[ 0.000000] Built 1-level schedule group tree
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is ...
[ 0.000000] rcu: Adjusting scheduler-enlistment delay with ...
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=... to nr_cpu_ids=...
[ 0.000000] rcu: rcu_sched detected stalls on CPUs/tasks:
...
Снова повторюсь, точный вывод будет различаться. Эта команда полезна для диагностики проблем или понимания того, как ядро инициализировало планировщик.
Теперь вы узнали три разных способа получения информации о планировщике ядра Linux: с использованием sysctl
для текущих параметров, проверкой файлов в /proc/sys/kernel/
и просмотром сообщений ядра с помощью dmesg
.
Нажмите Продолжить, чтобы завершить эту лабораторную работу.