Comments 24
Линуксов много. Оформите как deb и rpm, чтобы можно было ставить
Здорово, что Вы занимаетесь такими вещами, как написание системных утилит на Go!
Однако, очистка кеша страниц из оперативной памяти (а так же сброс свопа), как мне кажется - скорее вредный совет, эти действия могут негативно сказаться на производительности системы
Существует сайт, посвящённый объяснению того, что в Linux мы не должны бояться того, что осталось мало свободной оперативной памяти: www.linuxatemyram.com
А у меня браузер и IDE крашится, если памяти нет. :(
И свап что ли весь забивается, раз до краша доходит? Можно увеличить. Хотя я вот с 4 гигами живу вообще без него, zram хватает. Ускорения по сравнению со свапом на SSD не чувствую, скорее просто эстетически приятно, что нет лишнего IO и занятого места
простите но вы написали чушь:
"Память занята" и "память занята кешем" это сильно разные вещи. Если вся ваша ОЗУ занята каким либо софтом то она занята, и на другой софт не хватит, если же вся ваша память занята кешем то при запуске новой программы кэш моментально высвобождает столько памяти сколько требуется, и моментально здесь нисколько не для красного словца.
Конечно же это сферически и в вакууме, и бывают ситуации когда происходят какие-то проблемы, но тут ключевое слово проблемы и если у вас такая есть то скорее всего у вас проблема с железом, и принудительный дроп кэша ничем не поможет.
И еще одна крохотная ремарка - не используйте bash, там где без него "ну никак". В частности, в restartSwap
он ну совсем лишний
А эффект как-нибудь пытались измерить?
Как я понимаю - от "передергивания" свопа лучше стать не должно, мы просто загоним всё в оперативку и системе придется заново определять, что из этого скинуть на диск при недостатке оперативки. Сброс кэша - аналогично, системе придется заново считывать его содержимое с диска - оно же не зря в кэш попало?
По наблюдениям - линукс уже как лет 10-15 минимум вполне адекватно работает с памятью, если уж хочется извратиться - есть zram(fs), с которой можно во всяких позициях попробовать ;)
Будет круто, если автор сделает GUI, например на Qt.
Если хочется пожертвовать дисковым кэшем, чтобы программы меньше сваповались, то не обязательно делать это вручную и полностью. Можно просто единожды настроить значение swappiness поменьше, например 10. Это популярное решение для отзывчивости десктопа. На моём ноуте с 4 гигами она после этого резко улучшилась
боже мой! что я только что прочел?
От go там получается только дергание баша. Проще убрать go а bash оставить.
И как, начинает она после этого быстрее работать?
Впрочем, андроид тоже недалеко ушел — в телефоне 8 гигов памяти, но держать в открытом состоянии пяток вкладок в браузере в фоне он не может, видите ли…
Реально есть еще?) Я думал это осталось в лохматых 2010-х
Но если по теме, то как по мне нужен виджет в виде иконки на панель с notify сколько очищено, для понимания пользы в каждом конкретном случае, ну и лог конечно.
Это имело смысл во времена мс-дос, когда оперативы было мало. Ну и не хватает тестов, чтоб сравнить было/стало. Чуется мне, что разница будет в пределах погрешности, а может и наоборот.
А так — ну вот у меня половина памяти в состоянии «ожидание».
Да, можно её «очистить». Но смысл? Если работающим программам понадобится память, то ОС сама всё сделает. Ну потратит пару микросекунд лишних в сравнении со «свободной» памятью. Но кто это заметит в повседневной жизни?
Так что, на мой взгляд, все эти чистильщики и оптимизаторы проходят по той же статье, что и «удвоители объёма ОЗУ», если кто-то помнит такие программы из девяностых.
Ну и прочие «чистильщики реестра».
Если у вас не хватает памяти, то надо её либо добавлять, либо лишние программы закрывать. А все эти очистки кэша и сбросы памяти в свап ничего не решают.
PS. Кстати, дальше можно написать программу, которая будет в /etc лишние строчки из конфигов вычищать (пустые и комментарии) для экономии места на диске. ;)
А теперь чутка документации на drop_caches (её иногда полезно читать):
Use of this file can cause performance problems. Since it discards cached objects, it may cost a significant amount of I/O and CPU to recreate the dropped objects, especially if they were under heavy use. Because of this, use outside of a testing or debugging environment is not recommended.
А также по поводу sync перед дропом кэшей:
This is a non-destructive operation and will not free any dirty objects. To increase the number of objects freed by this operation, the user may run `sync' prior to writing to /proc/sys/vm/drop_caches. This will minimize the number of dirty objects on the system and create more candidates to be dropped.
И что если в свопе больше чем RAM может вместить, а система пытается дропнуть весь своп обратно в память?
Моя попытка сделать утилиту для очистки Linux