Отправляет email-рассылки с помощью сервиса Sendsay

[TC] неравномерная нагрузка на ядра цп

Всем по привету! возник такой вопрос - после проверки компа Эверестом в разных
режимах работы я обнаружил такую особенность поведения цп. Почему то возникает
постоянно неравномерная загрузка ядер процессора . К примеру первое ядро всегда
загружено минимум на 25 процентов больше чем второе . Соответственно и греется
оно на несколько градусов больше . Это собственно расходится с моими представлениями
двухъядерных процев . В моём понимании 2 ядра должны равномерно распределять
нагрузку между собой чтобы обеспечить рациональное использование ресурса процессора.
А тут возникает такая коллизия . В чём тут я не прав или это не прав мой комп
- просьба просветить в этом вопросе . Если это ненормальная ситуация как её довести
до нормального состояния . Со всем почтением Виталий

Ответить   Sun, 4 Oct 2009 15:29:20 +0300 (#914390)

 

Ответы:

Здравствуйте, Виталий,

По поводу "правильной" работы двух- и более-ядерных процессоров в
интернете уже столько копий сломано, что, наверное, нет смысла
открывать дискуссию здесь. Упомяну только несколько реперных точек для
ориентирования, и выскажу своё "общее" мнение.

Прежде всего надо размежевать операционные системы. Под вистой и
вин7 проблем с многоядерниками не должно быть. ДОС и Вин98 не
могут использовать оба ядра. Остаётся проблема с вин эн-ти; вин2000;
экс-пи и винсервер2003. В частности, для экс-пи необходимо поставить
обновление Windows XP Hotfix Patch KB896256. Это обновление точно
входит в третий сервиспак. Про второй не знаю, но если включено
автоматическое обновление, должен сам скачаться и установиться.

Далее надо разделить многоядерники Интэл и а-эм-дэ. Для
интелей нужен только указанный сервиспак. А вот для а-эм-дэ нужен
дополнительный софт -- на их сайте есть несколько утилит и драйверов.
Есть AMD Dual Core Optimazer -- это оптимизатор. Есть AMD Processor
Driver, судя по названию некий драйвер. Что, в каком порядке, и для
каких именно линеек а-эм-дэ процессоров надо ставить -- не ведаю.

Теперь несколько общих слов Многоядерник будет загружен равномерно
только если есть равномощные потоки обработки информации. Эти потоки
могут порождаться либо одной программой, например, винраром, либо
параллельно работающими программами. Если же активно работает одна
программа в один поток, то её распараллелить сам процессор или ОС не
могут, и одно ядро будет ею занято, а другое ОС нагрузит другими
программами и службами ОС. Например, Джоз, насколько я понимаю,
однопоточное приложение. Синтезатор будет грузить только одно ядро, а
если больше ничего активно не работает, то второе так и будет
простаивать. Точнее, в основном простаивать, лишь изредка выполняя
запросы системы. Но и это само по себе хорошо, потому как эти запросы
не будут отвлекать ядро с синтезатором.

--
С наилучшими пожеланиями
Владимир Лукьянов, Москва mailto:public.l***@r*****.ru

Ответить   Mon, 5 Oct 2009 11:21:03 +0400 (#914725)

 

Приветствую всех.
Владимир пишет:

См. диспетчер задач Windows... jfw.exe -- 18 потоков :)

Скорее всего, имеется в виду, что jfw -- это "однопроцессное" приложение, то
есть не порождает дочерних процессов, в отличие, например, от finereader 9 или
apache, которые создают по два процесса.
Однако процессы и потоки -- это не одно и то же.

Успехов. Анатолий.

Ответить   "i_chay" Mon, 5 Oct 2009 13:06:41 +0500 (#914763)

 

Здравствуйте, уважаемый Анатолий,

Спасибо, очень справедливое уточнение и интересная информация. А ещё
интересно: при работе джоза синтезатор работает в отдельном потоке или
в отдельном процессе? С очень постороннего взгляда :-) кажется сам
синтезатор достаточно автономен чтобы работать в отдельном процессе.
Но, возможно, управление им со стороны джоза требует его выполнения в
одном процессе? Ясно, что в любом случае, гипетрединг или два ядра
лучше чем одно для работы с джозом. Интересно другое -- 3 или 4 ядра
для обычной работы (в смысле нетребовательности к вычислительной
мощности) с джозом нужны? дают заметный выигрыш в стабильности
синтеза речи? Если джоз с синтезатором живут в одном процессе, то
логично предположить, что двух ядер для обычного пользователя должно
хватить с запасом.

Заранее спасибо.

--
С наилучшими пожеланиями
Владимир Лукьянов, Москва mailto:public.l***@r*****.ru

Ответить   Mon, 5 Oct 2009 17:58:25 +0400 (#914964)

 

Приветствую всех.
Владимир пишет:

Зависит от синтезатора, а не от JAWS.
Можно проследить цепочку на примере sapi4 или sapi5 синтезаторов.
Дело в том, что jls-драйвер работает в пространстве процесса jfw (и скорее всего,
в отдельном потоке), системные компоненты, например, sapi4 или sapi5 работают
тоже в пространстве использующего их процесса (т.е. в jfw), компоненты синтезатора,
взаимодействующие с системными компонентами sapi4 или sapi5, тоже работают в
пространстве использующего их процесса (все вышеназванное является динамически
загружаемыми библиотеками -- dll).
Как правило, на этом все заканчивается, но потенциально есть возможность с этой
точки запустить самостоятельный процесс, который и будет заниматься синтезом
речи, взаимодействуя с процессом jfw (т.е. взаимодействовать он, конечно, будет
с компонентом синтезатора, размещенным в пространстве процесса jfw).
Примером синтезатора с самостоятельным процессом является Elan Sayso/Tempo Multimedia
TTS .
Он имеет два компонента для взаимодействия с sapi4 и с sapi5 (так называемые
клиенты) и серверное приложение ettsengine.exe , работающее в самостоятельном
процессе.

Это обычная дилемма выбора модели многозадачного приложения: отдельный процесс
или поток -- что лучше?
Переключение между процессами сопровождается большими накладными расходами, что
снижает быстродействие взаимодействующих компонентов(плюс к этому механизмы межпроцессного
взаимодействия тоже не отличаются высоким быстродействием). Потоковый вариант
лишен таких недостатков, т.к. все компоненты расположены в одном адресном пространстве
и могут напрямую обращаться друг к другу (т.е. просто передавать управление на
нужный адрес).
С другой стороны, если в потоке происходит ошибка, то вышибает весь процесс (или
нужно принимать серьезные профилактические меры, чтобы избежать падения приложения).
Если же у вас два отдельных процесса, то ошибка в одном не приведет к аварийному
завершению другого (более того, оставшийся в живых может перезапустить упавший
процесс и продолжить работу).
В Windows системные компоненты sapi5 и sapi4 выполняются в пространстве использующего
их процесса, а в Linux известные мне речевые серверы реализованы как самостоятельные
процессы, с которыми скринридеры взаимодействуют либо через каналы, либо через
сокеты. (а речевые серверы уже взаимодействуют с "движками", непосредственно
выполняющими tts).

JAWS работает с синтезаторами через собственные драйверы (jls), что позволяет,
написав соответствующий драйвер, адаптировать его к любому синтезатору, независимо
от того, как он реализован (внутрипроцессно, или как внешний процесс, или вообще
находится на другом компьютере).

Успехов. Анатолий.

Ответить   "i_chay" Mon, 5 Oct 2009 20:56:16 +0500 (#915002)

 

Vande omentaina, Владимир!

Имхо, зависит от синтезатора. Мышь, например, явно не работает в
отдельном процессе, ибо она всего лишь jls-драйвер.

Ответить   "Anarendil E. M. Elensule" Mon, 5 Oct 2009 19:21:14 +0300 (#915009)