Автор Гілка: Керування пам'яттю прцесів  (Прочитано 2175 раз)

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Сиджу під своєю федорою - шкребу програму (очевидно погано шкребу - з помилками - ясна річ) і от прикол: програма в ходить в нескінченний цикл, в якому з кожним кроком виділяється трішки нам'яті (все до одного пойнтера ф-ією "realloc") вже і в свопінг всі процеси почало викидати, а ядро так і не думає прибити цього дурного процеса :( добре, що з терміналу запущено - сам легко прибив (при дурних ситуаціях менеджера процесів запустити просто неможливо  ;)).
Питаннячко: чи можна якимось чином самому встановлювати максимальну пам'ять, що може виділятись для поцеса?
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній 235

  • Кореспондент
  • ***
  • дописів: 238
  • Карма: +0/-0
Re: Керування пам'яттю прцесів
« Відповідей #1 : 2006-05-31 18:37:53 »
чому ж ядру вбивати процес, який був запущений самим користувачем?

вже доволі багато раз згадували в різних топіках можливості обмеження ресурсів шелами - поглянь в sh/bash/.. вбудовану команду ulimit. Сподіваюся вона тобі й допомоможе, але значно краще контолювати подібні речі в самій програмі ;)
Олександр Приймак |  Google Web Toolkit

Відсутній PAL

  • Графоман
  • ****
  • дописів: 317
  • Карма: +0/-0
  • Just linux admin
Re: Керування пам'яттю прцесів
« Відповідей #2 : 2006-06-01 10:24:02 »
Добавлю ще - подивись налаштування pam (модуль pam-limits, у доках написано, як налаштувати) - можна обмежити не лише пам'ять. правда, не на процес, а на користувача

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Керування пам'яттю прцесів
« Відповідей #3 : 2006-06-01 10:33:27 »
ulimit -Hl 102400
bash: ulimit: max locked memory: cannot modify limit: Operation not permitted

Щось воно не дуже слухається :)
(запускав у терміналі від kate)
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній Сергій Лисовенко

  • Літератор
  • ******
  • дописів: 1489
  • Карма: +0/-0
Re: Керування пам'яттю прцесів
« Відповідей #4 : 2006-06-01 10:37:06 »
Може gdb якось зарадити зможе (тільки користуватись цією штукою ще не навчився :) )?
Якщо Лінукс написали студенти - нехай вони під ним і навчаються.

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Керування пам'яттю прцесів
« Відповідей #5 : 2006-06-01 13:26:31 »
ulimit -Hl 102400
bash: ulimit: max locked memory: cannot modify limit: Operation not permitted

Щось воно не дуже слухається :)
(запускав у терміналі від kate)

Ви просите збільшити ліміт на кількість пам'яті, яку процес може захистити від переміщення підсистемою віртуальної пам'яті.
Цитата
`RLIMIT_MEMLOCK'
     The maximum amount of memory that can be locked into physical
     memory (so it will never be paged out).

 Якщо вам дійсно це потрібно (ви крутий драйвер пишете? :-) ) то запустіть bash під root-ом. Але я підозрюю що вам напевно потрібно це:

Цитата
`RLIMIT_DATA'
     The maximum size of data memory for the process.  If the process
     tries to allocate data memory beyond this amount, the allocation
     function fails.

PS.
man mtrace http://www.gnu.org/software/libc/manual/html_node/Allocation-Debugging.html
[Fedora Linux]

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Керування пам'яттю прцесів
« Відповідей #6 : 2006-06-01 13:32:33 »
Можете також спробувати ddd та valgrind в якості заміни gdb/memtrace/ElectricFence.
[Fedora Linux]