Как записать на несколько ленточных накопителей одновременно? - PullRequest
1 голос
/ 27 апреля 2011

Я пытаюсь записать один поток на несколько лент одновременно, но у меня огромная проблема с производительностью.

ОС: Windows 2008 R2 TapeDrive: 2 * ULT3580-HH4 HBA: контроллер Dell SAS 6 Гбит / с

В настоящее время цикл записи выглядит следующим образом:

ReadFile(fromsource,buffer)
foreach(ltodrive)
  WriteFile(todriveX,buffer)
foreach(ltodrive) // only if using overlapped IO
  EndWriteFile(ltodriveX)

Размер блока накопителя составляет 256 КБ, а размер буфера - 2 МБ.

Так что, если я использую только один диск, мне удается получить стабильные 110 Мбит / с, что очень близко к максимальной скорости диска (120 Мбит / с), но если я добавлю еще один диск в цикл, скорость снизится до 25 Мбит /sec.

Как вы можете видеть в метакоде, я уже пытался сделать асинхронный вызов записи, позволяющий всем дискам начать запись, не дожидаясь завершения предыдущего, но это не решило проблему.

Что-то мне не хватает или это аппаратная проблема?

Best

...