Статьи «Администрирование»
Как закалялся шакал: а где можно download more ram?
Вступление
Данная статья написана с целью концентрации знаний о сжатии данных оперативной памяти.
Я использую gentoo, поэтому имена пакетов будут приводиться в формате этого дистрибутива.
Подразумевается, что читающий имеет желание и возможность (одно из):
- произвести конфигурацию и/или сборку ядра;
- в случае отсутствия искомой функциональности в «ванильном» - найти и использовать ядро, в котором уже всё есть.
zram
zram это, если описать попроще, tmpfs со сжатием.
Необходимо включить zram в ядре: CONFIG_ZRAM=m
(или =y, но настоятельно рекомендуется загружать как модуль), либо в menuconfig:
Device Drivers --->
[*] Block devices --->
<M> Compressed RAM block device support
Также стоит обратить внимание на другие доступные опции конфигурации, например - метод компрессии ZRAM_BACKEND_XXX
.
Важно заметить, что zram может использоваться как простое блочное устройство и как приоритетный своп, аналогично zswap (см. ниже). В случае последнего необходимо собирать модуль с опцией CONFIG_ZRAM_WRITEBACK
, которая позволяет отгружать данные из zram-девайса на ФС.
Наличие zram можно проверить по наличию модуля zram
(только если zram собран модулем) или существованию /dev/zramX
(если модуль загружен или zram вшит в ядро).
Утилита zramctl
входит в состав sys-apps/util-linux
(которая, скорее всего, уже стоит в системе), с её помощью можно создать юзабельный zram диск. Описание утилиты можно прочитать на man 8 zramctl
.
Одновременно может существовать несколько устройств zram, каждое со своей собственной конфигурацией (объём, путь, права, writeback итд). Для zram есть вспомогательные проекты, например sys-apps/zram-generator
и sys-block/zram-init
, которые упрощают конфигурацию функциональности, но использовать их не является строгой необходимостью.
Ряд полезных инструкций можно найти тут: арчвики, гентувики.
zswap
zswap представляет из себя прослойку между RAM и swap: вместо простой выгрузки неактивных страниц в своп, сначала они подвергаются компрессии и помещаются в отдельное виртуальное хранилище в оперативной памяти; затем данные страницы выгружаются в своп при нехватке RAM или заполнении данного хранилища и при выгрузке производится декомпрессия.
Необходимо включить zswap в ядре: CONFIG_ZSWAP=y
, либо в menuconfig:
Memory Management options --->
[*] Support for paging of anonymous memory (swap) --->
[*] Compressed cache for swap pages
Также стоит обратить внимание на другие доступные опции конфигурации, например - выбрать дефолтные метод компрессии CONFIG_ZSWAP_COMPRESSOR_DEFAULT_XXX
и аллокатор CONFIG_ZSWAP_ZPOOL_DEFAULT_XXX
.
Проверить сессию на наличие zswap можно несколькими способами:
-
# dmesg | grep zswap
-
$ grep -r . /sys/module/zswap/parameters/
Настройку параметров можно производить либо в рантайме (через манипуляцию параметров в /sys/module/zswap/parameters/max_pool_percent
), либо в параметрах загрузки ядра. Доступные параметры и их расшифровка описаны здесь: https://docs.kernel.org/admin-guide/mm/zswap.html
Если используешь не очень старую версию htop, то там эта память будет учитываться в общих графах compressed и frontswap.
Если используются одновременно zswap и zram (конкректно для swap), то лучше выбрать что-то одно, особенно при использовании ZRAM_WRITEBACK
.
KSM
Kernel Samepage Merging - технология дедупликации одинаковых страниц памяти. Не является непосредственно сжатием, но позволяет получить больше свободной RAM, так что пусть тут будет.
На ядро должен быть наложен патч UKSM.
Необходимо включить KSM в ядре: CONFIG_KSM=y
, либо в menuconfig:
Memory Management options --->
[*] Enable KSM for page merging
Проверить сессию на присутствие и работоспособность KSM можно через проверку в /sys, например:
$ grep -r . /sys/kernel/mm/ksm
Если ядро настроено корректно, то каталог /sys/kernel/mm/ksm
должен существовать и значение /sys/kernel/mm/ksm/run
быть «1».
Слияние памяти происходит только для процессов, помеченных madvise()
. Так как ручками мы делать это не будем, далее стоит установить sys-process/uksmd
. Данный демон работает в фоне и производит инициализацию слияния автоматически, достаточно закрепить его в системе как сервис.
Послесловие
Надеюсь, что тебе понравилось читать эту статью настолько же, насколько мне нравилось её писать.
Предложения/исправления/дополнения приветствуются.
Форумчанин kirill_rrr произвёл бенчмарк разных наборов конфигураций zram, swap и zswap в 2023.
DNS-Over-QUIC для блокировки рекламы и не только

Протокол QUIC, в отличие от UDP поддерживает шифрование и работает быстрее чем TCP, который часто используется для шифрованных DNS-запросов. Данная инструкция актуальная, так как Google все-таки начал удаление поддержки блокировщиков рекламы из своего браузера. Кроме того, она пригодится тем, кто хочет скрыть свое пребывание в Интернете от тотальной слежки.
( читать дальше... )
Переезжаем на Fish

Fish — это современный командный интерпретатор, недавно переписанный на Rust, который не требует особой настройки, поддерживая из коробки автодополнение и подсветку синтаксиса. Является лучшим Unix SHELL по версии Slant.
( читать дальше... )
Получаем OTP-коды для авторизации через терминал

TOTP (Time-Based One-Time Password) или просто OTP — это алгоритм для генерации одноразовых паролей, который не требует сторонних сервисов. Он работает локально на основе общего секретного ключа и текущего времени. Например, GitHub с 2024 года использует двухфакторную авторизацию (ввод пароля + ввод какого-то кода) только через OTP (в России авторизация через SMS недоступна).
( читать дальше... )
Дедупликация в Btrfs

Btrfs — это замечательная файловая система, главными фишками которой являются легковесные снапшоты, реализуемые через Copy-On-Write (COW), и сжатие. Она показала высокую надежность и стабильность, и именно поэтому она включена в ядро Linux. Однако, даже наличие COW не позволяет избежать избыточности данных на уровне блоков.
( читать дальше... )
Защищенный терминал подручными средствами
Предлагаю смотреть на вопрос философски. Многие из нас работают на удаленке. Защищая свою рабочую машину для просмотра котиков, мы возможно избавим от проблем себя и свою любимую компанию. А вот откуда может прилететь, сходу сказать сложно. Будем считать против нас Бох! Ну не тот который всё создал, а тот который специализируется на атаках ИБ, ну и раз он Бох, то он конечно умеет читать мысли и бессмертен.
( читать дальше... )
Использование обратных туннелей для доступа к устройствам за NAT

frp — это утилита для создания обратных туннелей. Она позволяет получить доступ к локальному ресурсу за NAT через промежуточный сервер.
Многие знают про существование сервисов типа ngrok и localtunnel, которые позволяют делать нечто подобное. У них есть бесплатные тарифные планы, которые имеют ограничения по ежемесячному трафику и количеству подключений. Поэтому (и не только) в ряде случаев использование self-hosted-решений, таких как frp
, оказывается более предпочтительным.
( читать дальше... )
Приложения и утилиты, которые стоит попробовать

Многие пользователи Linux с большим стажем даже не подозревают о существовании этих замечательных инструментов, которые способны облегчить им жизнь…
( читать дальше... )
Используем socks для доступа к ChatGPT и ускорения YouTube

Эта статья не содержит описания способов обхода блокировок для доступа к противоправому контенту. Socks-прокси нужны исключительно для того чтобы смотреть YouTube и просить ChatGPT писать за тебя домашние задания!!! У первого какие-то проблемы со скоростью последнее время, говорят, что из-за отключения кеширующих серверов, а второй сам заблокировал жителей из России, Беларуси и Китая…
( читать дальше... )
Настраиваем и используем ZSH вместо Bash, или превращаем терминал в раскраску

Я не буду расписывать преимущества ZSH над Bash, отмечу лишь то, что ZSH используется по дефолту во многих дистрибутивах Linux, а также с недавних пор и в macOS (тут должна быть шутка про Торвальдса и его макбук). Главной причиной повсеместной замены bash на zsh является встроенный механизм модулей, поверх которого было навалено такое великолепие, как Oh My Zsh.
( читать дальше... )
Настройка Apache PHP для работы от пользователя по HTTP2
Для работы Apache от пользователя можно использовать конфигурацию apache+mod_php+mpm_prefork+mpm_itk, но эта комбинация не работает по HTTP2. Поэтому настраиваем по-другому.
( читать дальше... )
Делаем машину времени с Btrfs

Btrfs – это файловая система с легковесными снапшотами, которая позволяет создать самую настоящую машину времени, делая снимки состояния файловой системы (снапшоты) и монтировать их на лету. Этой файловой системе скоро стукнет 16, а значит уже можно ее попробовать.
( читать дальше... )
Подключение VDS в локальную сеть через MikroTik посредством VPN L2TP+IPSec
Предыстория! Убил я на это 4 дня и 4 ночи :D но мне удалось решить и организовать задуманную мною задачу и хочу поделиться, возможно кому то это понадобиться так как в интернете я путнего так ни чего и не нашел пока сам методом тыка и поиска все не решил сам! Сразу скажу что в Linux`ах и написание статей я не спец, самоучка, поэтому не судите строго! :)
( читать дальше... )
Включаем шифрование для DNS-запросов

Рассмотренные ниже приемы будут полезны для пользователей прокси-серверов/VPN и позволяют скрывать запрашиваемые по DNS имена доменов.
Время на чтение: ~5 минут.
Сложность: Middle AnyKey Developer (нужно уметь запустить терминал).
( читать дальше... )
CoW или не CoW, вот в чем вопрос
Сейчас появилось некоторое количество файловых систем, которые почему-то необоснованно относят к группе CoW (Copy-on-Write). Почему так получилось, и что что на самом деле есть Copy-on-Write?
( читать дальше... )
Управление файлами конфигурации при помощи GNU Stow
GNU Stow — это менеджер символьных ссылок. Он позволяет управлять файлами конфигурации и установкой программ из исходников. При помощи Stow можно устанавливать программы из исходных кодов в обход менеджера пакетов, не боясь сломать систему. Также им удобно управлять файлами конфигурации (далее дот-файлами) в домашнем каталоге пользователя.
( читать дальше... )
следующие → |