Как проверить, включены ли гигантские страницы ядра в Linux

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

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

Введение

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

Путем выполнения серии практических шагов вы изучите различные методы проверки параметров гигантских страниц. Вы начнете с изучения файла /proc/meminfo для просмотра текущей статистики гигантских страниц, включая общее количество, свободное и зарезервированное количество гигантских страниц, а также размер гигантской страницы. Затем вы используете команду sysctl для проверки параметра ядра vm.nr_hugepages, который указывает на желаемое количество гигантских страниц. Наконец, вы изучите каталог /sys/kernel/mm, чтобы получить более глубокое понимание конфигурации гигантских страниц в подсистеме управления памятью ядра. Выполнив эти шаги, вы получите твердое понимание того, как определить статус гигантских страниц в своей системе Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) 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/ls -.-> lab-558793{{"Как проверить, включены ли гигантские страницы ядра в Linux"}} linux/cat -.-> lab-558793{{"Как проверить, включены ли гигантские страницы ядра в Linux"}} linux/cd -.-> lab-558793{{"Как проверить, включены ли гигантские страницы ядра в Linux"}} linux/grep -.-> lab-558793{{"Как проверить, включены ли гигантские страницы ядра в Linux"}} linux/env -.-> lab-558793{{"Как проверить, включены ли гигантские страницы ядра в Linux"}} end

Проверка гигантских страниц в /proc/meminfo

На этом шаге мы узнаем, как проверить текущую конфигурацию гигантских страниц (hugepages) в системе Linux. Гигантские страницы - это функция ядра Linux, которая позволяет системе использовать более крупные страницы памяти, чем размер по умолчанию в 4 КБ. Это может повысить производительность приложений, использующих большие объемы памяти, таких как базы данных и программное обеспечение для виртуализации.

Информацию о гигантских страницах можно найти в файле /proc/meminfo. Этот файл содержит различные статистические данные о памяти системы.

Если вы еще не открыли терминал, сделайте это. Для этого нажмите на значок Xfce Terminal слева на рабочем столе.

Теперь давайте посмотрим на содержимое файла /proc/meminfo с помощью команды cat. Команда cat используется для отображения содержимого файлов.

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

cat /proc/meminfo

Эта команда выведет все содержимое файла /proc/meminfo в терминал. Вы увидите много информации о памяти вашей системы.

Для того чтобы найти конкретно информацию о гигантских страницах, мы можем использовать команду grep для фильтрации вывода команды cat. Команда grep ищет строки, соответствующие определенному шаблону.

Введите следующую команду и нажмите Enter:

cat /proc/meminfo | grep HugePages

Символ | называется пайпом (pipe). Он берет вывод команды слева (cat /proc/meminfo) и передает его в качестве входных данных команде справа (grep HugePages). Таким образом, grep ищет только в выводе команды cat.

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

HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

Разберем, что означают эти строки:

  • HugePages_Total: Общее количество гигантских страниц, настроенных в системе.
  • HugePages_Free: Количество гигантских страниц, которые в настоящее время свободны и доступны для использования.
  • HugePages_Rsvd: Количество гигантских страниц, зарезервированных для будущего использования.
  • HugePages_Surp: Количество гигантских страниц, превышающее настройку vm.nr_hugepages (мы рассмотрим это на следующем шаге).
  • Hugepagesize: Размер каждой гигантской страницы. На большинстве систем он составляет 2048 КБ (2 МБ).

В этой среде по умолчанию, вероятно, всего 0 гигантских страниц, что является обычным для систем общего назначения.

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

Проверка настроек гигантских страниц с помощью sysctl vm.nr_hugepages

На предыдущем шаге мы рассмотрели файл /proc/meminfo, чтобы посмотреть текущую статистику использования гигантских страниц (hugepages). Теперь давайте используем команду sysctl для проверки параметра ядра, который контролирует общее количество гигантских страниц.

Команда sysctl используется для просмотра и изменения параметров ядра во время выполнения. Параметры ядра - это настройки, которые влияют на поведение ядра Linux.

Конкретный параметр, который нас интересует, - это vm.nr_hugepages. Этот параметр определяет общее количество гигантских страниц, которое ядро должно зарезервировать.

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

sysctl vm.nr_hugepages

Эта команда отобразит текущее значение параметра ядра vm.nr_hugepages.

Вы должны увидеть вывод, похожий на следующий:

vm.nr_hugepages = 0

Этот вывод подтверждает, что текущая настройка общего количества гигантских страниц равна 0. Это соответствует тому, что мы видели в файле /proc/meminfo, где HugePages_Total также был равен 0.

Команда sysctl - это мощный инструмент для проверки и изменения многих аспектов поведения ядра. Хотя здесь мы рассматриваем только vm.nr_hugepages, вы можете исследовать многие другие параметры с помощью команды sysctl -a.

Понимание параметров ядра, таких как vm.nr_hugepages, важно для настройки производительности системы для конкретных рабочих нагрузок.

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

Проверка конфигурации гигантских страниц в /sys/kernel/mm

На этом последнем шаге мы рассмотрим еще один источник информации о конфигурации гигантских страниц (hugepages): файловую систему /sys. Файловая система /sys предоставляет интерфейс к структурам данных ядра, позволяя нам проверять и иногда изменять объекты ядра.

Информация, связанная с гигантскими страницами, находится в директории /sys/kernel/mm/transparent_hugepage. Транспарентные гигантские страницы (Transparent Hugepages, THP) - это функция, которая пытается автоматически использовать гигантские страницы без необходимости явной настройки со стороны приложений.

Перейдем в эту директорию с помощью команды cd. cd означает "change directory" (изменить директорию).

Введите следующую команду и нажмите Enter:

cd /sys/kernel/mm/transparent_hugepage

Теперь, когда мы находимся в директории /sys/kernel/mm/transparent_hugepage, выведем список файлов в этой директории с помощью команды ls. Команда ls выводит содержимое директории.

Введите следующую команду и нажмите Enter:

ls

Вы должны увидеть вывод, похожий на следующий:

defrag  enabled  khugepaged  numa_defrag  shmem_enabled  split_huge_pmd_size  split_huge_pte_size

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

Посмотрим на содержимое файла enabled с помощью команды cat. Этот файл показывает, включены ли Транспарентные гигантские страницы, отключены или находятся в режиме 'madvise' (когда приложения могут дать рекомендации ядру по использованию гигантских страниц).

Введите следующую команду и нажмите Enter:

cat enabled

Вы должны увидеть вывод, похожий на следующий:

[always] madvise never

Вывод показывает текущую настройку. [always] означает, что THP в настоящее время включены для всех отображений.

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

Введите следующую команду и нажмите Enter:

cat defrag

Вы должны увидеть вывод, похожий на следующий:

[always] defer defer+madvise madvise never

Снова [always] указывает на текущую настройку дефрагментации памяти, связанной с THP.

Файловая система /sys представляет ценный источник информации для понимания внутреннего состояния и конфигурации ядра. Исследование директорий, таких как /sys/kernel/mm, может дать глубокое понимание управления памятью.

Теперь вы успешно исследовали информацию о гигантских страницах с использованием трех разных методов: /proc/meminfo, sysctl и файловой системы /sys.

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

Резюме

В этой лабораторной работе мы научились проверять, включены ли и настроены ли гигантские страницы (hugepages) ядра на системе Linux. Мы рассмотрели три метода для этого. Во - первых, мы изучили файл /proc/meminfo с использованием команд cat и grep, чтобы посмотреть основные статистические данные о гигантских страницах, такие как HugePages_Total, HugePages_Free и Hugepagesize.

Далее, обычно мы бы проверяли настройки гигантских страниц с помощью команды sysctl vm.nr_hugepages и изучали конфигурацию гигантских страниц в директории /sys/kernel/mm, хотя в предоставленном контенте подробные шаги по этим методам не были полностью описаны. Эти шаги в совокупности показывают, как определить текущее состояние и конфигурацию гигантских страниц на системе Linux.