PASS 2011 Summit Abstract Submissions

Today is the last day to submit session abstracts for the PASS 2011 Summit.  I was lucky enough to speak at PASS in 2009 and in 2010, so I hope my luck will continue. I submitted two sessions last night, and I plan on submitting at least two more sessions before the deadline expires tonight at midnight.  Here are my two submitted sessions:

Hardware 301: Diving Deeper into Database Hardware

Making the right hardware selection decisions is extremely important for database scalability. Having properly sized and configured hardware can both increase application performance and reduce capital expenses dramatically. Unfortunately, there are so many different choices and options available when it comes to selecting hardware and storage subsystems, it is very easy to make bad choices based on outmoded conventional wisdom. This session will give you a framework for how to pick the right hardware and storage subsystem for your workload type. You will learn how to evaluate and compare key hardware components, such as processors, chipsets, and memory. You will also learn how to evaluate and compare different types of storage subsystems for different database workload types. This session will give you the knowledge you need to make sure you get the best performance and scalability possible from your hardware budget!

 

DMV Emergency Room!

If you have ever been responsible for a mission critical database, you have probably been faced with a high stress, emergency situation where a database issue is causing unacceptable application performance, resulting in angry users and hovering managers and executives. If this hasn’t happened to you yet, thank your lucky stars, but start getting prepared for your time in the hot seat. This session will show you how to use DMV queries to quickly detect and diagnose the problem, starting at the server and instance level, and then progressing down to the database and object level. Based on the initial assessment of the problem, different types of DMV queries will help you narrow down and identify the problem. This session will show you how to assemble and use an emergency DMV toolkit that you can use to save the day the next time a sick database shows up on your watch in the Database ER!

Posted in PASS, SQL Server 2008 R2, Teaching | Leave a comment

A SQL Server Hardware Nugget A Day – Series Recap

Writing a month long series is always a lot more work than you initially expect. You would think that I would have remembered that fact from April 2010, when I wrote my DMV a Day series…  Since my memory was short, I decided to write another month long series for April, which I just finished.

Here is a day by day recap, with links to each post:

A SQL Server Hardware Nugget A Day – Day 1  (Westmere-EP)

A SQL Server Hardware Nugget A Day – Day 2 (Westmere-EX)

A SQL Server Hardware Nugget A Day – Day 3 (AMD Opteron 6100)

A SQL Server Hardware Nugget A Day – Day 4 (AMD Bulldozer)

A SQL Server Hardware Nugget A Day – Day 5 (Hardware ID – DMVs)

A SQL Server Hardware Nugget A Day – Day 6 (Hardware ID – Built-in)

A SQL Server Hardware Nugget A Day – Day 7 (CPU-Z)

A SQL Server Hardware Nugget A Day – Day 8 (Recommended Intel Processors)

A SQL Server Hardware Nugget A Day – Day 9 (Recommended AMD Processors)

A SQL Server Hardware Nugget A Day – Day 10 (Old Intel Processor Numbering)

A SQL Server Hardware Nugget A Day – Day 11 (New Intel Processor Numbering)

A SQL Server Hardware Nugget A Day – Day 12 (AMD Processor Numbering)

A SQL Server Hardware Nugget A Day – Day 13 (Intel Turbo Boost)

A SQL Server Hardware Nugget A Day – Day 14 (Intel Tick Tock Release Strategy)

A SQL Server Hardware Nugget A Day – Day 15 (Power Plans and CPU performance)

A SQL Server Hardware Nugget A Day – Day 16 (SQL Server 2008 R2 and Hardware)

A SQL Server Hardware Nugget A Day – Day 17 (Geekbench)

A SQL Server Hardware Nugget A Day – Day 18 (AMD Turbo CORE)

A SQL Server Hardware Nugget A Day – Day 19 (RAID Controllers)

A SQL Server Hardware Nugget A Day – Day 20 (Building a Desktop Test System)

A SQL Server Hardware Nugget A Day – Day 21 (Processor Cache Size)

A SQL Server Hardware Nugget A Day – Day 22 (32-bit vs. 64-bit)

A SQL Server Hardware Nugget A Day – Day 23 (Two Socket vs. Four Socket)

A SQL Server Hardware Nugget A Day – Day 24 (TPC-E Benchmark)

A SQL Server Hardware Nugget A Day – Day 25 (DB Server Processor Selection)

A SQL Server Hardware Nugget A Day – Day 26 (Laptop Processor Selection)

A SQL Server Hardware Nugget A Day – Day 27 (Crystal DiskMark)

A SQL Server Hardware Nugget A Day – Day 28 (Intel Chipsets and SSDs)

A SQL Server Hardware Nugget A Day – Day 29 (Hardware Resiliency)

A SQL Server Hardware Nugget A Day – Day 30 (RAID Level Primer)

If you liked this series, please consider buying my SQL Server Hardware book, when it finally becomes available later this month. You can also reach out to me on Twitter, where I am @GlennAlanBerry.

Posted in Computer Hardware | Tagged | 6 Comments

A SQL Server Hardware Nugget A Day – Day 30

For Day 30 of this series, (which is the last day), I am going to talk a little about RAID, which stands for Redundant array of independent disks or Redundant array of inexpensive disks, depending on who you believe.

RAID is a technology that allows use of multiple hard drives, combined in various ways, to improve redundancy, availability and performance, depending on the RAID level used. When a RAID array is presented to a host in Windows, it is called a logical drive. Using RAID, the data is distributed across multiple disks in order to:

    • Overcome the I/O bottleneck of a single disk, as described previously
    • Get protection from data loss through the redundant storage of data on multiple disks
    • Avoid any one hard drive being a single point of failure
    • Manage multiple drives more effectively

Regardless of whether you are using traditional magnetic hard drive storage or newer solid state storage technology, most database servers will employ RAID technology. RAID improves redundancy, improves performance, and makes it possible to have larger logical drives. RAID is used for both OLTP and DW workloads. Having more spindles in a RAID array helps both IOPS and throughput, although ultimately throughput can be limited by a RAID controller or HBA.

Please note that while RAID does provide redundancy in your data storage, it is not a substitute for an effective backup strategy or a high availability/disaster recovery (HA/DR) strategy. Regardless of what level of RAID you use in your storage subsystem, you still need to run SQL Server full and log backups as necessary to meet your recovery point objectives (RPO) and recovery time objectives (RTO).

There are a number of commercially-available RAID configurations, which I’ll review over the coming sections, and each has associated costs and benefits. When considering which level of RAID to use for different SQL Server components, you have to carefully consider your workload characteristics, keeping in mind your hardware budget. If cost is no object, I am going to want RAID 10 for everything, i.e. data files, log file, and TempDB. If my data is relatively static, I may be able to use RAID 5 for my data files.

During the discussion, I will assume that you have a basic knowledge of how RAID works, and what the basic concepts of striping, mirroring, and parity mean.

RAID 0 (disk striping with no parity)

RAID 0 simply stripes data across multiple physical disks. This allows reads and writes to happen simultaneously, across all of the striped disks, so offering improved read and write performance, compared to a single disk. However, it actually provides no redundancy whatsoever. If any disk in a RAID 0 array fails, the array is off-line and all of the data in the array is lost. This is actually more likely to happen than if you only have a single disk, since the probability of failure for any single disk goes up as you add more disks. There is no disk space loss for storing parity data (since there is no parity data with RAID 0), but I don’t recommend that you use RAID 0 for database use, unless you enjoy updating your resume. RAID 0 is often used by serious computer gaming enthusiasts in order to reduce the time it takes to load portions of their favorite games. They do not keep any important data on their “gaming rigs”, so they are not that concerned about losing one of their drives.

RAID 1 (disk mirroring or duplexing)

You need at least two physical disks for RAID 1. Your data is mirrored between the two disks, i.e. the data on one disk is an exact mirror of that on the other disk. This provides redundancy, since you can lose one side of the mirror without the array going off-line and without any data loss, but at the cost of losing 50% of your space to the mirroring overhead. RAID 1 can improve read performance, but can hurt write performance in some cases, since the data has to be written twice.

On a database server, it is very common to install the Windows Server operating system on two (at least) of the internal drives, configured in a RAID 1 array, and using an embedded internal RAID controller on the motherboard. In the case of a non-clustered database server, it is also common to install the SQL Server binaries on the same two drive RAID 1 array as the operating system. This provides basic redundancy for both the operating system and the SQL Server binaries. If one of the drives in the RAID 1 array fails, you will not have any data loss or down-time. You will need to replace the failed drive and rebuild the mirror, but this is a pretty painless operation, especially compared to reinstalling the operating system and SQL Server!

RAID 5 (striping with parity)

RAID 5 is probably the most commonly-used RAID level, for both general file server systems and for SQL Server. RAID 5 requires at least three physical disks. The data, and calculated parity information, is striped across the physical disks by the RAID controller. This provides redundancy because if one of the disks goes down, then the missing data from that disk can be reconstructed from the parity information on the other disks. Also, rather than losing 50% of your storage, in order to achieve redundancy, as for disk mirroring, you only lose 1/N of your disk space (where N equals the number of disks in the RAID 5 array) for storing the parity information. For example, if you had six disks in a RAID 5 array, you would lose 1/6th of your space for the parity information.

However, you will notice a very significant decrease in performance while you are missing a disk in a RAID 5 array, since the RAID controller has to work pretty hard to reconstruct the missing data. Furthermore, if you lose a second drive in your RAID 5 array, the array will go offline, and all of the data will be lost. As such, if you lose one drive, you need to make sure to replace the failed drive as soon as possible. RAID 6 stores more parity information than RAID 5, at the cost of an additional disk devoted to parity information, so you can survive losing a second disk in a RAID 6 array.

Finally, there is a write performance penalty with RAID 5, since there is overhead to write the data, and then to calculate and write the parity information. As such, RAID 5 is usually not a good choice for transaction log drives, where we need very high write performance. I would also not want to use RAID 5 for data files where I am changing more than 10% of the data each day. One good candidate for RAID 5 is your SQL Server backup files. You can still get pretty good backup performance with RAID 5 volumes, especially if you use backup compression.

RAID 10 and RAID 0+1

When you need the best possible write performance, you should consider either RAID 0+1 or, preferably, RAID 10. These two RAID levels both involve mirroring (so there is a 50% mirroring overhead) and striping but differ in the details in how it is done in each case.

In RAID 10 (striped set of mirrors), the data is first mirrored and then striped. In this configuration, it is possible to survive the loss of multiple drives in the array (one from each side of the mirror), while still leaving the system operational. Since RAID 10 is more fault tolerant than RAID 0+1, it is preferred for database usage.

In RAID 0+1 (mirrored pair of stripes) the data is first striped, and then mirrored. This configuration cannot handle the loss of more than one drive in each side of the array.

RAID 10 and RAID 0+1 offer the highest read/write performance, but incur a roughly 100% storage cost penalty, which is why they are sometimes called “rich man’s RAID”. These RAID levels are most often used for OLTP workloads, for both data files and transaction log files. As a SQL Server database professional, you should always try to use RAID 10 if you have the hardware and budget to support it. On the other hand, if your data is less volatile, you may be able to get perfectly acceptable performance using RAID 5 for your data files. By “less volatile”, I mean if less than 10% of your data changes per day, then you may still get acceptable performance from RAID 5 for your data files(s).

I hope you have enjoyed this month long series about SQL Server hardware. In case you did not guess already, one of the points of the series was to support my upcoming book from Simple Talk Publishing, called SQL Server Hardware, which will finally be available on Amazon sometime in May.

Posted in Computer Hardware | Tagged | 5 Comments

A SQL Server Hardware Nugget A Day – Day 29

For Day 29 of this series, I am going to talk about some of the basic things that you should consider from a hardware perspective when you are trying to increase the basic resiliency and availability of an individual database server. These are some of the first steps you would take as part of designing a high availability solution for your data tier.

The basic principal here is to try to eliminate as many single points of failure as possible at the hardware and configuration level. I believe you should do these things regardless of what other high availability techniques you decide to use. When you are choosing components for a database server (as opposed to a web server, for example), here are some basic things to include:

Two internal drives in a RAID 1 configuration for the operating system and SQL Server binaries. These drives should be using the embedded hardware RAID controller that is available on most new rack mounted servers. I try to get at least 146GB, 15K 2.5” drives for this purpose. Using 15K drives will help Windows Server boot a little faster, and will help SQL Server load a little faster when the service first starts up. Using 146GB (or larger) drives will give you more room to accommodate things like SQL Server error log files, dump files, etc., without being worried about drive space.

Dual power supplies for the server, each plugged into separate circuits in your server room or data center. You should also be plugged into an Uninterruptable Power Supply (UPS) on each circuit, and ideally have a backup power source, such as a diesel generator for your data center. The idea here is to protect against an internal power supply failure , a cord being kicked out of a plug, a circuit breaker tripping, or loss of electrical power from the utility grid.

You should have multiple network ports in the server, with Ethernet connections into at least two different network switches. These network switches should be plugged into different electrical circuits in your data center. Most new rack mounted servers have at least four gigabit Ethernet ports embedded on the motherboard.

You should have multiple RAID controller cards (if you are using Direct Attached Storage), multiple Host Bus Adapters (HBAs) if you are using a fiber channel SAN, or multiple PCI-e Gigabit (or better) Ethernet cards with an iSCSI SAN. This will give you better redundancy and better throughput, depending on your configuration.

Wherever your SQL Server data files, log files, TempDB files, and SQL Server backup files are located, they should be protected by an appropriate RAID level, depending on your budget and performance needs. We want to keep our databases from going down due to the loss of a single drive. One thing to keep in mind, is that RAID is not a substitute for an appropriate SQL Server backup and restore strategy!  Never, never, never let anyone, whether it is a SAN vendor, a server admin from your Operations team, or your boss, talk you into not doing SQL Server backups as appropriate for your Recovery Point Objective (RPO) and Recovery Time Objective (RTO) metrics.  I cannot emphasize this point enough!  There is absolutely no substitute for having SQL Server backup files.

Despite this fact, you will undoubtedly be pressured multiple times in your career, by different people, into not running SQL Server database backups. You really need to stand your ground and not give in to this pressure. There is an old saying: “If you don’t have backups, you don’t have a database”.

I also want to note one configuration setting I like to use for database servers, to reduce their boot and SQL Server startup time. For a standalone database server, reducing your total reboot time has a direct effect on your high availability numbers.

I always go into the BIOS setup for the server, and disable the memory testing that normally occurs during the POST sequence. This will shave a significant amount of time off of the POST sequence (often many minutes), so the server will boot faster. I think this is pretty low risk, since this testing only occurs during the POST sequence. It has nothing to do with detecting a memory problem while the server is running later (which is the job of your hardware monitoring software). I am sure some people may disagree with this setting, so I would love to hear your opinions.

Posted in Computer Hardware | Tagged , | 1 Comment

A SQL Server Hardware Nugget A Day – Day 28

For Day 28 of this series, I am going to talk a little bit about some upcoming developments in Intel desktop chipsets and Intel consumer level SSDs, and how they will work together. This technology is relevant for desktop systems initially, but will probably show up in laptop systems pretty quickly also.

Tom’s Hardware had a story back in March that had some details about the Intel Z68 chipset. Motherboards using the new Z68 chipset are supposed to be on sale on May 11.

Earlier this year, motherboard vendors released boards based on the Intel P67 and H67 chipsets. One thing to keep in mind is that the current Intel P67 and H67 chipsets have a number of limitations. With P67, you can overclock the Sandy Bridge CPU, but you can’t use the Quick Sync media accelerator inside Intel’s Sandy Bridge processors, and you cannot use the improved integrated graphics inside the CPU. With the H67, you can’t overclock the the Sandy Bridge CPU, but you can use Quick Synch and the integrated graphics. You basically had to choose between two somewhat unsatisfactory choices.

The new Z68 chipset is somewhat of a hybrid between the P67 and the H67 platform controller hubs (PCHs) and was designed to allow overclocking Sandy Bridge CPUs while using the integrated graphics. In addition, the Z68 chipset supports Intel Smart Response Technology (SRT), allowing you to use an SSD as a cache to speed up your disk access in many situations, similar to a hybrid hard drive.

It will let you use a small (64GB or less), inexpensive SSD as a caching layer in front of your conventional hard drive. The idea is that you install Windows 7 or Windows Server 2008 R2 on the conventional hard drive, then you use Intel’s Rapid Storage Technology application to enable caching for the SSD.

This allows the Rapid Storage driver to write data to the SSD the first time it is read from the conventional hard drive. Then, the next time the system needs that data, it will look in the SSD first, and hopefully find it there, for a nice speed boost. The idea is that you can use a small, inexpensive SSD to give a performance boost for reads, while still having a large, inexpensive conventional hard drive for storage space. This combination will never be as good as simply using a large, fast (and expensive SSD), but is a budget alternative to give you some of the benefits of an SSD at a low incremental cost.

4-27-11-intel-larsen-creek-asrock-2[1]

Figure 1: ASRock Marketing Slide for SRT

EndGadget has a post that discusses what is supposed to be a leaked slide that shows Intel’s roadmap for their current and upcoming consumer-grade SSDs. The little 20GB Larsen Creek SSD is what Intel is targeting for this scenario.

Posted in Computer Hardware | Tagged , | 2 Comments

A SQL Server Hardware Nugget A Day – Day 27

For Day 27 of this series, I am going to talk a little bit about disk performance and one easy tool you can use to compare the performance of different types of disks and disk arrays.

CrystalDiskMark, available from Crystal Dew World  is a widely used I/O component benchmark. You can select the number of test runs, desired file size, and which logical drive you are testing and it allows you to measure:

Sequential read and write performance in megabytes/second
Random read and write performance for a 512K block size
Random read and write performance for a 4K block size
Random read and write performance for a 4K block size with a queue depth of 32

There are many other ways such as SQLIO that will do a much more thorough job of benchmarking your disk subsystem, but they are a little more difficult to work with. Using CrystalDiskMark should be a supplement to other disk benchmarking that you do.

I have captured test results for a pretty decent consumer grade 6Gbps MLC SSD (the 128GB Crucial RealSSD C300) in Figure 1, compared to a couple of fast, 7200rpm SATA drives in Figures 2 and 3.

Both sequential and random read write performance are much better with the SSD drive. One thing to keep in mind is that most consumer SSD drives perform better in their larger capacities (so a 256GB drive will have better performance than a 128GB drive of the same model line). You also want to make sure that you use a 6Gbps SATA III port for a 6Gbps SATA III SSD, or else you won’t get get all of the performance the drive is capable of.

image

Figure 1: 128GB Crucial RealSSD C300 SATA III SSD

 

image

Figure 2: Western Digital Black WD1002FAEX SATA III hard drive

 

image

Figure 3: Western Digital Black WD1001FALS SATA II hard drive

The Western Digital Black WD1002FAEX is a newer model, with a 64MB cache, while the Western Digital Black WD1001FALS is an earlier model with a 32MB cache.

 

image

Figure 4: CrystalDiskMark Scores for two 15K SAS drives in RAID1

 

image

Figure 5: CrystalDiskMark Scores for six 15K SAS drives in RAID10

Figure 5 shows the results from six 146GB Seagate Cheetah 15K SAS drives in a RAID10 configuration. Notice the 531.7 MB/s sequential read and 414.6 MB/s sequential write score. This shows the positive effect of having six drives compared to having four drives (using the exact same drives and RAID level). Even with six 15K drives in RAID10, the 4K random read and write performance is pretty low.

A single, consumer-grade Multi-Level Cell (MLC) SSD drive will have much, much higher random I/O performance than this six drive RAID10 array. This is shown if you compare random read and random write numbers between the six drive RAID 10 array in Figure 5 and the single, consumer-grade Multi-Level Cell (MLC) SSD drive in Figure 1.

Posted in Computer Hardware | Tagged , | 1 Comment

A SQL Server Hardware Nugget A Day – Day 26

For Day 26 of this series, I want to talk a little about laptop processor selection (since I get a lot of questions about it).  Many DBAs, Developers, and consultants use laptop computers as their primary workstations for working with SQL Server. Even more than an actual database server, you are pretty much stuck with the processor that you initially buy in a laptop (unless you are pretty brave and willing to do some major surgery on the laptop).

Having the “right” processor for your needs is very important in a laptop. Making the wrong choice could mean that you have a lot less processing power or a lot less battery life than you expect. Unfortunately, you cannot usually rely on the sales clerk at Best Buy to give you good advice about which processor to pick for your new laptop.

Right now (April 2011) you want a Sandy Bridge processor in your new laptop. After the Sandy Bridge chipset issue in February (which had absolutely nothing to do with the processor itself), lots of Sandy Bridge based laptops are finally available for purchase.

Back in March, I wrote a post called Intel Sandy Bridge Mobile Processors Explained that covered some of the differences between the various commonly available Sandy Bridge processors. I would definitely advise you to avoid the low-end Core i3 Sandy Bridge processors (such as a Core i3 2310M), since they are only dual-core (with hyper-threading) without Turbo Boost Technology.

I recently had a reader tell me about a Clevo W150HNM with an Intel Core i7 2820QM processor that he bought. His submitted Geekbench score for that machine was 11,052 which is quite impressive!  That laptop has more CPU horsepower than a relatively recent vintage (early 2008) four socket database server equipped with four Intel Xeon X7350 processors, according to Geekbench.

For more comparison results, the Geekbench blog has a post with a number of results from different models of the MacBook Pro, going back to the early 2010 models. You can use this to get a rough idea of how much better a Sandy Bridge based machine (Mac or PC) will perform compared to various older processors.

Another important benefit you get with a new Sandy Bridge machine is native 6Gbps SATA III support, which means that you can take advantage of the fastest 6Gbps SSDs. You will also get USB 3.0 ports, which are a huge improvement over USB 2.0 ports (which are usually limited to about 25-30MB/sec throughput).

Posted in Computer Hardware | Tagged | 1 Comment

A SQL Server Hardware Nugget A Day – Day 25

For Day 25 of this series, I want to talk about how you go about picking a CPU for your database server. A couple of days ago, I covered some factors to consider when choosing between a two-socket and a four-socket database server. As you come to a decision about whether you will be using a one-socket, two-socket, four-socket database server, or something larger, that will tend to have a limiting effect on your available processor choices.

Until the recent introduction of the Intel Xeon E7 processor series, Intel had different processor families for different socket count servers. For example the Xeon 3xxx family was for single-socket servers, the Xeon 5xxx family was for two socket servers, and the Xeon 7xxx family was for four socket (or more) servers.

Now, if you want to, you can choose a Xeon E7-2800 series processor for a two socket server, a Xeon E7-4800 series processor for a four socket server, or a Xeon E7-8800 series processor for an eight socket (or more) server.

For an OLTP workload on a two socket server, I would prefer an Intel Xeon X5690 processor over an Intel Xeon E7-2870 processor because of its better single-threaded performance due to its higher clock speed (within the same processor architecture and generation).  For a DSS/DW workload, I would prefer the E7-2870, due to its higher core count and larger L3 cache size.

My philosophy for database server processor selection is to pay the price premium for the absolute best processor available for each socket in your server.  The SQL Server processor license cost is pretty high (even for Standard Edition), so you want to get as much performance and scalability capacity as possible for each processor license that you buy. It is very unlikely that you will ever upgrade to a better processor in an existing database server, so you will be stuck with your choice for the life of the server. If you have “excess” processor capacity, you can consider using it to trade CPU utilization for I/O utilization by using backup compression and data compression (if you have SQL Server 2008 Enterprise Edition).

Unlike a laptop, or web server, I think it is a mistake to buy a processor that is a couple of steps down from the “top-of-the line” for database server usage.

Posted in Computer Hardware | Tagged | 3 Comments

A SQL Server Hardware Nugget A Day – Day 24

For Day 24 of this series, I want to talk a little bit about the TPC-E OLTP benchmark.

The TPC Benchmark E (TPC-E) is an OLTP performance benchmark that was introduced in February 2007. TPC-E is a not a replacement for the older TPC-C benchmark, but rather is a completely new OLTP benchmark. It is an OLTP, database-centric workload that is meant to reduce the cost and complexity of running the benchmark compared to the older TPC-C benchmark. It simulates the OLTP workload of a brokerage firm that interacts with customers using synchronous transactions and with a financial market using asynchronous transactions.

The business model of the brokerage firm is organized by Customers, Accounts, and Securities. The data model for TPC-E is significantly more complex, but more realistic than TPC-C, with 33 tables and many different data types. The data model for the TPC-E database does enforce referential integrity, unlike the older TPC-C data model.

The TPC-E database is populated with pseudo-real data, including customer names from the year 2000 U.S. Census, and company listings from the NYSE and NASDAQ. Having realistic data introduces data skew, and makes the data compressible. Unlike TPC-C, the storage media for TPC-E must be fault tolerant (which means no RAID 0 arrays). Overall, the TPC-E benchmark is designed to have reduced I/O requirements compared to the old TPC-C benchmark, which makes it both less expensive and more realistic since the sponsoring vendors will not feel as much pressure to equip their test systems with disproportionately large disk subsystems in order to get the best test results. The TPC-E benchmark is also more CPU intensive than the old TPC-C benchmark.

The TPC-E implementation is broken down into a Driver and a System Under Test (SUT), separated by a mandatory network. The Driver represents the various client devices that would use an N-tier client-server system, abstracted into a load generation system. The SUT has multiple Application servers (Tier A) that communicate with the database server and its associated storage subsystem (Tier B). TPC provides a transaction harness component that runs in Tier A, while the test sponsor provides the other components in the SUT.

The performance metric for TPC-E is transactions per second, tpsE. The actual tpsE score represents the average number of Trade Result transactions executed within one second. To be fully compliant with the TPC-E standard, all references to tpsE results must include the tpsE rate, the associated price per tpsE, and the availability date of the priced configuration.

It seems interesting that, as of early 2011, Microsoft is the only database vendor that has submitted any TPC-E results, even though the TPC-E benchmark has been available since early 2007. Whatever the reasons why other database vendors haven’t posted results, there are certainly many results posted for SQL Server, which makes it a very useful benchmark when assessing SQL Server hardware.

The most recent posted TPC-E result is for an HP Proliant DL580 G7 Server with a 2,454.51 tpsE score for a four-socket system. This system has four, ten-core Intel Xeon E7-4870 processors that have a total of 80 logical cores for the system. It also has 1TB of RAM and 1100 spindles in its I/O subsystem, using an 11TB initial database size for the test. Looking at the Executive Summary, you can see that it is running SQL Server 2008 R2 Enterprise Edition on top of Windows Server 2008 R2 Enterprise Edition SP1.

It is using RAID 10 for both the data files and log file, with (950) 72GB 6Gbps 15K SAS drives, (150) 146GB 6Gbps 15K SAS drives, and four 400GB SSDs.

Digging deeper into the Supporting Files for the submission, you can find how HP decided to configure their SQL Server 2008 R2 instance for the benchmark. There are some settings that I do not agree with (even for a benchmark), and several settings that I would never want to use in a production environment. The complete set is shown in Figure 1.

-- HP SQL Configuration Options for TPC-E Benchmark
-- Don't use these settings on a production server!
exec sp_configure 'show advanced options', '1'
reconfigure with override
go

exec sp_configure 'max server memory', 1038000
exec sp_configure 'recovery interval','32767'
exec sp_configure 'awe enabled','0'
exec sp_configure 'max degree of parallelism','1'
exec sp_configure 'lightweight pooling','1'
exec sp_configure 'priority boost', '1'
exec sp_configure 'max worker threads', 3000
exec sp_configure 'default trace enabled', 0
go
reconfigure with override
go

Figure 1: HP TPC-E SQL Configuration Settings

At any rate, I think it is interesting to poke around in the details of the TPC-E submissions.

Posted in Computer Hardware, Processors | Tagged | 1 Comment

A SQL Server Hardware Nugget A Day – Day 23

For Day 23 of this series, I want to talk a little about some things to consider as you make the decision whether to purchase a four socket database server or two socket database server.

Traditionally, it was very common to use a four socket machine for most database server scenarios, while two socket servers were often used for web servers or application servers. With the advances in in new processors and the improvements in memory density of the past three-four years, you may want to reconsider that conventional wisdom.

Historically, two-socket database servers did not have enough processor capacity, memory capacity, or I/O capacity to handle many “heavy” database workloads. Processors have gotten far more powerful in the last few years, and memory density has gone up dramatically. It is also possible to get much more I/O capacity connected to a two socket server than it was a few years ago.

Another reason to think about this issue is the cost of SQL Server processor licenses. If you can run your workload on a two socket server instead of a four socket server, you will save 50% on your SQL Server processor license costs, which can be a very substantial savings! Even with SQL Server 2008 R2 Standard Edition licenses, the cost of two processor licenses would pay for a very capable two socket database server (exclusive of the I/O subsystem).

A little history of Dell PowerEdge Servers

Back in 2006, you could buy a two-socket Dell PowerEdge 1850, with two hyper-threaded Intel Xeon “Irwindale” 3.2GHz processors and 16GB of RAM (with a total of four logical cores). This was fine for an application or web server, but it did not have the CPU horsepower (Geekbench score was about 2200) or memory capacity for a heavy duty database workload.

Around the same time, you could buy a four-socket Dell PowerEdge 6800, with four dual-core, Intel Xeon 7040 “Paxville” 3.0GHz processors and 64GB of RAM (with a total of 16 logical cores with hyper-threading enabled). This was a much better choice for a database server because of the additional processor, memory, and I/O capacity compared to a PowerEdge 1850. Even so, its Geekbench score was only about 4400, which is pretty pathetic by today’s standards. Back in 2006-2007, it still made sense to buy a four socket database server for most database server workloads.

By late 2007, you could buy a two-socket Dell PowerEdge 1950, with two, quad-core Intel Xeon E5450 processors and 32GB of RAM (with a total of eight logical cores) and you would actually have a pretty powerful platform for a database server. A system like this would have a Geekbench score of about 8000.

By late 2008, you could buy a four-socket Dell PowerEdge R900, with four, six-core Intel Xeon X7460 processors and 256GB of RAM (with a total of of 24 logical cores). This was a very powerful , but costly platform for a database server, with a Geekbench score of around 16500.

By early 2009, you could buy a two-socket Dell PowerEdge R710, with two, quad-core Intel Xeon X5570 processors, and 144GB of RAM (with a total of 16 logical cores) and you would have a very powerful database server platform. This system would have a Geekbench score of around 15000.

By early 2010, you could buy that same Dell PowerEdge R710, with more powerful six-core Intel Xeon X5680 processors (with a total of 24 logical cores), and push the Geekbench score to about 22500. This gives you quite a bit more CPU capacity than the PowerEdge R900 that you bought in late 2008. If you are concerned about 144GB of RAM not being enough memory in the R710, you could buy two R710s, and have nearly triple the CPU capacity of a single R900. This assumes that you can split your database workload between two database servers, by moving databases or doing things like vertical or horizontal partitioning of an existing large database.

This trend has been continuing over the past several years, with Intel introducing new processors in the two socket space roughly a year ahead of introducing a roughly equivalent new processor in the four socket space. This means that you will get much better single-threaded OLTP performance from a two socket system than from a four socket system of the same age (as long as your I/O subsystem is up to par).

Given the choice, I would rather have two, two-socket machines instead of one, four socket machines in almost all cases. The only big exception would be a case where you absolutely need to have far more memory in a single server that you can get in a two socket machine (a Dell PowerEdge R710 can now go up to 288GB if you are willing to pay for 16GB DIMMs), and you are unable to do any re-engineering to split up your load.

Posted in Computer Hardware, Processors | Tagged | 2 Comments