URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 75518
[ Назад ]

Исходное сообщение
"Нужна помощь, пожалуйста"

Отправлено lot , 03-Авг-07 15:42 
Уважаемые гуру, есть проблема распаралеливания ресурсов процессора Core 2 Duo. Использую Debian. С помощью ImageMagick собираю из 3 изображений одно и вот проблема - сумма загрузки обоих ядер не превышает 100% (либо 100% на одном ядре, либо типа 20 на 80 на обоих) Всю инфу о загрузке проца получил командой top (1). И вот вопрос - могу ли я к.л. способом загрузить процессор на 100(200)% т.е. распаралелить процесс? Пробывал nice, не помогло. Заранее спасибо.    


Содержание

Сообщения в этом обсуждении
"Нужна помощь, пожалуйста"
Отправлено бусик , 03-Авг-07 16:53 
>Уважаемые гуру, есть проблема распаралеливания ресурсов процессора Core 2 Duo. Использую Debian.
>С помощью ImageMagick собираю из 3 изображений одно и вот проблема
>- сумма загрузки обоих ядер не превышает 100% (либо 100% на
>одном ядре, либо типа 20 на 80 на обоих) Всю инфу
>о загрузке проца получил командой top (1). И вот вопрос -
>могу ли я к.л. способом загрузить процессор на 100(200)% т.е. распаралелить
>процесс? Пробывал nice, не помогло. Заранее спасибо.

SMP?


"Нужна помощь, пожалуйста"
Отправлено lot , 03-Авг-07 19:45 
>>Уважаемые гуру, есть проблема распаралеливания ресурсов процессора Core 2 Duo. Использую Debian.
>>С помощью ImageMagick собираю из 3 изображений одно и вот проблема
>>- сумма загрузки обоих ядер не превышает 100% (либо 100% на
>>одном ядре, либо типа 20 на 80 на обоих) Всю инфу
>>о загрузке проца получил командой top (1). И вот вопрос -
>>могу ли я к.л. способом загрузить процессор на 100(200)% т.е. распаралелить
>>процесс? Пробывал nice, не помогло. Заранее спасибо.
>
>SMP?

Да, конечно. Ядро 2.6.18-4-686 #1 SMP


"Нужна помощь, пожалуйста"
Отправлено anonymous , 03-Авг-07 21:48 
>>SMP?
>
>Да, конечно. Ядро 2.6.18-4-686 #1 SMP

Ещё нужно чтобы сама программа была многопоточной.  Один поток выполняется только на одном  логическом процессоре.  Соответственно, если программа работает в один поток -- то быстродействие можно увеличить лишь увеличив частоту/кеш процессора.


"Нужна помощь, пожалуйста"
Отправлено lot , 06-Авг-07 13:54 
>>>SMP?
>>
>>Да, конечно. Ядро 2.6.18-4-686 #1 SMP
>
>Ещё нужно чтобы сама программа была многопоточной.  Один поток выполняется только
>на одном  логическом процессоре.  Соответственно, если программа работает в
>один поток -- то быстродействие можно увеличить лишь увеличив частоту/кеш процессора.
>

Тогда как всё происходит в винде? Ведь она распределяет один поток на два и более ядер!
Я прводил тесты с этим же ImageMagick, только дистрибутив под винду соответственно.
На сервере стоит 2 двухголовых проца и когда запускаешь процесс конвертации, он распределяется на 2 ядра двух процессоров. И время конвертации сокращается в двое.
Только вот одна проблема - ImageMagick под винду не делает того, что он делает под линухом - не рисует и не наносит примитивы и текст.
И еще один вопрос. Как я могу shell заставить работать в два потока? Я понимаю, что это достаточно пространный вопрос, но всё же.
Заранее благодарен за ответ и спасибо за помощь.


"Нужна помощь, пожалуйста"
Отправлено vic , 06-Авг-07 15:01 
>
>Тогда как всё происходит в винде? Ведь она распределяет один поток на
>два и более ядер!

нет, нельзя один поток раскидать по ядрам=)
раскидываются потоки по ядрам, один поток на одно ядро, другой на другое.

>Я прводил тесты с этим же ImageMagick, только дистрибутив под винду соответственно.
>
>На сервере стоит 2 двухголовых проца и когда запускаешь процесс конвертации, он
>распределяется на 2 ядра двух процессоров. И время конвертации сокращается в
>двое.

Многопоточное приложение потому что. Поэтому ядро винды может разбросать потоки по процам.
А вот та же конвертация imageMagick под линух может так написана что юзает один поток в принципе. И вообще распределением на процессоры занимается kernel, в принципе есть API для принудительного распределения, но это редко используется т.к. не есть гуд для многопользовательской системы. т.к. существуют и другие приложения и их обделять нельзя.

>Только вот одна проблема - ImageMagick под винду не делает того, что
>он делает под линухом - не рисует и не наносит примитивы
>и текст.
>И еще один вопрос. Как я могу shell заставить работать в два
>потока? Я понимаю, что это достаточно пространный вопрос, но всё же.

Никак, если он сам того не захочет, а если захочет то сам создаст свои потоки, а kernel раскидает как ему удобней. Или речь про необходимость что-то запустить в фоне? В шелле для запуска процесса в фоне после команды ставиться символ &.

Подозреваю что есть недопонимание с понятиями процесс и поток и их соотношением с логическими и физическими процессорами. К тому же потоки бывают user space и kernel space :)


"Нужна помощь, пожалуйста"
Отправлено lot , 06-Авг-07 15:55 
>[оверквотинг удален]
>>потока? Я понимаю, что это достаточно пространный вопрос, но всё же.
>
>Никак, если он сам того не захочет, а если захочет то сам
>создаст свои потоки, а kernel раскидает как ему удобней. Или речь
>про необходимость что-то запустить в фоне? В шелле для запуска процесса
>в фоне после команды ставиться символ &.
>
>Подозреваю что есть недопонимание с понятиями процесс и поток и их соотношением
>с логическими и физическими процессорами. К тому же потоки бывают user
>space и kernel space :)

Спасибо за ответ!! Кстати, не я один ищу ответ на этот вопрос. На сайте ImageMagick есть подобные вопросы, но пока ответа я не нашёл :)


"Нужна помощь, пожалуйста"
Отправлено lot , 06-Авг-07 15:59 
>[оверквотинг удален]
>>про необходимость что-то запустить в фоне? В шелле для запуска процесса
>>в фоне после команды ставиться символ &.
>>
>>Подозреваю что есть недопонимание с понятиями процесс и поток и их соотношением
>>с логическими и физическими процессорами. К тому же потоки бывают user
>>space и kernel space :)
>
>Спасибо за ответ!! Кстати, не я один ищу ответ на этот вопрос.
>На сайте ImageMagick есть подобные вопросы, но пока ответа я не
>нашёл :)

Да, и ещё. Где мне взять этот API под линух и как мне с ним работать?
Спасибо.


"Нужна помощь, пожалуйста"
Отправлено vic , 06-Авг-07 16:36 
>[оверквотинг удален]
>>>Подозреваю что есть недопонимание с понятиями процесс и поток и их соотношением
>>>с логическими и физическими процессорами. К тому же потоки бывают user
>>>space и kernel space :)
>>
>>Спасибо за ответ!! Кстати, не я один ищу ответ на этот вопрос.
>>На сайте ImageMagick есть подобные вопросы, но пока ответа я не
>>нашёл :)
>
>Да, и ещё. Где мне взять этот API под линух и как
>мне с ним работать?

API это программный интерфейс, в данном случае набор системных вызовов ядра для управления распределением потоков между процессорами. Желаете переписать конвертер? :)


"Нужна помощь, пожалуйста"
Отправлено lot , 07-Авг-07 17:08 
>[оверквотинг удален]
>>>
>>>Спасибо за ответ!! Кстати, не я один ищу ответ на этот вопрос.
>>>На сайте ImageMagick есть подобные вопросы, но пока ответа я не
>>>нашёл :)
>>
>>Да, и ещё. Где мне взять этот API под линух и как
>>мне с ним работать?
>
>API это программный интерфейс, в данном случае набор системных вызовов ядра для
>управления распределением потоков между процессорами. Желаете переписать конвертер? :)

После кропотливой работы нашлось решение проблемы. Компиляция исходников (gcc) и производительность выросла в 2 раза. Однако это ещё не предел. Возможен вариант компиляции с помощью компилятора Intel C++, он заточен под SMP. Будем пробывать. :)


"Нужна помощь, пожалуйста"
Отправлено vic , 07-Авг-07 17:14 
>[оверквотинг удален]
>>>Да, и ещё. Где мне взять этот API под линух и как
>>>мне с ним работать?
>>
>>API это программный интерфейс, в данном случае набор системных вызовов ядра для
>>управления распределением потоков между процессорами. Желаете переписать конвертер? :)
>
>После кропотливой работы нашлось решение проблемы. Компиляция исходников (gcc) и производительность выросла
>в 2 раза. Однако это ещё не предел. Возможен вариант компиляции
>с помощью компилятора Intel C++, он заточен под SMP. Будем пробывать.
>:)

А что оптимизация ваще отключена что ли была? Раз 2х кратное улучшение?
Думается что Intel C++ еще 10% может и выдаст.. Интересно чем думали писатели конвертера если он так у них тупит :)


"Нужна помощь, пожалуйста"
Отправлено lot , 07-Авг-07 20:02 
>[оверквотинг удален]
>>
>>После кропотливой работы нашлось решение проблемы. Компиляция исходников (gcc) и производительность выросла
>>в 2 раза. Однако это ещё не предел. Возможен вариант компиляции
>>с помощью компилятора Intel C++, он заточен под SMP. Будем пробывать.
>>:)
>
>А что оптимизация ваще отключена что ли была? Раз 2х кратное улучшение?
>
>Думается что Intel C++ еще 10% может и выдаст.. Интересно чем думали
>писатели конвертера если он так у них тупит :)

Я ставил бинарники IM из пакета debian 4.X.X А когда скачал и скомпилил версию с сайта, то у меня получился такой результат. Я не знаю была ли включена оптимизация, но факт остаётся фактом.