windows - hvordan man skriver til flere båndstationer på samme tid?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at skrive en enkelt stream til flere bånd på samme tid, men jeg rammer et enormt præstationsproblem.


OS: Windows 2008 R2
TapeDrive: 2 * ULT3580-HH4
HBA: Dell SAS 6gbps controller


I øjeblikket ser skrivesløjfen ud:


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


Drevets blokeringsstørrelse er 256Kib, og bufferstørrelsen er 2Mib.


Så hvis jeg kun bruger 1 drev, klarer jeg at få en stabil 110Mib/sek, der ligger meget tæt på drevets maksimale hastighed (120Mib/sek), men hvis jeg tilføjer et andet drev til sløjfen, går hastigheden ned til 25Mib/sek.


Som du kan se i metakoden, har jeg allerede forsøgt at gøre skriveopkaldet async, så alle drevene kan begynde at skrive uden at skulle vente på den forrige til at afslutte, men det løste ikke problemet.


Er der noget jeg mangler eller er det et hardware problem?


Bedst,

Bedste reference