powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 7 на многопроцессорном компьютере
25 сообщений из 70, страница 1 из 3
Delphi 7 на многопроцессорном компьютере
    #40072480
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!

Имеется ли какая-либо возможность заставить многопоточное приложение, компилированное на Delphi 7 заставить работать на многопроцессорном компьютере, так, что-бы процессы работали на других ядрах, отличных от основного потока? Всего потоков - штук 60, реально работают 12 - 15. На картинке видно - загружается только 1 процессор, остальные еле-еле шевелятся. В главном окне мышь реагирует через 10-15 секунд :(
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072485
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
24.05.2021 15:42, BorodaOleg пишет:
> Имеется ли какая-либо возможность заставить многопоточное приложение, компилированное на Delphi 7 заставить работать на многопроцессорном компьютере, так, что-бы процессы работали на других ядрах, отличных от основного потока? Всего потоков - штук 60, реально работают 12 - 15. На картинке видно - загружается только 1 процессор, остальные еле-еле шевелятся. В главном окне мышь реагирует через 10-15 секунд :(

Этим занимается планировщик Винды.
Если есть непреодолимое желание ему помешать, играйся с SetThreadAffinityMask()
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072486
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg,

Открой для себя потоки и TThread.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072489
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg> Имеется ли какая-либо возможность заставить
BorodaOleg> многопоточное приложение ... работать на
BorodaOleg> многопроцессорном компьютере, так, что-бы
BorodaOleg> процессы работали на других ядрах, отличных от основного потока?


Заставлять обычно нет нужды, планировщик
ОС сам знает какой поток когда и куда кинуть.

См. в коде, есть ли привязка к процессору
(ну и может у тебя реально вся работа в
основном потоке делается, а остальные ждут).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072494
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в одном приложении куча потоков, которые занимаются вычислениями, то лучше поставить им приоритет Lower, тогда главный поток программы не будет подвисать. При этом приоритет Lower никак не будет мешать ходу вычислений (при таком количестве ядер).

И желательно до минимума сократить работу с динамическими массивами, строками, как можно реже создавать/уничтожать объекты, вызывать GetMem, FreeMem.

Или подключить многопоточный менеджер памяти, например tcMalloc (не знаю, как он прицепится к Delphi 7).
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072498
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg,

Ищи Synchronize, Люк!
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072499
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg

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

Нельзя.
Это делает операционная система.
В теории, можно спуститься на более низкий уровень, но это не правильный путь.

BorodaOleg

Всего потоков - штук 60, реально работают 12 - 15. На картинке видно - загружается только 1 процессор

Значит они реально не работают и написаны очень плохо.
Напиши лабу с TStuppidThread и создай 10 потоков.
Код: pascal
1.
2.
3.
4.
procedure TStuppidThread.Execute;
begin
  while not Terminated do;
end;
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072502
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_B
Значит они реально не работают и написаны очень плохо.

Ну я так и сказал, что человеку надо открыть для себя потоки. ;)

Скриншот таск мэнеджера об этом говорит вполне очевидно.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072506
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Юмористы, млин :)

Synchronize нет, все делается через CriticalSection, TThreadList, Semaphore и пр.

В потоках - коннект с COM/GSM/GPRS соединениями, несложная обработка (расшифровка HEX последовательностей от 15 до 1000 байт) и запись в БД firebird.
Отдельным потоком лог - тут понятно, жрет не мелко.

Если бы винда нормально распределила было бы как минимум 3 потока с "запредельными" нагрузками - Основной поток, лог и FB - сейчас только один и загружен по шею.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072509
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BorodaOleg

В потоках - коннект с COM/GSM/GPRS соединениями, несложная обработка (расшифровка HEX последовательностей от 15 до 1000 байт) и запись в БД firebird.
Отдельным потоком лог - тут понятно, жрет не мелко.

А чему тут жрать-то? Если загрузки нет, ищи блокировки главного потока
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072510
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
24.05.2021 16:38, BorodaOleg пишет:
> и запись в БД firebird.

какой коннект?
какой протокол?
сколько коннектов у процесса?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072511
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg,

Проблема не в винде а в твоем коде.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072514
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg
Если бы винда нормально распределила
Некорректное высказывание. Корректное "Если бы программа была написана правильно"
BorodaOleg
сейчас только один и загружен по шею.
Значит остальные потоки его ждут. И судя по
BorodaOleg
В главном окне мышь реагирует через 10-15 секунд :(
ищите таки Synchronize. У вас главный поток чем-то сильно загружен
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072515
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При создании каждого потока пишите в лог ThreadId и название класса объекта-потока. Потом откройте ProcessExplorer, откройте для Вашего процесса список потоков и смотрите на загрузку. По ID потока сможете определить, что это за поток и отдельно исследовать, почему он так грузит процессор.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072517
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОтдельным потоком лог - тут понятно, жрет не мелко.

Нужно обязательно буферизовать данные перед записью в лог-файл. Т.е. не писать в лог-файл каждую строку отдельно, а сначала соединить все строки, которые требуется записать, и сохранить их в лог одним действием.
У меня в программе очень большой объем записи в лог, но я не могу сказать, что в этом месте есть какая-то проблема с производительностью.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072523
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Битва экстрасенсов, мля...
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072524
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmSer,

Спасибо за совет. ThreadId и ThreadHandle собираю в TList уже давно, не думал что они совпадают c системными.
А с логом точно что-то делать нужно, и да, пишется он по 1 строчке
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072527
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ThreadId - глобальный,
ThreadHandle - у каждого процесса независимая нумерация хэндлов.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072528
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg
Если бы винда нормально распределила было бы как минимум 3 потока с "запредельными" нагрузками - Основной поток, лог и FB - сейчас только один и загружен по шею.
Ну, чтож.. Переустанови винду, раз она плохо потоки менеджерит. Я бы так и сделал, будь у меня такие проблемы!
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072530
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
BorodaOleg
Если бы винда нормально распределила было бы как минимум 3 потока с "запредельными" нагрузками - Основной поток, лог и FB - сейчас только один и загружен по шею.
Ну, чтож.. Переустанови винду, раз она плохо потоки менеджерит. Я бы так и сделал, будь у меня такие проблемы!


Попахивает "вредными советами" от Остера :)
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072535
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster
YuRock
пропущено...
Ну, чтож.. Переустанови винду, раз она плохо потоки менеджерит. Я бы так и сделал, будь у меня такие проблемы!

Попахивает "вредными советами" от Остера :)
Какие утверждения/предположения - такие и советы :)
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072541
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Ну, чтож.. Переустанови винду, раз она плохо потоки менеджерит. Я бы так и сделал, будь у меня такие проблемы!
Может быть конфликт винды и железа.
Надо еще железо новое купить.

Обязательно с NVidia RTX 3090, а то без рей-трейсинга многопоточность будет не полной.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072542
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
24.05.2021 17:53, rgreat пишет:
>
> Обязательно с NVidia RTX 3090, а то без рей-трейсинга многопоточность будет не полной.

кстати, да!
поддерживаю.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072545
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg,

Если нет Synchronize, то надо выяснить на чем тормозит главный поток: жми паузу (Run\Program Pause) и изучай стек главного и прочих потоков (View\Debug Windows\Threads)

и возможно там увидешь скрытый Synchronize! от какого нить комопнента с свойством RunEventInMainThread
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072552
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий

24.05.2021 17:53, rgreat пишет:
>
> Обязательно с NVidia RTX 3090, а то без рей-трейсинга многопоточность будет не полной.

кстати, да!
поддерживаю.


Эх... Жаль у него D7, а не Лазарь + Дельфя :( Советов бы было больше......
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 7 на многопроцессорном компьютере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]