10 системных процессов Linux, которые необходимо знать

задняя часть Linux
10 системных процессов Linux, которые необходимо знать

Эта статья участвовала в третьем этапе курса «High Yield Update» тренировочного лагеря для создателей Nuggets. Подробнее см.:Dig Li Project | Идет третий этап тренировочного лагеря создателя, «написание» личного влияния.

предисловие

Когда мы обычно выполняем команду ps, мы видим много «странных» процессов, и большинство из этих процессов являются процессами ядра системы. Многие студенты очень мало знают об этом, поэтому сегодня я организую для вас введение в системный процесс начального уровня, надеясь помочь вам понять процесс операционной системы.

В повседневной эксплуатации и ремонтных работах часто можно увидеть, что какие-то странные системные процессы занимают относительно высокий ресурс. И я всегда слышу, как одноклассники по бизнес-направлению спрашивают: «Что это за процесс такой ххх? Почему так много включено?»

Эти процессы ядра системного уровня заключены в квадратные скобки, и они выполняют некоторые вспомогательные функции системы (такие как запись кеша на диск).Процессы без скобок - это процессы, выполняемые пользователями (такие как php, nginx). Подождите).

Как показано ниже:

Ниже приведены еще 10 общих системных процессов, которые стоит популяризировать всем:

  • kswapd0
  • kjournald
  • pdflush
  • kthreadd
  • migration
  • watchdog
  • events
  • kblockd
  • aio
  • rpciod

1 kswapd0

Система пробудит kswapd через определенный период времени, чтобы увидеть, не перегружена ли память. Если нет, то спящий режим. В kswapd есть два порога, pages_hige и pages_low. Когда количество свободных страниц памяти меньше, чем pages_low, kswapd Процесс будет сканировать память и освобождать 32 свободные страницы за раз, пока количество свободных страниц не достигнет pages_high.

2 kjournald

журнал: регистрирует все изменения метаданных в файловой системе, самый медленный режим.

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

обратная запись : самый быстрый режим, который также записывает только измененные метаданные и использует стандартный процесс записи файловой системы для записи данных на жесткий диск.

3 pdflush

pdflush используется для синхронизации содержимого памяти с файловой системой.

Например: когда файл модифицируется в памяти, pdflush отвечает за его обратную запись на диск. Всякий раз, когда количество грязных страниц в памяти превышает 10%, pdflush создает резервную копию этих страниц обратно на диск. Это соотношение настраивается, и значение по умолчанию vm.dirty_background_ratio в /etc/sysctl.conf также равно 10.

4 kthreadd

Существует только один такой поток ядра, и его роль заключается в управлении и планировании других потоков ядра.

Он создается при инициализации ядра и запускает в цикле функцию kthreadd, предназначенную для запуска kthreads, поддерживаемых в глобальном связанном списке kthread_create_list. Вы можете вызвать kthread_create для создания kthread, он будет добавлен в связанный список kthread_create_list, а kthread_create ослабит kthreadd_task. Когда kthreadd выполняет kthread, он вызывает старый интерфейс — kernel_thread запускает поток ядра с именем «kthread» для запуска созданного kthread, исполняемый kthread будет удален из списка kthread_create_list, а kthreadd будет постоянно вызывать планировщик, чтобы отказаться от ЦП. . Эту тему нельзя закрывать.

5 migration

Таких потоков ядра 32, от миграции/0 до миграции/31. Каждое ядро ​​процессора соответствует потоку ядра миграции. Основная функция состоит в том, чтобы действовать как процесс миграции соответствующего ядра ЦП для выполнения операций миграции процесса. Функции в ядре — migration_thread()

Он относится к системе балансировки нагрузки ядра 2.6.Процесс автоматически загружается при запуске системы (по одному на процессор), и ставит себя как процесс реального времени SCHED_FIFO, а затем проверяет, есть ли запрос в очереди выполнения: :migration_queue ожидает обработки, если нет, просто спите в TASK_INTERRUPTIBLE, пока не проснетесь, чтобы проверить снова. migration_thread() — это просто интерфейс для таких функций, как привязка ЦП и управление питанием ЦП. Этот поток является важной частью системы планирования.

6 watchdog

Таких потоков ядра 32, от watchdog/0 до watchdog/31, каждому ядру процессора соответствует поток ядра watchdog, watchdog используется для наблюдения за работой системы, автоматического перезапуска системы при сбое системы, включая модуль сторожевого таймера ядра и программа сторожевого таймера пользовательского пространства.

В ядре Linux основной принцип работы сторожевого таймера: при запуске сторожевого таймера (т. е. после открытия устройства /dev/watchdog), если /dev/watchdog не записывается в течение заданного интервала времени (1 минута) срабатывание , схема аппаратного сторожевого таймера или программный таймер перезапустит систему, и каждая операция записи вызовет сброс таймера.

7 events

Всего существует 32 таких потока ядра, от событий/0 до событий/31, и каждое ядро ​​процессора соответствует потоку ядра событий. Используется для обработки событий ядра. Многие аппаратные и программные события (например, перебои в подаче электроэнергии, изменения файлов) преобразуются в события и распределяются между потоками, заинтересованными в ответе на соответствующие события.

8 kblockd

Существует 32 таких потока ядра, от kblockd/0 до kblockd/31, и каждое ядро ​​процессора соответствует потоку ядра kblockd. Используемый для управления блочным устройством системы, он будет периодически активировать драйвер блочного устройства в системе. Если блочное устройство принадлежит, эти потоки нельзя удалить.

9 aio

Существует 32 таких потока ядра, от aio/0 до aio/31, каждое ядро ​​процессора соответствует потоку ядра aio, который управляет вводом-выводом вместо пользовательских процессов для поддержки AIO в пользовательском режиме (асинхронный ввод-вывод). быть закрытым.

10 rpciod

Существует 32 таких потока ядра, от rpciod/0 до rpciod/31, каждое ядро ​​процессора соответствует одному потоку ядра rpciod, который в основном используется в качестве процесса-демона для служб удаленного вызова процедур для запуска служб ввода-вывода от клиентов, которые обычно используется при запуске службы NFS.

Суммировать

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