У меня есть только 2 Тбайт только для чтения (не созданных однажды созданных файлов) в системе RAID 5 (4 x 7.2k @3TB).
Теперь у меня есть некоторые потоки, которые хотят прочитать части этого файла. Каждый поток имеет массив кусков, которые ему нужны. Каждый кусок адресуется файловым смещением (положением) и размером (в основном около 300 байтов) для чтения.
Каков самый быстрый способ прочитать эти данные. Я не забочусь о цикле CPU, (lat) - это то, что считается. Поэтому, если возможно, я хочу воспользоваться NCQ жестких дисков.
Поскольку файлы сильно сжаты и будут доступны случайным образом, и я точно знаю позицию, у меня нет другого способа оптимизировать ее.
- Должен ли я объединять чтение файла в один поток?
- Должен ли я держать файл открытым?
- Если каждый поток (возможно, около 30) поддерживает одновременный просмотр каждого файла, что происходит с новыми потоками (с веб-сервера)?
- Будет ли это помогать, если я буду ждать 100 мс и отсортировать мои показания с помощью смещений файлов (сначала самый низкий)?
Каков наилучший способ чтения данных? У вас есть опыт, советы, подсказки?