fstrim: освобождение места на SSD
SSD не всегда «понимает», что файлы были удалены — блоки могут оставаться помеченными как занятые.
Команда fstrim помогает сообщить диску, какие блоки можно реально очистить.
Проверка вручную:
Выведет, сколько байт освободилось на корневом разделе.
Чтобы не делать это руками, есть встроенный systemd-таймер. Достаточно один раз включить:
Теперь очистка будет выполняться автоматически раз в неделю.
Это безопасный и простой способ поддерживать SSD в нормальной форме без лишних ухищрений.
SSD не всегда «понимает», что файлы были удалены — блоки могут оставаться помеченными как занятые.
Из-за этого диск со временем теряет скорость записи.
Команда fstrim помогает сообщить диску, какие блоки можно реально очистить.
Проверка вручную:
sudo fstrim -v /
Выведет, сколько байт освободилось на корневом разделе.
Чтобы не делать это руками, есть встроенный systemd-таймер. Достаточно один раз включить:
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
Теперь очистка будет выполняться автоматически раз в неделю.
Это безопасный и простой способ поддерживать SSD в нормальной форме без лишних ухищрений.
👍22❤4
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.SoftIRQ используется, например, в сетевом стеке (обработка пакетов), планировщике задач и таймерах. Он позволяет разгрузить обработчики прерываний, обеспечивая баланс между низкими задержками и производительностью.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍4
lsns: кто держит namespace?
В обычной работе это не видно, но как только в системе появляются контейнеры, systemd-изоляторы или «подозрительные» процессы, namespaces становятся критически важны для отладки.
Инструмент lsns позволяет быстро посмотреть, какие процессы «сидят» в каких пространствах имён.
Простейший запуск:
На выходе будет таблица: PID, тип namespace, время создания и т.д.
Это помогает понять, например, кто держит лишний mount namespace или почему сетевой стек не совпадает с основным.
Можно фильтровать по типу:
Покажет все сетевые namespaces — полезно для диагностики контейнеров.
А если нужно конкретно узнать, кто держит PID namespace:
Linux активно использует namespaces — они изолируют процессы по сетям, PID, пользователям, монтам и прочим ресурсам.
В обычной работе это не видно, но как только в системе появляются контейнеры, systemd-изоляторы или «подозрительные» процессы, namespaces становятся критически важны для отладки.
Инструмент lsns позволяет быстро посмотреть, какие процессы «сидят» в каких пространствах имён.
Простейший запуск:
lsns
На выходе будет таблица: PID, тип namespace, время создания и т.д.
Это помогает понять, например, кто держит лишний mount namespace или почему сетевой стек не совпадает с основным.
Можно фильтровать по типу:
lsns -t net
Покажет все сетевые namespaces — полезно для диагностики контейнеров.
А если нужно конкретно узнать, кто держит PID namespace:
lsns -t pid
👍13❤7
Anonymous Quiz
11%
Каждое воскресенье в 2 ночи
78%
Каждый день в 2 ночи
7%
Каждую минуту в 2 ночи
4%
Каждый час
😁14🤪6👍5❤3
Swap-файл vs swap-раздел: как влияет на SSD и работу в системах с малым ОЗУ
На слабых серверах и миниатюрных VPS наличие подкачки решает всё. Даже базовая установка apt без swap может закончиться «убийством» процессов через OOM-killer.
Что выбрать — swap-файл или swap-раздел?
Swap-раздел исторически считался более «надёжным» вариантом: он выделяется на физическом уровне и не фрагментируется. Но в реальности:
⏺ менять его размер сложно (особенно без LVM);
⏺ требует переформатирования или изменения разметки;
⏺ неудобен в облаках и на VPS.
Swap-файл — более гибкий и удобный. Особенно если:
⏺ вы работаете на облаке с единственным диском;
⏺ у вас ограниченное место;
⏺ нужно быстро изменить размер или выключить swap.
На современных ядрах swap-файл работает почти так же эффективно, как и раздел, особенно если создать его правильно.
Как правильно создать swap-файл
Не используйте dd — он может создать фрагментированный файл:
Вместо этого:
В fstab:
Дополнительные улучшения: zswap и zram
Чтобы продлить срок службы SSD и ускорить работу на слабых системах:
Zswap — сжатая подкачка в RAM. Включается одной командой:
Zram — компрессированный swap в памяти. Особенно эффективен на embedded и ARM-устройствах:
Настройка поведения подкачки
Чтобы система не бросалась в swap при любой нагрузке:
10–20 — хороший баланс: сначала используется RAM, и только потом swap.
На слабых серверах и миниатюрных VPS наличие подкачки решает всё. Даже базовая установка apt без swap может закончиться «убийством» процессов через OOM-killer.
Но что выбрать: swap-файл или swap-раздел? И главное — как сделать, чтобы не угробить SSD и не словить тормоза?
Что выбрать — swap-файл или swap-раздел?
Swap-раздел исторически считался более «надёжным» вариантом: он выделяется на физическом уровне и не фрагментируется. Но в реальности:
Swap-файл — более гибкий и удобный. Особенно если:
На современных ядрах swap-файл работает почти так же эффективно, как и раздел, особенно если создать его правильно.
Как правильно создать swap-файл
Не используйте dd — он может создать фрагментированный файл:
# Плохо:
dd if=/dev/zero of=/swapfile bs=1M count=1024
Вместо этого:
# Хорошо:
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
В fstab:
/swapfile none swap sw 0 0
Дополнительные улучшения: zswap и zram
Чтобы продлить срок службы SSD и ускорить работу на слабых системах:
Zswap — сжатая подкачка в RAM. Включается одной командой:
echo 1 > /sys/module/zswap/parameters/enabled
Zram — компрессированный swap в памяти. Особенно эффективен на embedded и ARM-устройствах:
modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 512M > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0
Настройка поведения подкачки
Чтобы система не бросалась в swap при любой нагрузке:
sysctl vm.swappiness=10
10–20 — хороший баланс: сначала используется RAM, и только потом swap.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤9👍3👏1
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Система управляет writeback через параметры vm.dirty_ratio и vm.dirty_background_ratio, а также через демоны pdflush или flush. Правильная настройка writeback снижает задержки при записи, предотвращает перегрузку диска и балансирует использование оперативной памяти и I/O.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍11
capsh и Linux capabilities
В Linux root-аккаунт обладает полным набором прав, но далеко не всегда это нужно. Capabilities позволяют «разрезать» привилегии на части и выдавать только нужные.
Например, чтобы процесс слушал порты ниже 1024, достаточно capability CAP_NET_BIND_SERVICE. Полный root здесь избыточен.
Проверка текущих прав:
Запуск процесса только с нужной capability:
⚡️ Так можно запускать сервисы безопаснее, следуя принципу «минимально необходимых прав». Это актуально и для контейнеров, и для демонов в продакшене.
В Linux root-аккаунт обладает полным набором прав, но далеко не всегда это нужно. Capabilities позволяют «разрезать» привилегии на части и выдавать только нужные.
Это снижает риски: сервис не сможет сделать ничего лишнего, даже если его взломают.
Например, чтобы процесс слушал порты ниже 1024, достаточно capability CAP_NET_BIND_SERVICE. Полный root здесь избыточен.
Проверка текущих прав:
capsh --print
Запуск процесса только с нужной capability:
capsh --drop=all --add=cap_net_bind_service -- -c "./server"
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍11
Multikernel: несколько ядер Linux на одном хосте
Проект Multikernel позволяет запускать на одной машине сразу несколько независимых экземпляров ядра Linux — без гипервизора и накладных расходов виртуализации.
Каждый экземпляр ядра получает прямой доступ к CPU и ресурсам, изоляция выше, чем у контейнеров, а производительность близка к «железу».
⏺ Запуск через улучшенный kexec, управление и отладка — через /proc/multikernel.
⏺ Для обмена сообщениями используется собственный IPI-фреймворк.
⏺ Поддерживается динамическое выделение ресурсов и изоляция отказов.
Проект Multikernel позволяет запускать на одной машине сразу несколько независимых экземпляров ядра Linux — без гипервизора и накладных расходов виртуализации.
Каждый экземпляр ядра получает прямой доступ к CPU и ресурсам, изоляция выше, чем у контейнеров, а производительность близка к «железу».
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥1🤔1
Профилирование CPU с perf и Flamegraph
Они показывают только процессы, но не дают понимания, что именно внутри процесса грузит CPU.
Здесь на помощь приходит perf и Flamegraph.
perf — запись стека вызовов
Для начала нужно установить perf (apt install linux-tools-common linux-tools-$(uname -r) на Debian/Ubuntu).
Простейший пример:
⏺ -F 99 — частота выборки 99 Гц
⏺ -a — профилируем все CPU
⏺ -g — сохраняем стеки вызовов
⏺ -- sleep 10 — профилируем 10 секунд
После этого создаётся файл perf.data, содержащий информацию о нагрузке CPU.
perf script + Flamegraph — визуализация горячих функций
Flamegraph позволяет видеть «горячие» участки кода:
⏺ stackcollapse-perf.pl — склеивает одинаковые стеки
⏺ flamegraph.pl — генерирует интерактивный SVG
Открыв out.svg в браузере, можно увидеть, какие функции съедают процессорное время. Чем выше «полоса», тем дольше выполняется функция.
Когда сервер «тормозит» или высокая загрузка CPU не очевидна, стандартных инструментов вроде top часто недостаточно.
Они показывают только процессы, но не дают понимания, что именно внутри процесса грузит CPU.
Здесь на помощь приходит perf и Flamegraph.
perf — запись стека вызовов
Для начала нужно установить perf (apt install linux-tools-common linux-tools-$(uname -r) на Debian/Ubuntu).
Простейший пример:
sudo perf record -F 99 -a -g -- sleep 10
После этого создаётся файл perf.data, содержащий информацию о нагрузке CPU.
perf script + Flamegraph — визуализация горячих функций
Flamegraph позволяет видеть «горячие» участки кода:
perf script | stackcollapse-perf.pl | flamegraph.pl > out.svg
Открыв out.svg в браузере, можно увидеть, какие функции съедают процессорное время. Чем выше «полоса», тем дольше выполняется функция.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6
Для обнаружения медленных процессов и аномальной активности на нескольких Linux-серверах лучше использовать:
Anonymous Quiz
20%
top на каждом сервере
72%
Централизованное логирование через rsyslog + SIEM
2%
cron
6%
systemctl
❤4👍1
Dstat и его наследники: удобный мониторинг в реальном времени
Стандартный набор (iostat, vmstat, ifstat) даёт нужные данные, но разрозненно — приходится открывать несколько окон и сводить всё в голове.
⏺ dstat решает эту проблему: он объединяет метрики CPU, IO, памяти, сети и процессов в одной таблице. Сразу видно картину происходящего. Например:
CPU, диски, сеть и память — всё в одной строке, обновляется раз в секунду.
Из новых инструментов можно отметить atop (с ретроспективным просмотром) и лёгкие аналоги — duf, dstat-variants, которые удобнее для быстрых проверок.
Когда сервер «тормозит», хочется сразу понять: проблема в диске, CPU или сети?
Стандартный набор (iostat, vmstat, ifstat) даёт нужные данные, но разрозненно — приходится открывать несколько окон и сводить всё в голове.
dstat -cdnm
CPU, диски, сеть и память — всё в одной строке, обновляется раз в секунду.
Из новых инструментов можно отметить atop (с ретроспективным просмотром) и лёгкие аналоги — duf, dstat-variants, которые удобнее для быстрых проверок.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤4
lshw – список железных компонентов сервера
Команда lshw помогает получить детальную информацию о “железе” сервера: процессоре, памяти, накопителях, сетевых интерфейсах, USB и аудио-устройствах.
Установка lshw
Если команда не исполняется, установите пакет:
CentOS
Debian/Ubuntu
Вывод информации о компонентах
Чтобы получить короткий список оборудования, используйте:
Пример вывода:
Другие полезные команды
Вывод в развернутом виде:
Сохранение в файл:
Информация только о CPU:
Команда lshw помогает получить детальную информацию о “железе” сервера: процессоре, памяти, накопителях, сетевых интерфейсах, USB и аудио-устройствах.
Установка lshw
Если команда не исполняется, установите пакет:
CentOS
sudo yum install lshw
Debian/Ubuntu
sudo apt install lshw
Вывод информации о компонентах
Чтобы получить короткий список оборудования, используйте:
lshw -short
Пример вывода:
H/W path Device Class Description
=====================================================
system Virtual Machine
/0 bus Virtual Machine
/0/5 processor Intel(R) Core(TM) i3-6100T CPU @ 3.20GHz
/0/51 memory 4GiB System Memory
/0/1 scsi2 storage
/0/1/0.0.0 /dev/sda disk 160GB SCSI Disk
/0/1/0.0.0/1 /dev/sda1 volume 500MiB EXT4 volume
/1 eth0 network Ethernet interface
Другие полезные команды
Вывод в развернутом виде:
lshw
Сохранение в файл:
lshw > hardware_info.txt
Информация только о CPU:
lshw -C CPU
👍13❤4
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Балансировка нагрузки между runqueue разных CPU — критически важная задача. Если один CPU перегружен, а другой простаивает, планировщик может переместить процессы между runqueue. Неправильная балансировка может привести к “CPU starvation” или падению производительности в многопроцессорных системах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍5❤2
pigz вместо gzip
pigz (parallel implementation of gzip) решает эту проблему — он использует все доступные CPU и значительно ускоряет компрессию.
Пример:
Архив будет создан в формате .gz, совместимом с gzip. Разница только в скорости: на сервере с 8 ядрами сжатие может ускориться в 5–7 раз.
Для распаковки можно использовать как pigz -d, так и обычный gzip -d.
Обычный gzip работает в один поток, поэтому на современных серверах с несколькими ядрами он сжимает большие файлы медленно.
pigz (parallel implementation of gzip) решает эту проблему — он использует все доступные CPU и значительно ускоряет компрессию.
Пример:
pigz backup.sql
Архив будет создан в формате .gz, совместимом с gzip. Разница только в скорости: на сервере с 8 ядрами сжатие может ускориться в 5–7 раз.
Для распаковки можно использовать как pigz -d, так и обычный gzip -d.
👍21❤5
Энтузиасты объединили двенадцать 56K модемов и установили рекорд скорости коммутируемого доступа
Команда The Serial Port объединила двенадцать 56K модемов (Courier V.Everything 56K) через Multilink PPP, чтобы достичь скорости загрузки 668 Кбит/с на ПК с Windows XP и парой PCI-карт с последовательными портами.
Ранее коммерческие решения использовали 2–4 модема, но массового применения не получили из-за сложности подключения и ограничений провайдеров.
⏺ Энтузиасты проверили работу MPPP на современном интернет-провайдере и смогли масштабировать систему до двенадцати модемов, обеспечив стабильную загрузку видео с минимальной задержкой.
Команда The Serial Port объединила двенадцать 56K модемов (Courier V.Everything 56K) через Multilink PPP, чтобы достичь скорости загрузки 668 Кбит/с на ПК с Windows XP и парой PCI-карт с последовательными портами.
Это позволило проверить возможности старого оборудования для стриминга видео и демонстрирует потенциал MPPP для объединения нескольких модемов в один логический канал.
Ранее коммерческие решения использовали 2–4 модема, но массового применения не получили из-за сложности подключения и ограничений провайдеров.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁23❤5👍1
SysRq Magic Key в Linux: экстренное управление системой
Иногда сервер или ноутбук может зависнуть так, что даже kill -9 не помогает.
В Linux для таких случаев есть «волшебная кнопка» — SysRq (System Request).
С её помощью можно отправлять ядру команды напрямую, минуя оболочку и процессы.
Включение SysRq
Обычно функция включена, но можно проверить:
⏺ 0 — выключено
⏺ 1 — включены все команды
⏺ или битовая маска (например, 16 = только sync).
Чтобы включить:
Постоянно (через sysctl):
Как пользоваться
Нужно зажать Alt + SysRq (Print Screen) и нажать нужную клавишу:
• r — вернуть управление клавиатуре (Raw → XLATE)
• e — завершить все процессы (SIGTERM)
• i — убить все процессы (SIGKILL)
• s — сбросить данные на диск (sync)
• u — перемонтировать файловые системы в read-only
• b — немедленная перезагрузка
«Безопасная последовательность» (REISUB)
Если система зависла:
Это поможет корректно завершить процессы, сохранить данные и только потом перезагрузиться.
Иногда сервер или ноутбук может зависнуть так, что даже kill -9 не помогает.
В Linux для таких случаев есть «волшебная кнопка» — SysRq (System Request).
С её помощью можно отправлять ядру команды напрямую, минуя оболочку и процессы.
Включение SysRq
Обычно функция включена, но можно проверить:
cat /proc/sys/kernel/sysrq
Чтобы включить:
echo 1 > /proc/sys/kernel/sysrq
Постоянно (через sysctl):
echo "kernel.sysrq = 1" >> /etc/sysctl.conf
sysctl -p
Как пользоваться
Нужно зажать Alt + SysRq (Print Screen) и нажать нужную клавишу:
• r — вернуть управление клавиатуре (Raw → XLATE)
• e — завершить все процессы (SIGTERM)
• i — убить все процессы (SIGKILL)
• s — сбросить данные на диск (sync)
• u — перемонтировать файловые системы в read-only
• b — немедленная перезагрузка
«Безопасная последовательность» (REISUB)
Если система зависла:
Alt + SysRq + r
Alt + SysRq + e
Alt + SysRq + i
Alt + SysRq + s
Alt + SysRq + u
Alt + SysRq + b
Это поможет корректно завершить процессы, сохранить данные и только потом перезагрузиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍11❤6
Какой инструмент позволяет детально отследить утечки памяти в работающем процессе, включая используемые библиотеки?
Anonymous Quiz
9%
top
32%
valgrind
35%
htop
23%
ps aux
👎9👍8🔥1
tuned: профили оптимизации производительности Linux
tuned — это демон и набор профилей, которые позволяют автоматически подстраивать параметры ядра и драйверов под разные сценарии использования.
Вместо того чтобы вручную править sysctl, grub и конфиги драйверов, можно активировать готовый набор оптимизаций.
Например:
⏺ throughput-performance — максимум пропускной способности, полезно для серверов БД и высоконагруженных сервисов;
⏺ latency-performance — снижение задержек для realtime-задач и телеком-сервисов;
⏺ virtual-guest — оптимизация гостевых VM;
⏺ powersave — агрессивная экономия энергии.
Посмотреть список доступных профилей:
Включить нужный:
Если стандартные профили не подходят, можно собрать свой — с настройкой CPU governor, IRQ affinity, параметров сети и дисков.
tuned — это демон и набор профилей, которые позволяют автоматически подстраивать параметры ядра и драйверов под разные сценарии использования.
Вместо того чтобы вручную править sysctl, grub и конфиги драйверов, можно активировать готовый набор оптимизаций.
Например:
Посмотреть список доступных профилей:
tuned-adm list
Включить нужный:
tuned-adm profile throughput-performance
Если стандартные профили не подходят, можно собрать свой — с настройкой CPU governor, IRQ affinity, параметров сети и дисков.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥2
Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать.Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3😁1