Корпорация Дженерал Сателайт — российская научно-производственная компания, представляющая на российском и международном рынке высокотехнологичное радиоэлектронное оборудование, характеристики которого отвечают самым высоким стандартам. Надежность и профессионализм за многие годы успешной работы позволили компании занять место лидера в телекоммуникационном бизнес-сообществе России.
Как известно, драйвера SkyStar2 не могут корректно работать на мультипроцессорных (SMP) системах. Этот факт специально отмечен даже в FAQ на сайте Technisat. Вероятно эффект связан с особенностями распределения и обработки прерываний (IRQ) в SMP системах или с перекидыванием программного потока с одного процессора на другой. Однако было замечено, что отключение одного из процессоров двухпроцессорной системы возвращает работоспособность карте. Напрашивается вопрос - а можно ли закрепить процесс за конкретным процессором (физическим или логическим (для HyperThreading)), частично сэмулировав однопроцессорную систему? Как оказалось можно.
В приведенном ниже материале наш соотечественник Максим Субочев (-MAXX-) рассказывает о найденном им оригинальном способе решить эту проблему.
Итак... Что мы имеем:
![]() |
![]() |
Начинаем магические действия.. :)
Нам потребуется: программка IntFiltr (полное название - Interrupt-Affinity Filter и написана кстати Micro$oft-ом). Она занимается тем, что на низком уровне фильтрует прерывания, позволяя настроить систему таким образом, чтобы управлять конкретным прерыванием мог или только один из процессоров, или все процессоры одновременно. Учитывая то обстоятельство, что SkyStar2 не работает (а если и работает, то очень и очень глюкаво) в мультипроцессорных системах, а у нас как раз именно такой случай, то первое, что надо сотворить - это распаковать куда-нибудь архивчик с IntFilt.
Далее лезем внутрь распакованных файлов, в директорию ..IntFiltrInstall запускаем там файл intfiltr.reg на вопрос добавить данные в реестр отвечаем ДА, перемещаем оттуда файлintfiltr.sys в директорию %WINDIR%system32drivers. Перегружать машину не обязательно, но желательно :) Опять возвращаемся в распакованный архив - в директорию..IntFiltrConfig запускаем там на выполнение intfiltr.exe и видим такое окно...

Соответственно в списке девайсов надо выбрать интересующий.. Нас интересует "B2C2 Broadband Receiver PCI Adapter" - это и есть SkyStar2.
В принципе, можно перенаправлять любой драйвер на любой процессор(ы)...

Надобно выделить его грызуном и нажать пимпу "Add Filter"..

Появится окно со следующим уведомлением..

Ни в коем случае не перегружаясь давим пимпу "Set Mask"

И видим предложение с выбором процессора(ов), с которым(и) должен работать драйвер. Как видно, программа максимально поддерживает 32 процессора (надеюсь на домашней машине нам это в обозримом будущем не грозит :)...

Поскольку SkyStar не работает с числом процессоров больше чем 1 :), снимаем галку с CPU1 (он логический, CPU0- физический)..

Давим ОК и видим очередной спам, где можно нажать то, что понравится, это не критично...

В результате всех манипуляций должно получиться примерно следующее...

Теперь можно смело давить "Done" и отправлять машину в перезагруз, первый этап завершен...
После загруза машины драйвер карты будет "виден" только одному процессору - CPU0, процессор CPU1 будет его полностью игнорировать.
Итак, драйвер свернули, дело осталось за приложениями...
Кроме самого драйвера SkyStar с двумя и более процессорами не работает и ProgDVB - собственно софт для управления скайстаром..
На этот случай тоже есть чудная таблетка - SMP Seesaw. На сей раз программка занимается тем, что под виндами отправлет конкретное приложение на конкретный(е) процессор(ы). Выглядит все это безобразие следующим образом...
После инсталляции и запуска SMP Seesaw видим такое окно..

Нажав правую пимпу мыши на выбранном приложении видим приглашение "послать его на" :) ...

Можно либо отдать приоритет какому-либо процессору относительно приложения, либо полностью изолировать приложение на определенном процессоре...
Сразу совет :) не стоит изолировать два приложения одновременно на двух процессорах в двухпроцессорной системе - помните, что сама система еще должна работать на каком-то процессоре :) Смотрим дальше..
При выборе "Move to CPU(s)..." появится окно, похожее на окно от IntFiltr... В этом варианте приложение будет исполняться только на определенном вами процессоре параллельно с другими приложениями...

А вот при выборе "Isolate on CPU(s)..." появится такое же окно, но суть данного злодеяния :) прямо противоположная - кроме приложений, назначенных к выполнению на этом процессоре, на нем абсолютно ничего уже выполняться не будет...

Такой вот чудесный подход...
Можно только добавить, что скажем кодировать видео на одном процессоре, а гонять параллельно какую-нибудь игрулю на втором без тормозов - вполне реальное занятие... А если в ситеме 4 процессора, или скажем 8, или больше ??
Всем удачи..
24-09-2003
Максим Субочев aka -MAXX-
Для связи с автором: форум Пирамида
Оригинал статьи - http://ss2smp.narod.ru/
Не только SkyStar2 не работает в SMP системах. На сегодняшний момент только Technotrend PCI-Budget (WinTV NOVA, SkyStar3) имеет драйвера, специально адаптированные под этот случай. Думается, что описанный выше способ поможет и другим DVB-картам освоить SMP.
Примечание: В связи со все более широким распространением технологии Hyper Threating, применяемой в процессорах Intel Pentiun IV 2,6 Ггц и выше, двупроцессорность (пусть даже и виртуальная) становится обыденным явлением. Появляются сообщения о проблемах с драйверами для других DVB-карт, например Pent@Net.
20-01-04
Комментарии? Поправки? Дополнения?
dvbnet@msk.gs.ru
