C # ThreadPool для записи на SSD диск - PullRequest
3 голосов
/ 18 марта 2011

У меня есть пул потоков, записывающий данные на диск SSD.(Windows XP, C #) Я хотел бы выбрать размер пула для оптимизации производительности.Теоретически, должна ли производительность улучшаться с большим количеством потоков?Как SSD обрабатывают параллельные записи?А также одновременные чтения, в этом отношении?

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 марта 2011

Если вам нужно выполнить случайные операции ввода-вывода, вы можете убедиться, что ваш накопитель работает в AHCI, поскольку произвольная производительность с высоким параллелизмом обычно быстрее с AHCI, чем в IDE. (см. http://benchmarkreviews.com/index.php?option=com_content&task=view&id=505&Itemid=38&limit=1&limitstart=3).

Этот обзор также показывает, что одновременное случайное чтение и запись (результаты 4K-64Trd) быстрее, чем при использовании только одного потока (результаты 4K).

0 голосов
/ 18 марта 2011

Лучший способ решить эту проблему - это профилировать пулы разных размеров. Фактические настройки, которые вы выберете, будут зависеть от характера операций ввода-вывода, которые вы выполняете, и, конечно, от параллелизма указанных операций ввода-вывода.

Теоретически, если производительность улучшить с помощью большего количества потоков?

SSD, в отличие от обычных дисков на основе шпинделя, имеют высокую производительность произвольного чтения / записи и, следовательно, выиграют (значительно) от того, что несколько параллельных потоков будут выполнять ввод / вывод для них.

Как SSD обрабатывают параллельные записи? А также одновременные чтения, в этом отношении?

Поскольку движущихся частей нет, есть только доступ к данным в различных местах (памяти), поэтому очень мало очереди случайных операций чтения / записи, если только не превышены операции ввода-вывода / чтения для чтения / записи на диске.

...