LINUX.ORG.RU

Как лечить ошибку __vm_enough_memory (РЕШЕНО)

 , ,


0

1

Запускаю Rpcs3 (эмулятор PS3) и вижу в dmesg такую надпись: __vm_enough_memory: pid: 2211, comm: rpcs3, no enough memory for the allocation

Ну ладно думаю. Создал конфиг имени себя в /etc/security/limits.d/ такого вида:

мойюзер soft memlock 14330756
мойюзер hard memlock 14330756

Не помогло, ошибка на месте. Решил прописать прямо в /etc/security/limits.conf

Ошибка на месте.

Что не так?

ulimit -Hn
14330756

ulimit -l
14330756
★★

Последнее исправление: Vochatrak-az-ezm (всего исправлений: 1)

Ответ на: комментарий от Vochatrak-az-ezm

Запускать эмулятор от рута, крайне вредный совет.

Но ради интереса попробовать бы не повредило. Никто же не говорит, что надо прям сидеть играть под рутом, просто глянуть, завелось или нет

annulen ★★★★★
()
Ответ на: комментарий от Vochatrak-az-ezm

Попробуй vm.overcommit_memory установить в 1 и/или добавить swap’а.

И ещё интересно было бы посмотреть на /proc/meminfo, особенно поле CommitLimit. Возможно оно слишком маленькое, и ядро не рискует выделять память.

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

С оверкоммитом вроде надпись ушла. Остается вопрос, не опасно ли врубать его «на постоянку»?

И как это сделать, если не трудно…

CommitLimit:    17614380 kB
Vochatrak-az-ezm ★★
() автор топика
Последнее исправление: Vochatrak-az-ezm (всего исправлений: 1)
Ответ на: комментарий от Vochatrak-az-ezm

Остается вопрос, не опасно ли врубать его «на постоянку»?

Я бы не стал, лучше свопа прибавить (если что, то с 0 оверкоммит тоже включен - но с 1 у него пропадают какие-либо берега)

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 2)
Ответ на: комментарий от Vochatrak-az-ezm

По-видимому, эмулятор делает какую-то нереально огромную аллокацию, но большей частью этой памяти не пользуется. Возможно, ситуацию поможет прояснить лог из консоли (stdout+stderr), но в общем случае без дебаггинга трудно сказать.

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

А он в консоль практически ничего не пишет.

А есть способ врубать оверкоммит 1 для конкретного приложения, без рута?

Я бы тогда просто прописал в desctop и черт с ним.

Vochatrak-az-ezm ★★
() автор топика
Ответ на: комментарий от Vochatrak-az-ezm

как это сделать

Создать файл /etc/sysctl.d/overcommit.conf с содержимым:

vm.overcommit_memory=1

Никогда не проверял ограничения на конкретное имя файла, но обычно рекомендуют использовать окончание .conf. Где-то это обязательно, где-то нет.

i-rinat ★★★★★
()
Ответ на: комментарий от Vochatrak-az-ezm

А есть способ врубать оверкоммит 1 для конкретного приложения

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

annulen ★★★★★
()