These last months I have heard a lot about issues related to solid state devices not properly being aligned to the expected data transfer sizes. Each OS has its own way of creating volumes and partitions so trying to figure out if everything is neatly aligned is not an easy job. Add to that the possibility of the OS thinking everything is in order but alignment somewhere down the line not being accurate in one of the many possible layers of software when we have virtual volumes.

Without really being interested in the 'how to figure it all out and how to fix alignment issues' I created a small Vdbench parameter file that will allow you to at least figure out whether things are properly aligned or not. It revolves around the use of the Vdbench 'offset=' parameter that allows you to artificially change the alignment from Vdbench's point of view.

If your SSDs are on a storage subsystem that has a large cache, make sure that your volume is much larger than that cache. You rally need to make sure you are getting your data from the SSD, not from cache.

Henk:

`hd=default,jvms=1`

sd=default,th=32

sd=sd_0000,lun=/dev/rdsk/c7t0d0s4,offset=0000

sd=sd_0512,lun=/dev/rdsk/c7t0d0s4,offset=0512

sd=sd_1024,lun=/dev/rdsk/c7t0d0s4,offset=1024

sd=sd_1536,lun=/dev/rdsk/c7t0d0s4,offset=1536

sd=sd_2048,lun=/dev/rdsk/c7t0d0s4,offset=2048

sd=sd_2560,lun=/dev/rdsk/c7t0d0s4,offset=2560

sd=sd_3072,lun=/dev/rdsk/c7t0d0s4,offset=3072

sd=sd_3584,lun=/dev/rdsk/c7t0d0s4,offset=3584

sd=sd_4096,lun=/dev/rdsk/c7t0d0s4,offset=4096

wd=wd1,sd=sd_1,xf=4k,rdpct=100

rd=default,iorate=max,elapsed=60,interval=1,dist=d,wd=wd1

rd=rd_0000,sd=sd_0000

rd=rd_0512,sd=sd_0512

rd=rd_1024,sd=sd_1024

rd=rd_1536,sd=sd_1536

rd=rd_2048,sd=sd_2048

rd=rd_2560,sd=sd_2560

rd=rd_3072,sd=sd_3072

rd=rd_3584,sd=sd_3584

rd=rd_4096,sd=sd_4096

These are the 'avg' lines:

*offset=0000 avg_2-3 19223.00 75.09 4096
100.00 1.580 2.803 0.231 1.1 0.9*

offset=0512 avg_2-3 3655.50 14.28 4096 100.00 8.772
9.473 0.067 0.3 0.2

offset=1024 avg_2-3 3634.00 14.20 4096 100.00 8.784
9.390 0.064 0.3 0.2

offset=1536 avg_2-3 3633.00 14.19 4096 100.00 8.799
9.472 0.062 0.3 0.2

offset=2048 avg_2-3 3614.50 14.12 4096 100.00 8.831
9.440 0.066 0.3 0.2

offset=2560 avg_2-3 3604.00 14.08 4096 100.00 8.852
9.477 0.067 0.2 0.2

offset=3072 avg_2-3 3602.50 14.07 4096 100.00 8.853
9.430 0.059 0.3 0.2

offset=3584 avg_2-3 3597.50 14.05 4096 100.00 8.888
9.468 0.069 0.2 0.2

offset=4096 avg_2-3 20050.50 78.32 4096 100.00 1.584
2.811 0.231 1.0 0.9

As you can see, the runs with offset=0 and offset=4096 offer
more than 5 times the throughput than the others. This tells me that
this volume is properly aligned.

If for instance the run results would show that offset=512 has the best
results the volume is on a 512 byte offset.

To then run properly 4k aligned tests with Vdbench, add to all your
runs:

sd=default,offset=512

and Vdbench, after generating each lba, will always add 512.