Титла: Заделяне на ресурси за процес. Публикувано от: plamen_t в Jul 13, 2005, 22:23 Въпросът ми е следният. Имам стартиран някой процес (mplayer както е в случая) и искам за него да се заделят определено количество ресурси. Само че искам тези ресурси да са му гарантирани и независимо колко е натоварен процесорът и паметта mplayer-a да може да си разчита на примерно 30% процесор и да са неприкосновенни. Въобще възможно ли е да се направи така?
Пробвах с nice -n -20 mplayer film.avi и му задавам най-висок приоритет, но това не гарантира, че при максимално натоварване на системата mplayer-a ще си използва необходимата памет и процесор. Просто искам да си има задалени само за него определено количество ресурси (примерно 30% CPU и 15% памет) и никоя друга програма да не може да ги използва независимо от натоварването на системата. Благодаря предварително на всеки, който се опита да ми помогне. Титла: Заделяне на ресурси за процес. Публикувано от: Sadistt0 в Jul 15, 2005, 10:47 man nice i man renice
Титла: Заделяне на ресурси за процес. Публикувано от: plamen_t в Jul 15, 2005, 15:16 nice и renice съм ги пробвал, ама не искам да се дават приоритети, а да се гарантира, че даден процес винаги може да разчита на определено количество памет и процесор.
Титла: Заделяне на ресурси за процес. Публикувано от: rat в Jul 15, 2005, 16:54 Спред мен не може да се постигне това.
По-висок приоритет означава че този процес ще получава по-дълго/по-често процесорно време. Не можеш да кажеш : "на този процес толкова време". Не може да се гарантира процесорното време за един процес , защото може да възникне ситуация при която голяма част от прецесорното време ще се изразходва от самото ядро(примерно при изпълнение на прекъсване). Според мен това което би ти помогнало е : 1.nice , renice 2.Kernel preempting Титла: Заделяне на ресурси за процес. Публикувано от: vic_semionov в Jul 15, 2005, 21:11 Може да се направи едно от нещата за които питаш - процеса да разчита на определено количество памет, но за съжаление това не зависи от теб (потребителя), а от самата програма - тя трябва да извика функцията mlock(), която предотвратява суапването на даден блок памет (който вече е заделила с malloc()).
А процесорното време не е възможно да се гарантира като процент, действително само може да се манипулира приоритета с nice/renice. Би трябвало да ти свършат работа, въпреки че не е точно това което ти искаш да направиш. Титла: Заделяне на ресурси за процес. Публикувано от: plamen_t в Jul 16, 2005, 11:15 Аха ясно. Ами аз досега така и правех - с nice и не ми е създавало проблеми, но просто ми беше интересно да попитам дали има начин за гарантиране на ресурси макар че като се замисля това едва ли е възможно на еднопроцесорна архитектура. Мерси за отговорите.
Титла: Заделяне на ресурси за процес. Публикувано от: CaBA в Jul 18, 2005, 12:02
Възможно е. За това си има операционни системи за реално време (real time) като QNX. Линукс не е с такава архитектура, но ако не ме лъже паметта имаше едни кръпки, които предоставяха такива екстри за вградени (embedded) устройства. Титла: Заделяне на ресурси за процес. Публикувано от: rat в Jul 18, 2005, 12:23 Ами идеята тук май не е точно за realtime системи.
При realtime системите просто ти се гарантира че ще получиш отговор от ОС за точно определено време(май имаше и точно определено време за изпълнение на процес).Пак не можеш да заделиш на някой процес процент процесорно време. Не сещам сега линукс с коя стратегия за разпределяне на прцесора работи, но ако мисля че беше "Shortest Job First" - т.е. колкото повече "спиш", толкова по-бързо ти се дава процесора(имаш приоритет). Иначе линукс с realtime съм го пробвал още когато излязоха тези пачове , и не е нещо кой знае какво. |