powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Многопоточность и загрузка 8-и ядерного процессора
90 сообщений из 90, показаны все 4 страниц
Многопоточность и загрузка 8-и ядерного процессора
    #39843705
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Есть следующая ситуация:
1. Комп(i7 8 вирт. ядер; 8гб ОЗУ; ВЫНь7 х64; SSD для хранения данных; ХЕ10.2.3)
2. программа для обработки текстовых файлов в многопоточном режиме (настройка от 2 до 100 потоков)
- вызывается поток
- потоку передается путь к файлу
- поток считывает файл, изучает содержимое(есть несколько циклов ДЛЯ с большим числом итераций)
- поток принимает решение и копирует файл в другие каталоги

Результаты:
- сколько не выставляй количество потоков, все рано загрузка процессора 11-13% (всегда только 4-е ядра загружены на 25%) - это все по манагеру задач конечно
- пропорциональный рост потребляемой памяти, тут все понятно

Вопрос: как всетаки загрузить проц на все 200% ?
видимо есть какие то варианты?
или какието встроенные ограничения?

Всем ответившим по делу заранее спасибо.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843722
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

1. Много дисковой активности, всё начинает упираться в диск
2. Много операций с памятью, всё упирается в однопоточный менеджер памяти
3. Потоки манипулируют разделяемыми данными, вися на блокировках
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843749
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairвсе рано загрузка процессора 11-13%
100% / 8 ядер = ... о ужас, 12.5. То есть, программа параллельно не работает, и грузит только ОДНО ядро.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843765
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,
А если заменишь ssd на hdd - то, о ужас, загрузка процессора ещё уменьшится.
PS: И всё же, что за мода - пытаться вогнать компутер в ступор?...
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843773
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

отделить операции чтения и особенно записи от зависимости к количеству потоков, эмпирическим путем установить при каком достигается 100% загрузка очереди диска - создать свою очередь файлов, которую уже анализировать отдельными потоками, на диск же делать запись большими кусками, а не кучей мелких задач.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843774
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

еще как вариант по железу - собрать из ссд раид 0 с чередованием )
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843775
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PcrepairВопрос: как всетаки загрузить проц на все 200% ?

формально получается на все 800% )
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843776
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinеще как вариант по железу - собрать из ссд раид 0 с чередованием )
+ раид контроллер внешний с большим кешем и обратной записью ))
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843792
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairнастройка от 2 до 100 потоков
Попробуй поиграться с affinity mask.
Я грузил процессор на 100%, задействовав все ядра.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843795
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanПопробуй поиграться с affinity mask.
Я грузил процессор на 100%, задействовав все ядра. У меня в расчетной задачи грузится на 100% без игр с масками, даже антивирь эпизодически беспокоится, не вирус ли.
У автора, скорее всего, где-то бутылочное горло типа Synchronize()
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843810
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисУ меня в расчетной задачи грузится на 100% без игр с масками
Если потоков больше, чем ядер, то так или иначе ОС примерно распараллелит.
Я обычно ограничиваю по количеству ядер и в этом случае бывает всякое.
Проще ручками указать.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843819
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
насчет Synchronize() идея интересная, но нет все по прежнему

в диск ничего не упирается, если отключить запись все по прежнему

операции с памятью... если потоков 2 тогда 15 мб, если 100 тогда 0.8...1.3 гб(но без сбоев), но загрузка проца по прежнему

"программа параллельно не работает, и грузит только ОДНО ядро" вот тут не понял, распределением нагрузки ОС же заведует и при много потоках ОС должна все ресурсы отдать. и что такое "программа параллельно не работает"

"Попробуй поиграться с affinity mask" ??? а моЖет для потока выставить tpHigher, tpHighest сейчас tpNormal
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843825
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair"Попробуй поиграться с affinity mask" ??? а моЖет для потока выставить tpHigher, tpHighest сейчас tpNormal
Это из другой оперы и вряд-ли поможет.

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

а при одном потоке такая же загрузка ядра?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843833
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairнасчет Synchronize() идея интересная, но нет все по прежнему Это я как пример привел, таких проблемных мест может быть много.

Pcrepairв диск ничего не упирается, если отключить запись все по прежнему
А если отключить чтение - просто инициализровать буфер случайными байтами?


операции с памятью... если потоков 2 тогда 15 мб, если 100 тогда 0.8...1.3 гб(но без сбоев), но загрузка проца по прежнему

"программа параллельно не работает, и грузит только ОДНО ядро" вот тут не понял, распределением нагрузки ОС же заведует и при много потоках ОС должна все ресурсы отдать. и что такое "программа параллельно не работает"

"Попробуй поиграться с affinity mask" ??? а моЖет для потока выставить tpHigher, tpHighest сейчас tpNormal

[/quote]
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843835
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"А если отключить чтение - просто инициализровать буфер случайными байтами?" ну тогда обрабатывать будет нечего и ессевтвенно производительность скакнет до небес даже со случайными байтами

вообще программа анализирует тексты(строки) в частности там есть много циклов ДЛЯ и ПОВТОР в том числе сравнение может идти 1500 строк с 50000 строк. может это уже проц быстрее не тянет? или где ограничение...
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843838
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair"А если отключить чтение - просто инициализровать буфер случайными байтами?" ну тогда обрабатывать будет нечего и ессевтвенно производительность скакнет до небес даже со случайными байтами

Если так, значит именно чтение и тормозит. Логично?
У Интела есть ряд примочек для ускорения работы с дисками для пары SSD-HDD, мне в свое время это помогло разрешить похожую проблему, когда после перехода c W7 на W10 внезапно стало все работать в разы медленнее, затык был именно на дисковых операциях.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843839
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

на одном ядре попробуйте без потоков
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843842
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair"А если отключить чтение - просто инициализровать буфер случайными байтами?" ну тогда обрабатывать будет нечего и ессевтвенно производительность скакнет до небес даже со случайными байтами
а как вы вообще определили тогда что в диск не упирается?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843846
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

а какой средний размер и количество файлов?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843879
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinPcrepair,
отделить операции чтения и особенно записи от зависимости к количеству потоков, эмпирическим путем установить при каком достигается 100% загрузка очереди диска - создать свою очередь файлов, которую уже анализировать отдельными потоками, на диск же делать запись большими кусками, а не кучей мелких задач.
wolverinеще как вариант по железу - собрать из ссд раид 0 с чередованием )
wolverin+ раид контроллер внешний с большим кешем и обратной записью ))

может сначала проблему найти?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843885
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дегтярев Евгенийможет сначала проблему найти?
а я как написал?
wolverinэмпирическим путем установить при каком достигается 100% загрузка очереди диска
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843907
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairили где ограничение...

Ограничение в том, что ты всё ещё продолжаешь писать валидный, но совершенно кривой код.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843931
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolverinPcrepair, а какой средний размер и количество файлов?
файлов сотни тысяч, размер от 1000 байт до 20 мбайт. были еще от 20 до 100 мб но там уже памяти не хватает и поэтому такие файлы из обработки исключаются. да там и нет ничего полезного это дефектные данные
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843936
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

возьми уже профайлер
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843938
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolverinа как вы вообще определили тогда что в диск не упирается?
так что если отключить запись на ССД!(файла после анализа в другой каталог. и удаление его же из основного каталога) то ничего не меняется
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843943
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairфайлов сотни тысяч, размер от 1000 байт
2 года назад начали тут наши сотрудничать с одним "рукоблудом", который для неких задач управления удаленными устройствами закодил gsm/gprs модемы, все это дело управлялось через файлы на ftp, я им еще тогда сказал - пока вы там на коленке обслуживаете "пару" садоводческих товариществ - вы не упираетесь в проблему количества мелких файлов на серваке, это ущербная логика
не поверили, ну и что - теперь переделали на mysql, не так давно меня пытались убедить что надо формировать 10 тык мелких файлов, чем 1 со всеми данными )

так что открывайте хотя бы штатный системный монитор и смотрите счетчики диска - вам не зря сразу об этом написали.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843949
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дегтярев ЕвгенийPcrepair,

возьми уже профайлер

Я то возьму, но где? и что это такое?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843950
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairтак что если отключить запись на ССД!
ну видимо записи сотни тысяч не осуществляется и тут переполнение очереди записи нет, однако проблема с диском у вас никуда не делась.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843965
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairоперации с памятью... если потоков 2 тогда 15 мб, если 100 тогда 0.8...1.3 гб(но без сбоев)
Дело не в количестве потребляемой памяти, а в частоте выделения/освобождения.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39843986
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairwolverinа как вы вообще определили тогда что в диск не упирается?
так что если отключить запись на ССД!(файла после анализа в другой каталог. и удаление его же из основного каталога) то ничего не меняется У Вас с логикой совсем плохо или Вы про быстродействие без чтения просто написали не проверяя?
Запись на диск может быть асинхронной, а чтение файла целиком - нет. Удаление без корзины - операция, практически не требующая дисковой активности.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844022
Uridian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pcrepairпрограмма для обработки текстовых файлов
поток считывает файл, изучает содержимое
загрузка процессора 11-13%

По моему опыту, наиболее вероятная причина:
Kazantsev AlexeyМного операций с памятью, всё упирается в однопоточный менеджер памяти

Моя рекомендация, исключить все операции, изменяющие переменные типа string, (и другие явные/неявные операции выделения памяти, если они есть), по крайней мере из тела цикла.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844032
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UridianМоя рекомендация, исключить все операции, изменяющие переменные типа string, (и другие
явные/неявные операции выделения памяти, если они есть), по крайней мере из тела цикла.

Или использовать фиксированные буфера вместо строк.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844036
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Uridian Моя рекомендация, исключить все операции, изменяющие переменные типа string, (и другие явные/неявные операции выделения памяти, если они есть), по крайней мере из тела цикла. Прежде чем давать такие рекомендации нужно, действительно, профилирование запустить.
Маловероятно, чтобы в задаче, где не требуется постоянное реаллоцирование, тормозил именно менеджер памяти. Хотя, конечно, встречаются талантливые люди...
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844045
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисМаловероятно, чтобы в задаче, где не требуется постоянное реаллоцирование, тормозил именно менеджер памяти
IntToStr, и вот тебе пожалуйста...
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844117
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev AlexeyСоколинский БорисМаловероятно, чтобы в задаче, где не требуется постоянное реаллоцирование, тормозил именно менеджер памяти
IntToStr, и вот тебе пожалуйста...

в коде потока и вызываемых потоком функций IntToStr нет
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844118
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PcrepairKazantsev Alexeyпропущено...

IntToStr, и вот тебе пожалуйста...

в коде потока и вызываемых потоком функций IntToStr нет
Ну вот, одну интригу загубил...
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844129
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanНо код лучше не показывать, т.к. гадать намного интереснее.
+++

Дегтярев Евгенийвозьми уже профайлер
---

Не спортивно. Так будет не интересно
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844132
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PcrepairВопрос: как всетаки загрузить проц на все 200% ?запустить 8 экземпляров программы. не, ну а чо
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844136
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисМаловероятно, чтобы в задаче, где не требуется постоянное реаллоцирование, тормозил именно менеджер памяти. Хотя, конечно, встречаются талантливые людиего может быть столько неявного что ни в чем неповинный, но просто неискушенный пользователь и знать не увидит сколько на пустом казалось бы месте огребает, пока на ассемблерный код не посмотрит, либо профайлер или кто еще не подскажет
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844144
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairв коде потока и вызываемых потоком функций IntToStr нет
Ну чего в угадайку-то играть...
Простейший способ...
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
unit tracemm;

interface

threadvar

 AllocMemCount   : NativeInt;
 ReallocMemCount : NativeInt;
 FreeMemCount    : NativeInt;

implementation

var

 OldMM : TMemoryManagerEx;
 NewMM : TMemoryManagerEx;

function NewGetMem(Size : NativeInt) : Pointer;
begin

 Inc(AllocMemCount);

 Result := OldMM.GetMem(Size);

end;

function NewFreeMem(P : Pointer): Integer;
begin

 Inc(FreeMemCount);

 Result := OldMM.FreeMem(P);

end;

function NewReallocMem(P : Pointer; Size : NativeInt) : Pointer;
begin

 Inc(ReallocMemCount);

 Result := OldMM.ReallocMem(P, Size);

end;

function NewAllocMem(Size : NativeInt) : Pointer;
begin

 Inc(AllocMemCount);

 Result := OldMM.AllocMem(Size);

end;

initialization

 GetMemoryManager(OldMM);

 NewMM := OldMM;

 NewMM.GetMem     := @NewGetMem;
 NewMM.FreeMem    := @NewFreeMem;
 NewMM.ReallocMem := @NewReallocMem;
 NewMM.AllocMem   := @NewAllocMem;

 SetMemoryManager(NewMM);

finalization

 SetMemoryManager(OldMM);

end.


1. Подключаешь первым модулем в проект.
2. В потоке, в начале итерации, сохраняешь значения счётчиков: AllocMemCount, ReallocMemCount, FreeMemСount в локальные переменные.
3. В конце итерации считаешь разницу и получаешь количество обращений к менеджеру памяти.
4. ПРОФИТ.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844162
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друзья, привет! Я, конечно, отстал в больничках, но мы не сгорели, не потонули.
И разъясните, пожалуйста, почему он 200% хочет на единственной тачке?
PcrepairВопрос: как всетаки загрузить проц на все 200% ?
__________
Даже если многомашинную систему соберёт, всё равно N*100% не получит.
Будут потери на связь, диски и другую лабуду-периферию. Хоть в азоте тачки утопи.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844169
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ghost WriterPcrepairВопрос: как всетаки загрузить проц на все 200% ?запустить 8 экземпляров программы. не, ну а чо

ну в общем работает. если запустить два раза(на разные базы конечно) то загрузка проца удваивается
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844171
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GatorДрузья, привет! Я, конечно, отстал в больничках, но мы не сгорели, не потонули.
И разъясните, пожалуйста, почему он 200% хочет на единственной тачке?
PcrepairВопрос: как всетаки загрузить проц на все 200% ?
__________
Даже если многомашинную систему соберёт, всё равно N*100% не получит.
Будут потери на связь, диски и другую лабуду-периферию. Хоть в азоте тачки утопи.


сарказм же, нельзя быть таким простым
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844177
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair, нельзя продукты делать на 12% КПД
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844183
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev Alexey1. Подключаешь первым модулем в проект.
2. В потоке, в начале итерации, сохраняешь значения счётчиков: AllocMemCount, ReallocMemCount, FreeMemСount в локальные переменные.
3. В конце итерации считаешь разницу и получаешь количество обращений к менеджеру памяти.
4. ПРОФИТ.

первым модулем в проект? в манагере проекта что не заметил никакой иерархии модулей

В потоке, в начале итерации
Итерация в программировании — в широком смысле — организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя (в отличие от рекурсии)
че не там итерации в потоке просто идет вызов функций и логика в конце

в конце итерации то нет

а вообще этот код не сломает компьютер?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844186
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GatorPcrepair, нельзя продукты делать на 12% КПД

ну да ну да. для того и тему вывесил, чтоб КПД завысить
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844189
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairвообще этот код не сломает компьютер?
с таким ником наверное должно быть не страшно
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844191
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так пытаешься помочь человеку, а он идиот...
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844195
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kazantsev AlexeyВот так пытаешься помочь человеку, а он идиот...

ну значит плохо пытаешься. нет плохих учеников, но есть плохие учителя(Ц)
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844202
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairну значит плохо пытаешься. нет плохих учеников, но есть плохие учителя(Ц) Иногда для педагогического эффекта требуются розги, причем не виртуальные.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844203
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairнет плохих учеников, но есть плохие учителя(Ц)

Да, да, можешь и дальше самоутешаться этой инфантильной глупостью. Или таки включить мозг
и начать изучать как работает компьютер и программы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844222
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PcrepairKazantsev AlexeyВот так пытаешься помочь человеку, а он идиот...

ну значит плохо пытаешься. нет плохих учеников, но есть плохие учителя(Ц)
+1 000 000! Отличный девиз для неудачника.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844294
NetObserver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair
ну в общем работает. если запустить два раза(на разные базы конечно) то загрузка проца удваивается
Вот! Это показатель того, что программа написана с ошибкой в распараллеливании
потоков. Где-то есть бутылочное горлышко и потоки работают последовательно.
Проверяйте синхронизацию с основным потоком, возможно где-то неявная синхронизация, например выделение памяти или какой-то компонент.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844295
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairну значит плохо пытаешься. нет плохих учеников, но есть плохие учителя(Ц)
интересный вы человек, вам предлагают варианты - вы не делаете ничего, но уже на 3 страницу перешли )
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844315
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolverinPcrepairну значит плохо пытаешься. нет плохих учеников, но есть плохие учителя(Ц)
интересный вы человек, вам предлагают варианты - вы не делаете ничего, но уже на 3 страницу перешли )

если удалить повторы-цитаты и просто треп не по делу останется не более одной страницы

но как говориться в таких случаях "нет у меня для вас других форумов"

Вот! Это показатель того, что программа написана с ошибкой в распараллеливании

программа очень простая:
- создается поток и ему передается несколько параметров(строки и числа)
- поток через трубу читает файл с ССД диска и определяет его статус
- копирует в другой каталог
- удаляет файл в первом каталоге
число потоков от 2 до 100, загрузка проца одинакова, меняется только размер занимаемой памяти
прога уже обработала несколько сот тысяч файлов без единого сбоя (исключение)
ага!
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844323
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair- создается поток и ему передается несколько параметров(строки и числа)

Когда вы перестанете мыслить низкоуровневыми примитивами типа потока, и начнете думать более высокоуровневыми такими как ITask.
Ведь и код проще и поддержка проще.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844328
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот пример
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
procedure TForm1.Test;
const
  Src = 'e:\DelphiTest\A';
  Dst = 'e:\DelphiTest\B\';
begin
  var Closure :=
    procedure (const aFileName: string)
    begin
      TTask.Run(
        procedure
        begin
          var FileContent := TFile.ReadAllBytes(aFileName);
          TFile.WriteAllBytes(Dst + TPath.GetFileName(aFileName), FileContent);
          TFile.Delete(aFileName);
        end
      );
    end;

  var Files := TDirectory.GetFiles(Src);
  for var FileName in Files do
    Closure(FileName);
end;



Я тут совершенно не понимаю, почему процессор должен быть загружен.
Положил в папку 35 файлов по 25 мб.
Ну перенеслись они за какое-то время... процессор тут при чем?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844329
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот если добавить
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  var Closure :=
    procedure (const aFileName: string)
    begin
      TTask.Run(
        procedure
        begin
          var FileContent := TFile.ReadAllBytes(aFileName);
          // добавим чтобы нагрузить процессор
          for var ByteContent1 in FileContent do
            for var ByteContent2 in FileContent do
              if Random(10) < 5 then
                Break;

          TFile.WriteAllBytes(Dst + TPath.GetFileName(aFileName), FileContent);
          TFile.Delete(aFileName);
        end
      );
    end;



То и получим 100% на всех ядрах.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844334
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторТо и получим 100% на всех ядрах. X-Cite

это все познавательно, занимательно и очень интересно(работа с диском). но не имеет никакого отношения к загрузке проца в моем случае
но все равно спасибо
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844339
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PcrepairавторТо и получим 100% на всех ядрах. X-Cite

это все познавательно, занимательно и очень интересно(работа с диском). но не имеет никакого отношения к загрузке проца в моем случае
но все равно спасибо

автор1. Комп(i7 8 вирт. ядер; 8гб ОЗУ; ВЫНь7 х64; SSD для хранения данных; ХЕ10.2.3)

8 одновременных тасок с внутренними циклами загрузят все ядра на 100%.

Уберите вашу работу с потоками на таски и увидите результат.. Если конечно нет каких-то внутренних синхронизаций между ними и пока одна работает другие 7 ждут.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844378
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairесли удалить повторы-цитаты и просто треп не по делу останется не более одной страницы
но как говориться в таких случаях "нет у меня для вас других форумов"

если удалить все ваши посты, потому что они вообще ниачем, то может и еще меньше станет
даже я погуглил варианты которые советуют разработчики крупных систем в вашей ветке - вы же не изучили ничего, все одно и то же городите как попугай, никакого анализа не сделано вами.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844391
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
8 одновременных тасок с внутренними циклами загрузят все ядра на 100%
все таки задача не в том чтобы ПРОСТО загрузить проц на 100% а загрузить его на 100% задачами обработки данных. или имеется в виду
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure Test;
begin
  var Closure :=
    procedure (const aFileName: string)
    begin
      TTask.Run(
        procedure
        begin
          //do something usefull
        end
      );
    end;
end;



типа заменить поток на задание?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844436
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CitePcrepairпропущено...
X-Cite

это все познавательно, занимательно и очень интересно(работа с диском). но не имеет никакого отношения к загрузке проца в моем случае
но все равно спасибо

автор1. Комп(i7 8 вирт. ядер; 8гб ОЗУ; ВЫНь7 х64; SSD для хранения данных; ХЕ10.2.3)

8 одновременных тасок с внутренними циклами загрузят все ядра на 100%.

Уберите вашу работу с потоками на таски и увидите результат.. Если конечно нет каких-то внутренних синхронизаций между ними и пока одна работает другие 7 ждут.
А 8 одновременно потоков с внутренними циклами не загрузят все ядра на 100%? ITask - это интерфейс, обертка над TThread и пулом потоков.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844458
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ziv-2014

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

Сама фраза передачи в поток строки и числа уже говорит о тотальном непонимании как это асе работает...
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844462
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteСама фраза передачи в поток строки и числа уже говорит о тотальном непонимании как это асе работает...
т.е. чтение из одной области памяти разными потоками вызывает блокировки?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844465
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolverinX-CiteСама фраза передачи в поток строки и числа уже говорит о тотальном непонимании как это асе работает...
т.е. чтение из одной области памяти разными потоками вызывает блокировки?
Нет. С чего вдруг?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844468
ziv-2014
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-Citeziv-2014

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

Сама фраза передачи в поток строки и числа уже говорит о тотальном непонимании как это асе работает...
Я так полагаю вы тролите?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844487
Фотография wolverin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteНет. С чего вдруг?
говорят тут про блокировки все, понять не могу где они )
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39844497
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вам привел минимальный код который выполняет мнимую полезную работу согласно вашим пунктам и нагружает соответственно все ядра.
Читает файл. Что-то делает с ним. Записывает его в другое место и удаляет.
У меня hdd. Все работает в параллели и все ядра загружены.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845081
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кода, я так понимаю, мы так и не увидим
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845799
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если автор уверен, что в его коде нет блокировок, то ...
был у меня случай на Windows Server какой-то, режим питания стоял по умолчанию и проц никак не хотел "грузиться", но поменяли план электропотребления и чудо произошло
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845821
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair"программа параллельно не работает, и грузит только ОДНО ядро" вот тут не понял, распределением нагрузки ОС же заведует и при много потоках ОС должна все ресурсы отдать. и что такое "программа параллельно не работает"
12% загрузки 8 ядерного процессора это 1/8 от 100% загрузки 8ядерного процессора.
Таким образом, реально загружено только 1 ядро из 8. То, что вы видите в диспетчере задач - ОС просто перекитывает ваш процесс с одного ядра на другое. И вы видите типа "пилу" на нескольких ядрах.
Если бы у вас хоть еще 1 ядро было дополнительно загружено, вы бы увидели общую загрузку процессора между 13 и 25%.

Если у вас в программе n потоков, но используется 1 ядро, это значит, что потоки параллельно не работают - где-то они затыкаются на монопольной синхронизации между потоками.

Для дельфи есть несколько примеров работы с потоками, которые реально распараллеливаются по ядрам.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845848
b0rk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairпрограмма очень простая:
- создается поток и ему передается несколько параметров(строки и числа)
- поток через трубу читает файл с ССД диска и определяет его статус
- копирует в другой каталог
- удаляет файл в первом каталоге
число потоков от 2 до 100, загрузка проца одинакова, меняется только размер занимаемой памяти
прога уже обработала несколько сот тысяч файлов без единого сбоя (исключение)
ага!
давно известно, что обращение к диску (хоть HDD, хоть SDD) - это самая медленная операция. если вы упираетесь в скорость чтения/записи диска, то хоть в 100500 потоков запустите, все равно быстрее не станет. и, конечно, ожидать загрузки всех ядер процессора на 100% при дисковых операциях очень наивно.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845971
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как показывает практика, загрузить дисковую систему на 100% сложно, какие-то дополнительные телодвижения есть всегда, и они параллелятся вполне. Нужно подбирать очень особенную задачу наверно, чтобы от распараллеливания выигрыша вообще не было. Другое дело, что ожидать 100% загрузки ядер тоже не всегда стоит.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845973
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
06.08.2019 17:02, makhaon пишет:
> Как показывает практика, загрузить дисковую систему на 100% сложно

отформатируй дискетку в Win95
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845977
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvиспользуется 1 ядро, это значит, что потоки параллельно не работаютaffinitymask?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845990
b0rk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon Как показывает практика, загрузить дисковую систему на 100% сложно, какие-то дополнительные телодвижения есть всегда, и они параллелятся вполне. Нужно подбирать очень особенную задачу наверно, чтобы от распараллеливания выигрыша вообще не было.
Берем 1 физичесое устройство (HDD или SDD) и копируем 100 файлов последовательно и 100 файлов параллельно. Параллельно будет медленее. Нужны весьма специфические условия (например, каждый фал на отдельном физическом носителе), чтобы распаралеливание дисковых операция дало ускорение.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39845998
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonКак показывает практика, загрузить дисковую систему на 100% сложновсем бы такую практику чтоб дисковая не перегружалась
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846026
Alex9801
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
b0rkБерем 1 физичесое устройство (HDD или SDD) и копируем 100 файлов последовательно и 100 файлов параллельно. Параллельно будет медленее...
При работе с одиночным HDD основное время занимает переход головки с дорожки на дорожку, особенно начало-конец + конец-начало диска. Если использовать асинхронный ввод-вывод, то можно существенно повысить скорость работы, путем уменьшения кол-ва таких переходов.
Ну и порты завершения ввода-вывода в помощь для оптимизации процессорного времени.

Крайне рекомендую 1-ю часть "Программирование серверных приложений для Windows 2000" Рихтера.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846085
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0rkдавно известно, что обращение к диску (хоть HDD, хоть SDD) - это самая медленная операция
неправда, есть еще сеть ))
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846192
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

Дискету с дисководом найдёшь?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846193
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan,

Перегружается, если потоков много. Но мы же про один говорим?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846195
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex9801,

И часто встречается копирование в пределах тома? В реальной программе, а не в тестах?
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846197
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0rk,

Предыдущее сообщение было адресовано этому человеку, не туда отписал
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846207
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonПерегружается, если потоков много. Но мы же про один говорим?я хз сколько там потоков по дифолту, но мне для примера даже винрару приоритет понижать приходится и паузы ставить чтоб не ставил раком всю систему при упаковке
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846302
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архиваторы успешно грузят проц на 100%. И работают при этом с диском активно.
То же самое - редакторы/перекодировщики видео.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846308
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockАрхиваторы успешно грузят проц на 100%в моем случае проца-то и прочим доставалось достаточно а вот дисковая раком
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846314
b0rk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockАрхиваторы успешно грузят проц на 100%. И работают при этом с диском активно.
То же самое - редакторы/перекодировщики видео.
архиваторы читают файлы в один поток, потом в несколько потоков жмут, и опять в один записывают. архиваторы умные люди писали однако.
...
Рейтинг: 0 / 0
Многопоточность и загрузка 8-и ядерного процессора
    #39846318
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0rkархиваторы умные люди писали однакода, те кто параметры предоставили чтоб притормозить коней можно было
...
Рейтинг: 0 / 0
90 сообщений из 90, показаны все 4 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Многопоточность и загрузка 8-и ядерного процессора
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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