Автор Тема: Заделяне на ресурси за процес.  (Прочетена 1668 пъти)

plamen_t

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
Въпросът ми е следният. Имам стартиран някой процес (mplayer както е в случая) и искам за него да се заделят определено количество ресурси. Само че искам тези ресурси да са му гарантирани и независимо колко е натоварен процесорът и паметта mplayer-a да може да си разчита на примерно 30% процесор и да са неприкосновенни. Въобще възможно ли е да се направи така?
 Пробвах с nice -n -20 mplayer film.avi и му задавам най-висок приоритет, но това не гарантира, че при максимално натоварване на системата mplayer-a ще си използва необходимата памет и процесор. Просто искам да си има задалени само за него определено количество ресурси (примерно 30% CPU и 15% памет) и никоя друга програма да не може да ги използва независимо от натоварването на системата.

Благодаря предварително на всеки, който се опита да ми помогне.
Активен

Sadistt0

  • Участници
  • ***
  • Публикации: 5
    • Профил
Заделяне на ресурси за процес.
« Отговор #1 -: Jul 15, 2005, 10:47 »
man nice i man renice
Активен

plamen_t

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
Заделяне на ресурси за процес.
« Отговор #2 -: Jul 15, 2005, 15:16 »
nice и renice съм ги пробвал, ама не искам да се дават приоритети, а да се гарантира, че даден процес винаги може да разчита на определено количество памет и процесор.
Активен

rat

  • Напреднали
  • *****
  • Публикации: 266
    • Профил
Заделяне на ресурси за процес.
« Отговор #3 -: Jul 15, 2005, 16:54 »
Спред мен не може да се постигне това.
По-висок приоритет означава че този процес ще получава по-дълго/по-често процесорно време. Не можеш да кажеш : "на този процес толкова време".
Не може да се гарантира процесорното време за един процес , защото може да възникне ситуация при която голяма част от прецесорното време ще се изразходва от самото ядро(примерно при изпълнение на прекъсване).
Според мен това което би ти помогнало е :
1.nice , renice
2.Kernel preempting

vic_semionov

  • Напреднали
  • *****
  • Публикации: 144
    • Профил
    • WWW
Заделяне на ресурси за процес.
« Отговор #4 -: Jul 15, 2005, 21:11 »
Може да се направи едно от нещата за които питаш - процеса да разчита на определено количество памет, но за съжаление това не зависи от теб (потребителя), а от самата програма - тя трябва да извика функцията mlock(), която предотвратява суапването на даден блок памет (който вече е заделила с malloc()).

А процесорното време не е възможно да се гарантира като процент, действително само може да се манипулира приоритета с nice/renice. Би трябвало да ти свършат работа, въпреки че не е точно това което ти искаш да направиш.
Активен

plamen_t

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
Заделяне на ресурси за процес.
« Отговор #5 -: Jul 16, 2005, 11:15 »
Аха ясно. Ами аз досега така и правех - с nice и не ми е създавало проблеми, но просто ми беше интересно да попитам дали има начин за гарантиране на ресурси макар че като се замисля това едва ли е възможно на еднопроцесорна архитектура. Мерси за отговорите.
Активен

CaBA

  • Напреднали
  • *****
  • Публикации: 303
    • Профил
    • WWW
Заделяне на ресурси за процес.
« Отговор #6 -: Jul 18, 2005, 12:02 »
Цитат
...но просто ми беше интересно да попитам дали има начин за гарантиране на ресурси макар че като се замисля това едва ли е възможно на еднопроцесорна архитектура.


Възможно е. За това си има операционни системи за реално време (real time) като QNX. Линукс не е с такава архитектура, но ако не ме лъже паметта имаше едни кръпки, които предоставяха такива екстри за вградени (embedded) устройства.
Активен

10 години ябълкова диета стигат, стигат!

rat

  • Напреднали
  • *****
  • Публикации: 266
    • Профил
Заделяне на ресурси за процес.
« Отговор #7 -: Jul 18, 2005, 12:23 »
Ами идеята тук май не е точно за realtime системи.
При realtime системите просто ти се гарантира че ще получиш отговор от ОС за точно определено време(май имаше и точно определено време за изпълнение на процес).Пак не можеш да заделиш на някой процес процент процесорно време. Не сещам сега линукс с коя стратегия за разпределяне на прцесора работи, но ако мисля че беше "Shortest Job First" - т.е. колкото повече "спиш", толкова по-бързо ти се дава процесора(имаш приоритет).

Иначе линукс с realtime съм го пробвал още когато излязоха тези пачове , и не е нещо кой знае какво.