LINUX.ORG.RU

Убунтята, не проходите мимо: le9 patch добавлен в linux-xanmod и ваш OOM killer будет вылечен

 , , ,


5

4

Тред https://forum.xanmod.org/thread-4102-post-7572.html

Патч https://github.com/hakavlad/le9-patch

В чем дело?

Линуксы зависают при нехватке памяти: Линукс ядро не может мягко обрабатывать ситуации с нехваткой памяти

Решение: запрет на вытеснение определенного объема файловых страниц. Это обеспечивает этот самый патч, и киллер приходит быстро, система не виснет.

Патч принят в pf-kernel и linux-xanmod. linux-xanmod предоставляет бинарные сборки для deb-дистрибутивов.

Скачать бесплатно https://xanmod.org/

★★★

Последнее исправление: hakavlad (всего исправлений: 1)
Ответ на: комментарий от beastie

Так вам и не предлагают патч из 2010 от хромых.

Во-вторых - почему нас должна забаотить проблема хромых?

Текущие версии отлично работают со свопом и без, см демо в ридми.

anonymous
()
Ответ на: комментарий от beastie

Дальше можно не читать.

Тем более на OpenBSD не наложится ;)

devl547 ★★★★★
()
Ответ на: комментарий от bonta

шел 2021 год, в Линуксе до сих пор проблемы с oom киллером при нехватке памяти.

Нет никакой проблемы. Если киллер не приходит - значит нет нехватки памяти.

Другое дело - что представление юзера и ядра о критериях нехватки памяти могут отличаться.

hakavlad ★★★
() автор топика

Начала публиковаться новая линейка: le9eb https://github.com/hakavlad/le9-patch/tree/main/le9eb_patches

le9db отправится в obsolete.

Три ручки:

  • vm.anon_min_kbytes;
  • vm.clean_low_kbytes;
  • vm.clean_min_kbytes.

Расширена документация. Проверка CONFIG опций на допустимые значения осуществляется теперь на уровне Kconfig, а не во время сборки.

hakavlad ★★★
() автор топика

Я не юбуната. Ничего у меня не зависает. Ни в 14 ни в 18 ни 20 версии.

anonymous
()
Ответ на: комментарий от post-factum

ООставь. Поможет в др жизни.

anonymous
()
Ответ на: комментарий от hateWin

При большом потреблении памяти отзывчивость сохраняется

и после этого :( ){ :|:& };: сохраняется?

anonymous
()
Ответ на: комментарий от anonymous

Да. Во-вторых, это потребляет мало памяти.

hakavlad ★★★
() автор топика

Да кому это вообще надо?

Вот зато линукс поддерживает 4096 процессоров, а ваш Виндуз так может?

anonymous
()
Ответ на: комментарий от ValdikSS

Неважно, сколько оперативки. Важно как обрабатывается ее нехватка. Выше мы выяснили, что сочетание zram + disk swap приводит к инверсии LRU - неактивные страницы забивают zram, и далее подкачка крутится на диске.

anonymous
()

Обнаружил странный баг: при перезагрузке параметры, управляемые /etc/sysctl.conf сбрасываются к дефолтным значениям. Если применить настройки, обрадоватся бодрой реакции системы, а потом перезагрузиться, получишь унылый дефолтный линукс, который зависает намертво при исчерпании памяти. WTF?

hateWin ★☆
()
Ответ на: комментарий от hateWin

Проявляется на ядрах 5.13.9-5.13.10 вне зависимости от наличия патча.

hateWin ★☆
()
Ответ на: комментарий от anonymous

там же добавили witeback на диск для неактивных страниц

anonymous
()
Ответ на: комментарий от anonymous

в dns на сколько помню, а корпус заказывал из Никса, тк в провинции (Новосибирске) в наличии крутых корпусов не водится.

bonta ★★★★★
()
Ответ на: комментарий от post-factum

Новые ручки требуют дополнения документации к swapiness. Потому что при выставлении cean_low=MemTotal swappiness фактически работает как swappiness=200. Этот момент нужно также отразить в документации к swappiness.

hakavlad ★★★
() автор топика
Ответ на: комментарий от ValdikSS

Спасибо товарищ майор но лучше не надо.

Вы уже там фильтруете контент на antizapret prostovpn. Вероятность того что образы содержат трояны выше 0%.

Через АнтиЗапрет проксируются только заблокированные сайты из единого реестра Российской Федерации.

Что как бы ложь и прокси фильтрует не только их.

bhfq ★★★★★
()
Последнее исправление: bhfq (всего исправлений: 1)
Ответ на: комментарий от James_Holden

Вероятно, вам не нужен prelockd, если вы защищаете кэш с помощью vm.clean_min_kbytes.

hakavlad ★★★
() автор топика
~$ uname -r
5.10.60-xanmod1
~$ clinfo
Number of platforms                               0
~$ optirun clinfo
Number of platforms                               0

Что-то я в растерянности. Или это таки уже не у XanMod спрашивать, а у опенцээль, чего это оно с 5.4 работает, а с 5.10 не работает?..

Dementy ★★★
()
Ответ на: комментарий от ValdikSS

привет

пользуюсь вашим образом xfce пару недель, все нравится.. а не могли бы вы сделать текстовое руководство по настройке с нуля любого деб дистрибутива, а то минт тяжеловат…?

anonymous
()

Там, это, вариант с CacULE на 5.14 теперь. Дебы на 5.13.13 здесь https://sourceforge.net/projects/xanmod/files/releases/cacule/5.13.13-xanmod1... .

Кстати, кто из местных шерудил CacULE? Как по ощущениям? Сильно соответствует названию и картинке? Я поставил -вроде, неплохо. До этого не представлял, что Плазме можно добавить еще приятной легкости. Из игрушек у меня MegaGlest. Стало в нем дергаться. Укрутил «интерактивность» вдвое, потом вчетверо. С kernel.sched_interactivity_factor=8192 стало нормально.

Интересно, сделают ли они варианты Production-Ready (STABLE и LTS) с этими какулями?..

Dementy ★★★
()

может всё-таки тег ubuntu поставить, не?

serg002 ★★★
()
Ответ на: комментарий от hakavlad

Любите своп с большими zram disksize?

Я вот тоже временно люблю.

~$ swapon
NAME       TYPE       SIZE USED PRIO
/dev/sda4  partition 13,1G   0B   -2
/dev/zram0 partition   16G   0B  100
Все три ручки поставил в одинаковое положение и чуток повыделывался.
vm.clean_low_kbytes=524288
vm.anon_min_kbytes=524288
vm.clean_min_kbytes=524288
tail /dev/zero отработало нормально. Забило zram, забило диск, пришел ядерный киллер и их покилял. Блин, это ж сколько нулей надо наделать, чтобы они сжатые столько заняли:))

Реальность оказалась суровее. Оставил в Хроме много вкладок и сказал Гимпу открыть пять файлов от гига до полутора одновременно. Забило только zram, на диске вообще чисто. Киллер стал килять сначала расширения Хрома, а потом вкладки. Гимп в это время матерился, что ему памяти нет и работать в таких условиях он не будет.

Dementy ★★★
()
Ответ на: комментарий от Dementy

Идея такова: выключить дисковый своп, оставить только своп на zram (16-24 GB), и min ручки на 512000 или даже больше выставить (MemTotal не маленький же), провести тесты снова. Без дискового свопа тормоза перед ООМ должны быть меньше, особенно если диск медленный.

Вот демо со свопом чисто на zram https://www.youtube.com/watch?v=1uhcZwuvXLI

hakavlad ★★★
() автор топика
Ответ на: комментарий от Dementy

Гимп в это время матерился, что ему памяти нет и работать в таких условиях он не будет.

В чем это выражалось?

hakavlad ★★★
() автор топика

@post-factum @ValdikSS

Проблема Fatal IO Error решается прямым вызовом out_of_memory() вместо возврата scan=0. Идея позаимствована у Yu Zhao.

PoC работает, код - несколько строк, однако это решение пока только если нет свопа.

		/*
		 * Hard protection of the working set.
		 */
		if (file) {
			/*
			 * Don't reclaim file pages when the amount of
			 * clean file pages is below vm.clean_min_kbytes.
			 */
			if (sc->clean_below_min) {
				//scan = 0;

				if (mutex_trylock(&oom_lock)) {
					struct oom_control oc = {
						.gfp_mask = sc->gfp_mask,
						.order = sc->order,
					};
			

					out_of_memory(&oc);
			
					mutex_unlock(&oom_lock);
				}

			}
hakavlad ★★★
() автор топика
Ответ на: комментарий от hakavlad

В чем это выражалось?

Дык, он окна такие показывать умеет, где это написано. А на тех окнах, где работать, просто все замерзло.

выключить дисковый своп, оставить только своп на zram (16-24 GB), и min ручки на 512000 или даже больше выставить (MemTotal не маленький же), провести тесты снова. Без дискового свопа тормоза перед ООМ должны быть меньше, особенно если диск медленный.

Я в этот раз когда zram пробовал, так и сделал. Отключил дисковый своп. Провел «тест с Гимпом». То же самое. Но, когда без свопа на диске килер покилял Гимп по заполнении zram, я посчитал это естественным. На такой случай вернул своп на диске и повторил тест.

min ручки на 512000 или даже больше выставить

Вот это надо будет попробовать. upd/ Хотя, стоп. Они же и так на полгига стоят. Еще больше надо?

Dementy ★★★
()
Последнее исправление: Dementy (всего исправлений: 1)
Ответ на: комментарий от hakavlad

https://imgur.com/a/xc1D1mq

20 циклов с хвостами без багов

		/*
		 * Hard protection of the working set.
		 */
		if (file) {
			/*
			 * Don't reclaim file pages when the amount of
			 * clean file pages is below vm.clean_min_kbytes.
			 */
			if (sc->clean_below_min) {

				if (mutex_trylock(&oom_lock)) {
					struct oom_control oc = {
						.gfp_mask = sc->gfp_mask,
						.order = sc->order,
					};
					out_of_memory(&oc);
					mutex_unlock(&oom_lock);
				}

				scan = 0;
			}
		} else {
			/*
			 * Don't reclaim anonymous pages when their
			 * amount is below vm.anon_min_kbytes.
			 */
			if (sc->anon_below_min)
				scan = 0;
		}

		nr[lru] = scan;
hakavlad ★★★
() автор топика
Ответ на: комментарий от anonymous

Там не не 20, а ~10 было. Как десять занять? А вот так ↓

сказал Гимпу открыть пять файлов от гига до полутора одновременно.

Это при тесте с нулями в zram очень много влазит.

То, чем занимает оперативку Гимп, жмется плохо. Еще у Гимпа есть своя подкачка, которую, имея 12G оперативки, как-то стыдно пхать на диск, поэтому оно на /tmp, который, имея 12G оперативки, как-то тоже стыдно пхать на диск Так что, вот так, 16G zram заняли всю оперативку, которую было позволено занять.

Да, забыл сказать. Вот, Гимп и грохается, сам, без OOM Killer.От того, что памяти ему нет. Или, если памяти ему чуть-чуть оставили, показывает окна с жалобами, что ему памяти нет и замерзает.

Когда есть еще своп на диске, в такой ситуации, кмк, его задействовать не получается, ибо память занята zram, который бы и перегнать в своп на диске. Но его перед этим надо распаковать и пережать по-своповски. А куда его распаковать, если память им же и занята?

Пробовать, вопреки советам, делать zram не в полторы-две-стопицот оперативки, а где=то в половину от нее?

Dementy ★★★
()
Последнее исправление: Dementy (всего исправлений: 1)

5.14.2.le9fa, supertuxkart, 8 while true; do tail /dev/zero; done, no swap space

https://youtu.be/1ZwzjxCHFyc[РАСКРЫТЬ]

Низкое давление памяти и ввода-вывода, видео пишется, игра идет.

@post-factum @ValdikSS le9fa без Fatal IO Error.

hakavlad ★★★
() автор топика
Последнее исправление: hakavlad (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.