Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Многопроцессорная обработка  (Прочитано 3399 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Многопроцессорная обработка
« : 11 Августа 2009, 15:25:35 »
На сервере имеется 8 процессоров. Стоит Red Hat Enterprise Linux 5.
Замучались оптимизировать код, кажется, что уже лучше на С++ не напишешь.
Система реального времени с шагом дискретизации 5 мсек. При разрастании этой системы, оптимизировали и оптимизировали, как могли, но сейчас она разрослась до таких размеров, что оптимизировать код не удается, и шаг 5 мсек не выдерживается с требуемой точностью.
System Monitor показывает, что не все процессоры загружены. Парочка загружена под 100%, еще парочка 50%, остальные процессоры курят - 10-20%.
Я читал, что программно нельзя управлять загрузкой процессоров. Возможно существуют какие-то способы настройки системы? С приоритетами всех наших процессов баловались, помогло, но не до конца. Как заставить процессоры работать шустрее?

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #1 : 11 Августа 2009, 15:44:51 »
Ответ простой. Разгружать сильно нагруженное и нагружать слабо нагруженное.

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #2 : 11 Августа 2009, 15:58:21 »
Как это делается? Я не знаю, где это настраивается.
К тому же процессоры постоянно меняются друг с другом.

Пользователь решил продолжить мысль 11 Августа 2009, 16:32:15:
http://swd.ru/index.php3?pid=772
« Последнее редактирование: 11 Августа 2009, 16:32:15 от Tarik »

Оффлайн digiwhite

  • Активист
  • *
  • Сообщений: 732
  • http://www.welinux.ru
    • Просмотр профиля
    • http://www.welinux.ru
Re: Многопроцессорная обработка
« Ответ #3 : 11 Августа 2009, 19:16:35 »
Забавно, что у вас стоит задача, требующая выполнения за строго определенное время, а в качестве ОС выбрана ОС общего назначения. Мдя.

Планировщик в ядре пробовали изменять на более подходящий?

Библиотеки для параллельных вычислений используются?
« Последнее редактирование: 11 Августа 2009, 20:00:59 от digiwhite »
Социальная сеть не фанатично настроенных Linuxойдов - http://www.welinux.ru

Оффлайн jura12

  • Старожил
  • *
  • Сообщений: 1472
  • 24.04 lubuntu
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #4 : 11 Августа 2009, 19:33:17 »
правильно было сказано. надо ядро настраивать на реалтайм и использовать специальные библиотеки для многопроцессорной обработки. недавно новость была Компания Intel выпустила релиз Threading Building Blocks 2.2 http://www.opennet.ru/opennews/art.shtml?num=22911
сопротивление бесполезно

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #5 : 12 Августа 2009, 07:39:13 »
все что здесь напишут будет гадание на кофейной гуще... нужны инструменты для анализа.
вот что получилось нагуглить за пару минут Sun Cool Tools - Thread Analyzer, Intel Thread Checker, Intel Thread Profiler, Intel VTune Performance Analyzer
ну или что-то подобное. возможно есть инструменты котрые поставляются с библиотекой поддержки многопоточности

Вот когда будет ясна причина можно думать, как разруливать, какие библиотеки менять/не менять, по другому строить логику ну и т.п.
« Последнее редактирование: 12 Августа 2009, 07:45:52 от Yurror »

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #6 : 12 Августа 2009, 09:57:57 »
Стоят 64-разрядные процессоры Itanium, под них QNX Neutrino не пашет.

Не поверите, у нас все до недавнего времени работало замечательно, а сейчас время отстает на 5%.
При этом не трогали ядро и не использовали специальных библиотек. Похоже, что сейчас придется с этим разбираться.

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #7 : 12 Августа 2009, 10:29:27 »
Я думаю копать нужно в сторону Intel'овских компиляторов... Есть ведь специально для Itanium   Intel C++ Compiler ... попробуй на нем перекомпилировать что-нибудь небольшое, но ресурсоемкое ... и посмотри на загрузку.

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #8 : 12 Августа 2009, 11:41:55 »
Весьма заманчиво. Уже качаю. :)
Threading Building Blocks уже скачал.
Осталось все это добро с QT подружить.  :D

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #9 : 12 Августа 2009, 13:44:02 »
Осталось все это добро с QT подружить.  :D

QT вроде официально дружит с Intel  C++ compiler :) Коммерческая версия точно дружит.

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #10 : 12 Августа 2009, 18:04:48 »
Пришлось поправить немного один КуТэшный файл, в итоге компилятор скомпилил, но во время выполнения программа вылетает.
Не может найти libimf.so.6
Статическая привязка библиотеки не помогает.

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #11 : 12 Августа 2009, 18:10:20 »
Может положить библиотеку в /usr/lib и выполнить ldconf ?
На intel-овских компиляторах я, к сожалению, не работал. 

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #12 : 13 Августа 2009, 06:29:56 »
2 maximum2000
[offtop]
Может не стоит заниматься извратом и оставить библиотеку на том месте где она лежит и воспользоваться переменной LD_LIBRARY_PATH
Пути к библиотекам интовского компилятора так же можно прописать в отдельный файл (разделяя их двоеточием) и сохранить этот файл в каталоге /etc/ld.so.conf.d с любым именем и расширнием .conf например (icc-libs.conf)
[/offtop]

2 Tarik
Таки что показало профилирование?

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #13 : 13 Августа 2009, 08:30:37 »
LD_LIBRARY_PATH вчера в makefile прописывали. Может что-то не так написали. Сегодня еще будем пилить. Обязательно отпишусь.

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #14 : 13 Августа 2009, 12:17:46 »
Может не стоит заниматься извратом и оставить библиотеку на том месте где она лежит и воспользоваться переменной

Согласен, что не очень красиво ... осталась у меня дурацкая привычка от Windows :(

 

Страница сгенерирована за 0.017 секунд. Запросов: 21.