У меня есть приложение C++ для Linux, которое записывает некоторые данные на SSD. Приложение записывает со скоростью ~ 100 Мбайт в секунду.При использовании SSD лучше ли использовать один поток для записи 20 разных файлов вместо 20 потоков?
Каждую секунду приложение записывает на диск 20 новых файлов. Дополнительные потоки приложения выполняют другую логику и обслуживание, помимо этих 20 потоков.
В настоящее время мое приложение использует несколько потоков для записи нескольких файлов одновременно, записывая один файл в поток.
Лучше изменить дизайн кода и создать один поток каждый 20 новых файлов каждую секунду?
Почему бы не попробовать его, измерить его, и узнаете? Как и в случае любого вопроса оптимизации, ваши результаты будут зависеть от системы, поведения вашего приложения и от любого количества других факторов. Тем не менее, несколько потоков могут допускать параллельную подготовку данных; каждый поток будет блокировать операцию вывода, но это не останавливает выполнение других потоков (потоков), чтобы подготовить свои собственные записи. Синхронизация между потоками будет влиять на производительность, а также планировщик ввода-вывода и характер записи. Обычно лучше подготовить один большой блок и ОС записать его в один файл. – Andrew