Да, вы можете запустить Whonix (или, если на то пошло, любой другой дистрибутив Linux) внутри виртуальной машины, например VirtualBox .
Решение, которое "fra -san" дал здесь в комментариях, идеально подошло. Используя пакет «cgroup -tools», я смог успешно ограничить использование памяти Chrome. Я протестировал его, открывая десятки вкладок одновременно, и увидел ограничение памяти в действии. Однако мне пришлось оставить свой скрипт работающим, поскольку, хотя я в основном использую Chrome, системный кеш также потребляет много оперативной памяти.
Мои шаги:
1 -Использован этот сценарий из:Ограничение использования памяти для одного процесса Linux
#!/bin/sh
# This script uses commands from the cgroup-tools package. The cgroup-tools commands access the cgroup filesystem directly which is against the (new-ish) kernel's requirement that cgroups are managed by a single entity (which usually will be systemd). Additionally there is a v2 cgroup api in development which will probably replace the existing api at some point. So expect this script to break in the future. The correct way forward would be to use systemd's apis to create the cgroups, but afaik systemd currently (feb 2018) only exposes dbus apis for which there are no command line tools yet, and I didn't feel like writing those.
# strict mode: error if commands fail or if unset variables are used
set -eu
if [ "$#" -lt 2 ]
then
echo Usage: `basename $0` "<limit> <command>..."
echo or: `basename $0` "<memlimit> -s <swaplimit> <command>..."
exit 1
fi
cgname="limitmem_$$"
# parse command line args and find limits
limit="$1"
swaplimit="$limit"
shift
if [ "$1" = "-s" ]
then
shift
swaplimit="$1"
shift
fi
if [ "$1" = -- ]
then
shift
fi
if [ "$limit" = "$swaplimit" ]
then
memsw=0
echo "limiting memory to $limit (cgroup $cgname) for command $@" >&2
else
memsw=1
echo "limiting memory to $limit and total virtual memory to $swaplimit (cgroup $cgname) for command $@" >&2
fi
# create cgroup
sudo cgcreate -g "memory:$cgname"
sudo cgset -r memory.limit_in_bytes="$limit" "$cgname"
bytes_limit=`cgget -g "memory:$cgname" | grep memory.limit_in_bytes | cut -d\ -f2`
# try also limiting swap usage, but this fails if the system has no swap
if sudo cgset -r memory.memsw.limit_in_bytes="$swaplimit" "$cgname"
then
bytes_swap_limit=`cgget -g "memory:$cgname" | grep memory.memsw.limit_in_bytes | cut -d\ -f2`
else
echo "failed to limit swap"
memsw=0
fi
2 -Назвал его как "limitmem" и скопировал в /usr/bin/, чтобы я мог вызвать его из терминала просто с помощью limitmem
. Теперь я могу открыть процесс, ограничивающий использование памяти, например, до 800 МБ, используя этот синтаксис:limitmem 800M command
В моем случае:limitmem 1000M google-chrome --password-store=basic --aggressive-cache-discard --aggressive-tab-discard
Вы спросили, делаете ли вы это наиболее эффективным способом. Я использовал ноутбук очень похожим образом.Что я заметил за 3 года использования LiveUSB:
apt-get install
для установки пакетов; вместо этого используйте sudo dpkg -i
. Кажется, это снижает «общую» память. (измененные системные файлы, занимающие больше памяти на RAM-диске ). --type=renderer
процессами ). Вы делаете это, запустив :ps aux | grep type=renderer
kill -9 $(ps aux | grep type=renderer)
Вы можете назначить сочетание клавиш для запуска скрипта, содержащего команду kill
. Таким образом, вам не нужно перезагружать весь браузер; вы только нажимаете всплывающее окно с уведомлением, чтобы перезагрузить расширения. Накладные расходы памяти после этого остаются очень низкими по любой причине. Раньше я использовал команду clean cache/buffers
много раз в день, но со временем заметил, что мне нужно обращать внимание только на «Доступную» память, а не на «Свободную». Моя система остается работоспособной только со свободными 100 МБ. Меня должно беспокоить только то, что Доступно меньше 300 МБ; затем обычно нажатие горячей клавиши kill Chromium решает проблему.
Хотел бы я знать, есть ли способ чтобы каждый раз запускать команду "kill Chromium" Доступная память достигает определенного нижнего предела.
Примечание. :Я экспериментировал с процедурами Zram/Zswap, но это не помогло; казалось, что это только приводит к более частым зависаниям системы, что приводит к частым перезагрузкам (большему износу уже старого жесткого диска, чем меньше вы перезагружаете или приостанавливаете работу, тем лучше ).