Getting optimal performance with Windchill depends on how the logical drives are configured and delegated. Randomly assigning logical drives will not give optimal performance. Having too few logical drives will result in greater latency and reduced performance.
When you are about to install Windchill, to move it to a new computer, or to rebuild an existing computer, you can significantly improve performance by running the SQLIO Disk Subsystem Benchmark Tool on your logical drives to test the drives' characteristics. A logical drive is the top layer of a pyramid of hardware or software on physical drives. The physical basis may be a SAN or a RAID array of drives. Regardless of the hardware or software combination that was used to create a logical drive, the logical drive must provide data redundancy through mirroring or parity.
To understand why using a single drive is bad for performance, assume that you have one spindle drive (thus one drive head), and then look at what happens. Imagine that you create and fill a temporary table and then you copy the data to another table, such as an audit table. This is what happens:
So, you had eight head movements at 5,200 RPM. If you assume the worst case—that when the head moves to the right track, the data has just passed—you end up with 60 seconds / 5,200 RPM * 8 heads = 0.092 seconds: 1/10 of a second for this action. The delay due to moving heads to get to data is called latency. Thus, 1/10 of a second of latency is assuming that no other users or programs are trying to access the drive.
If you want good performance, you want to reduce latency and ideally have the data on the disk in the primary key sequence so that the data is read sequentially and quickly. The best way to avoid latency is to have similar items, especially logs that are sequential and easily streamed to the disks, on different drives.
Windchill is installed with the following four filegroups:
PTC has done its homework so you can get good performance. For the best performance, each of these filegroups should be on its own logical drive. In addition to these four filegroups, you should also have separate logical drives for the following:
Additionally, if you are doing backups while the database is in operation, the backup drive should be on a separate logical drive. Have you lost count of the number of logical drives? The number is eight. But, you also have the operating system and its virtual memory paging file, which, fortunately, you can typically double up with the above. By assigning each of the above to a different logical drive, you reduce latency and improve performance:
Why is there a difference of performance? If there is only one head available, data reads and writes must be serialized, which causes latency as the head jumps around on the physical drive. With independent physical drives, operations may occur in parallel. In many commercial products, you will not see the same excellent preallocation of items to different filegroups that you see in Windchill. You can use these filegroups to leverage performance by just supplying drives to allow parallel operation.
You can see that you need eight logical drives. You also need to assign the above files (filegroups, backups, etc.) to different drives. How do you do this for performance? First, you need to understand that some items are random access (read/write) and some items are sequential writes.
Random
Sequential
INDX
WCAUDIT
PRIMARY
wcAdmin transaction log
BLOBS
tempdb transaction log
tempdb
Backup
All drives do not perform the same, even when they are identical and are from the same lot due to differences in physical components and quality control. We need to test them. Fortunately, Microsoft provides a free tool that is perfect for this job: the SQLIO Disk Subsystem Benchmark Tool. You can download this tool from the Microsoft Download Center at http://www.microsoft.com/downloads/details.aspx?familyid=9a8b005b-84e4-4f24-8d65-cb53442d9e19&displaylang=en.
For more information about using this tool, visit the following websites:
I will assume that you have measured the random read/write speed and the sequential write speed on all of your drives. So, how do you assign them? The following heuristic should result in a good assignment:
The bottom line is that getting optimal performance with Windchill depends on how the logical drives are configured and delegated. Reducing the number of logical drives to fewer than eight will reduce performance.
Do not get physical drives and logical drives confused. A logical drive should consist of two or more independent physical drives (to provide redundancy) with write buffering disabled on the physical drive, the drive controller, and the operating system.
Ken Lassesen is part of the original team that created Dr. GUI of MSDN and specializes in new and resurrected commercial product architecture. He developed architecture for several Microsoft websites, including the original MSDN site and the current Microsoft Partner Network site. He's equally at home with SQL Server, XHTML, Section 508 accessibility standards, globalization, Security Content Automation Protocol (SCAP) security, C#, and ASP.NET server controls. When he is not having fun with technology, he enjoys taking lunch-break hikes in the North Cascades.