Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять настройку перераспределения виртуальной памяти (virtual memory overcommit) в Linux. Вы будете использовать команду sysctl для просмотра параметра ядра vm.overcommit_memory и понять его различные значения.
Вы также изучите файловую систему /proc, в частности директорию /proc/sys/vm, чтобы увидеть, как параметры ядра представлены в виде файлов. Наконец, вы проверите файл /etc/sysctl.conf, чтобы понять, как эти настройки можно сохранять на постоянной основе. В рамках этого практического занятия вы получите практические навыки проверки и понимания настроек перераспределения памяти ядра в среде Linux.
Проверка перераспределения памяти с помощью sysctl vm.overcommit
На этом этапе вы научитесь проверять настройку перераспределения виртуальной памяти (virtual memory overcommit) в Linux с использованием команды sysctl.
Перераспределение виртуальной памяти (virtual memory overcommit) - это функция в Linux, которая позволяет системе выделять процессам больше памяти, чем физически доступно. Это может быть полезно в некоторых случаях, но также может привести к проблемам, если процессы действительно попытаются использовать всю выделенную им память.
Команда sysctl используется для просмотра и изменения параметров ядра во время выполнения. Мы будем использовать ее для проверки значения параметра vm.overcommit_memory.
Если вы еще не открыли терминал, сделайте это. Для этого нажмите на значок Xfce Terminal слева на рабочем столе.
Теперь введите следующую команду в терминал и нажмите Enter:
sysctl vm.overcommit_memory
Эта команда просит ядро показать текущее значение параметра vm.overcommit_memory.
Вы должны увидеть вывод, похожий на следующий:
vm.overcommit_memory = 0
Значение 0 указывает на использование стандартной эвристической обработки перераспределения памяти. Другие возможные значения: 1 (всегда перераспределять память) и 2 (никогда не перераспределять память). Понимание этой настройки важно для производительности и стабильности системы, особенно в средах с высокими требованиями к памяти.
Нажмите Продолжить, чтобы перейти к следующему шагу.
Проверка настроек в /proc/sys/vm
На этом этапе вы исследуете файловую систему /proc, в частности директорию /proc/sys/vm, чтобы увидеть, как параметры ядра, связанные с виртуальной памятью, представлены в системе.
Файловая система /proc - это виртуальная файловая система, которая предоставляет информацию о процессах и другой системной информации. Это отличное место для проверки текущего состояния ядра. Директория /proc/sys внутри /proc содержит файлы, соответствующие параметрам ядра, которые можно просматривать и иногда изменять во время выполнения.
Директория /proc/sys/vm содержит файлы, связанные с подсистемой виртуальной памяти. Параметр vm.overcommit_memory, который мы проверили на предыдущем этапе, имеет соответствующий файл в этой директории.
Давайте используем команду cat для просмотра содержимого файла, представляющего vm.overcommit_memory. Команда cat используется для отображения содержимого файлов.
Введите следующую команду в терминал и нажмите Enter:
cat /proc/sys/vm/overcommit_memory
Эта команда прочитает содержимое файла overcommit_memory, расположенного в /proc/sys/vm, и выведет его в терминал.
Вы должны увидеть то же значение, которое вы видели с помощью команды sysctl на предыдущем этапе:
0
Это показывает, что команда sysctl по сути читает из или записывает в эти файлы в файловой системе /proc/sys.
Вы также можете вывести список файлов в директории /proc/sys/vm, чтобы увидеть другие параметры, связанные с виртуальной памятью. Используйте команду ls:
ls /proc/sys/vm/
Вы увидите список файлов, каждый из которых представляет другой параметр ядра, связанный с виртуальной памятью.
compact_hueristic
compact_memory
dirty_background_bytes
dirty_background_ratio
dirty_bytes
dirty_expire_centisecs
dirty_ratio
dirty_writeback_centisecs
drop_caches
extfrag_threshold
hugetlb_shm_group
laptop_mode
lowmem_reserve_ratio
min_free_bytes
min_slab_ratio
min_unmapped_ratio
mmap_min_addr
nr_hugepages
nr_hugepages_mempolicy
nr_overcommit_hugepages
numa_balancing
numa_balancing_scan_period_max_ms
numa_balancing_scan_period_min_ms
numa_balancing_scan_size_mb
numa_balancing_settle_count
numa_balancing_timeout
oom_dump_tasks
oom_kill_allocating_task
overcommit_memory
overcommit_ratio
page-cluster
panic_on_oom
percpu_pagelist_fraction
stat_interval
swappiness
user_reserve_kbytes
vfs_cache_pressure
watermark_boost_factor
watermark_scale_factor
zone_reclaim_mode
Это дает вам представление о множестве настраиваемых параметров, доступных в подсистеме виртуальной памяти ядра Linux.
Нажмите Продолжить, чтобы перейти к следующему этапу.
Проверка конфигурации с помощью команды cat /etc/sysctl.conf
На этом этапе вы узнаете о файле /etc/sysctl.conf, который используется для постоянной настройки параметров ядра при перезапусках системы.
В то время как вы можете изменять параметры ядра во время выполнения с помощью команды sysctl или путем записи в файлы в /proc/sys, эти изменения обычно временные и будут потеряны при перезапуске системы. Чтобы сделать изменения параметров ядра постоянными, обычно добавляют их в файл /etc/sysctl.conf или в файлы в директории /etc/sysctl.d/.
При запуске системы она считывает настройки из /etc/sysctl.conf и применяет их.
Давайте снова используем команду cat для просмотра содержимого файла /etc/sysctl.conf.
Введите следующую команду в терминал и нажмите Enter:
cat /etc/sysctl.conf
Это отобразит содержимое основного файла конфигурации sysctl.
Вы можете увидеть строки, начинающиеся с #, которые являются комментариями и игнорируются. Другие строки будут в формате parameter = value, аналогично тому, что вы видели в выводе команды sysctl.
#
## /etc/sysctl.conf - Configuration file for setting system variables
## See /etc/sysctl.d/ .conf files for other system variables
#
#kernel.domainname = example.com
## Uncomment the following to stop low-level messages on console
#kernel.printk = 3 4 1 3
##############################################################3
## Functions previously found in netbase
#
## Uncomment the next two lines to enable Spoofing attacks protection
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1
## Uncomment the next line to enable TCP/IP SYN cookies
#net.ipv4.tcp_syncookies=1
## Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
## Uncomment the next line to enable packet forwarding for IPv6
#net.ipv6.conf.all.forwarding=1
##############################################################3
## Blow away nobody in the kernel
#
#kernel.yama.ptrace_scope = 1
##############################################################3
## Magic system request Key
#
#kernel.sysrq = 176
##############################################################3
## Dynamic Shared Memory:
#
#kernel.shmmax = 4294967295
#kernel.shmall = 268435456
##############################################################3
## Other settings
#
#fs.file-max = 100000
#vm.swappiness = 60
#vm.vfs_cache_pressure = 50
#kernel.nmi_watchdog = 0
Обратите внимание, что параметр vm.overcommit_memory может не быть явно задан в этом файле. Если параметр не задан в /etc/sysctl.conf или /etc/sysctl.d/, ядро использует его значение по умолчанию. Значение, которое вы видели с помощью команды sysctl и в /proc/sys/vm/overcommit_memory, является текущим активным значением, которое может быть значением по умолчанию или задано другим файлом конфигурации или скриптом при запуске системы.
Понимание файла /etc/sysctl.conf является важной частью настройки системы на постоянной основе.
Нажмите Продолжить, чтобы завершить этот практический урок.
Резюме
В этом практическом уроке вы узнали, как проверить настройку перераспределения виртуальной памяти (virtual memory overcommit) в Linux. Вы использовали команду sysctl vm.overcommit_memory для просмотра текущего значения этого параметра ядра, понимая, что значение 0 означает использование стандартного эвристического подхода, 1 - всегда разрешать перераспределение, а 2 - никогда не разрешать перераспределение.
Вы также исследовали файловую систему /proc, в частности директорию /proc/sys/vm, чтобы увидеть, как параметры ядра, такие как vm.overcommit_memory, представлены в виде файлов в этой виртуальной файловой системе, что дает альтернативный способ проверки текущего состояния ядра в отношении настроек виртуальной памяти.



