powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 7 на многопроцессорном компьютере
25 сообщений из 70, страница 2 из 3
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
25 сообщений из 70, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi 7 на многопроцессорном компьютере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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