Showing posts with label Performance. Show all posts
Showing posts with label Performance. Show all posts

Friday, September 17, 2010

Quick-Take: ZFS and Early Disk Failure

Anyone who's discussed storage with me knows that I "hate" desktop drives in storage arrays. When using SAS disks as a standard, that's typically a non-issue because there's not typically a distinction between "desktop" and "server" disks in the SAS world. Therefore, you know I'm talking about the other "S" word - SATA. Here's a tale of SATA woe that I've seen repeatedly cause problems for inexperienced ZFS'ers out there...

When volumes fail in ZFS, the "final" indicator is data corruption. Fortunately, ZFS checksums recognize corrupted data and can take action to correct and report the problem. But that's like treating cancer only after you've experienced the symptoms. In fact, the failing disk will likely begin to "under-perform" well before actual "hard" errors show-up as read, write or checksum errors in the ZFS pool. Depending on the reason for "under-performing" this can affect the performance of any controller, pool or enclosure that contains the disk.

Wait - did he say enclosure? Sure. Just like a bad NIC chattering on a loaded network, a bad SATA device can occupy enough of the available service time for a controller or SAS bus (i.e. JBOD enclosure) to make a noticeable performance drop in otherwise "unrelated" ZFS pools. Hence, detection of such events is an important thing. Here's an example of an old WD SATA disk failing as viewed from the NexentaStor "Data Sets" GUI:

[caption id="attachment_1660" align="aligncenter" width="450" caption="Something is wrong with device c5t84d0..."]Disk Statistics showing failing drive[/caption]

Device c5t84d0 is having some serious problems. Busy time is 7x higher than counterparts, and its average service time is 14x higher. As a member of a RAIDz group, the entire group is being held-back by this "under-performing" member. From this snapshot, it appears that NexentaStor is giving us some good information about the disk from the "web GUI" but this assumption would not be correct. In fact, the "web GUI" is only reporting "real time" data so long as the disk is under load. In the case of a lightly loaded zpool, the statistics may not even be reported.

However, from the command shell, historic and real-time access to per-device performance is available. The output of "iostat -exn" shows the count of all errors for devices since the last time counters were reset, and average I/O loads for each:

[caption id="attachment_1662" align="aligncenter" width="450" caption="Device statistics from 'iostat' show error and I/O history."]Device statistics from 'iostat' show error and I/O history.[/caption]

The output of iostat clearly shows this disk has serious hardware problems. It indicates hardware errors as well as transmission errors for the device recognized as 'c5t84d0' and the I/O statistics - chiefly read, write and average service time - implicate this disk as a performance problem for the associated RAIDz group. So, if the device is really failing, shouldn't there be a log report of such an event? Yes, and here's a snip from the message log showing the error:

[caption id="attachment_1663" align="aligncenter" width="450" caption="SCSI error with ioc_status=0x8048 reported in /var/log/messages for failing device."]SCSI error with ioc_status=0x8048 reported in /var/log/messages[/caption]

However, in this case, the log is not "full" with messages of this sort. In fact, it only showed-up under the stress of an iozone benchmark (run from the NexentaStor 'nmc' console). I can (somewhat safely) conclude this to be a device failure since at least one other disk in this group is of the same make, model and firmware revision of the culprit. The interesting aspect about this "failure" is that it does not result in a read, write or checksum error for the associated zpool. Why? Because the device is only loosely coupled to the zpool as a constituent leaf device, and it also implies that the device errors were recoverable by either the drive or the device driver (mapping around a bad/hard error.)

Since these problems are being resolved at the device layer, the ZFS pool is "unaware" of the problem as you can see from the output of 'zpool status' for this volume:

[caption id="attachment_1661" align="aligncenter" width="450" caption="Problems with disk device as yet undetected at the zpool layer."]zpool status output for pool with undetected failing device[/caption]

This doesn't mean that the "consumers" of the zpool's resources are "unaware" of the problem, as the disk error has manifested itself in the zpool as higher delays, lower I/O through-put and subsequently less pool bandwidth. In short, if the error is persistent under load, the drive has a correctable but catastrophic (to performance) problem and will need to be replaced. If, however, the error goes away, it is possible that the device driver has suitably corrected for the problem and the drive can stay in place.

SOLORI's Take: How do we know if the drive needs to be replaced? Time will establish an error rate. In short, running the benchmark again and watching the error counters for the device will determine if the problem persists. Eventually, the errors will either go away or they wont. For me, I'm hoping that the disk fails to give me an excuse to replace the whole pool with a new set of SATA "eco/green" disks for more lab play. Stay tuned...

SOLORI's Take: In all of its flavors, 1.5Gbps, 3Gbps and 6Gbps, I find SATA drives inferior to "similarly" spec'd SAS for just about everything. In my experience, the worst SAS drives I've ever used have been more reliable than most of the SATA drives I've used. That doesn't mean there are "no" good SATA drives, but it means that you really need to work within tighter boundaries when mixing vendors and models in SATA arrays. On top of that, the additional drive port and better typical sustained performance make SAS a clear winner over SATA (IMHO). The big exception to the rule is economy - especially where disk arrays are used for on-line backup - but that's another discussion...

Wednesday, September 15, 2010

Short-Take: SQL Performance Notes

Here are some Microsoft SQL performance notes from discussions that inevitably crop-up when discussing SQL storage:

  1. Where do I find technical resources for the current version of MS SQL?

  2. I'm new to SQL I/O performance, how can I learn the basics?

  3. The basics talk about SQL 2000, but what about performance considerations due to changes in SQL 2005?

  4. How does using SQL Server 6.x versus SQL Server 7.0 and change storage I/O performance assumptions?

  5. How does TEMPDB affect storage (and memory) requirements and architecture?

  6. How does controller and disk caching affect SQL performance and data integrity?

  7. How can I use NAS for storage of SQL database in a test/lab environment?

  8. What additional considerations are necessary to implement database mirroring in SQL Server?

  9. When do SQL dirty cache pages get flushed to disk?

  10. Where can I find Microsoft's general reference sheet on SQL I/O requirements for more information?


From performance tuning to performance testing and diagnostics:

  1. I've heard that SQLIOStress has been replaced by SQLIOSim: where can I find out about SQLIOSim to evaluate my storage I/O system before application testing?

  2. How do I diagnose and detect "unreported" SQL I/O problems?

  3. How do I diagnose stuck/stalled I/O problems in SQL Server?

  4. What are Bufwait and Writelog Timeout messages in SQL Server indicating?

  5. Can I control SQL Server checkpoint behavior to avoid additional I/O during certain operations?

  6. Where can I get the SQLIO benchmark tool to assess the potential of my current configuration?


That should provide a good half-day's reading for any storage/db admin...

Tuesday, September 14, 2010

Short-Take: iSCSI+Nexenta, Performance Notes

Here are a few performance tips for running iSCSI with NexentaStor in a Windows environment:

  1. When using the Windows iSCSI Software Initiator with some workloads, disabling the Nagle Algorithm on the Windows Server is sometimes recommended;

  2. Tuning TCP window and iSCSI parameters on each side of the connection can deliver better performance;

  3. VMware part of the equation? Adjusting the way VMware handles congestion events could be useful;

  4. On NexentaStor, disable the Nagle Algorithm with a value of "1" (default, 4095, enabled)


For storage applications where latency is a paramount issue, these hints just might help...

Monday, June 22, 2009

ExtremeTech: Shanghai to Istanbul

ExtremeTech runs some tests on the AMD Istanbul 6-core processor and compares the 2435 (2.6GHz) part to the 2384 (2.7GHz) part in a drop-in replacement using PassMark and Spec_JBB2005. Testing was performed in the same Supermicro system running an updated (AGESA 3.5.0.0) BIOS supporting Istanbul processors.
"Perhaps, the most tell tale result comes from the BOPS rating scored using SpecJBB2005, which simulates a server's ability to process JAVA code. Here, there was a 20% increase in performance, with BOPS increasing from 380721 to 471440. That 20% performance boost would [definitely] be noticed on a busy server in a data center."

- Loyd Case, ExtremeTech.com



While not as thorough as Scott Wassman's drop-in testing at TechReport (reported earlier this month), ExtremeTech's results and conclusions were about the same: Istanbul makes a great upgrade processor.
"It all comes down to simple math, where one has to consider the cost of the CPUs and the time needed to perform an upgrade to see if the return on investment is worthwhile. Most will find that in this case, it is..."

- Lloyd Case, ExtremeTech



"And if you have existing, compatible Socket F servers, the Istanbul Opterons should be an excellent drop-in upgrade. They're a no-brainer, really, when one considers energy costs and per-socket/per-server software licensing fees."

- Scott Wassman, TechReport



Both ExtremeTech and TechReport make compelling upgrade arguments in their testing. Compared to a new system architecture like Nehalem, it is logistically less disruptive - technologically and economically - to certify a CPU upgrade versus as platform replacement. After internal certification, a BIOS and CPU upgrade takes about 20-minutes per system to implement. In a virtualized datacenter where low-level differences are abstracted-away by the hypervisor certification testing should be much less invasive. Likewise, rolling upgrades in a virtualized datacenter with vMotion technology can provide a non-disruptive path from 4-core to 6-core. As Case puts it:
"Simply put, by just upgrading five servers in a data center, data center managers can eliminate the need to purchase an additional server to meet performance needs."

- Lloyd Case, ExtremeTech



However, this "upgrade proposition" is a difficult position for AMD as it does little to sell new systems. Historically, CPU upgrades only happen in 10-15% of the installed base, making CPU sales based on BIOS/drop-in upgrades an interesting footnote. Integrators want to move new hardware with Instanbul pre-installed, not sell "upgrade packages." Perhaps the dynamics of the new economy will drive a statistical anomoly based on the strength of the Istanbul proposition. Datacenter managers face a familiar dilemma with some new twists.


Thursday, June 18, 2009

First 48-core VMmark Appears

Following in the footsteps of the first 12-core VMmark comes the current champion at 33.85@24 tiles using 48-cores - and, despite the timing, it is not an Istanbul server. In fact, today's leader is the IBM System x3950 M2 running 8, 6-core Intel Xeon MP "Dunnington" X7460 processors with 256GB DDR2/667 RAM (5.3GB/core).

This score edges-out the previous champion - the HP ProLiant DL785 G5 with 8, 4-core Opteron 8393SE processors - which reigned at 31.56@21 tiles. In contrast to the 4-socket, 24-core IBM System x3850 M2 Xeon leading the 24-core category, this doubling of socket/core count resulted in only a 50% increase in capacity. This scaling inefficiency is less typical in 2P-to-4P transition but seems to plague the 4p-to-8P segment.
"The x3950 M2 is based on the fourth generation of IBM Enterprise X-Architecture®, and is designed to deliver innovation with enhanced reliability and availability features that enable optimal performance for databases, enterprise applications and virtualized environments."

- IBM News Blurb


"I'm really looking forward to even more virtualization benchmarks which are coming very soon."


- Elisabeth Stahl, IBM Benchmarking and Systems Performance Blog



Looking at the virtualization notes we discover what it takes to keep 48-cores fed to achieve such a benchmark:

  • 4-QLogic QLE2462 HBA's (Dual-port, 4-Gbps FC)

  • 1-IBM DS4800 with 4GB cache

    • 19 EXP 810 storage expansion units for

    • 1.8TB in 49 LUNs

      • 280 15K disks total





  • 21 IBM x336 clients

    • DP 3.2GHz Xeon

    • 3GB RAM

    • Server 2003 R2



  • 2 IBM x335 clients

    • DP Xeon 3.06GHz

    • 2.5GB RAM

    • Server 2003 R2



  • Eight vSwitches

    • 120 ports total



  • 4 Intel PRO 1000PT Dual-port 1Gb Ethernet controllers

    • one per vSwitch




While the Dunnington tops the list by sheer brute force, it's safe to assume that - given the 32-core Opteron is nipping at its heels - the 48-core Istanbul results will displace it soon (possibly alluded to in Elisabeth Stahl's "Benchmarking and Performance Blog" reference above). More interestingly, will AMD's much touted "HT Assist" allow the 8P Istanbul to break the 4P-to-8P "curse" of scaling inefficiency? If not, it would show that much work is needed before the relatively "massive " core counts of 2010 are upon us.