Оптимизация массивной записи на диск

У меня есть приложение C (VStudio 2010, win7 64bit), работающее на машине с двумя чипами xeon, что означает 12 физических и 24 логических ядра и 192 гигабайта оперативной памяти. РЕДАКТИРОВАТЬ: ОС - win7 (т.е. Windows 7, 64-разрядная версия).

Приложение имеет 24 потока (каждый поток имеет собственное логическое ядро), выполняющих вычисления и заполняющих различные части массивной структуры C. Структура, когда все потоки завершены (и все потоки идеально сбалансированы, поэтому они завершаются одновременно), составляет около 60 гигабайт.

(У меня есть контроль над настройкой оборудования, поэтому я собираюсь использовать 6 дисков емкостью 2 ТБ с RAID 0, что означает, что физические ограничения на запись будут примерно в 6 раз выше средней скорости последовательной записи, или примерно 2 гигабайта в секунду. )

Какой самый эффективный способ записать это на диск? Очевидно, что время ввода-вывода будет значительно меньше времени вычислений. Из моих исследований по этой теме кажется, что write () (в отличие от fwrite ()) - это правильный путь. Но какие еще оптимизации я могу сделать на стороне программного обеспечения, с точки зрения установки размеров буфера и т. Д. Будет ли mmap более эффективным?

7
задан PaeneInsula 9 December 2011 в 19:16
поделиться