запуск программы на одном ядре процесора на SMP системе (Запись TV с помощью mencoder)

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

qwerta
Сообщения: 137
ОС: Debian oldstable

запуск программы на одном ядре процесора на SMP системе

Сообщение qwerta »

У меня двухядерный Athlon, TV-tuner Avermedia 505. Тюнером я оцифровываю видеокасеты с помощью mencoder командой:

mencoder tv:// -tv input=2:height=576:width=720 -vf pp=fd,harddup \
-ovc lavc -oac pcm -lavcopts vcodec=dvvideo -o video.avi

Пока он кодирует, он мне переодически пишет:

...
пропускаю кадр...
...
пропускаю кадр...
...
пропускаю кадр...
...

На винде я это решал запуском программы на одном ядре, через диспетчер задач. А как это сделать под линуксом? Я пробовал запускать эту команду на ядре бес поддержки SMP, но проблема остается даже количество пропущенных кадров немного возрастает. Вот и возникает вопрос: как запустить mencoder строго на одном ядре процесора? Или перекомпировать ядро так, чтобы запущенные процесы не скакали с течением времени с ядра на ядро, а выполнялись строго на том ядре на котором они начались.
А начинал я с Xebian
Спасибо сказали:
Аватара пользователя
fines
Сообщения: 359
ОС: Slackware-current

Re: запуск программы на одном ядре процесора на SMP системе

Сообщение fines »

qwerta писал(а):
05.04.2008 15:34
На винде я это решал запуском программы на одном ядре

Круто!
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: запуск программы на одном ядре процесора на SMP системе

Сообщение Uncle_Theodore »

Никакой связи между количеством процессоров и пропуском кадров менкодером нет. Поразмыслите на досуге, а почему он, собственно, пропускает кадры? Про формат avi почитайте заодно... И обрящете.
Спасибо сказали:
qwerta
Сообщения: 137
ОС: Debian oldstable

Re: запуск программы на одном ядре процесора на SMP системе

Сообщение qwerta »

Приходит поручик Ржевский к полковнику и говорит:
-Как ваши жена, дети?
-Нормально.
-А здоровье?
-Не жалуюсь.
-А вы мне денег дадите?
-Поцелуйте меня в лоб!
-К чему вы это, полковник?
-Да вы тоже издалека начали поручик.

Видит бог я этого не хотел... Но раз надо значит надо.

Когда деревья были большими, а у меня был Athlon64 X2 3600+ и гиг памяти. Захотел я себе тюнер. А когда ХОЧЕТСЯ — это хуже чем болит...
И пошел я в магазин, и купил себе pinacle...
Заставить его работать нормально под линукс я не смог, а под виндос с записью были проблемы. Писал он или в формате videocd или в divx. И никак иначе. И пока не прошли две недели (даных мне законом) решил я его поменять на avermedia.Показывал он хуже, а писал лучше, блогодаря идущей в комплекте программе (AVerTV). Можно писать: несжатое видео, DV видео, mpeg1, mpeg2,использовать сторонние кодеки. Но вот что интересно:Когда я писал в mpeg1, mpeg2,mpeg4 кадры выпадают,но не так сильно. А стоило писать несжатое видео или DV как количество выпадающих кадров возрастало раз в десять. Я решил что или у процессора реальная частота маленькая ( 2000МГц) или кеш небольшой ( 256 Кб на ядро) и он просто не успевает обработать большой поток данных идущих от DV или несжатого видео.

Долго ли, коротко ли подписался я на Linux Format, поменял свой 3600+ на 6000+ ,а вместо гиг памяти стало у меня два. Я то уж подумал что с записью у меня все впорядке ... О БОЖЕ, как я ошибся ....Как было так все и осталось...
А тут как то пили мы пиво с другом. Ну и за разговором он мне рассказал как пробовал на одном ядре или на двух сразу программы запускать. Вот тогда я и решил попробовать а что же будет у меня? И о чудо кадры стали выпадать значительно меньше. Я так понимаю проблема была из-за того что когда система пытается кинуть поток то на одно ядро то на другое в момент переключения данные не успевают обрабатываться и кадры в этот момент терялись, а когда приказали сиди на одном месте и работай количество пропущенных кадров уменьшилось на порядок.

Но не смотря на удобства были и неудобства. AverTV почемуто avi-файлы писал кусками по четыре гига, хотя mpeg писал одним куском и плевал он на размер, и интерлейс о-о-о какой там интерлейс. Ну записать передачку пока меня нет дома чтоб потом пересмотреть пойдет. А например кассету со свадьбой оцифровать для знакомых такое Г. получается.

Полезли мы на сайт avermedia узнать как там насчет линукса. Да не как. Только сказали что модель 305 тоже самое самое что моя 505 только пультик другой. А на сайте www.pctuner.ru сказали что подерживается только его надо правильно прописать в modprobe.conf. В моем случае это строчка :

options saa7134 card=35

Запускаешь mplayer tv:// с ключами и вот тебе картинка, лезешь в микшер включаешь line вот те звук. А вот mencoder пишет без звука картинка есть а звука нет. А на другом сайте http://www.opennet.ru/docs/RUS/lor_faq/lorFAQ-21.html#ss21.6 дали совет: «Запускаем alsamixer и в нем снимаем, если есть, mute с канала Line (клавиша m), далее ставим capture на каналы Line и Capture (клавиша пробел) »

Сделал. Звук все равно не пишется.

Метод научного тыка показал что на моей звуковухе надо снять mute c Line и Analog M поставить input So в Mix.

И после этого стало писаться со звуком. Единственное только то что если пишешь не с антены а с видеовхода звуковой шнур надо вставлять не в плату тюнера а на прямую в звуковую карту. Пишет замечательно. А если добавить опции -vf pp=fd еще подавляет интерлейс. Красота!

ОДНАКО вопросик остался: Как запустить программу строго на одном ядре процессора. Тут даже дело не в mencoder , так частный случай,хотя я думаю ему это пойдет на пользу.
А начинал я с Xebian
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: запуск программы на одном ядре процесора на SMP системе

Сообщение Uncle_Theodore »

Хы! Заценил я историю про большие деревья и маленький Athlon. :) Хотя когда мои деревья были большие, компьютер был... тоже ооочень большой. Такой большой, что стоял в отдельном зале и управлялся операционной системой Примус. Которая при загрузке выплевывала на зелеееные такие терминалы божественные стихи "И он уже не тот, что был вначале, Чужие мысли, став его судьбой, позвав его, уводят за собой..." А на ночь он (зал) запирался на большой амбарный замок!.. Эх, молодость-молодость... Терминальчики, лаборанточки, шерстяное одеяло на каменном полу... О чем это я? А, ну да...

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

Формально же, да, таки есть программа, которая привязывает процесс к одному процессору. Она называется taskset и находится в пакете util-linux, обычно установленному по умолчанию. Посмотрите man taskset от рута.
Спасибо сказали:
qwerta
Сообщения: 137
ОС: Debian oldstable

Re: запуск программы на одном ядре процесора на SMP системе

Сообщение qwerta »

:crazy:
Спасибо! Проверим, посмотрим.
:rolleyes:

:ph34r: Есть еще магистры в наших селеньях.
А начинал я с Xebian
Спасибо сказали:
qwerta
Сообщения: 137
ОС: Debian oldstable

Re: запуск программы на одном ядре процесора на SMP системе

Сообщение qwerta »

Б... Ё... А вот нашел! :cool:

Посмотрел. Работает. Результаты тестов ( если кому интересно ) выложу позже.

P.S. В man taskset правда написали,что линукс сама пытается распределить процессы так чтобы они как можно быстрее выполнялись... :ohmy: Посмотрим!?
А начинал я с Xebian
Спасибо сказали:
qwerta
Сообщения: 137
ОС: Debian oldstable

Re: запуск программы на одном ядре процесора на SMP системе

Сообщение qwerta »

:cool:
Ну что я могу сказать...
Результат есть. Количество проущенных кадров уменьшается в 1.5 - 2 раза.
А начинал я с Xebian
Спасибо сказали: