There were discussions on disk misalignment on this site. See my previous post on “Performance Impact of Disk Misalignment”, and Kevin Kline’s blog on “How to Improve Application and Database Performance up to 40% in One Easy Step”
But thanks to Jimmy May's PASS 2008 presentation on the I/O performance impact of disk partition misalignment, I have been hearing a lot about this topic yet again. Even though I thought the issue has long since been settled, it turns out that there is a huge room for improvement in practice.
Now, in practice, if you need to check whether your disk drives are properly aligned, it can be a labor intensive effort if you have to resort to diskpar.exe or diskpart.exe to get the offset of each disk drive in your environment unless you only have a few servers. If you do have a large number of servers, and want to scan the disk drives on your servers for their partition alignment, you may find the attached utility useful.
In the attached zip file, you’ll find an executable—find_partition_offset.exe—that takes a server name on the command line and gives you the offsets of the partitions on a given server, and a Perl script—find_partition_offset.pl—that is a wrapper around find_partition_offset.exe. The Perl script takes the name of a text file that has a list of server names, one on each line, and loops through these servers to report the partition offsets. You can execute the Perl script as follows:
cmd>perl find_partition_offset.pl servers.txt
For your convenience, I’ve included the C# source code for find_partition_offset.exe.