Эта статья участвовала в третьем этапе курса «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.