Укрощение лисы

2018-04-12

…или как снизить потребление памяти прожорливого firefox и заставить linux жить по средствам.

Сейчас иногда использую в качестве мобильного рабочего места ноут Samsung R522 — впечатляющая даже по сегодняшним меркам машинка, но всего с 2G RAM на борту. В основном я работаю либо с совсем низкоуровневыми программами (vim, tmux, mutt, mbsync, mercurial, pandoc, … что еще нужно человеку для полного счастья?) и прельстиво и любовно допиленным openbox. Однако, quantum firefox способен сожрать всю память и завесить систему. Ко всему прочему, чтобы пощадить винт, я принципиально отключил своп. Посему начали случаться моменты когда система зависала. Это не совсем зависание — как написали на одном из форумов «just highly unresponsible» — но обычно у меня не хватало терпения ждать и я перезагружал машину.

Некоторое время я пытался настроить firefox на меньшую прожорливость, проверял плагинки, обновлял базы — в общем все необходимые ритуальные танцы. В конце-концов стало понятно, что проблема не в браузере.

Я забрался в докуметацию и выяснил интересную штуку. Оказывается, в ядре есть такая настройка, как memory overcommit — выделение приложению памяти больше, чем есть в наличии. Я не копал глубоко вопрос почему и зачем это сделано — по моим предположениям такой режим выгоден (а) когда запущено много разных приложений и есть шанс, что недостающая память случайным образом высвободится за счет закрытия другой программы, к моменту когда она понадобится программе текущей (привет теории массового обслуживания), (б) расчет идет на то, что если лимит памяти будет превышен — пойдет сброс лишнего в своп (которого у меня нет) и (в) если будет совсем плохо запустится task killer и прибьет какое-нибудь ненужное приложение (на практике killer обычно тупит).

За режим выделения памяти отвечают переменные vm.overcommit_memory — которая задает режим выделения памяти и vm.overcommit_ratio, которая определяет насколько можно превысить пределы.

По дефолту у меня были режим 0 и 50% соответственно:


cat /proc/sys/vm/overcommit_memory
0

cat /proc/sys/vm/overcommit_ratio
50

Я их поменял на «режим 2» (не выдавать память авансом — давать только то, что есть в наличии) и 98% (расходовать всю память минус 2% для баша на всякий пожарный) соответственно. Все равно памяти больше не станет — поэтому лучше, чтобы система «жила по средствам» и не тщилась съесть больше, чем есть в наличии.

Это можно сделать из-под рута на один сеанс (до перезагрузки — посмотреть, как поведет себя система):


echo 2 > /proc/sys/vm/overcommit_memory
echo 98 > /proc/sys/vm/overcommit_ratio

Либо открыть из-под рута в текстовом редакторе /etc/sysctl.conf

и добавить туда пару строчек:

# профилактируем оверкоммиты памяти
vm.overcommit_ratio = 98
vm.overcommit_memory = 2

Тогда настройки подхватятся после перезагрузки и можно будет на них посмотреть через cat (см команды выше).

В теории это может вызвать подтормаживание лисы, но я побочных эффектов пока не заметил, зато система стала работать стабильно, что не может не радовать.

Реклама

Централизация, децентрализация и падение телеграма

2018-03-29

Неоднократно встречал мнение о том, что с приходом Slack, Telegram и иже с ними почта отомрет. Куда-то в ту же степь мнение о ненужности XMPP-протокола aka Jabber. Текущее «падение телеграма» наглядно показывает, что слухи о смерти почты оказались сильно преувеличены.

Централизация сервисов очень хорошо монетизируется и в некотором смысле удобна для пользователя (все лежит на условном едином сервере, что позволяет не париться) поэтому она широко распространилась в интернете, постепенно вытесняя старые распределенные системы. Напомню, что прототип интернета — ARPANET — изначально планировался, как распределенная, децентрализованная сеть, устойчивая к потере отдельных узлов.

Сейчас мы пожинаем плоды — падение одного сервиса «накрывает» сразу всех пользователей, плюс подобные платформы очень уязвимы с точки зрения политического контроля и монетизации и тут чем дальше, тем интереснее будет эта история.

В противовес этому, почтовый или jabber-сервис может развернуть кто угодно, это распределенные службы, которые широко распространены, которые сложно задавить и которые в принципе позволяют шифрование и приватность. Правительство Украины может запретить mail.ru, yandex.ru и vk.com, но очень маловероятно, что оно запретит использование электронной почты в принципе :)

Из относительно свежих систем почти так же распространены торренты: сейчас на большинстве трекеров перестали учитывать рейтинг отдачи — то есть количество пользователей достигло критической массы. Следом идет tor и прочие даркнеты. Блокчейны тоже можно отнести куда-то сюда. Из распределенных сетей а-ля Твиттер набирает популярность Mastodon. Возможно, дальше по оси времени появятся распределенные мессенджеры типа Tox («появятся» — в смысле «наберут достаточную популярность»). Эти системы (в отличие от почты) «не для всех», их развитие изобилует зигзагами и ухабами (история того же Tox или история jabber, который был убит Гуглом), но интернет тоже изначально был «не для всех». При этом открытые распределенные системы обладают теми же преимуществами, что и open source — их тяжело контролировать политически, они (почти) не зависят от монетизации, они менее уязвимы для физических сбоев. Так что будущее останется за ними.


Организация локального поиска файлов через locate — дешево и сердито

2017-02-10

В командной строке есть утилита locate, которая ежедневно сканирует файловую систему с помощью утилиты updatedb и позволяет быстро находить файлы на диске по названию. Мне часто удобнее искать не по всему диску, а только по домашней директории или вообще по каким-то отдельным папкам. Обычно я использую find, но, читая man updatedb я обнаружил что поиск можно организовать в локальную базу таким вот образом:

updatedb -l 0 -o db_file -U source_directory

db_file — куда сохранять, source_directory — что сканировать.

Захотелось сделать свой локальный кэшируемый поисковик. Задача — сканировать домашнюю папку /home/vik, кэш хранить в /home/vik/.local/share/mlocate.db (еще одна полезная папка — ~/.local) и иметь возможность задать не locate а «local locate» — llocate.

Сделал отдельный скрипт на сканирование диска:

~/bin/locate/local_updatedb

С содержимым:

#!/bin/sh
updatedb -l 0 -o /home/vik/.local/share/locate.db -U /home/vik -n ".git .bzr .hg .svn .dropbox.cache"

Расшифровка ключей:

-l 0 не проверять права на доступ к базе данных

-o — где сохранить базу данных

-U — что сканировать

-n — какие имена игнорировать (очень удобно, чтобы не получать в поиске имен из папок контроля версий).

Дал скрипту права на запуск:

$ chmode a+x ~/bin/locate/local_updatedb

Обновлялку вынес в крон:

$ crontab -e

и вписал в файл:

@reboot /home/vik/bin/locate/local_updatedb 

«на каждой перезагрузке запускать сканирование диска»

Внимание: если вы редактируете crontab-файл — в конце нужно обязательно оставить пустую строку — иначе не заработает.

Последний штрих — добавил alias llocate в ~/.bash_aliases

alias llocate='locate -d /home/vik/.local/share/mlocate.db'

Пример:

vik@firefly:~$ llocate Войников

/home/vik/av/mp3/Виктор Войников - Честный стрелок.mp3
/home/vik/av/mp3/1_сборки/pulsar/Модель Для Сборки - Виктор Войников - Резонанс.mp3
/home/vik/book/hub/одессика/1914_Вся Одесса_Войников_737.png
...
/home/vik/zbox/yandex/Яндекс.Фотки/memorial Войников_new.jpeg.jpg

АБТФ, поиск и вызов книг, работа с книжным аппаратом

2016-10-06

И снова про plain text. Про то, что переходить по ссылкам из текстовых заметок я уже писал. Несколько позже выяснилось, что ваш покорный слуга изобрел велосипед — у vim’а есть свой netrw с хоткеем gx. Он тоже позволяет ходить по ссылкам из текста, плюс понимает запуск файлов по ссылке (то есть если в файле есть что-то типа ~/gifs/my-pic.jpg — можно стать на эту ссылку, набрать gx — и запустится графический просмотрщик, который по дефолту обрабатывает эту ссылку).

Я часто конспектирую книги — как по работе, так и просто что-то читая. Моя книжная папка часто перетасовывается — появляются новые книги, старые уходят в Глубокие Архивы, разделы пересматриваются. Прямая ссылка на книгу очень быстро стареет — а работая с книгой хочется, чтобы она открывалась прямо из файла. Тут нужен другой механизм. Читать далее…


«Маскарад в красном смещении»

2016-04-23

Леди coala-the-bear на днях упомянула f.lux и то, что подкрашивание монитора в красные цвета (и уборка синего спектра) хорошо влияет на сон. Для меня, как для совы-заполуношника это зело актуально. Но f.lux проприетарная и под linux работает не ахти, посему озаботился поиском подходящего свободного софта. Причем как на десктоп, так и на андроид, с которого я ночью читаю и на котором у меня стоит dimmer который хорош, но недостаточно.

Быстро выяснилось, что для андроида есть не менее свободный Red Moon, который более чем хорошо справляется со своими задачами. При этом нужно учитывать, что пока он работает не получится устанавливать apk-файлы — собственно, как я понимаю это верно для всех экранных фильтров. Поэтому сначала отключить, а потом обновлять софт.

Для десктопа есть redshift который работает аналогично. gtk-версия у меня не запустилась, поэтому я просто использую коммандлайновый вариант, запуская его из комстроки, через меню или на старте через ~/.config/openbox/autostart.sh и при необходимости убивая через killall redshift. Утилита хорошая, единственное что я бы советовал сделать — сразу положить в ~/.config/ файл redshift.conf (пример есть на сайте) с забитыми в него координатами и режимом manual.


old good stable

2016-03-07

Чем больше вожусь с «новейшими» библиотеками python, тем сильнее понимаю политику debian stable.


К годовщие Firefox или почему у мозиллы может получиться

2015-11-23

Если говорить о десктопе, то я почти всегда предпочитаю оффлайновое (десктопное) приложение онлайновому. То есть читать почту из thunderbird’а, а не из веб-интерфейса. Читаю книги с диска, а не из онлайновой библиотеки (только одно исключение — когда нужно оперативно найти цитату). Смотрю кино оффлайновым плейером, а не из тытруба. И так далее, и тому подобное.

Со смартфоном ситуация строго обратная. Какое-то время я ставил разные приложения типа прогноза погоды с wunderground’а, фейсбук мессенджера и т.д. и т.п. Потом открыл для себя такую чудесную штуку, как «страница -> добавить на домашний экран» в андроидном firefox. Эта штука добавляет на рабочий экран иконку, которая является закладкой на нужную страницу. То есть вместо огромного фейсбук мессенджера можно оставить иконку на страничку с сообщениями (а еще на страничку новостей, на страничку мероприятий) — и сэкономить этим пространство и время. Все равно без интернета мессенджер бесполезен, а с интернетом — с равным успехом можно сидеть и через браузер. Дальше последовали иконки-ярлыки на погодные сайты, на твиттер, на ЖЖ, на наиболее интересные для меня сайты и я проникся системой целиком.

Разница в функционале практически незаметна. При этом я имею **длинный список приложений** по цене одного firefox, который все равно стоит у меня по дефолту. Это не только экономия пространства — это позволяет:

— не качать каждый раз мегабайты апгрейдов и обновлений, когда выходит новая версия софта

— не думать про пароли и логины. firefox синхронизирует их с десктопной версией — и необходимость каждый раз при сбое вводить все заново здорово раздражает

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

— last but not least: полный контроль за поведением софта. если вам знакома ситуация, когда вы выходя в интернеты чтобы посмотреть прогноз погоды получаете сообщение из мессенджера (или почту от шефа, например) — и залипаете на час — вы меня понимаете. а у того же мессенджера есть мерзкая привычка включаться в онлайн каждый раз, когда этот онлайн появляется.

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

И оценивая это, я начинаю понимать, что FirefoxOS это не такая уж и плохая идея, как принято думать.


%d такие блоггеры, как: