Jump to content
Covecube Inc.
  • 0
propergol

Testing read striping (Win 10)

Question

Hello,

On my Windows 10 PC (insider build 10532 + DrivePool_2.2.0.636_x64_BETA) I did the following tests :

- 1 pool with 2 HDs, both HD are the same model : WD Green 4 Tb. Each drive tested outside the pool shows a read speed of  150Mb/s (empty disk)

- the pool has real time duplication, read sriping, bypass system filters set to ON and file protection set to file duplication.

- on this pool I have copied 2 movies (25Gb, 15Gb)

- on this pc one SSD capable of 470Mb/s write, and one HD 140Mb/s

 

Now... :)

- if I try to copy one movie from the pool to the SSD, DrivePool only read from 1 HD in the pool and so the copy is only 150Mb/s (while the SSD supports up to 470Mb/s)

- while the movie is being copied @ 150Mb/s to the SSD, I start to copy the second movie to the standalone HD : DrivePool shows that reads from the pool are only made on 1 HD and so copy to SSD drop down to 60Mb/s and copy to HD 60Mb/s   :(

 

323132Drivepoolcopyissue.png

 

 

 

I am very new to DrivePool, so maybe I miss something.

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

Drashna, is there a way I can enforce it to remeasure the bus speed? With me it is simply wrong for one of the HDDs.

I'm not sure.

 

Run a burst test just in case. 

Otherwise, the "nuclear solution" is to reset the settings.

 

But see below:

 

 

I don't know what happend but it realy looks like it read only from one disk.

 

I have made an other test : 2 movies on a pool with x3 duplication so both movies are present in 3 differents hard drives.

 

I did then launch a copy of one movie 1 on a drive A outside the pool and movie 2 on drive B outside the pool.

 

Please take a look at what happen then (the PC's specs at the bottom left are not correct : I did remote desktop to my server so this is not the server specs) :

 

 

Try the latest internal beta build:

http://dl.covecube.com/DrivePoolWindows/beta/download/StableBit.DrivePool_2.2.0.649_x64_BETA.exe

There have been some serious changes to the read striping and related code. It may fix the issue you're seeing.

 

Unfriend, you should try this out as well, as it may fix the issue for you as well. 

Share this post


Link to post
Share on other sites
  • 0

Since I was running Windows 10 pro insider  build 10532, and was thinking it could be the root of my issue, I did a fresh install of standard Windows 10 pro (not insider).

The result is the same, the copy only read from a single disk at the same time.

 

Then I think : maybe it can be that my Intel ports (where all HD, SSD are plugged) are set to RAID mode in BIOS, even if HD are not "raided".

So I did made some changes in order to Windows 10 to run in AHCI mode rather than RAID mode : same result  :( 

Share this post


Link to post
Share on other sites
  • 0

AFAIK, read striping works on the file level only and by that I mean that for each single file you read, DP will choose a HDD to read it from. It will not read parts from HDD1 and other parts from HDD2.

 

So to get benefit from read striping you might want to test copying a bunch of files. But then, I think, it becomes a question of how many copy operations windows will allow concurrently. As far as I can tell, the regular copy does only one at a time so you could try with robocopy.

 

Having said all that, I tried all this on a WHS2011 box and I could not get it to show read striping succesfully.

Share this post


Link to post
Share on other sites
  • 0

AFAIK, read striping works on the file level only and by that I mean that for each single file you read, DP will choose a HDD to read it from. It will not read parts from HDD1 and other parts from HDD2.

 

I guess I did misread DrivePool 's doc since it was talking about block based copying, I think it was capable of reading from multiple disk at same time.  :(

 

 

 

So to get benefit from read striping you might want to test copying a bunch of files. But then, I think, it becomes a question of how many copy operations windows will allow concurrently. As far as I can tell, the regular copy does only one at a time so you could try with robocopy.

 

That is exactly what I did tried to do in the second part of my copy test (check the screenshot) : I did launch a copy of file A to a SSD (outside the pool) and a copy of file B to a HD (outside the pool). You can see on the screenshot that even in this case the read is only done on one disk of the pool.

Share this post


Link to post
Share on other sites
  • 0

Ah yes, sry. In any case, what you describe is what I think I experience. I have not been able to get read-striping to actually work. I am sure Drashna will chime in though and we may both learn. Thx for bringing this up.

Share this post


Link to post
Share on other sites
  • 0

Read Striping specifically checks the BUS speed for the disks in question, IIRC.  If one is much faster than the others, it will prefer disks on that over the other, instead of reading from both.  

 

Could you ensure that Read Striping is enabled (Pool Options -> Performance -> Read Striping (it should be checked).  

If it is, and you're still not seeing that,.... (and there should be a third bar in the Performance UI for Read Striping, actually)

then could you enable file system logging, copy a file and then stop the logging.  

http://wiki.covecube.com/StableBit_DrivePool_2.x_Log_Collection

 

 

 

Also, do you have StableBit Scanner installed on the system? If so, could you open the disk details on both disks, and look at what the SATA level it's indicating for each disk?

Share this post


Link to post
Share on other sites
  • 0

Actually, I can see the measured bus speeds I think in Scanner. Even for the same HDDs on the same controler they are miles apart. Can I force a re-measurment of those bus-speeds?

 

(I think "Lire la bande" is Read Striping, he is "missing" the I/O Boost which is off by default and does not affect read-striping?)

 

 

 

post-1414-0-54828700-1441777969_thumb.png

Share this post


Link to post
Share on other sites
  • 0

Read Striping specifically checks the BUS speed for the disks in question, IIRC.  If one is much faster than the others, it will prefer disks on that over the other, instead of reading from both.  

 

Well...in my case, disks are from same model and ports from same chipset/speed. Also both disks where tested read/write at the very exact same speed.

 

 

 

Could you ensure that Read Striping is enabled (Pool Options -> Performance -> Read Striping (it should be checked).  

If it is, and you're still not seeing that,.... (and there should be a third bar in the Performance UI for Read Striping, actually)

 

Read striping was on as @Umfriend said "Lire la bande" = Read striping

 

 

then could you enable file system logging, copy a file and then stop the logging.  

http://wiki.covecube.com/StableBit_DrivePool_2.x_Log_Collection

 

I did upload the logs in .rar archive. Just a note : I did started the log record, started copy one file from the pool to drive A, started copy of an other file from the pool to drive B, then stopped the copy, stoped log reccording.

 

 

 

Also, do you have StableBit Scanner installed on the system? If so, could you open the disk details on both disks, and look at what the SATA level it's indicating for each disk?

 

I didn't have Stablebit Scanner installed, I was using HD Sentinel  :P ... so I did uninstalled HD Sentinel, installed Stablebit Scanner.

Here is a screenshot :

 

256411busspeed2.png

Share this post


Link to post
Share on other sites
  • 0

Well, you don't have to uninstall HD Sentinel (unless you want!). :)

 

As for the issues, I've flagged them for Alex, and he'll take a look at them as soon as he can.

 

https://stablebit.com/Admin/IssueAnalysis/20787

 

 

 

However, I suspect that this may be an issue with Windows 10 or the Windows 10 build of DrivePool.

Share this post


Link to post
Share on other sites
  • 0

I'm seeing the same behavior on Windows Storage Server 2012-R2 (no Storage Spaces configured anymore  :ph34r:) , which is an, uh, close cousin of Windows 10, apparently. All drives are on the same SATA-III on-board controller (Intel Z97). Drive Pool build 2.1.1.561.  Let me know if there is anything in particular you need to assist with this on your end.

Share this post


Link to post
Share on other sites
  • 0

I'm seeing the same behavior on Windows Storage Server 2012-R2 (no Storage Spaces configured anymore  :ph34r:) , which is an, uh, close cousin of Windows 10, apparently. All drives are on the same SATA-III on-board controller (Intel Z97). Drive Pool build 2.1.1.561.  Let me know if there is anything in particular you need to assist with this on your end.

Windows Storage Server 2012R2 is based on Server 2012R2, and not Windows 10 (Server 10 or Server 2016).  

 

So if you're seeing that.... 

But how are your disks connected? Different controllers? Different SATA generations? 

Share this post


Link to post
Share on other sites
  • 0

You are of course correct. The 2012 line is more closely aligned with wiin 8.x than win 10.  Yes, all of the hard drives are connected to the same controller (on-board Intel©, Z97 based, 6x SATA-III in AHCI mode).  All 5 drives in the pool are 4 TiB HGST DeathStars.

Share this post


Link to post
Share on other sites
  • 0

You are of course correct. The 2012 line is more closely aligned with wiin 8.x than win 10.  Yes, all of the hard drives are connected to the same controller (on-board Intel©, Z97 based, 6x SATA-III in AHCI mode).  All 5 drives in the pool are 4 TiB HGST DeathStars.

Check to see what the Performance UI is doing when this happens. See if it's using Read Striping at all.

 

And if not, then enable logging, reproduce, end logging and grab the files:

http://wiki.covecube.com/StableBit_DrivePool_2.x_Log_Collection

Share this post


Link to post
Share on other sites
  • 0

I did the voodoo, using a ~37 GiB file to test with.  DrivePool *does* activate read-stripping at different points during the file copy operation as I saw it reading from two drives simultaneously at different points. It did not always read from two drives during the copy. The odd bit is that when it was reading from one drive, performance was about 15-20% better than when two drives were streaming the file simultaneously, which is the opposite of what I would expect. I'm thinking that might be a controller/bus saturation issue eh?  I have the logs and screenshots of the different read performance rates if you are interested. Just shout and I'll upload them.

Share this post


Link to post
Share on other sites
  • 0

I am afraid the issue could afect other systems than Windows 10...

I did made the same copy test that I did under Windows 10 but this time with DrivePool installed on Windows Server 2012 R2 and I see the exact same thing : read stripping doesn't seems to work.  :(

 

I guess you could easily reproduce the issue on your side.

Share this post


Link to post
Share on other sites
  • 0

Just to clarify a few things here:

 

Read Striping absolutely requires duplicated data.  If it's not duplicated, you don't get the advantage here.

 

 

Additionally, Read Striping doesn't always read from both copies of the files. There are situations where it will read from one disk or the other (such as different bus speeds, and usage).

 

There are also some advanced settings you can mess with that may affect the read striping behavior:

http://wiki.covecube.com/StableBit_DrivePool_2.x_Advanced_Settings

  • CoveFs_ReadStripingBlockMode' - Switch to the read striping block mode algorithm when sequential read access is used.
  • CoveFs_ReadStripingBlockModeNoCache - Disable the NT read ahead cache when using read striping block mode.
  • CoveFs_ReadStripingStripeSize - The stripe size to use for reading in block mode.
One thign to try is to set the block mode to "false" and see if that affects the behavior at all. 

Share this post


Link to post
Share on other sites
  • 0

 

Just to clarify a few things here:

 

Read Striping absolutely requires duplicated data.  If it's not duplicated, you don't get the advantage here.

 

If you read again my first post, I clearly explain that :

"- the pool has real time duplication, read sriping, bypass system filters set to ON and file protection set to file duplication"

if you prefer, file duplication is set to "x2" for the whole pool.

 

 

Additionally, Read Striping doesn't always read from both copies of the files. There are situations where it will read from one disk or the other (such as different bus speeds, and usage).

 

Again, if your look at my first post, I explain that first I did start the copy of one file on the pool to a SSD (outside the pool) then I did started to copy an other file on the pool to a HD (outside the pool).

If you look at the copy screenshot you can see that even when copying 2 differents files from the pool at the same time to 2 differents devices, the copy only reads from one disk of the pool when it should read one file from one pooled disk and the other from the second pooled disk.

Since this read striping doesn't happend, copying those 2 files run at only 60mb/s (half the read speed of one drive of the pool) when it should be running at the read speed of pooled disk 1 + read speed of pooled disk 2.

 

 

 

 

 

One thign to try is to set the block mode to "false" and see if that affects the behavior at all. 

 

 

I did changed this option then stoped/restarted DripePool service : no change, same behavior  :(

 

Regardless of this issue, I did just bought Stablebit bundle  ;)

Share this post


Link to post
Share on other sites
  • 0

propergol,

 

I just wanted to re-emphasize this information, because the read striping feature is complex (though it could be a bit more verbose... but not sure that's reasonable, depending on how many files are accessed .... for me, that would fill my system disk with logs before the day was finished!). 

 

Though, in looking into this, the read striping bar in the performance UI section does have a tool tip that gives at least some indication to what is going on. That may be helpful here, as well.

 

 

And I'll be talking to Alex (the developer) directly about this later today. I'm not sure if I'll get an usable response (aside from, I'll look into it), but I'll let you know. And hopefully, we can identify and fix the issue quickly. (I've been trying to reproduce it, unsuccessfully on my own systems, but it's read striping properly)

 

 

But I'm glad to hear that you've purchased the bundle!

Share this post


Link to post
Share on other sites
  • 0

Glad to hear you will look at it  :)

What is very strange is that I did face this issue using 2 differents systems (Win 10 and Server 2012 r2), and 2 differents hardware controlers (Intel ICH10R, IBM M1115), even the motherboards are from different brand (Asrock, Gigabit), processor (Sandy, Ivy) etc...

My AV is also different : on Server 2012 R2, Symantec Endpoint Protection, on Win 10, Bitdefender Total Security 2016.

 

The only common thing is the chipset : Z77

Share this post


Link to post
Share on other sites
  • 0

And I am running on a B85 chipset but I am screwed as for two identical HDDs on the same SATA chip (the B85 SATA-II slots), the bus speeds are miles apart and I do not know how to get it to remeasure

Share this post


Link to post
Share on other sites
  • 0

Check out this link:

 

http://blog.covecube.com/2013/05/stablebit-drivepool-2-0-0-256-beta-performance-ui/

 

 

Specifically, it sounds like it's locking on the one mode (one disk at a time) and not actually read striping. 

When this happens, is the other disk busy, or active?
If you could use StableBit Scanner (or resmon) to get the performance for the drives, and the number of disk queues for both disks.  If the other disk has a lot of "outstanding IO", StableBit DrivePool will actively avoid using it.

 

......

 

 

.......

 

Additionally, what OS version are you using specifically, and what versions of StableBit DrivePool are you using specifically (version number should be listed at the bottom of the UI).

Share this post


Link to post
Share on other sites
  • 0

I don't know what happend but it realy looks like it read only from one disk.

 

I have made an other test : 2 movies on a pool with x3 duplication so both movies are present in 3 differents hard drives.

 

I did then launch a copy of one movie 1 on a drive A outside the pool and movie 2 on drive B outside the pool.

 

Please take a look at what happen then (the PC's specs at the bottom left are not correct : I did remote desktop to my server so this is not the server specs) :

 

 

 https://youtu.be/w4U9Atgtk8s

Share this post


Link to post
Share on other sites
  • 0

Drashna. quick question:  During numerous rounds of observation of the read-stripping performance, I have noticed that it seems to only read from one disk, especially when the read-speed (which directly correlates to the write speed at the destination) is too slow to handle the additional bandwidth boost that reading from another drive simultaneously would provide. Basically, it seems to figure out that reading from more than one drive would not improve performance, as the outbound pipe appears to be saturated already, so why bother reading from more than one drive anyway. This is in the single large file copy scenario, not multiple smaller files to multiple destinations (e.g. streaming to multiple devices) scenario. This question was prompted by randomly checking the tooltip of the "Read Stripping" bar on the drive pool UI. In the large single file copy (~500 GiB file) scenario where I almost always only see reads from one drive in the X2 pool. The tooltip reports "65-70 per second Disk Holds" which makes me think that reading from another drive would not help anyway, so why bother. (It is a network file copy to a slow archive NAS that saturates at ~40 MB/s, slow parity protected array destination, unRAID box).  Is this assumption correct?  

 

I'll try to set up a RAM drive on the same box hosting the drive pool and set up some large file copies to the RAM drive, which should have *HUGE* write bandwidth and see if that makes a difference in what Read-Stripping does.

 

 

PS: StableBit should consider adding a RAM drive service to the suite of tools you already provide <nudge nudge> ;^)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...