Top.Mail.Ru
Оптимизация управления памятью на Raspberry Pi в Linux


Jun 6, 2025

Оптимизация управления памятью на Raspberry Pi в Linux системах

Введение

Raspberry Pi — это маломощный одноплатный компьютер с ограниченным объёмом оперативной памяти (от 512MB до 8GB). Эффективное использование памяти — критично при запуске сервисов, приложений или даже лёгких графических окружений. Эта статья — техническое руководство по всем ключевым аспектам управления памятью на Raspberry Pi: swap, ZRAM, slab, кеш, OOM killer и даже NUMA-эффекты.


1. Обзор памяти на Raspberry Pi


2. Swap и ZRAM на Raspberry Pi

Когда оперативная память исчерпана, Linux может выгружать данные во вторичную память. Это называется подкачкой (swap).

Swap — это механизм, позволяющий временно переместить неиспользуемые страницы памяти на диск или в сжатое пространство, освобождая RAM для более активных задач.

На Raspberry Pi обычно не рекомендуется использовать swap на SD-карте: он изнашивает носитель. Вместо этого можно использовать ZRAM.

ZRAM — модуль ядра, создающий сжатое swap-пространство в оперативной памяти. Это быстрее и безопаснее для SD-карты.

Установка ZRAM

sudo apt install zram-tools

Проверьте, что он активен:

swapon --show

3. Настройки ядра: vm.* параметры

Linux имеет множество параметров, влияющих на то, как именно происходит управление памятью. Они хранятся в /proc/sys/vm/ и настраиваются через sysctl.

Ключевые параметры:

vfs_cache_pressure = 100 означает “нормальное” поведение. Увеличение приводит к более быстрой очистке кеша структуры ФС, уменьшение — к агрессивному кешированию.

Настройка временно:

sudo sysctl -w vm.swappiness=20

Для постоянной настройки: редактируйте /etc/sysctl.conf или создайте отдельный файл в /etc/sysctl.d/.


4. OOM Killer: когда памяти совсем не хватает

OOM Killer (Out-of-Memory Killer) — механизм ядра, который завершает “наименее ценные” процессы при критической нехватке памяти.

Для выбора процессов OOM Killer использует oom_score и oom_score_adj. Вы можете влиять на приоритеты:

echo -100 > /proc/$(pidof your_important_process)/oom_score_adj

Значения:

Смотреть текущие значения:

cat /proc/<pid>/oom_score

5. Slab-аллокаторы и кэш структуры ФС

Linux кэширует структуру каталогов, inodes и dentries, чтобы ускорить доступ к ФС. Этот кэш называется Slab Cache.

Посмотреть его размер:

free -h
cat /proc/meminfo | grep -i slab

Этот кэш полезен, но может занимать много RAM. Снижать его агрессивно не рекомендуется, если нет критической нехватки памяти.


6. NUMA: архитектурные эффекты на 8GB Raspberry Pi

Raspberry Pi не использует полноценную NUMA, но на моделях с 8GB RAM и двумя чипами памяти могут проявляться NUMA-подобные задержки доступа к RAM.

NUMA (Non-Uniform Memory Access) — архитектура, где время доступа к разным участкам памяти может отличаться. Особенно это влияет на многопоточные задачи.

Инструменты для анализа (могут не работать на ARM, но полезны для справки):

На практике: старайтесь не запускать высоко-NUMA-чувствительные приложения (например, PostgreSQL с NUMA-aware настройками), если они не протестированы на ARM.


7. Диагностика использования памяти

Дополнительно:


🔚 Заключение

Управление памятью на Raspberry Pi — это не только борьба за мегабайты, но и тонкая настройка поведения ядра Linux. Swap и ZRAM уменьшают износ SD-карты, vm-параметры регулируют агрессивность кеширования, а понимание slab и OOM Killer помогает избежать внезапных сбоев. На старших моделях полезно учитывать NUMA-подобные эффекты.

Грамотная конфигурация памяти — один из ключевых факторов, делающих Raspberry Pi пригодным для продвинутых задач: от серверов до автоматизации и edge-компьютинга.