LINUX.ORG.RU

Статьи «Администрирование»

Как закалялся шакал: а где можно 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 можно несколькими способами:

  1. # dmesg | grep zswap

  2. $ 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.

 , , ,

Bfgeshka
()

DNS-Over-QUIC для блокировки рекламы и не только

DNS-Over-QUIC для блокировки рекламы и не только

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

( читать дальше... )

 , , ,

rtxtxtrx
()

Переезжаем на Fish

Переезжаем на Fish

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

( читать дальше... )

 , ,

rtxtxtrx
()

Получаем OTP-коды для авторизации через терминал

Получаем OTP-коды для авторизации через терминал

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

( читать дальше... )

 , ,

rtxtxtrx
()

Дедупликация в Btrfs

Дедупликация в Btrfs

Btrfs — это замечательная файловая система, главными фишками которой являются легковесные снапшоты, реализуемые через Copy-On-Write (COW), и сжатие. Она показала высокую надежность и стабильность, и именно поэтому она включена в ядро Linux. Однако, даже наличие COW не позволяет избежать избыточности данных на уровне блоков.

( читать дальше... )

 ,

rtxtxtrx
()

Защищенный терминал подручными средствами

Предлагаю смотреть на вопрос философски. Многие из нас работают на удаленке. Защищая свою рабочую машину для просмотра котиков, мы возможно избавим от проблем себя и свою любимую компанию. А вот откуда может прилететь, сходу сказать сложно. Будем считать против нас Бох! Ну не тот который всё создал, а тот который специализируется на атаках ИБ, ну и раз он Бох, то он конечно умеет читать мысли и бессмертен.

( читать дальше... )

 , , ,

unclestephen
()
: Обход проблемы фрагментации для gre или ipip туннеля для linux-роутера (7 комментариев)

Использование обратных туннелей для доступа к устройствам за NAT

Использование обратных туннелей для доступа к устройствам за NAT

frp — это утилита для создания обратных туннелей. Она позволяет получить доступ к локальному ресурсу за NAT через промежуточный сервер.

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

( читать дальше... )

 ,

rtxtxtrx
()

Приложения и утилиты, которые стоит попробовать

Приложения и утилиты, которые стоит попробовать

Многие пользователи Linux с большим стажем даже не подозревают о существовании этих замечательных инструментов, которые способны облегчить им жизнь…

( читать дальше... )

 , ,

rtxtxtrx
()

Используем socks для доступа к ChatGPT и ускорения YouTube

Используем socks для доступа к ChatGPT и ускорения YouTube

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

( читать дальше... )

 ,

rtxtxtrx
()

Настраиваем и используем ZSH вместо Bash, или превращаем терминал в раскраску

Настраиваем и используем ZSH вместо Bash, или превращаем терминал в раскраску

Я не буду расписывать преимущества ZSH над Bash, отмечу лишь то, что ZSH используется по дефолту во многих дистрибутивах Linux, а также с недавних пор и в macOS (тут должна быть шутка про Торвальдса и его макбук). Главной причиной повсеместной замены bash на zsh является встроенный механизм модулей, поверх которого было навалено такое великолепие, как Oh My Zsh.

( читать дальше... )

 , ,

rtxtxtrx
()

Настройка Apache PHP для работы от пользователя по HTTP2

Для работы Apache от пользователя можно использовать конфигурацию apache+mod_php+mpm_prefork+mpm_itk, но эта комбинация не работает по HTTP2. Поэтому настраиваем по-другому.

( читать дальше... )

 , ,

jura12
()

Делаем машину времени с Btrfs

Делаем машину времени с Btrfs

Btrfs – это файловая система с легковесными снапшотами, которая позволяет создать самую настоящую машину времени, делая снимки состояния файловой системы (снапшоты) и монтировать их на лету. Этой файловой системе скоро стукнет 16, а значит уже можно ее попробовать.

( читать дальше... )

 , ,

rtxtxtrx
()

Подключение VDS в локальную сеть через MikroTik посредством VPN L2TP+IPSec

Предыстория! Убил я на это 4 дня и 4 ночи :D но мне удалось решить и организовать задуманную мною задачу и хочу поделиться, возможно кому то это понадобиться так как в интернете я путнего так ни чего и не нашел пока сам методом тыка и поиска все не решил сам! Сразу скажу что в Linux`ах и написание статей я не спец, самоучка, поэтому не судите строго! :)

( читать дальше... )

 , , , ,

Kot837
()

Включаем шифрование для DNS-запросов

Включаем шифрование для DNS-запросов

Рассмотренные ниже приемы будут полезны для пользователей прокси-серверов/VPN и позволяют скрывать запрашиваемые по DNS имена доменов.
Время на чтение: ~5 минут.
Сложность: Middle AnyKey Developer (нужно уметь запустить терминал).

( читать дальше... )

 , , ,

rtxtxtrx
()
: Установка Ventoy через репозиторий пакетов Makedeb, который, в свою очередь, GIT (4 комментария)
: Удаление deb-пакетов с некорректными pre- и post-скриптами (15 комментариев)

CoW или не CoW, вот в чем вопрос

Сейчас появилось некоторое количество файловых систем, которые почему-то необоснованно относят к группе CoW (Copy-on-Write). Почему так получилось, и что что на самом деле есть Copy-on-Write?

( читать дальше... )

 , , , ,

no-dashi-v2
()

Управление файлами конфигурации при помощи GNU Stow

GNU Stow — это менеджер символьных ссылок. Он позволяет управлять файлами конфигурации и установкой программ из исходников. При помощи Stow можно устанавливать программы из исходных кодов в обход менеджера пакетов, не боясь сломать систему. Также им удобно управлять файлами конфигурации (далее дот-файлами) в домашнем каталоге пользователя.

( читать дальше... )

 ,

den-jc
()
: Как перепрошить Netgear n600 wndr3800 на libreCMC (4 комментария)