<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I/O bottleneck arşivleri - Yunus Emre IŞIK</title>
	<atom:link href="https://ynsmr.com/tag/i-o-bottleneck/feed/" rel="self" type="application/rss+xml" />
	<link>https://ynsmr.com/tag/i-o-bottleneck/</link>
	<description>Microsoft SQL Server Günlükleri</description>
	<lastBuildDate>Mon, 27 Jun 2022 18:10:52 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
	<item>
		<title>I/O Bottleneck</title>
		<link>https://ynsmr.com/i-o-bottleneck/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=i-o-bottleneck</link>
					<comments>https://ynsmr.com/i-o-bottleneck/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 29 Jun 2021 21:24:49 +0000</pubDate>
				<category><![CDATA[Performans]]></category>
		<category><![CDATA[I/O bottleneck]]></category>
		<category><![CDATA[sql server performans]]></category>
		<category><![CDATA[Yunus Emre Işık]]></category>
		<guid isPermaLink="false">https://ynsmr.com/?p=136</guid>

					<description><![CDATA[<p>  Sql Server performansını etkileyen en önemli etkenlerden biri depolama(storage) performansıdır. Çünkü Yazma, okuma işlemlerinde aygıtlar içerisinde en yavaşı olan depolama birimleri ve özellikle disklerdir. Veri depolama yapılarında(disk, ssd vb.) tutulur ve çalışma esnasında hafızaya(memory) taşıma, güncelleme, kopyalama vb. gibi bir çok işlem görebilir. Diskten hafızaya oradan tekrar diske taşınabilir. Sql Server’ın yürüttüğü bu işlemlerde ... <a title="I/O Bottleneck" class="read-more" href="https://ynsmr.com/i-o-bottleneck/" aria-label="More on I/O Bottleneck">Devamını oku</a></p>
<p><a href="https://ynsmr.com/i-o-bottleneck/">I/O Bottleneck</a> yazısı ilk önce <a href="https://ynsmr.com">Yunus Emre IŞIK</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>  Sql Server performansını etkileyen en önemli etkenlerden biri depolama(storage) performansıdır. Çünkü Yazma, okuma işlemlerinde aygıtlar içerisinde en yavaşı olan depolama birimleri ve özellikle disklerdir. Veri depolama yapılarında(disk, ssd vb.) tutulur ve çalışma esnasında hafızaya(memory) taşıma, güncelleme, kopyalama vb. gibi bir çok işlem görebilir. Diskten hafızaya oradan tekrar diske taşınabilir. Sql Server’ın yürüttüğü bu işlemlerde performans kaybı oluştuğunda I/O Bottleneck (darboğaz) durumu oluşabilir. Bu performans kayıpları bazı bekleme türlerinde(wait types) kendisini gösterir. Bu durumda işlemlerimizin optimum performansla yürütülmeye devam edilebilmesi için depolama performansının gözlenmesi gerekir.</p>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" class="wp-image-141" src="https://ynsmr.com/wp-content/uploads/2021/06/image-11.png" alt="" width="696" height="233" srcset="https://ynsmr.com/wp-content/uploads/2021/06/image-11.png 928w, https://ynsmr.com/wp-content/uploads/2021/06/image-11-300x100.png 300w, https://ynsmr.com/wp-content/uploads/2021/06/image-11-768x257.png 768w" sizes="(max-width: 696px) 100vw, 696px" /></figure>



<p><strong>Bu bekleme türlerine (wait types) dikkat!</strong><br /><br /><strong>sys.dm_os_wait_stats</strong> view’ı çalıştırılan tüm görevlere dair bekleme durumları ile ilgili edinebileceğimiz view’dır. Aşağıdaki bekleme türlerinde performas kaybı gözlediğimizde sistemde I/O Bottleneck oluştuğunu düşünebiliriz.<br /><br />•PAGEIOLATCH <br />•WRITELOG <br />•TRACEWRITE <br />•SQLTRACE_FILE_WRITE_IO_COMPLETION <br />•ASYNC_IO_COMPLETION <br />•IO_COMPLETION <br />•LOG_BUFFER</p>



<p><strong>Nasıl İzlenir?</strong></p>



<p>Microsoft’un «best practice» en iyi deneyimlerinde bottleneck(darboğaz) durumu ile ilgili bazı sayaçlar (performance counter) ve referans değerler belirlenmiştir. Bu darboğazı gözlemlemek için <strong>Performance Monitor</strong> aracı ve sayaçlar (performance counters) kullanılır. SQL server ile ilgili yüzlerce sayaç vardır ancak disk performansını gözlemlemek için gerekli olanları aşağıda özetlemeye çalıştım. Bunları <strong>sys.dm_os_performance_counters</strong> dmv’si aracılığıyla görebiliriz. Bu izleme yavaş diskler, tıkanan işlemler vb. sorunlarda bize yardımcı olur.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://ynsmr.com/wp-content/uploads/2021/06/image-12.png"><img decoding="async" class="wp-image-143" src="https://ynsmr.com/wp-content/uploads/2021/06/image-12.png" alt="" width="331" height="200" srcset="https://ynsmr.com/wp-content/uploads/2021/06/image-12.png 662w, https://ynsmr.com/wp-content/uploads/2021/06/image-12-300x181.png 300w" sizes="(max-width: 331px) 100vw, 331px" /></a></figure>



<figure class="wp-block-image size-large is-resized"><a href="https://ynsmr.com/wp-content/uploads/2021/06/image-13.png"><img decoding="async" class="wp-image-145" src="https://ynsmr.com/wp-content/uploads/2021/06/image-13.png" alt="" width="423" height="282" srcset="https://ynsmr.com/wp-content/uploads/2021/06/image-13.png 846w, https://ynsmr.com/wp-content/uploads/2021/06/image-13-300x200.png 300w, https://ynsmr.com/wp-content/uploads/2021/06/image-13-768x511.png 768w" sizes="(max-width: 423px) 100vw, 423px" /></a></figure>



<p>SQL Server’ın kullandığı depolama ünitelerinin performansı üç farklı yönden ölçülür. Bunlar:</p>
<ul>
<li>Saniyedeki I/O işlemleri (I/O operations per second, IOPS)</li>
<li>Akan veri miktarı diyebileceğimiz disk throughput</li>
<li>Gecikme (Disk Latency)</li>
</ul>
<p>Bunların nasıl ölçülebileceğini sırayla açıklayalım</p>
<ul>
<li>IOPS şu performans sayaçlarıyla ölçülür:</li>
</ul>
<p><strong>Disk Reads / Sec :</strong> Saniyedeki okuma sayısı<br /><strong>Disk Writes / Sec :</strong> Saniyedeki yazma sayısı</p>
<ul>
<li>Throughput kavramı periyodik belirli bir sürede aktarılan veri miktarını ifade eder. Şu sayaçlarla ölçülür:</li>
</ul>
<p><strong>Disk Read Bytes / Sec :</strong> Okuma işlemleri sırasında diskten saniyede okunan veri miktarı<br /><strong>Disk Bytes /Sec :</strong> Okuma ya da yazma işlemleri boyunca diskten okunan ya da yazılan veri miktarı<br /><strong>Disk Write Bytes / Sec : </strong>Yazma işlemleri boyunca saniyede diske yazılan veri miktarı</p>
<ul>
<li>Latency(gecikme) I/O isteğinin oluşmasından cevap gelmesi arasında geçen süreyi ifade eder. Şu sayaçlarla ölçülür:</li>
</ul>
<p><strong>Avg. Disk sec / Read : </strong>Diskten veriyi okumak için geçen ortalama zaman<strong><br />Avg. Disc Sec / Write : </strong>Diske veriyi yazmak için geçen ortalama zaman <strong> </strong></p>
<p>Microsoft’un her  iki sayaç için best practice değerleri şunlardır:</p>
<p>Log Dosyaları için 1-5 ms (1ms ideal)<br />OLTP Data dosyaları için 4-20 ms (10 ms ideal)<br />OLAP Data dosyaları için &lt;= 30 ms</p>
<p>Aşağıdaki tabloda I/O performansını ölçmek için kullanılan diğer bazı sayaçların anlamlarını ve referans değerlerini görebiliriz. </p>



<figure class="wp-block-table">
<table class="has-subtle-light-gray-background-color has-fixed-layout has-background">
<tbody>
<tr>
<td> </td>
<td> </td>
<td><span style="color: #ff0000;"><strong>Referans Değeri</strong></span></td>
</tr>
<tr>
<td><strong><span class="has-inline-color" style="color: #a30012;">Physical Disk</span></strong></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong>%DiskTime</strong></td>
<td>Fiziksel ya da mantıksal disk bölümlerinin ne yoğunlukta kullanıldığı</td>
<td>Avg Disk Queue Length değerinin 100 katından fazla olmamalı</td>
</tr>
<tr>
<td><strong>Avg. Disk Queue Length</strong></td>
<td>Her bir disk ya da disk bölümü için I/O kuyruğu oluşturan ortalama bekleyen kuyruk (okuma ve yazma) sayısı</td>
<td>=2</td>
</tr>
<tr>
<td><strong>Split IO/Sec</strong></td>
<td>Diske yapılan I/O’nun birden çok I/O&#8217;ya bölünme hızını gösterir.Sıfırdan farklı bir değer diskteki fragmantasyonu ve performansın etkilendiğini gösterir.</td>
<td>=0</td>
</tr>
<tr>
<td><strong><span class="has-inline-color" style="color: #a30028;">Process</span></strong></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><strong>IO Data Bytes/sec</strong></td>
<td>Her bir prosesin disk kullanımı toplam diskten ne kadarını kullanıyor? En çok I/O tüketen proses.</td>
<td> </td>
</tr>
<tr>
<td><strong>IO Other Bytes/sec</strong></td>
<td>Sql Server’ın veritabanı hariç kullandığı sistem kaynağı</td>
<td> </td>
</tr>
</tbody>
</table>
</figure>



<p>&nbsp;</p>
<p><a href="https://ynsmr.com/i-o-bottleneck/">I/O Bottleneck</a> yazısı ilk önce <a href="https://ynsmr.com">Yunus Emre IŞIK</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ynsmr.com/i-o-bottleneck/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
