powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 7 на многопроцессорном компьютере
70 сообщений из 70, показаны все 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
Delphi 7 на многопроцессорном компьютере
    #40072587
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster> Советов бы было больше......

Посоветовали бы клавиатуру поменять и монитор протереть?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072590
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приходит к Горбачёву министр сельского хозяйства и говорит:
- Михаил Сергеевич, у нас проблема. По всей стране пошёл куринный мор.
Все куры дохнут. Что нам делать?
- Повесте в каждом курятнике зелёный круг.

Сделали. Приходит тот же министр через несколько дней и говорит:
- Михаил Сергеевич, всё равно куры продолжают дохнуть. Что нам делать?
- Добавте в зелёный круг красный квадрат.

Сделали. Опят приходит министр через несколько дней и говорит:
- Не помогает, куры как дохли, так и дохнут. Что делать?
- Раскрасте красный квадрат в белый горошек.

Сделали и это. Приходит министр ещё через несколько дней и говорит:
- Михаил Сергеевич, всё! Все куры в стране сдохли.
- Жаль. А у меня ещё столько новых идей осталось.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072591
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если приложение написано так, что потоки используют какой-то порт или прерывание то
разнос их по отдельным ядрам или threads ничего не даст.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072592
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Обязательно с NVidia RTX 3090, а то без рей-трейсинга многопоточность будет не полной.
В свое время говорили, что без Voodoo баланс у бухов хуже сходится.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072597
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster

Эх... Жаль у него D7, а не Лазарь + Дельфя :( Советов бы было больше......


да и так тут филиал гадальной комнаты неплохо работает.

А ТС молодец, стойко держится, ни строчки секретного кода не показалю
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072599
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r
А ТС молодец, стойко держится, ни строчки секретного кода не показал
Да, достойно борется.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072643
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock,

Я бы показал, да в проекте ~ 1000000 строк :)
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072644
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg
Я бы показал, да в проекте ~ 1000000 строк :)

И все они выполняются в разных потоках?
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072646
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем всё, вопрос закрыт.
Проблема оказалась в логах - они находятся (как оказалось) в главном потоке.
В лог летит порядка 50-100 строк в секунду, все это построчно пишется на диск и это всё еще отображается в Memo, причем аж в 2 штуки. Я в шоке.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072647
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman
BorodaOleg
Я бы показал, да в проекте ~ 1000000 строк :)

И все они выполняются в разных потоках?


Не понял...
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072648
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У "взрослых" лог ведется в отдельным потоке и затраты на него - лишь на отправку сообщения, либо помещение сообщения в свою очередь.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072656
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.05.2021 11:02, wadman пишет:
> У "взрослых" лог ведется в отдельным потоке и затраты на него - лишь на отправку сообщения, либо помещение сообщения в свою очередь.

ты чо! оно же потеряется!!! (С)

зы: реально встречал такую аргументацию

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072660
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg
Вообщем всё, вопрос закрыт.
Проблема оказалась в логах - они находятся (как оказалось) в главном потоке.
В лог летит порядка 50-100 строк в секунду, все это построчно пишется на диск и это всё еще отображается в Memo, причем аж в 2 штуки. Я в шоке.

Лог в одном потоке - это не проблема. Проблема в том что он не буферизируется. И на каждые 100 строк в секунду
формируется блокирование файловой системой (возможно это ожидание sync())

Сделай буферизацию и всё будет очень быстро. В идеале должно быть 2 потока. 1 - ресивер событий. 2 - врайтер в дисковую систему.
Между ними - кольцевой буфер.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072661
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.05.2021 11:25, mayton пишет:
> В идеале должно быть 2 потока. 1 - ресивер событий. 2 - врайтер в дисковую систему.
> Между ними - кольцевой буфер.

папа, а ты сейчас с кем разговаривал? (С)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072663
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или использовать готовый буферизированный fileWriter если такой есть в Delphi.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072671
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSer
Нужно обязательно буферизовать данные перед записью в лог-файл. Т.е. не писать в лог-файл каждую строку отдельно, а сначала соединить все строки, которые требуется записать, и сохранить их в лог одним действием.
Совет так себе. Можно потерять часть лога при падении программы. У меня логгер пишет сразу, но живет в отдельном потоке. Правда хендл файла я открываю только один раз, а не на каждую запись. Так что ОС может что-то буферизировать сама
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072676
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В борьбе за перформанс должен быть какой-то компромисс. Возможно лучше потерять пару десятков TRACE-событий
чем иметь просто тормознутое приложение.

Кстати что в логах? Насколько оно важно?
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072678
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
DmSer
Нужно обязательно буферизовать данные перед записью в лог-файл. Т.е. не писать в лог-файл каждую строку отдельно, а сначала соединить все строки, которые требуется записать, и сохранить их в лог одним действием.
Совет так себе. Можно потерять часть лога при падении программы


Глупости! При построчной записи вероятность потерять часть лога при падении программы на порядки выше, чем при записи подготовленного буфера. Сейчас очень популярны безкэшевые SSD-шники. На них запись выполняется ооочень долго. Если писать по одной строчке, то эти строчки будут копиться в ОЗУ гораздо быстрее, чем они будут записываться в лог-файл. И точно часть данных потеряется при падении программы!
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072679
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Лог в одном потоке - это не проблема. Проблема в том что он не буферизируется. И на каждые 100 строк в секунду
формируется блокирование файловой системой (возможно это ожидание sync())

Ничего себе!

Не знаю, не сталкивался. А у меня в лог бывает и поболее потоков пишет и куда больше строчек.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072687
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите как реализован простейший логгер (с комментариями)
https://github.com/loginov-dmitry/multithread/blob/master/multithread_in_delphi_for_beginners.md#sync_obj_event_logger
там нет ничего лишнего. Кто угодно может адаптировать под себя.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072688
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
mayton
Лог в одном потоке - это не проблема. Проблема в том что он не буферизируется. И на каждые 100 строк в секунду
формируется блокирование файловой системой (возможно это ожидание sync())

Ничего себе!

Не знаю, не сталкивался. А у меня в лог бывает и поболее потоков пишет и куда больше строчек.
Зависит от винта. У меня неоднократно бывало, что логи не успевали писаться
И всё заканчивалось переполнением очереди и/или OOM.
Помогла буфферизация и сброс в файл по таймауту (каждые 10 миллисекунд пишется то, что накопилось). Да, с таким подходом может что-то потеряться теоретически, да ну и хрен с ним.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072694
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

Вот и я сейчас так делаю
Дело в том, что проект не мой, я его дорабатываю
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072695
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
В борьбе за перформанс должен быть какой-то компромисс. Возможно лучше потерять пару десятков TRACE-событий
чем иметь просто тормознутое приложение.

Кстати что в логах? Насколько оно важно?


"-Выходи в окно
- Э, дарагой так 3-й этаж
- Хочешь интернет - выходи
- Э, дарагой мне настолько интернет не нужен"

Процесс опроса электросчётчиков - если часть лога "рухнет", не страшно
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072698
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmSer
Посмотрите как реализован простейший логгер (с комментариями)
https://github.com/loginov-dmitry/multithread/blob/master/multithread_in_delphi_for_beginners.md#sync_obj_event_logger
там нет ничего лишнего. Кто угодно может адаптировать под себя.


Спасибо, как-раз собирался спросить общество как лучше буферизировать
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072706
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.05.2021 11:42, _Vasilisk_ пишет:
> Так что ОС может что-то буферизировать сама

при желании можно поиграться с FILE_FLAG_WRITE_THROUGH и FILE_FLAG_NO_BUFFERING
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072712
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg
mayton
В борьбе за перформанс должен быть какой-то компромисс. Возможно лучше потерять пару десятков TRACE-событий
чем иметь просто тормознутое приложение.

Кстати что в логах? Насколько оно важно?


"-Выходи в окно
- Э, дарагой так 3-й этаж
- Хочешь интернет - выходи
- Э, дарагой мне настолько интернет не нужен"

Процесс опроса электросчётчиков - если часть лога "рухнет", не страшно

Пишет в 1 файл или в несколько?
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072758
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищи, возвращаемся от обсуждения Delphi7 и личностей участников к обсуждению сабжа.

Спасибо.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072810
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
BorodaOleg
пропущено...


"-Выходи в окно
- Э, дарагой так 3-й этаж
- Хочешь интернет - выходи
- Э, дарагой мне настолько интернет не нужен"

Процесс опроса электросчётчиков - если часть лога "рухнет", не страшно

Пишет в 1 файл или в несколько?


В 1 файл.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072811
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
25.05.2021 17:01, BorodaOleg пишет:
> В 1 файл.

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

Пишет в 1 файл или в несколько?


В 1 файл.

А записи - текстовые или двоичные?
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072904
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg
и это всё еще отображается в Memo, причем аж в 2 штуки.

Вот тут-то и была ВСЯ засада )))
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072931
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747
BorodaOleg
и это всё еще отображается в Memo, причем аж в 2 штуки.

Вот тут-то и была ВСЯ засада )))

Хоть в десять. Я логгер писал в расчете на каждый девайс один мемо и на все девайсы один файл.
Ну нет проблем. Целероны 10-летней давности справлялись с 24, 48 и более девайсами, для которым плюс минус 100 мс критично для закрытия сессии.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072958
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
Cobalt747
пропущено...

Вот тут-то и была ВСЯ засада )))

Хоть в десять. Я логгер писал в расчете на каждый девайс один мемо и на все девайсы один файл.
Ну нет проблем. Целероны 10-летней давности справлялись с 24, 48 и более девайсами, для которым плюс минус 100 мс критично для закрытия сессии.


формируешь сообщения в пул, потом его по таймеру закидываешь в мемо?
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072972
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
BorodaOleg
пропущено...


В 1 файл.

А записи - текстовые или двоичные?


Текстовые
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072973
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747
BorodaOleg
и это всё еще отображается в Memo, причем аж в 2 штуки.

Вот тут-то и была ВСЯ засада )))


Не вся, после того как одно мемо прибил - тормоза остались. Не такие, конечно, но есть
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40072994
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется тема данного топика неразрывно связана с конфигурацией железа и ОС того сервера где работает
приложение по сбору сведений со счетчиков.

Если мы исчерпали возможности софта - (сорян я не спец в Delphi и не знаю какие компоненты делают
буферизированный вывод и где политики sync, через время или через переполнение буфера - хз)
- то предлагаю посмотреть на дисковую подсистему в части свойств дисков.

Вот как тут пишут https://winaero.com/disk-write-caching-windows-10/
и для соответсвующей версии сервера (может там 2003-2008).
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40073008
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r
wadman
пропущено...

Хоть в десять. Я логгер писал в расчете на каждый девайс один мемо и на все девайсы один файл.
Ну нет проблем. Целероны 10-летней давности справлялись с 24, 48 и более девайсами, для которым плюс минус 100 мс критично для закрытия сессии.


формируешь сообщения в пул, потом его по таймеру закидываешь в мемо?

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


Можно попробовать завернуть запись в мемо в конструкцию типа
Код: pascal
1.
2.
3.
Memo1.Lines.BeginUpdate;
// Что-то тут синхронизируем с мемо
Memo1.Lines.EndUpdate;


А еще лучше его вообще выкинуть. Очень оно тормозное, особенно на больших объемах данных. Как еще один вариант - просто ограничить число выводимых в мемо строк.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40073031
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, нужны ли эти строки в Мемо? Кому они там потребовались?
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40073033
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
26.05.2021 11:22, DmSer пишет:
> А вообще, нужны ли эти строки в Мемо? Кому они там потребовались?

а чтоб видно было, что программа РАБОТАЕТ!

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

Вот тут-то и была ВСЯ засада )))


Не вся, после того как одно мемо прибил - тормоза остались. Не такие, конечно, но есть
Прибей второе и проверь.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40073103
BorodaOleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перенес запись лога в поток. Скорости заметно прибавило.
Сделал возможность закрывать Memo, при его закрытии программа начинает работать почти как нужно, чуть-чуть подтормаживает.
Но сообщения нужны, они и адресацию, и ошибки выводят, чтобы пользователь ориентироваться мог. Можно, разве что, попытаться уменьшить их количество при выводе на экран, только писать в файл.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40073107
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOleg
чуть-чуть подтормаживает.
А не должна.
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40073110
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BorodaOlegСделал возможность закрывать Memo

Memo - крайне неудачный компонент для лога. Используй ListBox в виртуальном режиме.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Delphi 7 на многопроцессорном компьютере
    #40073148
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
BorodaOlegСделал возможность закрывать Memo

Memo - крайне неудачный компонент для лога. Используй ListBox в виртуальном режиме.+1
...
Рейтинг: 0 / 0
70 сообщений из 70, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 7 на многопроцессорном компьютере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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