<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: It was a dark and stormy night&#8230;</title>
	<atom:link href="http://www.brentozar.com/archive/2008/12/writing-my-first-book/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brentozar.com/archive/2008/12/writing-my-first-book/</link>
	<description>SQL Server MCM and MVP, performance tuning, consulting, training, and community building.</description>
	<lastBuildDate>Fri, 30 Jul 2010 10:11:54 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: William Cleek</title>
		<link>http://www.brentozar.com/archive/2008/12/writing-my-first-book/#comment-6762</link>
		<dc:creator>William Cleek</dc:creator>
		<pubDate>Tue, 23 Dec 2008 17:01:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=1970#comment-6762</guid>
		<description>Thanks, Brent.  In all of my experiences I&#039;ve seen disconnects between storage and DBA teams.  The extent of the disconnects can have negative implications for IO intensive apps like SQL.  I really do wish to see a book that attempts to bridge the gap of knowledge where storage IO management is concerned.  To go beyond scaling of paths and adding of cache.  Both, although important, are intermediaries and require appropriate endpoint configurations to be effective under heavy loads.

Btw, probably being a SAN guy at heart I&#039;m truly impressed with HP&#039;s EVA data layout.  Gone are contiguous data stripes replaced with independent blocks that can be relocated by policy to satisfy load balancing / IO assignment needs.  I think HP&#039;s taken the next logical step in the high concurrency data layout of the Symm DMX .  I haven&#039;t been following DMX, so they might be moving in the same direction, albeit more slowly considering the scales and install base of DMX.


If you don&#039;t mind emailing me I have an unrelated question I&#039;d like to ask you offline.  Thanks.</description>
		<content:encoded><![CDATA[<p>Thanks, Brent.  In all of my experiences I&#8217;ve seen disconnects between storage and DBA teams.  The extent of the disconnects can have negative implications for IO intensive apps like SQL.  I really do wish to see a book that attempts to bridge the gap of knowledge where storage IO management is concerned.  To go beyond scaling of paths and adding of cache.  Both, although important, are intermediaries and require appropriate endpoint configurations to be effective under heavy loads.</p>
<p>Btw, probably being a SAN guy at heart I&#8217;m truly impressed with HP&#8217;s EVA data layout.  Gone are contiguous data stripes replaced with independent blocks that can be relocated by policy to satisfy load balancing / IO assignment needs.  I think HP&#8217;s taken the next logical step in the high concurrency data layout of the Symm DMX .  I haven&#8217;t been following DMX, so they might be moving in the same direction, albeit more slowly considering the scales and install base of DMX.</p>
<p>If you don&#8217;t mind emailing me I have an unrelated question I&#8217;d like to ask you offline.  Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brent Ozar</title>
		<link>http://www.brentozar.com/archive/2008/12/writing-my-first-book/#comment-6760</link>
		<dc:creator>Brent Ozar</dc:creator>
		<pubDate>Tue, 23 Dec 2008 15:11:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=1970#comment-6760</guid>
		<description>Great set of recommendations!  In fact, I&#039;m going to subcontract the chapter out to you.  ;-)  Sounds like we&#039;ve had a lot of the same experiences!</description>
		<content:encoded><![CDATA[<p>Great set of recommendations!  In fact, I&#8217;m going to subcontract the chapter out to you.  <img src='http://d329fn540v13gd.cloudfront.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />   Sounds like we&#8217;ve had a lot of the same experiences!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: William Cleek</title>
		<link>http://www.brentozar.com/archive/2008/12/writing-my-first-book/#comment-6754</link>
		<dc:creator>William Cleek</dc:creator>
		<pubDate>Mon, 22 Dec 2008 22:41:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=1970#comment-6754</guid>
		<description>Hi Brent,

Coming from a sys admin background in platforms and SAN I have some experience tweaking performance on mid to high end arrays.

The most bang for the buck tweak, barring correcting any horrid misconfigurations, has been on spindle and stripe element / size sizing.

Not many outside of the upper end SAN guys have seen, first hand, the performance implications of spindle and stripe modifications.  Usually, this is the case since these guys are the ones that have access to SAN equipment to test these configurations.

There is open debate on the effect of stripe sizing and many sources of information that provide conflicting info.  The most useful document on disk/stripe tweaking I&#039;ve found has been Microsoft&#039;s Disk Performance whitepaper.  However, MSFT&#039;s SQL Server Predeployment IO best practices whitepaper, even being less storage specific than the first, mentions good practices.

For example, I was able to improve and reduce a DW/DM load time by a factor of 7, (to 3 hrs), by following, and extensive testing, of MSFT&#039;s spindle and striping recommendations.  Not many sources address disk stripe element and full stripe length in sufficient detail.  They should because when it comes to IO concurrency, load distribution is huge.

Major Storage Points
-Concurrent IO
  HBA Queue Depth settings.  Set to max.  Most SAN array vendors have custom HBA firmware that will max this setting.  Also, Windows has a concurrent IO setting for physicaldisk.  SQL might bypass this setting, but something of interest.
-Network paths
  For SAN, attempt to supply as many end-to-end paths to meet desired IO concurrency.  If using a CDP facility, and performance is a major concern, enable SCSI write ack spoofing on the SAN switches to avoid added latency.  Also, if SAN extension via IP is in place make sure to evaluate TCP performance using vendor supplied utilities.  Tweak as necessary.  
-Operation fragmentation
  Avoid it.  As usual, never fragment a request/response when performance is a major concern.  Size the disk allocation unit, Layer 2 Frame Size, Layer 3 MTU (for IP transports), Array RAM cache page size, Array disk stripe element size in a succession of encapsulation able to finally carry, in it&#039;s entirety, the IO request/response *.
-Critical Array Operations
  Critical meaning scary.  Try not to overload a SAN with maintenance jobs, such as snaps, clones, replication, and try to support an extreme high performance DB at the same time.  Simple IO math.  If extensive use of CDP/replication is used to remote Arrays, and the organization has 50-100K to spend ;), consider offloading that investing in SAN fabric based replication.
  Also, review Array RAM cache management policies and tweak as necessary.  Exhaustion and subsequent all-stop flush of cache to disk is obviously horrible for performance.  Set a more aggressive cache flush policy, usually by percentage used.  If spindles and disk stripes were sized appropriately this aggressive cache policy shouldn&#039;t hurt,...much.

All I can think of at the moment.  Good luck on the book!



* This is a point of contention.  Some sources say to size to accommodate the average IO request size.  Some say to instead max out the file system alloc units (MSFT) and disk stripe element size (MSFT, et al).  I&#039;ve tested this and I have to agree with MSFT that this method is excellent for high throughput when high number of spindles are involved.</description>
		<content:encoded><![CDATA[<p>Hi Brent,</p>
<p>Coming from a sys admin background in platforms and SAN I have some experience tweaking performance on mid to high end arrays.</p>
<p>The most bang for the buck tweak, barring correcting any horrid misconfigurations, has been on spindle and stripe element / size sizing.</p>
<p>Not many outside of the upper end SAN guys have seen, first hand, the performance implications of spindle and stripe modifications.  Usually, this is the case since these guys are the ones that have access to SAN equipment to test these configurations.</p>
<p>There is open debate on the effect of stripe sizing and many sources of information that provide conflicting info.  The most useful document on disk/stripe tweaking I&#8217;ve found has been Microsoft&#8217;s Disk Performance whitepaper.  However, MSFT&#8217;s SQL Server Predeployment IO best practices whitepaper, even being less storage specific than the first, mentions good practices.</p>
<p>For example, I was able to improve and reduce a DW/DM load time by a factor of 7, (to 3 hrs), by following, and extensive testing, of MSFT&#8217;s spindle and striping recommendations.  Not many sources address disk stripe element and full stripe length in sufficient detail.  They should because when it comes to IO concurrency, load distribution is huge.</p>
<p>Major Storage Points<br />
-Concurrent IO<br />
  HBA Queue Depth settings.  Set to max.  Most SAN array vendors have custom HBA firmware that will max this setting.  Also, Windows has a concurrent IO setting for physicaldisk.  SQL might bypass this setting, but something of interest.<br />
-Network paths<br />
  For SAN, attempt to supply as many end-to-end paths to meet desired IO concurrency.  If using a CDP facility, and performance is a major concern, enable SCSI write ack spoofing on the SAN switches to avoid added latency.  Also, if SAN extension via IP is in place make sure to evaluate TCP performance using vendor supplied utilities.  Tweak as necessary.<br />
-Operation fragmentation<br />
  Avoid it.  As usual, never fragment a request/response when performance is a major concern.  Size the disk allocation unit, Layer 2 Frame Size, Layer 3 MTU (for IP transports), Array RAM cache page size, Array disk stripe element size in a succession of encapsulation able to finally carry, in it&#8217;s entirety, the IO request/response *.<br />
-Critical Array Operations<br />
  Critical meaning scary.  Try not to overload a SAN with maintenance jobs, such as snaps, clones, replication, and try to support an extreme high performance DB at the same time.  Simple IO math.  If extensive use of CDP/replication is used to remote Arrays, and the organization has 50-100K to spend <img src='http://d329fn540v13gd.cloudfront.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , consider offloading that investing in SAN fabric based replication.<br />
  Also, review Array RAM cache management policies and tweak as necessary.  Exhaustion and subsequent all-stop flush of cache to disk is obviously horrible for performance.  Set a more aggressive cache flush policy, usually by percentage used.  If spindles and disk stripes were sized appropriately this aggressive cache policy shouldn&#8217;t hurt,&#8230;much.</p>
<p>All I can think of at the moment.  Good luck on the book!</p>
<p>* This is a point of contention.  Some sources say to size to accommodate the average IO request size.  Some say to instead max out the file system alloc units (MSFT) and disk stripe element size (MSFT, et al).  I&#8217;ve tested this and I have to agree with MSFT that this method is excellent for high throughput when high number of spindles are involved.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brent Ozar</title>
		<link>http://www.brentozar.com/archive/2008/12/writing-my-first-book/#comment-6752</link>
		<dc:creator>Brent Ozar</dc:creator>
		<pubDate>Mon, 22 Dec 2008 14:17:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=1970#comment-6752</guid>
		<description>Yep, you nailed it with the Snoopy reference.  I can&#039;t think about writing a book without thinking of Snoopy at the typewriter!</description>
		<content:encoded><![CDATA[<p>Yep, you nailed it with the Snoopy reference.  I can&#8217;t think about writing a book without thinking of Snoopy at the typewriter!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Stein</title>
		<link>http://www.brentozar.com/archive/2008/12/writing-my-first-book/#comment-6751</link>
		<dc:creator>David Stein</dc:creator>
		<pubDate>Mon, 22 Dec 2008 14:13:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.brentozar.com/?p=1970#comment-6751</guid>
		<description>Great post as usual.  I only wish the book was coming out sooner as I need to learn about most of the topics listed, especially TempDB and Full Text Indexes.  

I assume you were referencing the old Peanuts bit: 

http://www.snoopy.cpilgrim.com/images/books/darkstrm.jpg

Right?  

When you sell the movie rights to your SQL thriller, can I play the psycho killer &quot;Dead Lock&quot;?</description>
		<content:encoded><![CDATA[<p>Great post as usual.  I only wish the book was coming out sooner as I need to learn about most of the topics listed, especially TempDB and Full Text Indexes.  </p>
<p>I assume you were referencing the old Peanuts bit: </p>
<p><a href="http://www.snoopy.cpilgrim.com/images/books/darkstrm.jpg" rel="nofollow">http://www.snoopy.cpilgrim.com/images/books/darkstrm.jpg</a></p>
<p>Right?  </p>
<p>When you sell the movie rights to your SQL thriller, can I play the psycho killer &#8220;Dead Lock&#8221;?</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 13/22 queries in 0.036 seconds using disk
Content Delivery Network via Amazon Web Services: CloudFront: Amazon Web Services: S3: d329fn540v13gd.cloudfront.net

Served from: www.brentozar.com @ 2010-07-31 03:33:10 -->