Kosaki Motohiro представил (http://lwn.net/Articles/267013/) mem_notify патч для Linux ядра, суть которого в создании специального устройства /dev/mem_notify при помощи которого приложения могут корректировать объем используемой памяти в зависимости от объема свободной памяти в системе.
При нехватке памяти приложение может быть вытеснено в раздел подкачки или принудительно завершено обработчиком состояния нехватки памяти (OOM - out-of-memory killer). При помощи /dev/mem_notify, программа может избежать печальной участи, освободив некритичные секции памяти, например, перестать использовать кэш, и выжить за счет некоторой потери производительности.URL: http://lwn.net/Articles/267013/
Новость: http://www.opennet.me/opennews/art.shtml?num=14076
Блин, не патч, а квест на выживание какой-то.
Бред какой-то.Размер кешей и буферов должна операционка сама регулировать.
А oom-killer выключается простым запретом overcommit. Программам просто не будет выделятся память при её нехватке.
Правильно написанные программы, и так возвращают память когда она им не нужна. А неправильные - клали с прибором на новый notify как и на всё остальное ))
>Бред какой-то.
>
>Размер кешей и буферов должна операционка сама регулировать.У приложения может быть _свой_ кэш. Работающий не на уровне блоков, а на уровне, например, строк БД.
К примеру объекты, которые можно в любой момент прочитать с диска -- можно просто держать всегда в кэше, но по необоходимости корректировать размер этого кэша.
В качестве примера можно привести Squid, который держит ряд данных в своей памяти - он вполне может регулировать себя по указанию операционки.
>А oom-killer выключается простым запретом overcommit.И что, всегда и всем программам будет выделяться сразу вся заказанная ими память?Жрач память возрастет, бесспорно.
>Программам просто не будет выделятся память
>при её нехватке....которая как я понимаю после данного действа станет куда как более вероятным событием :)
>Правильно написанные программы, и так возвращают память когда она им не нужна.
...насколько я знаю, вызывая противное явление фрагментации памяти.Так?
>А неправильные - клали с прибором на новый notify как и
>на всё остальное ))Ну вообще-то апликухи могли бы кешить дофига данных если памяти полно в пользу скорости а если душняк наступает - немного растрясти жирок пусть и ценой скорости.Сам по себе OOM killer - русская рулетка да и только.
Кто б кстати сказал как сделать мягкий вариант OOM Killer?Некий демон который мониторит наличие памяти в системе и гасит процессы по списку приоритетов.Как то - всякую фигню первым делом а критичные процессы только если уже совсем пипец и ресурсы кончаются или если процесс сдурел и жрет память оптом.
ИМХО, если руководствоваться смыслом новости только из заголовка, более правильным выглядит помещение информации не в /dev/*, а в /proc/self/*
А чем их традиционный AIX-овский SIGDANGER не устроил, что начали еще один велосипед изобретать?
Дайте угадаю, потому что он AIX-овский, а значит не ТРУ...;)