Как проверить, настроен ли планировщик ядра в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять конфигурацию планировщика ядра в Linux. Планировщик является основным компонентом, который управляет тем, как процессы делят время ЦП. Понимание его настроек является важным аспектом для анализа производительности и устранения неполадок.

Путем практического выполнения шагов вы изучите три метода проверки настроек планировщика: использование команды sysctl для просмотра параметров ядра, изучение файловой системы /proc/sys/kernel на наличие файлов, связанных с планировщиком, и проверка журналов ядра с помощью команды dmesg на наличие сообщений, специфичных для планировщика. Эти методы предоставляют различные точки зрения на текущее состояние и поведение планировщика.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/help -.-> lab-558724{{"Как проверить, настроен ли планировщик ядра в Linux"}} linux/man -.-> lab-558724{{"Как проверить, настроен ли планировщик ядра в Linux"}} linux/ls -.-> lab-558724{{"Как проверить, настроен ли планировщик ядра в Linux"}} linux/cat -.-> lab-558724{{"Как проверить, настроен ли планировщик ядра в Linux"}} linux/cd -.-> lab-558724{{"Как проверить, настроен ли планировщик ядра в Linux"}} linux/grep -.-> lab-558724{{"Как проверить, настроен ли планировщик ядра в Linux"}} linux/env -.-> lab-558724{{"Как проверить, настроен ли планировщик ядра в Linux"}} end

Проверка настроек планировщика с помощью sysctl kernel.sched

На этом этапе мы узнаем, как проверить настройки планировщика ядра с использованием команды sysctl. Планировщик является важной частью ядра Linux, который определяет, какой процесс будет выполняться на ЦП и как долго. Понимание его настроек может быть полезно для настройки производительности и устранения неполадок.

Команда sysctl используется для изменения параметров ядра во время выполнения. Мы также можем использовать ее для просмотра текущих значений этих параметров. Параметры ядра организованы в иерархической структуре, аналогичной файловой системе.

Для просмотра параметров, связанных с планировщиком ядра, мы можем использовать sysctl с префиксом kernel.sched.

Откройте терминал, если он еще не открыт. Вы можете найти значок Xfce Terminal слева на рабочем столе.

Теперь введите следующую команду и нажмите Enter:

sysctl kernel.sched

Вы должны увидеть вывод, похожий на этот, показывающий различные параметры, связанные с планировщиком, и их текущие значения:

kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 8000000
kernel.sched_wakeup_granularity_ns = 9000000
kernel.sched_latency_ns = 24000000
kernel.sched_migration_cost_ns = 50000
kernel.sched_nr_migrate = 32
kernel.sched_tunable_scaling = 1
kernel.sched_domain.cpu0.domain0 = ...
kernel.sched_domain.cpu0.domain1 = ...
...

Точный вывод может немного отличаться в зависимости от конкретной версии ядра и конфигурации системы. Эта команда дает вам снимок текущей конфигурации планировщика.

Понимание каждого из этих параметров выходит за рамки этого вводного практического занятия (лабораторной работы), но главное, что нужно запомнить, это то, что sysctl kernel.sched - это команда, которую нужно использовать, когда вы хотите проверить эти настройки.

Нажмите Продолжить, чтобы перейти к следующему шагу.

Проверка планировщика в /proc/sys/kernel

На предыдущем этапе мы использовали sysctl для просмотра параметров ядра. Другой способ получить доступ и иногда изменить эти параметры - через файловую систему /proc. Файловая система /proc представляет собой виртуальную файловую систему, которая предоставляет информацию о процессах и другой системной информации.

Параметры ядра, доступные с помощью sysctl, часто отражаются в каталоге /proc/sys. В частности, параметры, связанные с планировщиком, можно найти в /proc/sys/kernel/.

Перейдем в этот каталог и выведем его содержимое. Мы будем использовать команду cd для изменения текущего каталога и ls для вывода списка файлов и каталогов.

Введите следующую команду, чтобы перейти в каталог /proc/sys/kernel/:

cd /proc/sys/kernel/

Теперь выведите список файлов в этом каталоге:

ls

Вы увидите длинный список файлов, каждый из которых представляет собой параметр ядра. Найдите файлы, названия которых начинаются с sched_. Эти файлы соответствуют параметрам kernel.sched, которые мы видели с помощью sysctl.

...
sched_child_runs_first
sched_latency_ns
sched_migration_cost_ns
sched_min_granularity_ns
sched_nr_migrate
sched_rr_timeslice_ms
sched_rt_period_us
sched_rt_runtime_us
sched_shares_window_ns
sched_tunable_scaling
sched_wakeup_granularity_ns
...

Вы можете просмотреть содержимое этих файлов с помощью команд, таких как cat. Например, чтобы увидеть значение sched_latency_ns, введите:

cat sched_latency_ns

Вы должны увидеть число, которое совпадает со значением kernel.sched_latency_ns, которое вы видели при использовании sysctl.

24000000

Это показывает, что информация, предоставляемая командой sysctl kernel.sched, берется из файлов в каталоге /proc/sys/kernel/. Хотя sysctl часто является более удобным способом просмотра и изменения параметров, понимание файловой системы /proc дает вам более глубокое представление о том, как ядро предоставляет информацию о своем внутреннем состоянии.

Нажмите Продолжить, чтобы перейти к следующему этапу.

Проверка журналов планировщика с помощью 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.

Нажмите Продолжить, чтобы завершить эту лабораторную работу.

Резюме

В этой лабораторной работе мы научились проверять конфигурацию планировщика ядра в Linux с использованием двух основных методов. Во - первых, мы использовали команду sysctl kernel.sched для просмотра различных параметров, связанных с планировщиком, и их текущих значений, что дало нам снимок текущих настроек планировщика во время работы системы.

Во - вторых, мы исследовали файловую систему /proc как альтернативный способ доступа к параметрам ядра, сконцентрировавшись в частности на пути /proc/sys/kernel, который отражает параметры, доступные с помощью sysctl. Эти шаги показали, как проверить конфигурацию планировщика ядра как с помощью утилит командной строки, так и через виртуальную файловую систему.