ShadowOfCasper
@ShadowOfCasper
Middle User Interface Web Developer

Как сэкономить ресурсы оперативной памяти при кодинге в Ubuntu?

Всем привет.
Нужен совет опытных линуксоидов. У меня на работке комп с эдакими характеристиками:
f0fbe82535e14cdca379c6c92463506c.png
Когда я сажусь за вёрстку, завожу gulp (на фоне обычно gulp watch + browserSync), sublime 3, chrome, playOnLinux + Photoshop CS6.
Через 3-4 часа вёрстки начинается какой-то лютый фарш. сначала начинают падать расширения хрома. Всякие PageRuler, UA switcher, Gmail checker, сам хром начинает неистово лагать. Такая же фишка начинает происходить в Photoshop и так до тех пор, пока скорость отклика не падает в ноль. Скрипя процем в такой момент мне удаётся разве что открыть терминал и ввести reboot. Через 3-4 часа всё повторяется по новой.
Я не особо в моменты лагов стремился открыть htop - боюсь тогда системник взорвётся... На системном мониторе при этом резко подлетает загруженность до 80-90%.
Сначала думал винчестер, но нелогично ему виснуть в таком строго графике. И уж тем более если виснет винч, то тут уже абзац и ребут по кнопке.
Оперативки у меня 8 гигов, хотя по screenfetch 4/8 - это странно - может быть такое что у меня доступно только 4? Система ведь x64.
Мб кто-то знает какие-нибудь фишки, которые помогут поумереннее распределять нагрузку на оперативную память?
Всем спасибо за ваши ответы.

Результат конанды free -h:
6ebc88ce942c455ca983162e48e512a3.png
  • Вопрос задан
  • 3581 просмотр
Решения вопроса 1
theurs
@theurs
screenfetch показывает занятую/всего памяти
попробуй установить пакет zram-config и перезагрузить
Ответ написан
Пригласить эксперта
Ответы на вопрос 8
Melkij
@Melkij
PostgreSQL DBA
swap в наличии. Так что описываемое поведение вполне норма, когда начинает подходить к концу свободная памяти и ОС лезет в swap (что можно проконтролировать вызовом free при начале проблем). Немного странно выглядят падения расширений, но, возможно, их отстреливает хром за слишком долгий отклик.
Для начала стоит покрутить swappiness, чтобы ОС лезла в свап только в крайнем случае.
Затем поиграть в Zswap, zram. Что порежет производительность CPU, но поможет от нехватка памяти.

Раз на всё памяти не хватает - то есть варианты действий:
- отчаянно тормозить в свапе
- звать на помощь OOM killer, который будет убивать какой-нибудь на его усмотрение бесполезный процесс. Для этого достаточно вырубить swap и ядро само позовёт при необходимости.
- добавлять память
- уменьшать потребление памяти. Следить, кто сколько памяти жрёт, может у вас кто-нибудь не особо нужный просто течёт по памяти. Можно запускать текущие процессы в cgroup с жёстким лимитом памяти, тогда они будутт отстреливаться при превышении лимита.
Ответ написан
@polifill
На работе?
Это проблема руководства предприятия. Ставь их перед фактом, чтобы модернизировали компьютер.

Ибо это нужно для работы.
Ответ написан
@Evangelist
Для разработки под linux нужно достаточное количество оперативки и нормальный диск (он же SSD).
Мне, на текущей галере, изначально дали пк с 4гб оперативки, HDD 10-летней давности с 2 мб кэша, без видеокарты. Я просто отказался так работать.
В итоге предоставили 16 ГБ оперативки, диск SSD, видеокарту, - полет нормальный. Честно скажу, 16 мне иногда маловато. Photoshop работает через win7 в virtualbox (7 гб выделяю).

В домашнем офисе 32 gb RAM и в разы лучше всё остальное.

Поддерживаю позицию polifill, ставь перед фактом, что тебе выдали корч, а не компьютер для современной разработки (или с тебя хотят проекты 5-летней давности сложности, аки компьютер, который тебе выдали?).

Также рекомендую с ubuntu перейти на xubuntu (облегченная убунта). Таким образом, OS может заработать быстрее.

плюсую уже упомянутым рекомендациям:
- swap не нужен;
- стоит попробовать работать с avocode (я использую и avocode и photoshop);
Ответ написан
kumaxim
@kumaxim
Web-программист
Корень Ваших проблем это SWAP - это не решение проблемы, это такой костыль.
Как только система начинает туда лезть, так начинаются жесткие тормоза...

От себя могу рекомендовать следующее:
1)Gulp и все что с ним связано в Docker контейнер. Контейнеру лимит на ОЗУ.
2)В playOnLimux можно лимит на ОЗУ постаить? Да, ставьте.
3)В Хроме смотрите есть ли лишние расширения.
4)Выключайте swap

Насчет расширений в Хроме.
Есть расширение Extension Automation. Допустим, Ваше девелоперское окружение работает только тогда, когда Вы открывайте домен host.my-dev. Также Вы имейте 2 расширения, которые Вам нужны исключительно при работе с ним. Настраиваете Extension Automation так: если у меня открыт сайт host.my-dev, тогда активировать такие-то расширения. По умолчанию они, разумеется, отключены в настройках самого хрома.
Аналогично, если есть какие-то расширения, которые Вы никогда не используйте при работе с Gulp и все что с ним связано.

Также Хром очень любит кушать память, если он хранит слишком большую историю.
Способ решения быстрый: "More tools => Clear browser data => Older than 1 week"
Способ автоматический: качаем расширение Limit History Lifetime, которое само сносит все данные старше N дней.
Ответ написан
Комментировать
1) Уберите swap раздел
sudo nano /etc/sysctl.conf
И вставьте в конец файла следующую команду:
vm.swappiness=1
Затем сохраните файл и перезагрузите систему

Установленное значение означает подключать swap раздел, только при полной занятости оперативной памяти
2) Попробуйте не использовать photoshop, мы перешли на avocode
Ответ написан
Комментировать
akubintsev
@akubintsev
Опытный backend разработчик
Рискну предположить, что дело в каком-то 32-битном приложении, а оно не способно адресоваться ко всей памяти. Не знаю, как под Linux, но под виндой насколько помню (именно приложение, а не ОС), способно получить только 2ГБ ОЗУ. Если под Linux так же, тогда приложение начинает активно свопить при превышении лимита.
Ответ написан
@tagplus5
Ubuntu 16.04; Chrome 54.0.2840.100; 8gb RAM; 8gb swap; 4gb zram swap; swappiness=10
Некоторе время не было проблем с потреблением памяти, при активной работе Chrome съедал 5-8 гб, это терпимо.
Внезапно начались проблемы в виде забивания всей памяти, подкачки и полного зависания.
Наблюдал за состоянием, заметил, что все это приисходит, когда приходят встроенные уведомления (у меня включены для gmail. google drive, trello). Отключил уведомнения, все вернулось в прежнее состояние. Zram тут не поможет.
Ответ написан
Комментировать
Верстал под windows xp с 512 мб рам. Запускаешь firefox, он запускается 2 минуты, после чего sublime выдает ошибку. Переключения между приложениями занимают минуты!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы