View Single Post
  #6  
Old March 10th 16, 05:27 AM posted to alt.comp.hardware.pc-homebuilt
Paul
external usenet poster
 
Posts: 13,364
Default Using Storage Spaces with win 10

Charlie Hoffpauir wrote:
On Wed, 09 Mar 2016 22:07:17 -0600, Charlie Hoffpauir
wrote:

On Wed, 09 Mar 2016 20:49:19 -0500, Paul wrote:

Charlie Hoffpauir wrote:
When I set up Storage Spaces in my Win 10 system for data, I chose
two-way mirror, using 2 physical drives, because I wanted "resiliency"
(I wanted data redundancy in case of a drive failure). That seems to
work fine. But now that I've learned a bit more about storage spaces,
I'm wondering if maybe "read" performance would be improved if more
than 2 physical drives were used. The thinking is that if the data
were spread across 3 instead of 2, reads might be 50% faster? Is this
the case? Is it by default, or must one configure the storage spaces
to use 3 columns instead of two at initial installation to get the
higher peformance? (I'm not referring to using 3 drives to get a
parity effect..... I don't need that big a hit on write performance)
I'm guessing that if I simply add another drive to my existing setup,
I woudln't see any increased read performance...... is that also
correct? One last question... since the Storage Spaces interface
doesn't seem to allow for specifying the number of columns and since
the articles I've read state that this must be done with powershell,
can anyone tell me the Powershell command that would do this?

I've not mentioned Simple Storage spaces, but the MS docs I've read
states that adding more drives does directly increase read
performance... but I'm not willing to give up the data redundancy.
Also, I'm not really needing 3-way mirror.
There's a FAQ here, with some powershell commands in it.

https://blogs.msdn.microsoft.com/b8/...nd-efficiency/

I assume you'd get a bandwidth improvement from using
2-way mirror and using four disks instead of two. But
my attempts to experiment (in a virtual machine), failed.
The Storage Spaces pool formed OK, but I wasn't able
to control VirtualBox in an appropriate way to make
measurements. (I wanted to limit the bandwidth of
each virtual disk, so I could watch them "adding
together". Didn't work worth a damn.) The results
were "all over the place" and a waste of time.

And I don't have enough disks to do real, physical
experiments.

Paul

One of the MS FAQs I read talked about linear increasing read
performance as disks were added to the Simple Storage Spaces (no
mirror, basically JBOD. 2 disks 2x read speed of 1 disk, 3 disks 3x
speed, etc. But when it came to mirror, I didn't see it explained.
They went into loss of write speed (drastic loss) if parity was
included, ie 2-way mirror with parity using 3 drives.... but it just
seemed that there should be some read performance improvement if 3
columns could be set up instead of 2 with 2-way mirror. I don't think
I have room in my SATA ports to go to 4 drives, since I need an
external SATA occasionally and I have an optical drive, and an SSD for
OS and programs.

Maybe I'll just try to set up a small test using small drives and see
what I find. I have four oldish 500GB drives that I could use and see
what happens.

Thanks for the link to the PS commands.


I was just thinking about how I'd "test" read speeds. I have some
fairly large sized files, one at nearly 3 GB and another just over 2
GB, but if I time the copy from one storage space volume to another,
I'd be including the write speeds as well as the read speeds, and
probably limiting the read speeds by how fast the writes would go
(since writing to 2-way mirror is considerable slower than reads).

I tried HDTune and it just won't work with storage spaces, at least
the free version won't. Any suggestions?


That's what I tried too. If you declare the space to be 1TB,
then use a few small disks, HDTune tries to test the entire
1TB, much of which is "faked" and gives enormous read speed.
In my test setup, the top of the 1TB space was giving 7GB/sec.

To test using files, you set up a RAMDisk and stage the source files
on that. That's if you wanted to do a write test, and didn't
want the "source" storage device polluting the result.

I use this for a RAMDisk. The free version used to allow up
to a 4GB RAMDisk. I use the free version on this machine.
I bought the paid version for my other machine, because
it has a lot more RAM than that. And I do run a RAMDisk
over there, all the time. The paid license is per machine,
and I use the same license key in Win7/Win8/Win10 on the
other machine.

http://memory.dataram.com/products-a...ftware/ramdisk

You might also need to purge the system file cache,
by doing a large read. I think there's also some command
that will purge the cache, but I don't know if I can find
that one right now. (Actually, I was able to find a thread
that said the idea I had in mind, wouldn't work...)

OK, here's a technique.

http://www.codingjargames.com/blog/2...ws-file-cache/

fsutil file setvaliddata fileA 123454321

What that does, is simulate writing the entire file.
But in a very short time. Say the file is actually 123,454,321
bytes in size. By entering the command that way, the
file size is not modified (since the file is that
size anyway). It just causes the file to be evicted
from the system file cache (in system memory), so
that the next time you attempt to read "fileA", you
will be reading the physical device. No cheating
by pulling the data from the system file cache instead.

So the idea would be:

dd if=/dev/random of=F:\somebig.bin bs=1048576 count=1024
fsutil file setvaliddata F:\somebig.bin 1073741824

That would leave a 1GiB file on F: and clear the system
file cache. The next time I attempt to read F:\somebig.bin,
I should be benching the F: disk hard drive speed, and not
pulling the data from the system file cache.

Linux has a "dropcache" kind of command, that does
a much better job. It releases the entire cache in
one shot. And that is not a performance optimization
(to make programs go faster). It's just for cases
where you don't want any data sitting in a read file
cache, screwing up your benchmarks. (Like my test case
above that got 7GB/sec for a read speed, which of
course is impossible. Any time a result doesn't make
sense, you know the result was "pulled out of the air"
or "pulled out of RAM".)

Many enthusiast sites, when they bench, they reboot the
computer between test cases, which is thorough as an
initialization technique, but wasteful. That's another
way to purge a read cache.

Paul