Я запускаю Tor на небольшом маршрутизаторе OpenWRT, где нельзя избежать подкачки из-за ограниченного объема доступной оперативной памяти (32 МБ).
Большую часть времени маршрутизатор ничего не делает, однако время от времени осуществляется доступ к базе данных postgresql, также работающей на маршрутизаторе. Из-за того, что tor постоянно работает, postgresql полностью заменяется, и первые несколько обращений имеют очень большую задержку, что плохо, потому что это интерактивно используемая система.
Я уже присвоил значение -15 для postgres и +15 для tor, но, похоже, это не сильно влияет на управление памятью. Глобальная установка swappiness=1 тоже ничего не меняет, потому что свопинга нельзя избежать, а поскольку postgresql большую часть времени не работает, он все равно выгружается.
Есть ли способ что-то вроде приоритета памяти для процесса Linux? Я просмотрел своппинг, специфичный для cgroup, однако единственное описание, которое я нашел, заключалось в том, что он влияет на выбор между кэшем страницы и свопом.
То, что я ищу, - это параметр, чтобы указать ядру Linux не заменять postgresql так агрессивно, как другие процессы (но я не хочу блокировать весь процесс). Или назначение swappiness = 80 для всей системы и swapiness = 1 для postgresql будет держать postgresql в памяти, а все остальное заменять при необходимости?