Как выделить java больше оперативной памяти
Перейти к содержимому

Как выделить java больше оперативной памяти

  • автор:

Как выделить java больше оперативной памяти.

Не могу выделить java оперативной памяти больше чем 1гб, во многих играх, которые на движке java у меня всего 1гб, хотя оперативной памяти 8гб, пробовал кучу методов, и аргументы в панели управления джавы вписывать и переустановить и все равно не помогает.

Лучший ответ

Configure Java, вводишь эту хрень -Xincgc -Xmx3072M (либо цифру больше, если хочешь более 3гб оперативки выделить)
Самой помогали, сработало. Потом просто в настройках в лаунчере увеличиваешь макс объем оперативки (если для Майна)

Никита ШустовЗнаток (409) 7 лет назад

Сделал все как ты сказала (-л), в итоге вот, ничего не изменилось . Кстати, я заметил, что у тебя немного не та версия джавы, это как-то влияет?

»Satobi Профи (659) Да, нужна версия под ОС. У меня 64-хбитка. 32-хбитка не работала. Посмотри, может, в этом проблема.

Как увеличить память Java в Windows

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

Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.

Количество просмотров этой статьи: 64 425.

В этой статье:

В этой статье мы расскажем вам, как в Windows 7 увеличить объем оперативной памяти (ОЗУ), который может использоваться Java-программой. Увеличение объема ОЗУ позволит Java-программам работать быстрее и потреблять больше системных ресурсов — таким образом, Java-процессы будут быстрее завершаться.

Step 1 Обновите Java (если необходимо).

  • Перейдите на страницу https://www.java.com/ru/download/ в веб-браузере компьютера.
  • Нажмите «Загрузить Java бесплатно» посередине страницы.
  • Нажмите «Согласиться и начать бесплатную загрузку» в верхней части страницы.
  • Дважды щелкните по скачанному файлу.
  • Следуйте инструкциям на экране.

Step 2 Откройте меню «Пуск».

Откройте меню «Пуск»

Windows 7 Start

. Нажмите на логотип Windows в нижнем левом углу экрана.

Step 3 Щелкните по Панель управления.

Щелкните по Панель управления . Эта опция находится в правой части меню «Пуск». Откроется Панель управления.

Step 4 Откройте меню «Просмотр».

Откройте меню «Просмотр». Оно находится в верхней правой части страницы.

Step 5 Щелкните по Крупные значки.

Щелкните по Крупные значки . Эта опция находится в меню. Содержимое Панели управления отобразится в виде отдельных значков, а не ссылок.

Step 6 Нажмите Java.

  • В некоторых случаях нужно нажать «Java (32-bit)».

Step 7 Щелкните по вкладке Java.

Щелкните по вкладке Java . Она находится в верхней части окна Java. Затем нажмите View (Вид).

Step 8 Дважды щелкните по.

Дважды щелкните по текстовому полю «Runtime Parameters» (Параметры времени выполнения). Это пустое текстовое поле справа от номера версии Java. Курсор мыши отобразится в текстовом поле.

Step 9 Введите значение памяти.

  • -Xms1024m : Java будет использовать 1 ГБ ОЗУ.
  • -Xms2048m : Java будет использовать 2 ГБ ОЗУ.
  • -Xms3072m : Java будет использовать 3 ГБ ОЗУ.

Step 10 Нажмите ↵ Enter.

Нажмите ↵ Enter . Введенное значение будет добавлено в текстовое поле.

Step 11 Нажмите Apply (Применить).

Нажмите Apply (Применить). Эта кнопка находится в нижней части окна. Изменения вступят в силу.

Step 12 Щелкните по OK.

Щелкните по OK . Эта кнопка находится в нижней части окна. Окно «Java» закроется. Теперь программы Java будут использовать заданный объем ОЗУ.

  • Чтобы выяснить, какой максимальный объем оперативной памяти доступен на компьютере, щелкните правой кнопкой по значку «Компьютер», в меню выберите «Свойства» и найдите строку «Установленная память (ОЗУ)». [1] X Источник информации

Предупреждения

  • Если запустить Java-программу с измененными параметрами памяти, это может привести к замедлению работы компьютера при попытке использовать другие программы (например, веб-браузер).

Дополнительные статьи

запустить файл Python с помощью Командной строки Windows

запустить файл Python с помощью Командной строки Windows
вставить пробелы в HTML

написать программу в блокноте

написать программу в блокноте

создать очень простую программу в Python

создать очень простую программу в Python

научиться писать программы

научиться писать программы

писать компьютерные программы

писать компьютерные программы

менять цвета в Командной строке

менять цвета в Командной строке

создать калькулятор, используя язык HTML

создать калькулятор, используя язык HTML

добавлять и удалять учетные записи пользователей через командную строку Windows

добавлять и удалять учетные записи пользователей через командную строку Windows

скомпилировать программу C, используя компилятор GNU Compiler (GCC)

скомпилировать программу C, используя компилятор GNU Compiler (GCC)

использовать DOSBox

использовать DOSBox

сделать задержку в командном файле

сделать задержку в командном файле

использовать Net Send

использовать Net Send

изменить размер шрифта в Python shell

изменить размер шрифта в Python shell

Об этой статье

Штатный автор wikiHow

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

Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества. Количество просмотров этой статьи: 64 425.

Рекомендации по оптимизации потребления памяти в Java

Наливайко, А. С. Рекомендации по оптимизации потребления памяти в Java / А. С. Наливайко. — Текст : непосредственный // Молодой ученый. — 2020. — № 24 (314). — С. 59-63. — URL: https://moluch.ru/archive/314/71486/ (дата обращения: 19.11.2023).

В статье описаны часто используемые способы по оптимизации потребления памяти Java приложений. Стоит понимать, что эти рекомендации несут информационный характер, зависящие от конкретной ситуации; использовав в одном случае, нет полной гарантии, что сработает в другом.

Ключевые слова: java, JVM, память, сборщик мусора, CPU, выделение памяти, утечка памяти.

Миграция на последнюю версию языка

Oracle постоянно улучшает производительность языка программирования с каждой новой версией. Поэтому, как один из вариантов, можно попробовать изменить версию компиляции того или иного проекта. Эта рекомендация актуально только в том случае, если над проектом введется разработка; когда миграция не такая болезненная как для бизнеса, так и для программистов, разрабатывающих ПО.

Использование сторонних аллокаторов памяти

Сторонние аллокаторы памяти позволяют повысить производительность всей системы, уменьшив фрагментацию и как результат понизить потребление оперативной памяти. Основной принцип заложен в использовании кеширования по потокам. При удалении объекта память возвращается не в глобальную кучу, а помещается в кэш данного потока. При повторном создании такого же объекта потоку не придется посещать общую кучу. Средний прирост в производительности достигает порядка 10–20 процентов, что показывает отличный результат.

Часто используемыми библиотеками являются Jemalloc и TCMalloc. Jemalloc является оптимизированным вариантом реализации функций malloc, который призван решать проблемы с фрагментацией при выделения памяти в несколько потоков возникающие на однопроцессорных и многопроцессорных системах и оптимальной утилизации ресурсов CPU.

TCMalloc (Thread-Caching Malloc) является аналогом Jemalloc от компании Google. Работает он по такому же принципу, однако его кэш избавлен от блокировок и работает в привязке к ядрам CPU, но откатывается на модель кэширования в привязке к потокам в случае отсутствия необходимой функциональности в ядре ОС (привязка кэша к CPU работает только в свежих ядрах Linux) [2].

Использование GraalVM

GraalVM — это виртуальная машина Java и JDK, основанная на HotSpot/OpenJDK и написанная на Java. GraalVM поддерживает разные языки программирования и модели выполнения, такие как JIT-компиляция и AOT-компиляция [8].

«Graal» в GraalVM — это название компилятора. Первый, и самый простой способ использования Graal — это использовать его как Java JIT компилятор. Основными возможностями являются быстрое выполнение и уменьшения времени старта и потребления памяти. Graal написан на Java, а не на C++, как большинство остальных JIT компиляторов для Java.

Начиная с JDK 10 его можно включить с помощью параметра:

$ —XX:+UseJVMCICompiler

Twitter — компания, на сегодняшний день, которая использует Graal на «боевых» серверах [4], и они говорят, что для них это оправдано, в терминах экономии реальных денег. Twitter использует Graal для исполнения приложений, написанных на Scala — Graal работает на уровне JVM байткода, т. е. применим для любого JVM языка.

Это первый вариант использования GraalVM — просто замена JIT компилятора на лучшую версию для ваших существующих Java приложений. Сильные стороны платформы Java особенно явно проявляются при работе с долго выполняющимися процессами и пиковыми нагрузками. Короткоживущие процессы, напротив, страдают от долгого времени запуска и относительно большого использования памяти.

Команда nativeimage по-настоящему компилирует ваш Java код и Java библиотеки, которые вы используете, в полноценный машинный код. Для компонентов среды выполнения, таких как сборщик мусора, мы запускаем нашу собственную новую VM, которая называется SubstrateVM, которая, как и Graal, также написана на Java.

Если запустить native-image файл, то мы увидим, что он запускается примерно на порядок быстрее и использует примерно на порядок меньше памяти, чем та же программа, запущенная под JVM. Запуск настолько быстр, что этого почти не заметно. Если использовать командную строку — не почувствуется та пауза, которая обычно присутствует, когда происходит запуск небольшой, короткоживущей программы под JVM

Alibaba одними из первых используют native-image. Как отмечают их разработчики, время на запуск сервиса удалось сократить в 20 раз (с 60 до 3 секунд), потребления памяти в 6 раз (с 128 до 21 мегабайта), а задержки при выполнении GC теперь не превышают более 100 миллисекунд. Ранее потребление и сборка всех микросервисов занимало порядка 100 гигабайт памяти и 4000 тысячи секунд на сборку проекта. В совокупности, им удалось получить четырехкратное улучшение показателей (до 20 гигабайт памяти и 1000 секунд на сборку проекта) [6].

При использовании native-image есть некоторые ограничения [10]. Обязательное условие: во время компиляции должны присутствовать все классы; также есть ограничения в области использования Reflection API. Зато присутствуют некоторые дополнительные преимущества перед базовой компиляцией: например, выполнение статических инициализаторов во время компиляции. Таким образом, уменьшается количество работы, выполняемой каждый раз, когда приложение загружается.

Это второе применение GraalVM — распространение и выполнение существующих Java программ, с быстрым стартом и меньшим расходом памяти. Этот способ устраняет такие проблемы с конфигурацией, как поиск нужного jar во время выполнения, а также позволяет создавать Docker образы меньшего размера. На самом деле, преимуществ у данной виртуальной машины гораздо больше, однако они затронуты в данной статье не будут, так как почти не влияют на оптимизацию производительности.

Одним из фреймворков, использующий преимущества GraalVM, является Quarkus. Разработчик фреймворка обещает очень высокую скорость запуска приложения и небольшой расход памяти [1]. Данные с сайта разработчика можно увидеть в таблицах 1 и 2.

Время от старта приложения до первого ответа (в секундах)

Конфигурация

REST

REST + JPA

Выделение оперативной памяти для приложения/процесса

Всем привет. У меня слабый компьютер с Debian. Обычно в силу того что компьютер зависает пользуюсь максимум одной программой, браузером или какой-нибудь cs 1.6 например. Браузер или ОС занимают не всю оперативную память под работу, чтобы я мог запустить другое приложение и компьютер не завис, но мне этого не надо и я хочу максимальной производительности от используемого приложения.

Как мне выделить всю оперативную память (2ГБ) под конкретное приложение/процесс? Какие команды использовать? В интернете нашёл команду nice для повышения приоритета процесса, но пишут что не всегда помогают.

OldRabbitOrBorov
11.06.19 20:19:12 MSK
1 2 3 4 5 →
Deleted
( 11.06.19 20:44:42 MSK )
Ответ на: комментарий от Deleted 11.06.19 20:44:42 MSK

zvezdochiot

Добавил игру в эту группу, выделил всю память, игра вместо 2ГБ есть 1ГБ и тормозит.

OldRabbitOrBorov
( 11.06.19 22:32:02 MSK ) автор топика
Ответ на: zvezdochiot от OldRabbitOrBorov 11.06.19 22:32:02 MSK

Deleted
( 11.06.19 23:16:12 MSK )
Последнее исправление: Deleted 11.06.19 23:17:43 MSK (всего исправлений: 1)

Ответ на: zvezdochiot от OldRabbitOrBorov 11.06.19 22:32:02 MSK
Deleted
( 11.06.19 23:28:57 MSK )
Ответ на: комментарий от Deleted 11.06.19 23:16:12 MSK

fearOfSociety

В силу того что я новичок, ничего нового в этих ссылках я для себя не узнал. По инструкции добавил pid процесса в группу, выделил максимальное кол-во памяти (2GB), но игра все равно использует 1GB и зависает

OldRabbitOrBorov
( 11.06.19 23:46:49 MSK ) автор топика

Как мне выделить всю оперативную память (2ГБ) под конкретное приложение/процесс?

Любое приложение и так имеет возможность использовать всю доступную память. Если не использует, значит не хочет, и командами ты его это делать не заставишь. В любом случае недоиспользованная приложениями память используется для кеширования данных с диска. Так что она всё равно не простаивает.

i-rinat ★★★★★
( 11.06.19 23:55:24 MSK )
Ответ на: fearOfSociety от OldRabbitOrBorov 11.06.19 23:46:49 MSK
Deleted
( 11.06.19 23:57:45 MSK )
Ответ на: fearOfSociety от OldRabbitOrBorov 11.06.19 23:46:49 MSK
Deleted
( 12.06.19 00:13:49 MSK )
Ответ на: fearOfSociety от OldRabbitOrBorov 11.06.19 23:46:49 MSK

Что за игра? Через «что» работает?

Deleted
( 12.06.19 00:19:36 MSK )
Ответ на: комментарий от Deleted 11.06.19 23:57:45 MSK

но только диск со swap будет загружен, если игра на том-же диске опять не поиграешь

Deleted
( 12.06.19 00:34:05 MSK )
Ответ на: комментарий от Deleted 12.06.19 00:34:05 MSK

(все некритичное в своп) && ((приоритет на записичтение (все некритичное в своп)) < (приоритет записичтение файлов (с диска) (игрой)))

Deleted
( 12.06.19 02:51:25 MSK )
Последнее исправление: Deleted 12.06.19 02:55:35 MSK (всего исправлений: 2)

Ответ на: комментарий от Deleted 12.06.19 00:13:49 MSK

Потому что линуксом невозможно пользоваться на компьютерах с небольшим количеством оперативки.

ValdikSS ★★★★★
( 12.06.19 11:56:40 MSK )
Ответ на: комментарий от Deleted 12.06.19 00:19:36 MSK

zvezdochiot

OldRabbitOrBorov
( 12.06.19 12:39:25 MSK ) автор топика
Ответ на: комментарий от Deleted 11.06.19 20:44:42 MSK

экий Вы, сударь, простофиля.
не устал тупизной сиять?

novitchok ★★★★★
( 12.06.19 13:03:48 MSK )
Ответ на: комментарий от ValdikSS 12.06.19 11:56:40 MSK

было такое что мишь и ctrlaltfn тормозил и долго думал, что-то компилял, 8GB оперативка и почти столькоже свопа занято было, т.к. hdd молотил жестко, я не задумывался, подумал тормодиск не замена оперативке, через неделю отпустило, и вроде без ошибок получилось.

так что это? регрес-баг, а не тормодиск?

Deleted
( 12.06.19 13:07:51 MSK )
Ответ на: комментарий от ValdikSS 12.06.19 11:56:40 MSK

Please refer also to this bug report. It is the same problem and has existed for eleven (11!) years if one can believe that.

я был плохим полным хомяком тогда

Deleted
( 12.06.19 13:19:48 MSK )
Ответ на: комментарий от Deleted 12.06.19 13:07:51 MSK

Да, Windows работает гораздо лучше на аналогичных конфигурациях. У RussianNeuroMancer есть планшет с 1 ГБ оперативки, и на нем линукс почти не работает.

ValdikSS ★★★★★
( 12.06.19 15:42:14 MSK )
Ответ на: комментарий от ValdikSS 12.06.19 15:42:14 MSK

Кое-как работает, но если повыкидывать всякое из автозагрузки и включить максимальный vm.swappiness. Бисект между 4.11 и 4.12 всё ещё в процессе, буквально два-три шага осталось, но отвлёкся на другие дела. Постараюсь вернуться к этому вопросу летом.

RussianNeuroMancer ★★★★★
( 12.06.19 19:41:26 MSK )
Ответ на: комментарий от ValdikSS 12.06.19 11:56:40 MSK

У меня слабый компьютер
Линуксом невозможно пользоваться на компьютерах с небольшим количеством оперативки

2 Гб разве это небольшое количество? Я кучу софта открываю.

В Ubuntu 16.04 - 4.4, если ставил с 16.04 или 16.04.1.

anonymous
( 13.06.19 05:36:27 MSK )
Ответ на: комментарий от ValdikSS 12.06.19 11:56:40 MSK

Э, ну нет. blkio контроллер применяется и к свопингу (это тоже i/o).
Можно без проблем с помощью cgroups удушить и поставить раком процесс, безудержно жрущий память, вместо того, чтобы ставить раком систему.

Тут недавно новость была про очередной бессмысленный и беспощадный улучшайзер OOM,
так вот старый сниппет

#include #include #define MEGABYTE 1024*1024 int main(int argc, char *argv[]) < void *memblock = NULL; int count = 0; while (1) < memblock = malloc(MEGABYTE); if (!memblock) < printf("\nOut of memory but no OOM in sight after %d MB\n", ++count); break; >memset(memblock, 1, MEGABYTE); printf("\rHogged %d MB", ++count); fflush(stdout); // prevent cursor jumping > exit(0); > 

незаметно шуршал в фоне, пока я листал лор в Pale Moon.
На Atom Z520 с 2Гб памяти.
aidaho ★★★★★
( 13.06.19 23:30:48 MSK )
Ответ на: комментарий от aidaho 13.06.19 23:30:48 MSK

Здорово, конечно, но на моем компьютере с 8 ГБ RAM и SSD запуск виртуалки при запущенном Firefox, при достаточном количестве оперативной памяти, полностью кладёт юзерспейс на десятки минут (даже мышка не двигается), а на этом же компьютере, но с 2 ГБ оперативки, открытие 10 вкладок в браузере приводит примерно к тому же самому, только чуть слабее.

И неважно, со включенным свопом, или без. Дело не в свопе, а в трешинге, похоже. Значительно улучшил ситуацию, установив:

vm.swappiness=100 vm.watermark_scale_factor=200 

На Windows 10 я могу запустить две виртуалки и браузер, всё будет подтормаживать (как и должно при такой нагрузке), но мышка не зависнет, программы продолжат переключаться, графика не будет тормозить.

ValdikSS ★★★★★
( 14.06.19 15:47:06 MSK )
Ответ на: комментарий от ValdikSS 14.06.19 15:47:06 MSK

Говорят ещё min_free_kbytes поднимать помогает вплоть до сотен мегабайт.

anonymous
( 14.06.19 15:52:53 MSK )
Ответ на: комментарий от anonymous 14.06.19 15:52:53 MSK

Не помогает, пробовал, даже хуже становится.

ValdikSS ★★★★★
( 14.06.19 15:53:55 MSK )
Ответ на: комментарий от aidaho 13.06.19 23:30:48 MSK

Почему это не делается из коробки по-дефолту и зачем есть возможгсть не делать это, а ставить систему раком, причём как раз по-умолчанию?

anonymous
( 14.06.19 16:02:30 MSK )
Ответ на: комментарий от anonymous 14.06.19 16:02:30 MSK

Потому что это не решение, а обход проблемы: где-то что-то сломали, а эти настройки помогают сгладить поломку, но не устранить её.

ValdikSS ★★★★★
( 14.06.19 16:05:34 MSK )
Ответ на: комментарий от ValdikSS 14.06.19 15:47:06 MSK

И у меня без групп ровно такой же локап UI. Хотя не на 10, а минуты на три, пока не придёт лесник.
Мой месседж в том, что простейшая конфигурация cgroups решает эти проблемы.

В какой-то степени верно, что это заплатка.
Но поскольку средствами ядра, костыльность решения не очень высока.

aidaho ★★★★★
( 14.06.19 16:35:24 MSK )
Ответ на: комментарий от anonymous 14.06.19 16:02:30 MSK

KISS же. Потом придётся выслушивать в багтрекере вопросы, почему софтина не может сожрать больше ~80% памяти и начинает свопиться.
За примером далеко идти не надо, он в оппосте есть.

А вообще я за memory cgroups в дистрибутивах по дефолту.
У нас тут недавно инстанс с AWS Linux словил хардлок.
Не рассосалось ни через 10 минут, ни через 10 часов.

Повесился наглухо, оставив предсмертную записку с отчаянным трешингом i/o.

aidaho ★★★★★
( 14.06.19 16:41:26 MSK )
6 марта 2021 г.
Ответ на: комментарий от aidaho 14.06.19 16:41:26 MSK

я за memory cgroups в дистрибутивах по дефолту

Хотелось бы услышать конкретику, что предлагаешь.

hakavlad ★★★
( 06.03.21 11:35:04 MSK )
Ответ на: комментарий от aidaho 14.06.19 16:41:26 MSK

Не рассосалось ни через 10 минут, ни через 10 часов.

Повесился наглухо, оставив предсмертную записку с отчаянным трешингом i/o.

А могли бы этого избежать, если б применяли патч https://github.com/hakavlad/le9-patch

hakavlad ★★★
( 06.03.21 11:47:00 MSK )
Ответ на: комментарий от hakavlad 06.03.21 11:35:04 MSK

Вот мой шаблон, который при загрузке заполняется жёсткими лимитами на память:

group anyprocess < cpu < cpu.shares="100"; >blkio < blkio.weight="100"; >memory < # RAM max anyprocess memory.limit_in_bytes=""; # RAM + SWAP # memory.memsw.limit_in_bytes="8G"; > > group realtime < cpu < cpu.shares="1000"; >blkio < blkio.weight="1000"; >> group avoidswap < memory < # Avoid swapping out sensitive data memory.swappiness=0; >> group system < cpu < cpu.shares="500"; >blkio < blkio.weight="500"; >> group desktop < cpu < cpu.shares="399"; >blkio < blkio.weight="390"; >> group idle < perm < admin < uid = root; gid = root; >task < uid = aidaho; gid = users; >> cpu < cpu.shares="1"; >memory < # RAM max idle memory.limit_in_bytes=""; # RAM + SWAP # memory.memsw.limit_in_bytes="8G"; > blkio < blkio.weight="10"; >> 

aidaho ★★★★★
( 06.03.21 13:26:37 MSK )
Ответ на: комментарий от hakavlad 06.03.21 11:47:00 MSK

Некропостеры, что ж вы творите =)

По патчу — почему он до сих пор не в апстриме?

Недостаточно обобщенный? Или великие люди, занимающиеся серверами, не обращают внимания на нужды смертных?

wandrien ★★
( 06.03.21 13:43:56 MSK )
Ответ на: комментарий от wandrien 06.03.21 13:43:56 MSK

Или великие люди, занимающиеся серверами, не обращают внимания на нужды смертных?

Это. Корпоративные админы админят серверные парки сидя за маками.

почему он до сих пор не в апстриме

Никто этот патч особо не продвигал. Но мы-то начнем. Вот, в pf-kernel уже принято.

hakavlad ★★★
( 06.03.21 13:54:44 MSK )
Ответ на: комментарий от wandrien 06.03.21 13:43:56 MSK

Или великие люди, занимающиеся серверами, не обращают внимания на нужды смертных?

Сервера тоже страдают:

«The traditional Linux OOM killer works fine in some cases, but in others it kicks in too late, resulting in the system entering a livelock for an indeterminate period.»

hakavlad ★★★
( 06.03.21 13:57:21 MSK )
Ответ на: комментарий от hakavlad 06.03.21 11:47:00 MSK

Какое поведение ожидается, когда:

  • Своп есть.
  • Своп есть, но в zram.

wandrien ★★
( 06.03.21 13:59:47 MSK )
Ответ на: комментарий от wandrien 06.03.21 13:59:47 MSK

  1. Со свопом на медленном диске в прцессе активного своппинга эффект не заметен. При исчерпании свопа быстрее придет киллер.
  2. Своп на zram - лагов нет. https://www.youtube.com/watch?v=d4Sc80TMEtA - толстенькая компиляция

Без свопа: зависания нет, киллер приходит (ядерный, а не юзерспейсный) https://youtu.be/iU3ikgNgp3M

hakavlad ★★★
( 06.03.21 14:04:04 MSK )
Ответ на: комментарий от hakavlad 06.03.21 14:04:04 MSK

Вот это мне больше всего в этом патче нравится.

wandrien ★★
( 06.03.21 14:08:26 MSK )
Ответ на: комментарий от wandrien 06.03.21 14:08:26 MSK

А мне наоборот. Убивать можно и юзерспейсными - более гибко и безопасно, через SIGTERM и с тонкой приоретизацией выбора жертвый, опционально с гуи уведомлением.

А вот что нового дает патч - это снижение IO при своппинге - при стрессах и активном своппинге гуй еще жив и здравствует.

hakavlad ★★★
( 06.03.21 14:14:30 MSK )
Ответ на: комментарий от aidaho 06.03.21 13:26:37 MSK

Есть ли эквивалент для cgroup2? Эпоха v1 уходит в небытие.

hakavlad ★★★
( 06.03.21 14:20:30 MSK )
Ответ на: комментарий от hakavlad 06.03.21 14:14:30 MSK

Я бы на десктопе вообще не убивал OOM-ом процессы - только в самом крайнем случае. А все некритичные для базовой работы системы приложения можно загонять в своп вплоть до полной остановки их работы, если необходимо. Главное, чтобы сохранялась возможность оператору отдавать команды системе. Он сам разберется, что убить в первую очередь, лучше любого демона.

Но это для опытных пользователей.

Если пользователь опыта администрирования не имеет, то лучше OOM.

Ты уверен, что чем-то поможет SIGTERM, если процесс не имеет возможности на него оперативно отреагировать? Всё равно следом нужен SIGKILL.

опционально с гуи уведомлением

Ну это наверное и к ядру прикрутить можно. Там же должен быть какой-то ивент на приход OOM? Для целей логгирования и оперативного уведомления на серверах.

wandrien ★★
( 06.03.21 14:25:44 MSK )
Ответ на: комментарий от ValdikSS 14.06.19 16:05:34 MSK

где-то что-то сломали, а эти настройки помогают сгладить поломку, но не устранить её

Сломали защиту файловых страниц при нехватке памяти. К счастью, решение найдено: https://github.com/hakavlad/le9-patch

hakavlad ★★★
( 06.03.21 14:27:43 MSK )
Ответ на: комментарий от wandrien 06.03.21 14:25:44 MSK

Юзеры на десктопе обычно предпочитают низкие задержки. Система должна оставаться управляемой несмотря ни на что. Лучше потерять вкладку, чем повиснуть на неопределенный срок. О чем и заявили создатели патча:

We also see very slow browser tab switching under low memory. Instead of an unresponsive system, we’d really like the kernel to OOM as soon as it starts to thrash. If it can’t keep the working set in memory, then OOM. Losing one of many tabs is a better behaviour for the user than an unresponsive system.

Ты уверен, что чем-то поможет SIGTERM

Большинство таки реагируют быстро. Конечно, нет гарантий быстрой реакции всех процессов, но для части случаев это лучшее решение. При отстутствии ответа на SIGTERM отправляется SIGKILL.

Ну это наверное и к ядру прикрутить можно.

Но никто это делать, конечно, не будет.

hakavlad ★★★
( 06.03.21 14:32:56 MSK )
Последнее исправление: hakavlad 06.03.21 14:33:37 MSK (всего исправлений: 1)

Ответ на: комментарий от hakavlad 06.03.21 14:04:04 MSK

Со свопом на медленном диске в прцессе активного своппинга эффект не заметен. При исчерпании свопа быстрее придет киллер.

А вот что нового дает патч - это снижение IO при своппинге - при стрессах и активном своппинге гуй еще жив и здравствует.

Так, пытаюсь сообразить, что к чему.

Список свободных страниц истощается, и на каком-то этапе система прекращает освобождение файловых страниц.

Если есть своп, начинается исключительно выгрузка анонимной памяти. Если нет, приходит OOM.

Так как расход памяти у жирных процессов идёт в основном на анонимную память, такой режим работы не дружественен к ним и дружественен к процессам, имеющий малый объем анонимной памяти.

Из-за этого отзывчивость улучшается.

Вроде так получается.

Это прям хорошо. Осталось прикрутить еще возможность динамически управлять защитой рабочего набора per process, и будет универсальное решение.

wandrien ★★
( 06.03.21 14:34:52 MSK )
Ответ на: комментарий от hakavlad 06.03.21 14:32:56 MSK

Но никто это делать, конечно, не будет.

У ядра нет механизма уведомления на этот счёт? Я просто не в курсе.

Написать юзерспейсный-то демон не дофига делов.

wandrien ★★
( 06.03.21 14:35:48 MSK )
Ответ на: комментарий от hakavlad 06.03.21 14:27:43 MSK

Когда я тестировал эти патчи, они больше вредили.

ValdikSS ★★★★★
( 06.03.21 14:37:30 MSK )
Ответ на: комментарий от wandrien 06.03.21 14:34:52 MSK

возможность динамически управлять защитой рабочего набора per process

hakavlad ★★★
( 06.03.21 14:38:00 MSK )
Ответ на: комментарий от hakavlad 06.03.21 14:32:56 MSK

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

Она и будет управляемой, если у тебя висит только браузер, но не оболочка рабочего стола. Я об этом говорю уже который месяц.

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

Для мобилки решение оптимально. Но я не про мобилки.

Пользователю лучше знать, что ему потерять. Вкладку в браузере или протёкший gimp.

wandrien ★★
( 06.03.21 14:39:12 MSK )
Ответ на: комментарий от ValdikSS 06.03.21 14:37:30 MSK

Сейчас все исправлено. Порог держится побочки изучены. Найдены способы устранения побочек. Мягкое и жесткое резервирование на выбор.

Бывают проблемы со встройкуами интел, но костыль для тлечения описан в ридми.

Разные патчи протестированы.

Читай всю ветку - отсюда и до конца Linux 5.10 (комментарий) - разговор с post-factum

hakavlad ★★★
( 06.03.21 14:40:58 MSK )
Ответ на: комментарий от ValdikSS 06.03.21 14:37:30 MSK

Уже применяется в pf-kernel.

Есть copr для федоры, ребята живут с этим ядром https://copr.fedorainfracloud.org/coprs/atim/kernel-futex/ и довольны, отмечают отличный эффект https://youtu.be/d4Sc80TMEtA

hakavlad ★★★
( 06.03.21 14:43:31 MSK )
Ответ на: комментарий от wandrien 06.03.21 14:39:12 MSK

Сейчас выбора нет - гуй мерзнет, зачастую юзеры делают хардресет. Патч дает выбор - зависать или иметь низкие задержки.

hakavlad ★★★
( 06.03.21 14:45:02 MSK )
Ответ на: комментарий от hakavlad 06.03.21 14:45:02 MSK

Это уже хорошо. Нужно двигаться дальше.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *