Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Delphi 7 на многопроцессорном компьютере  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 62816
DarkMaster> Советов бы было больше......

Посоветовали бы клавиатуру поменять и монитор протереть?

Posted via ActualForum NNTP Server 1.5

24 май 21, 22:20    [22326505]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
rgreat
Member

Откуда:
Сообщений: 6711
Приходит к Горбачёву министр сельского хозяйства и говорит:
- Михаил Сергеевич, у нас проблема. По всей стране пошёл куринный мор.
Все куры дохнут. Что нам делать?
- Повесте в каждом курятнике зелёный круг.

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

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

Сделали и это. Приходит министр ещё через несколько дней и говорит:
- Михаил Сергеевич, всё! Все куры в стране сдохли.
- Жаль. А у меня ещё столько новых идей осталось.
24 май 21, 22:49    [22326509]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
mayton
Member

Откуда: loopback
Сообщений: 51434
Если приложение написано так, что потоки используют какой-то порт или прерывание то
разнос их по отдельным ядрам или threads ничего не даст.
24 май 21, 22:59    [22326510]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
bk0010
Member

Откуда:
Сообщений: 5081
rgreat
Обязательно с NVidia RTX 3090, а то без рей-трейсинга многопоточность будет не полной.
В свое время говорили, что без Voodoo баланс у бухов хуже сходится.
24 май 21, 23:07    [22326511]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 874
DarkMaster

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


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

А ТС молодец, стойко держится, ни строчки секретного кода не показалю
25 май 21, 00:30    [22326519]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4654
Vizit0r
А ТС молодец, стойко держится, ни строчки секретного кода не показал
Да, достойно борется.
25 май 21, 00:32    [22326521]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
BorodaOleg
Member

Откуда:
Сообщений: 74
YuRock,

Я бы показал, да в проекте ~ 1000000 строк :)
25 май 21, 10:54    [22326621]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 27106
BorodaOleg
Я бы показал, да в проекте ~ 1000000 строк :)

И все они выполняются в разных потоках?
25 май 21, 10:58    [22326624]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
BorodaOleg
Member

Откуда:
Сообщений: 74
Вообщем всё, вопрос закрыт.
Проблема оказалась в логах - они находятся (как оказалось) в главном потоке.
В лог летит порядка 50-100 строк в секунду, все это построчно пишется на диск и это всё еще отображается в Memo, причем аж в 2 штуки. Я в шоке.
25 май 21, 11:00    [22326628]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
BorodaOleg
Member

Откуда:
Сообщений: 74
wadman
BorodaOleg
Я бы показал, да в проекте ~ 1000000 строк :)

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


Не понял...
25 май 21, 11:01    [22326630]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 27106
У "взрослых" лог ведется в отдельным потоке и затраты на него - лишь на отправку сообщения, либо помещение сообщения в свою очередь.
25 май 21, 11:02    [22326631]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32405

25.05.2021 11:02, wadman пишет:
> У "взрослых" лог ведется в отдельным потоке и затраты на него - лишь на отправку сообщения, либо помещение сообщения в свою очередь.

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

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

Posted via ActualForum NNTP Server 1.5

25 май 21, 11:15    [22326644]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
mayton
Member

Откуда: loopback
Сообщений: 51434
BorodaOleg
Вообщем всё, вопрос закрыт.
Проблема оказалась в логах - они находятся (как оказалось) в главном потоке.
В лог летит порядка 50-100 строк в секунду, все это построчно пишется на диск и это всё еще отображается в Memo, причем аж в 2 штуки. Я в шоке.

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

Сделай буферизацию и всё будет очень быстро. В идеале должно быть 2 потока. 1 - ресивер событий. 2 - врайтер в дисковую систему.
Между ними - кольцевой буфер.
25 май 21, 11:25    [22326652]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32405

25.05.2021 11:25, mayton пишет:
> В идеале должно быть 2 потока. 1 - ресивер событий. 2 - врайтер в дисковую систему.
> Между ними - кольцевой буфер.

папа, а ты сейчас с кем разговаривал? (С)

Posted via ActualForum NNTP Server 1.5

25 май 21, 11:27    [22326655]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
mayton
Member

Откуда: loopback
Сообщений: 51434
Или использовать готовый буферизированный fileWriter если такой есть в Delphi.
25 май 21, 11:29    [22326658]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12901
DmSer
Нужно обязательно буферизовать данные перед записью в лог-файл. Т.е. не писать в лог-файл каждую строку отдельно, а сначала соединить все строки, которые требуется записать, и сохранить их в лог одним действием.
Совет так себе. Можно потерять часть лога при падении программы. У меня логгер пишет сразу, но живет в отдельном потоке. Правда хендл файла я открываю только один раз, а не на каждую запись. Так что ОС может что-то буферизировать сама

Сообщение было отредактировано: 25 май 21, 11:37
25 май 21, 11:42    [22326673]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
mayton
Member

Откуда: loopback
Сообщений: 51434
В борьбе за перформанс должен быть какой-то компромисс. Возможно лучше потерять пару десятков TRACE-событий
чем иметь просто тормознутое приложение.

Кстати что в логах? Насколько оно важно?
25 май 21, 11:50    [22326679]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 1376
_Vasilisk_
DmSer
Нужно обязательно буферизовать данные перед записью в лог-файл. Т.е. не писать в лог-файл каждую строку отдельно, а сначала соединить все строки, которые требуется записать, и сохранить их в лог одним действием.
Совет так себе. Можно потерять часть лога при падении программы


Глупости! При построчной записи вероятность потерять часть лога при падении программы на порядки выше, чем при записи подготовленного буфера. Сейчас очень популярны безкэшевые SSD-шники. На них запись выполняется ооочень долго. Если писать по одной строчке, то эти строчки будут копиться в ОЗУ гораздо быстрее, чем они будут записываться в лог-файл. И точно часть данных потеряется при падении программы!
25 май 21, 11:54    [22326682]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
wadman
Member

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

Ничего себе!

Не знаю, не сталкивался. А у меня в лог бывает и поболее потоков пишет и куда больше строчек.
25 май 21, 11:54    [22326683]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 1376
Посмотрите как реализован простейший логгер (с комментариями)
https://github.com/loginov-dmitry/multithread/blob/master/multithread_in_delphi_for_beginners.md#sync_obj_event_logger
там нет ничего лишнего. Кто угодно может адаптировать под себя.
25 май 21, 12:12    [22326692]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 4654
wadman
mayton
Лог в одном потоке - это не проблема. Проблема в том что он не буферизируется. И на каждые 100 строк в секунду
формируется блокирование файловой системой (возможно это ожидание sync())

Ничего себе!

Не знаю, не сталкивался. А у меня в лог бывает и поболее потоков пишет и куда больше строчек.
Зависит от винта. У меня неоднократно бывало, что логи не успевали писаться
И всё заканчивалось переполнением очереди и/или OOM.
Помогла буфферизация и сброс в файл по таймауту (каждые 10 миллисекунд пишется то, что накопилось). Да, с таким подходом может что-то потеряться теоретически, да ну и хрен с ним.
25 май 21, 12:15    [22326694]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
BorodaOleg
Member

Откуда:
Сообщений: 74
wadman,

Вот и я сейчас так делаю
Дело в том, что проект не мой, я его дорабатываю
25 май 21, 12:21    [22326703]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
BorodaOleg
Member

Откуда:
Сообщений: 74
mayton
В борьбе за перформанс должен быть какой-то компромисс. Возможно лучше потерять пару десятков TRACE-событий
чем иметь просто тормознутое приложение.

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


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

Процесс опроса электросчётчиков - если часть лога "рухнет", не страшно
25 май 21, 12:26    [22326708]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
BorodaOleg
Member

Откуда:
Сообщений: 74
DmSer
Посмотрите как реализован простейший логгер (с комментариями)
https://github.com/loginov-dmitry/multithread/blob/master/multithread_in_delphi_for_beginners.md#sync_obj_event_logger
там нет ничего лишнего. Кто угодно может адаптировать под себя.


Спасибо, как-раз собирался спросить общество как лучше буферизировать
25 май 21, 12:29    [22326711]     Ответить | Цитировать Сообщить модератору
 Re: Delphi 7 на многопроцессорном компьютере  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32405

25.05.2021 11:42, _Vasilisk_ пишет:
> Так что ОС может что-то буферизировать сама

при желании можно поиграться с FILE_FLAG_WRITE_THROUGH и FILE_FLAG_NO_BUFFERING

Posted via ActualForum NNTP Server 1.5

25 май 21, 12:52    [22326733]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Delphi Ответить