Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: sharo в Mar 27, 2008, 22:33



Титла: Mencoder , ffmpeg - ограничаване
Публикувано от: sharo в Mar 27, 2008, 22:33
Здравейте,
искам да попитам следното:
Смятам да стартирам уеб сайт на който могат да се качват видео клипчета. Сайта, ще бъде написан изцяло на php. За целта започнах тестове на система с: Intel Core 2 Duo E8200 @ 2.66GHz с Дебиан ; 2.6.18-6-amd64 ; и 4ГБ рам. Видео клипчетата ще се конвертират чрез mencoder. По време на тестването забелязах, че в процеса на конверирането, mencoder използва 100% от еднотo ядро на процесора като през това време сайта неможе да работи нормално (зарежда бавно и т.н.).
Пуснах изпълнението на mencoder чрез "nice -n 10 /usr/bin/mencoder" за да се изпълнява процеса с по-нисък приоритет, при което започна да се натоварва и второто ядро, но по време на конвертирането сайта оново зареждаше ексремно бавно.

Това което искам да попитам е, дали има начин и ако има какъв, да огранича mencoder да използва по-малко ресурси (CPU), дори това да ми коства повече време за конвертиране.


Титла: Mencoder , ffmpeg - ограничаване
Публикувано от: neter в Mar 27, 2008, 23:22
Леко встрани от темата и все пак... Наскоро ми се наложи да пиша едно решение за качване и конвертиране на клипчета към flv формат и го изпълних с ffmpeg. Процесът на конвертиране наистина заема всички свободни ресурси, но заема само всички свободни ресурси. Т.е., когато някой друг процес поиска ресурси от процесора, ffmpeg-а му ги отстъпва. Не съм правил сравнение между натоварености между ffmpeg и mencoder, а не съм правил и нищо на самата машина, за да се заемат по-малко ресурси докато се извършва конверта, но при мен работи добре. Ето ти пакета, ако искаш да го пробваш. Да знаеш, че не съм изчистил проблема, когато има интервали в имената на файловете, защото задачата не го изискваше и не ми се занимаваше с излишни неща (то и затова не съм го публикувал никъде, освен там, където се използва), така че ако го пробваш, пробвай с файлове без интервали в имената. Иначе странно защо mencoder -а ти глътва така системата, дори и при зададен nice level, но ще се поразровя по въпроса и ако открия нещо, ще ти кажа ;)


Титла: Mencoder , ffmpeg - ограничаване
Публикувано от: sharo в Mar 28, 2008, 09:42
Здравей neter,
благодаря за файла който си предоставил. Веднага след като се прибера у дома ще го тествам на системата и ще проверя дали и с ffmpeg ползвайки твоите файлове ще имам същият проблем.
И все пак, ако се намери някой който да има решение на проблема ми, нека пише.

Благодаря предварително,
Милен


Титла: Mencoder , ffmpeg - ограничаване
Публикувано от: n00b в Mar 28, 2008, 10:14
Отговора е прост и се нарича MMX, SSE и т.н.

В когато Интел (да се свети името и) въведоха ММХ искаха да направят обратна съвместимост с съществуващите процесори. И вместо да направят нови регистри взеха че използваха регистрите на копроцесора (FPU). Но още тогава процеса на превключване между MMX и FPU беше бавен. В среда с много процеси където трябва да се превключва процесора между различни процеси (един с MMX, друг с FPU и т.н.) това ще използва много време. Отделно доста MMX/SSE инструкции използват много процесорно време и едва на следващата инструкция може да се превключи процесора към друг процес.

НАЙ-доброто решение е да намериш вариянт да пуснеш конверсията само на второто ядро докато сайта и PHP-то и MySQL-a да се клатят на първото. Това при сайт с един компютър.

Втори вариант - правиш distributed система. Сайта си е сайт, но конверторите ще бъде поне един компютър. По някакъв начин конвертора ще се свързва със сайта (XML-RPC или друг) и сайта ще му подава файлове за преработка. След преработката конвертора връща файла към сайта и гледа има ли друг в опашката за конверсия. Ако можеш да свържеш така 2-3 машини за конверсия ще е перфектно и ще намали драстично натоварването на сървъра.


Титла: Mencoder , ffmpeg - ограничаване
Публикувано от: sharo в Mar 28, 2008, 10:49
n00b,
пробвах твоята идея и чрез taskset пуснах конвертирането да се извършва само на 2рото ядро, с нисък приоритет. Ядрото, отново се натоварва на 100%, но най-важното е, че всичко останало си върви абсолютно нормално, апачето и дб-то си работят както трябва по време на конвертирането. Така, че за момента това все пак е някакво решение на проблема ми.
Искрено благодаря за идеята ти!

Поздрави,
Милен





Титла: Mencoder , ffmpeg - ограничаване
Публикувано от: n00b в Mar 28, 2008, 10:58
В момента разработвам подобна система. Не е с Флаш видеота и т.н. но има замесени няколко машини с Виндовс на които работи много специфична програма която трябва да се разработи уеб интерфейс.

Първата идея беше - Виндовс навсякъде. ГРУБА грешка.
Втората - Линукс, а Виндовс-а ще го виртуализираме. Нова грешка защото машината става неизползваема.
Трета - в момента която съм ти обяснил разпръскваме работата и с XML-RPC се прехвърлят данни наляво-надясно. Линукс е контролера - Виндовс клиентите. Мисля че е най-доброто решение в момента.