...

пятница, 6 декабря 2013 г.

Перенос Google Chrome на RAM-диск в Linux

Опишу простой способ переноса кеша, настроек и прочих локальных данных Google Chrome на RAM-диск в Linux. Это ускорит скорость работы браузера и исключит насилие над диском (что особенно критично, если у вас SSD).

Статья не содержит ничего интересного для более-менее продвинутых пользователей Unix-like систем. Совсем ничего.


Linux предоставляет нам все средства для того, чтобы наша задача решалась за 10 минут, в лоб и правильно, как бы мы ни старались сделать всё через жопу. Я буду намеренно писать подробно.


1. Создаём RAM-диск


Никаких сторонних приложений не требуется. Linux поддерживает RAM-диски на уровне ядра. Эта штука называется tmpfs. Всё, что нам нужно, так это смонтировать tmpfs в любой удобное нам место. Создадим каталог .chrome/ramdisk в домашней директории и добавим следующую строку в /etc/fstab:



tmpfs /home/сс/.chrome/ramdisk tmpfs noatime,nodiratime,nodev,nosuid,uid=1000,gid=100,mode=0700,size=300M 0 0


заменив сс на имя вашего пользователя, uid и gid — на его идентификаторы (узнать их можно командой id), size — на желаемый размер диска. Если у вас оперативку хоть ложкой ешь, то размер можно взять и побольше. Особенностью tmpfs является то, что указанный размер не будет резервироваться в памяти — память не будет тратиться вообще, пока вы фактически не напихаете в RAM-диск данные. Командой df -h вы всегда можете посмотреть, насколько заполнен этот и другие смонтированные диски.


2. Отправляем локальные данные Хрома в наш RAM-диск


Никаких махинаций с настройками и ключами хрома делать не надо. Все юниксовые файловые системы поддерживают символические ссылки. Поэтому тупо перенаправим ~/.config/google-chrome и ~/.cache/google-chrome в наш диск:



cd ~/.chrome/ramdisk
mkdir cache config
ln -s ~/.config/google-chrome config
ln -s ~/.cache/google-chrome cache


3. Ограничиваем размеры кеша в Google Chrome


Мы опять не будет играться с ключами, а используем политики. Для этого создадим файл /etc/opt/chrome/policies/managed/cache-size.json с таким содержанием:



{
"DiskCacheSize": 40000000,
"MediaCacheSize": 30000000
}




где циферки — это размеры общего кеша и медиа-кеша соответственно. Можете менять на свой вкус, но следя, чтобы размер ~/.config/google-chrome + указанные размеры заполняли диск процентов на 80. Ибо размер первого каталога никак не регулируется, а DiskCacheSize и MediaCacheSize вовсе не являются жёсткими границами: Хром может их немного превысить, если будет очень нужно. У меня на момент написания статьи RAM-диск используется на 83%:

$ df -h ~/.chrome/ramdisk
Filesystem Size Used Avail Use% Mounted on
tmpfs 300M 249M 52M 83% /home/cc/.chrome/ramdisk


4. Поддерживаем состояние RAM-диска между перезагрузками компьютера


Как только вы нажали кнопочку «power off», все данные из оперативки улетели в рай для битов. Мы же не хотим начинать каждый день с нового листа — нам нужно сохранять RAM-диск на жёский или твердотельный диск при выходе из системы и восстанавливать его при загрузке. Есть примерно миллион способов это сделать. Если у вас systemd, то можно создать сервис /etc/systemd/system/chrome-ramdisk.service:



[Unit]
Description=Keep Chrome's RAM disk between power-offs

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/home/сс/bin/chrome-ramdisk restore
ExecStop=/home/сс/bin/chrome-ramdisk save

[Install]
WantedBy=multi-user.target




где ~/bin/chrome-ramdisk — простенький скрипт, который сохраняет RAM-диск в tar-архив или, наоборот, извлекает этот архив в пустой RAM-диск:

#!/bin/bash

shopt -s dotglob
cd /home/cc/.chrome

if [[ "$1" == "save" ]]; then
rm ramdisk.tar
tar cpf ramdisk.tar ramdisk/*
elif [[ "$1" == "restore" ]]; then
rm -rf ramdisk/*
tar xf ramdisk.tar
fi




Сервис включается командой

$ sudo systemctl enable chrome-ramdisk.service


Если вас научили ненавидеть Леннарта П., то аналогичный эффект можно получить и в старом добром init-scripts, используя rc.local, rc.local_shutdown или тому подобные скрипты.






P. S. Google Chrome и Chromium — не совсем одно и то же. В частности, у них разные пути к каталогам настроек, кеша и политик. Статья написана для Google Chrome. Минута гугления обеспечит вам нужными путями для хромиума.

Усё.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Комментариев нет:

Отправить комментарий