Многопоточность и загрузка 8-и ядерного процессора

Pcrepair
Дата: 31.07.2019 20:46:02
Добрый день. Есть следующая ситуация:
1. Комп(i7 8 вирт. ядер; 8гб ОЗУ; ВЫНь7 х64; SSD для хранения данных; ХЕ10.2.3)
2. программа для обработки текстовых файлов в многопоточном режиме (настройка от 2 до 100 потоков)
- вызывается поток
- потоку передается путь к файлу
- поток считывает файл, изучает содержимое(есть несколько циклов ДЛЯ с большим числом итераций)
- поток принимает решение и копирует файл в другие каталоги

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

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

Всем ответившим по делу заранее спасибо.
Kazantsev Alexey
Дата: 31.07.2019 21:46:38
Pcrepair,

1. Много дисковой активности, всё начинает упираться в диск
2. Много операций с памятью, всё упирается в однопоточный менеджер памяти
3. Потоки манипулируют разделяемыми данными, вися на блокировках
kdv
Дата: 01.08.2019 00:06:53
Pcrepair
все рано загрузка процессора 11-13%

100% / 8 ядер = ... о ужас, 12.5. То есть, программа параллельно не работает, и грузит только ОДНО ядро.
white_nigger
Дата: 01.08.2019 03:38:57
Pcrepair,
А если заменишь ssd на hdd - то, о ужас, загрузка процессора ещё уменьшится.
PS: И всё же, что за мода - пытаться вогнать компутер в ступор?...
wolverin
Дата: 01.08.2019 06:10:01
Pcrepair,

отделить операции чтения и особенно записи от зависимости к количеству потоков, эмпирическим путем установить при каком достигается 100% загрузка очереди диска - создать свою очередь файлов, которую уже анализировать отдельными потоками, на диск же делать запись большими кусками, а не кучей мелких задач.
wolverin
Дата: 01.08.2019 06:14:32
Pcrepair,

еще как вариант по железу - собрать из ссд раид 0 с чередованием )
wolverin
Дата: 01.08.2019 06:17:12
Pcrepair
Вопрос: как всетаки загрузить проц на все 200% ?

формально получается на все 800% )
wolverin
Дата: 01.08.2019 06:26:12
wolverin
еще как вариант по железу - собрать из ссд раид 0 с чередованием )

+ раид контроллер внешний с большим кешем и обратной записью ))
wadman
Дата: 01.08.2019 07:31:33
Pcrepair
настройка от 2 до 100 потоков

Попробуй поиграться с affinity mask.
Я грузил процессор на 100%, задействовав все ядра.
Соколинский Борис
Дата: 01.08.2019 07:41:51
wadman
Попробуй поиграться с affinity mask.
Я грузил процессор на 100%, задействовав все ядра.
У меня в расчетной задачи грузится на 100% без игр с масками, даже антивирь эпизодически беспокоится, не вирус ли.
У автора, скорее всего, где-то бутылочное горло типа Synchronize()