об использовании ресурсов процессора
От: Ejik123  
Дата: 31.03.07 22:58
Оценка:
здравствуйте!
столкнулся с такой интересной проблеммой. пишу программу для обработки данных которая будет крутиться на серваке с 2*Xeon работает достаточно шустро но вот даже в моменты максимальной загрузки т.е. когда прога выполняет самые сложные вычисления загружается только обно ядро процессора
а это может в дальнейшем сказаться на производительности.
я почемуто раньше всегда думал что за распределение ресурсов отвечает ОС но как выяснилось был неправ.
может кто нить сталкивался с подобной проблеммой?
помогите очень жду ваших советов
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: об использовании ресурсов процессора
От: wellwell Австралия https://www.softperfect.com
Дата: 01.04.07 01:32
Оценка:
"Ejik123" <46212@users.rsdn.ru> wrote in message news:2427273@news.rsdn.ru...
> помогите очень жду ваших советов

SetThreadAffinityMask
Posted via RSDN NNTP Server 2.0
Re[2]: об использовании ресурсов процессора
От: Ejik123  
Дата: 01.04.07 10:27
Оценка:
прошу прощения но я несного не понял что вы имееете ввиду
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: об использовании ресурсов процессора
От: wellwell Австралия https://www.softperfect.com
Дата: 01.04.07 12:08
Оценка:
"Ejik123" <46212@users.rsdn.ru> wrote in message news:2427436@news.rsdn.ru...
> прошу прощения но я несного не понял что вы имееете ввиду

Эта функция позволяет привязать нужные потоки к разным CPU (если ядра видны как отдельные процессоры).
Posted via RSDN NNTP Server 2.0
Re[4]: об использовании ресурсов процессора
От: SeLarin Россия http://selarin.livejournal.com
Дата: 01.04.07 16:45
Оценка: +2
Здравствуйте, wellwell, Вы писали:

W>Эта функция позволяет привязать нужные потоки к разным CPU (если ядра видны как отдельные процессоры).

Я думаю, что человеку рановато думать о привязке потоков к процессам… У меня сложилось впечатление, что там ещё и потоков нет…
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re: об использовании ресурсов процессора
От: SeLarin Россия http://selarin.livejournal.com
Дата: 01.04.07 16:45
Оценка:
Здравствуйте, Ejik123, Вы писали:

E>я почемуто раньше всегда думал что за распределение ресурсов отвечает ОС но как выяснилось был неправ.

Занимается, занимается. А программа-то твоя многопоточная?
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[5]: об использовании ресурсов процессора
От: Аноним  
Дата: 02.04.07 14:35
Оценка:
Здравствуйте, SeLarin, Вы писали:

SL>Здравствуйте, wellwell, Вы писали:


W>>Эта функция позволяет привязать нужные потоки к разным CPU (если ядра видны как отдельные процессоры).

SL>Я думаю, что человеку рановато думать о привязке потоков к процессам… У меня сложилось впечатление, что там ещё и потоков нет…

+1, те же ощущения
Re: об использовании ресурсов процессора
От: grom555 Беларусь  
Дата: 03.04.07 11:44
Оценка:
Здравствуйте, Ejik123, Вы писали:

E>здравствуйте!

E>столкнулся с такой интересной проблеммой. пишу программу для обработки данных которая будет крутиться на серваке с 2*Xeon работает достаточно шустро но вот даже в моменты максимальной загрузки т.е. когда прога выполняет самые сложные вычисления загружается только обно ядро процессора
E>а это может в дальнейшем сказаться на производительности.
E>я почемуто раньше всегда думал что за распределение ресурсов отвечает ОС но как выяснилось был неправ.
E>может кто нить сталкивался с подобной проблеммой?
E>помогите очень жду ваших советов

Все вычисления выдели в отдельный поток, а лучше в несколько потоков. В биосе должно быть включено HyperThreading.
Re[2]: об использовании ресурсов процессора
От: Ejik123  
Дата: 11.04.07 18:55
Оценка:
да признаюсь программа однопоточная
просто у меня раньше небыло опыта в написании столь ресурсоемких приложений и одного потока вполне хватало. а сейчас совсем другая ситуация. буду очень благодарен за любую помощь...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: об использовании ресурсов процессора
От: SeLarin Россия http://selarin.livejournal.com
Дата: 11.04.07 21:32
Оценка:
Здравствуйте, Ejik123, Вы писали:

E>да признаюсь программа однопоточная

E>просто у меня раньше небыло опыта в написании столь ресурсоемких приложений и одного потока вполне хватало. а сейчас совсем другая ситуация. буду очень благодарен за любую помощь...
Эх, как говориться знал бы прикуп, жил бы в Сочи. Я могу сказать илшь то, что используемы тобой алгоритм надо преобразовывать. Как — понятия не имею, поскольку не знаю твоего алгоритма, да и работа по распараллеливанию уже реализованных алгоритмов — то ещё удовольствие…
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[4]: об использовании ресурсов процессора
От: Ejik123  
Дата: 12.04.07 05:04
Оценка:
Здравствуйте, SeLarin, Вы писали:

SL>Эх, как говориться знал бы прикуп, жил бы в Сочи. Я могу сказать илшь то, что используемы тобой алгоритм надо преобразовывать. Как — понятия не имею, поскольку не знаю твоего алгоритма, да и работа по распараллеливанию уже реализованных алгоритмов — то ещё удовольствие…


даа очень радуют по утру такие сообщения
вся прога занимется там что берет данный из sql сервера обсчитывает их и кидает обратно в sql.
все у меня выделенно в отдельные процедуры.
а из всего вышесказанного я понял что можно как то запустить одновременно 2 процедуры. правильно??
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: об использовании ресурсов процессора
От: grom555 Беларусь  
Дата: 12.04.07 06:03
Оценка:
Здравствуйте, Ejik123, Вы писали:

E>Здравствуйте, SeLarin, Вы писали:


SL>>Эх, как говориться знал бы прикуп, жил бы в Сочи. Я могу сказать илшь то, что используемы тобой алгоритм надо преобразовывать. Как — понятия не имею, поскольку не знаю твоего алгоритма, да и работа по распараллеливанию уже реализованных алгоритмов — то ещё удовольствие…


E>даа очень радуют по утру такие сообщения

E>вся прога занимется там что берет данный из sql сервера обсчитывает их и кидает обратно в sql.
E>все у меня выделенно в отдельные процедуры.
E>а из всего вышесказанного я понял что можно как то запустить одновременно 2 процедуры. правильно??

Правильно. Попробуй почитать в хелпе про TThread.
Тебе нужно создать класс-наследник от TThread. Переопределить виртуальный метод Execute. В этом методе пиши свою процедуру общета.
Дальше есть 2 пути. Смысл в том, что когда Execute закончит выполнение, то надо будет убивать экземпляи твоего класса TMyThread и
создавать его заново, если нужно еще раз пощитать что-нить. Есть второй способ. Зацикливаешь Execute так:


procedure TMyThread.Execute;
begin
  while not Terminated do
  begin
    // ТВОЙ КОД
  end;
end;


Добавляешь в класс TThread метод типа "добавить новые данные для обсчета" скажем procedure AddNewData(//DATA//);
А в Execute добавляешь проверку "если данные не пусты, то посчитай, отправь ответ и очисти данные".

Создаешь поток — Create(true); {Если FALSE, то сразу стартанет}
Поток запускается после создания методом Resume;
Останавливается — Terminate;
Ждешь остановки — WaitFor;
Уничтожаешь экземпляр — Free;
Re[5]: об использовании ресурсов процессора
От: grom555 Беларусь  
Дата: 12.04.07 06:18
Оценка:
Здравствуйте, Ejik123, Вы писали:

E>Здравствуйте, SeLarin, Вы писали:


SL>>Эх, как говориться знал бы прикуп, жил бы в Сочи. Я могу сказать илшь то, что используемы тобой алгоритм надо преобразовывать. Как — понятия не имею, поскольку не знаю твоего алгоритма, да и работа по распараллеливанию уже реализованных алгоритмов — то ещё удовольствие…


E>даа очень радуют по утру такие сообщения

E>вся прога занимется там что берет данный из sql сервера обсчитывает их и кидает обратно в sql.
E>все у меня выделенно в отдельные процедуры.
E>а из всего вышесказанного я понял что можно как то запустить одновременно 2 процедуры. правильно??

Забыл сказать про синхронизацию. А то будут 2 потока пытаться одни данные изменить!
Пользуй критические секции. TCriticalSection

Создаешь экземпляр LockData : TCriticalSection;

Доступ к данным, которые могут одновременно изменяться из 2х и более потоков заключай в секцию


//......
  LockData.Acquire;

  // Работа с данными

  LockData.Release;
//......
Re[5]: об использовании ресурсов процессора
От: SeLarin Россия http://selarin.livejournal.com
Дата: 12.04.07 09:28
Оценка:
Здравствуйте, Ejik123, Вы писали:

E>даа очень радуют по утру такие сообщения

E>вся прога занимется там что берет данный из sql сервера обсчитывает их и кидает обратно в sql.
E>все у меня выделенно в отдельные процедуры.
E>а из всего вышесказанного я понял что можно как то запустить одновременно 2 процедуры. правильно??
Теоретически можно, главное следить за тем, чтобы не было одновременного доступа разных потоков к одному и тому же ресурсу, правильно делать блокировки, синхронизацию и т.д. и т.п. Рассказывать про многопоточное программирование вкратце… Может кто-то и возьмётся…
Re[3]: об использовании ресурсов процессора
От: Аноним  
Дата: 12.04.07 11:22
Оценка: 1 (1)
Здравствуйте, Ejik123, Вы писали:

E>да признаюсь программа однопоточная

E>просто у меня раньше небыло опыта в написании столь ресурсоемких приложений и одного потока вполне хватало. а сейчас совсем другая ситуация. буду очень благодарен за любую помощь...

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

Скорей всего тебе надо будет пересмотреть самые основы и по чути все переделать заново.
Многопоточность на шару не получается.
Re[4]: об использовании ресурсов процессора
От: FDSC Россия consp11.github.io блог
Дата: 12.04.07 12:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Скорей всего тебе надо будет пересмотреть самые основы и по чути все переделать заново.

А>Многопоточность на шару не получается.

Смотря какие там алгоритмы. Может очень просто получится, если там, например, основная нагрузка на цикл с независимыми итерациями
Re[5]: об использовании ресурсов процессора
От: Аноним  
Дата: 12.04.07 16:54
Оценка:
Здравствуйте, FDSC, Вы писали:

FDS>Здравствуйте, Аноним, Вы писали:


А>>Скорей всего тебе надо будет пересмотреть самые основы и по чути все переделать заново.

А>>Многопоточность на шару не получается.

FDS>Смотря какие там алгоритмы. Может очень просто получится, если там, например, основная нагрузка на цикл с независимыми итерациями


Ну и что?
Думаешь если просто на каждую итерацию запустить поток, то будет выигрышь?
При таком наивном подходе может быть запросто еще хуже.
На шару все равно не получится, особенно если в этом нету никакого опыта...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.