<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Slava Oks's WebLog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/slavao/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/slavao/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:27:47 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>What made Porting Microsoft SQL Server to Linux to be the right move after all</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/what-made-porting-microsoft-sql-server-to-linux-to-be-a-right-move-after-all</link>
      <pubDate>Sun, 24 Sep 2017 21:50:32 GMT</pubDate>
      <dc:creator><![CDATA[SlavaO]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/?p=566</guid>
      <description><![CDATA[It has taken us a little more than two and a half years to bring an official version of SQL Server...]]></description>
      <content:encoded><![CDATA[It has taken us a little more than two and a half years to bring an official version of SQL Server to Linux. Over the course of our work, we encountered many supporters, bystanders, skeptics, and pessimists. Quite of few things had to turn our way for us to succeed. Notably, on the engineering side, we have cooked a secret sauce that has played an essential role and proven to be the game changer.

In July of 2011, Hal Berenson published <a href="https://hal2020.com/2011/07/27/porting-microsoft-sql-server-to-linux/">this</a> very insightful article of why MSFT had decided not to bring SQL Server to *nix platform back in times. This article is a fascinating read and provides an excellent and in-depth perspective on the matter.

The first time I came across this article was right after rejoining the SQL Server team in late 2015. It did catch my attention, especially since I did come back to do what Hal's in-depth analysis urges us from doing. In the last couple of years, I reread the article multiple times. I have used it as a guide, checklist, to make sure we address the key points.
<div>In addition to business concerns, Hal's article highlights key drawbacks that would additionally need to be addressed around engineering as well as product supportability for the endeavor to be successful. The article affirms that bringing SQL Server to *nix platform is not the hardest task compared to the additional work that the journey would require. Indeed, for the project to be successful the team would have to:</div>
<div>
<ul>
 	<li>Bring other SQL Server inbox products such as SSAS, SSIS, and SSRS along</li>
 	<li>Implement platform-specific features such as CLR, AGs, and much more</li>
 	<li>Guarantee adequate performance and scalability</li>
 	<li>Create a new ecosystem around product support, engineering systems, and more.</li>
</ul>
</div>
So throughout the project, I have continued to question the path we have been on and if we succeed at the end or not. Every time I would go back, reread the article and every time I would come to the same favorable conclusion. But why?

The answer is rather simple. It is due to our secret sauce: <a href="https://blogs.technet.microsoft.com/dataplatforminsider/2016/12/16/sql-server-on-linux-how-introduction/">SQLPAL</a>, aka SQL Platform Abstraction Layer.  SQLPAL has enabled us to address and overcome all the engineering difficulties the article uncovers. With SQLPAL at hand, we have managed to address all drawbacks Hal's article touches upon and much more:
<ul>
 	<li>It enabled us to bring other SQL Server products like SSIS to Linux</li>
 	<li>It enabled majority of the SQL Server team to continue focusing  on core  features;  operating with cloud first mentality; delivering  SQL Azure and SQL DW m0nthly. At the same time a team that has been responsible for brining SQL Server to Linux remained small and focused on system level work rather than porting other teams changes.</li>
 	<li>It helped us to bring SQL Server scalability and performance to Linux. Over the years we have tuned SQL Server to run efficiently on enterprise grade hardware. With only few changes in SQLPAL and no changes to the core engine, we have unleashed <a href="http://www.microsoft.com/en-us/sql-server/sql-server-benchmarks-industry">SQL Server's beast mode</a> on Linux.</li>
 	<li>It simplified investments around supportability.  Few people know that while running on Linux, SQL Server generates the same supportability artifacts as on Windows. The approach significantly simplifies supportability story on multiple platforms.  And magically, SQL Server engineers continue leveraging the same tools for debugging even if core-dumps come from Linux.</li>
</ul>
SQLPAL is the essential technological piece that, at the end, made porting SQL Server to Linux to be the right move. Sometimes, I wonder if Hal and the team had had the technology in their possession back then if they would have proceeded with the work or not.  Fortunately for us, they hadn't.]]></content:encoded>
    </item>
    <item>
      <title>SQL Server on Linux, aka project Helsinki: Story behind the idea</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/sql-server-on-linux-aka-project-helsinki-story-behind-the-idea</link>
      <pubDate>Tue, 20 Dec 2016 03:15:41 GMT</pubDate>
      <dc:creator><![CDATA[SlavaO]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/?p=505</guid>
      <description><![CDATA[As I mentioned in my previous post, I left SQL Server in 2007 to work on what ended up being a super...]]></description>
      <content:encoded><![CDATA[As I mentioned in my <a href="https://blogs.msdn.microsoft.com/slavao/2016/12/20/one-two-three-boom/">previous post</a>, I left SQL Server in 2007 to work on what ended up being a super exciting software project: The <a href="https://en.wikipedia.org/wiki/Midori_(operating_system)">Midori</a> Operating System. I spent almost eight years working in Midori’s kernel and runtime team. I had worked with exceptional folks on very interesting and challenging problems before but I never thought I would learn so much about languages, runtimes, and kernels as I have while working on Midori.

Late in 2014 the Midori project was completed and I had to figure out what to do next. Basically, I was looking for the next thing to work on. In my next role my goal was to utilize and expand on my prior experiences from working on both SQL Server and Midori.

At some point, during my job search, I connected back with the SQL Server team.  The team had been contemplating porting SQL Server to Linux and they were looking for someone to drive the engineering side of the project. This was clearly an interesting lead and it got me curious.  However, it is important to understand amount of work a such project would require.  I had some serious concerns taking on a port across the full codebase to Linux.

To give you an idea of the effort involved, the SQL Server RDBMS and other services that ship with it in the SQL Server product suite account for more than 40 million lines of C++ code. Even though SQL Server has a resource management layer called SQLOS, the codebase bleeds Win32 semantics throughout. This means a pure port could take years just to get compiling and booting let alone figuring out things like performance and feature parity with SQL Server on Windows. In addition, doing a porting project while other SQL Server innovation is happening in the same codebase would have been a daunting task and keep the team in a close to endless catch-up game.

In conclusion, even though the potential job-offer intrigued me, it felt like an impossible task for one to take on.

Going back to my time in Midori for a bit, sometime in December of 2011 we were working closely with one of our strategic partners, hoping they would adopt Midori for some interesting workloads. One of their requirements was that Midori had to run some Windows applications.  One snowy day I was working from home when my boss called me and asked if it is feasible to bring the <a href="https://www.microsoft.com/en-us/research/project/drawbridge/">Microsoft Research-project Drawbridge</a> to Midori. At that time, Drawbridge could already host some applications. So the question was if we could bring support for Drawbridge to Midori. That day, we had a long conversation over the phone and decided to try. Within a few months we had required Win32 applications running on Midori. This is how I was introduced to Drawbridge.

The idea to use Drawbridge as the starting point for bringing SQL Server to Linux came accidentally. I was talking to one of my very close friends and a former Midorian kernel team member on the parking lot about my job search post Midori. During the conversation we were talking about the SQL Server on Linux job opportunity and I mentioned if we only could do it inside Midori then the problem would be expedited due to the Drawbridge presence on Midori.  Then I pause for the second thinking out-loud: what if we had something like this on Linux. I dismissed it immediately as the most random idea ever. So we finished the conversation and split. I jumped into the car but the idea of bringing Drawbridge to Linux stuck in my head. I immediately drove to my brother, who by the way did the original Drawbridge support in Midori and shared the idea with him. His initial reaction was that it wouldn't work and I should forget about it. The next day he called me and said that if there was any chance for us to bring SQL Server to Linux in timely manner, leveraging the Drawbridge architecture was really the only feasible way to go.

To further validate the idea, I talked to several folks across Microsoft. The pattern with my brother repeated itself again and again. First folks would reject the idea, but then a day or two later they would come back to me indicating that this might just be the right approach.

During the process I reached out to the Microsoft Research folks who had worked on Drawbridge and to my huge surprise, they actually already had Linux prototype partially up and running.

So I decided to pitch this approach to the SQL Server team and I got an offer to the take the job.  I started the new job on early in 2015 and within less than a month we had SQL Server booting up and able to run queries on Linux. Sometimes it would crash or hang, but it was there and running:
<h6 style="padding-left: 270px"><em>Well, I think we might want to remember this day…</em></h6>
<h6 style="padding-left: 270px"><em>See attached picture</em></h6>
<h6 style="padding-left: 270px"><em>I can connect and run queries.</em></h6>
<h6 style="padding-left: 270px"><em>1&gt; select * from sys.dm_os_schedulers</em>
<em>2&gt; go</em>
<em>scheduler_address parent_node_id scheduler_id cpu_id status</em>
<em>------------------ -------------- ------------ ----------- -----------------------------------</em>
<em>0x00000000DC190040 0 0 0 VISIBLE ONLINE</em>
<em>0x00000000DC1A0040 0 1 1 VISIBLE ONLINE</em>
<em>0x00000000DC1B0040 0 2 2 VISIBLE ONLINE</em>
<em>0x00000000DC1C0040 0 3 3 VISIBLE ONLINE</em>
<em>0x00000000DC1D0040 0 4 4 VISIBLE ONLINE</em>
<em>0x00000000DC1E0040 0 5 5 VISIBLE ONLINE</em>
<em>0x00000000DC1F0040 0 6 6 VISIBLE ONLINE</em>
<em>0x00000000DC580040 0 7 7 VISIBLE ONLINE</em>
<em>0x00000000DC590040 0 1048578 0 HIDDEN ONLINE</em>
<em>0x00000000DCC10040 64 1048576 0 VISIBLE ONLINE (DAC)</em>
<em>0x00000000DCC60040 0 1048579 1 HIDDEN ONLINE</em>
<em>0x00000000DCC70040 0 1048580 2 HIDDEN ONLINE</em>
<em>0x00000000D6460040 0 1048581 3 HIDDEN ONLINE</em></h6>
<h6 style="padding-left: 270px"><em>(13 rows affected)</em>
<em>1&gt; select @@ver</em>
<em>2&gt; go</em>
<em>Msg 137, Level 15, State 2, Server CLIENT, Line 1</em>
<em>Must declare the scalar variable "@@ver".</em>
<em>1&gt; SELECT @@VERSION</em>
<em>2&gt; go</em></h6>
<h6 style="padding-left: 270px"><em>----------------------------------------------------------------------------------------------</em>
<em>Microsoft SQL Server 2014 - 12.0.2000.8 (X64)</em>
<em>Feb 20 2014 20:04:26</em>
<em>Copyright (c) Microsoft Corporation</em>
<em>Enterprise Edition (64-bit) on Windows NT 6.2 (Build 9200: ) (Hypervisor)</em></h6>
<h6 style="padding-left: 270px"><em>(1 rows affected)</em></h6>
<h6 style="padding-left: 270px"><em>SqlServer thinks it is running on HV ;-) but it really runs on L!</em></h6>
<h6 style="padding-left: 270px"><em>Have a great weekend</em></h6>
<h6 style="padding-left: 270px"><em>-Slava</em></h6>
<p style="text-align: center"><a href="https://msdnshared.blob.core.windows.net/media/2016/12/WP_20150228_11_44_39_Pro.jpg"><img src="https://msdnshared.blob.core.windows.net/media/2016/12/WP_20150228_11_44_39_Pro-300x169.jpg" alt="wp_20150228_11_44_39_pro" width="300" height="169" class="aligncenter wp-image-555 size-medium" /></a></p>
Having SQL Server up and running so fast helped us expedite the engineering process enormously. As I am sure you can imagine running on other platforms only a fraction of the work required to deliver the product.  Now we were in a position to work on our lab automation, testing, packaging, servicing, security, high availability, performance, stress and everything else in parallel. As an example we had to make the complete test infrastructure for SQL Server run against SQL Server on Linux.

During the process we took the ownership of the Drawbridge codebase and started evolving it. That is how the SQL Server Platform Abstraction Layer (SQLPAL) was born.

&nbsp;
<p style="text-align: center"><a href="https://msdnshared.blob.core.windows.net/media/2016/12/SQL-Helsinki-Design.jpg"><img width="480" height="270" class="aligncenter wp-image-476 size-full" alt="sql-helsinki-design" src="https://msdnshared.blob.core.windows.net/media/2016/12/SQL-Helsinki-Design.jpg" /></a></p>
So far this project has been an amazing journey with an amazing team and I am 100% certain we could never have gotten this far, this fast, without the dedication and skills of the SQL Server on Linux team!

In upcoming posts, I will be covering more technidal details of SQLPAL, SOSv2, why performance and scalability is not an issue, how we handle debugging and other interesting learnings we have been through. We strongly believe that SQL Server will run comparably on all platforms we have taken it to. In fact, we are already getting interesting evidence from some customers that it is indeed the case.

If you are still skeptical, you should be. However, after observing the pattern for so many times now, I am almost certain you will turn around pretty soon.]]></content:encoded>
    </item>
    <item>
      <title>One, Two, Three... Boom!</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/one-two-three-boom</link>
      <pubDate>Tue, 20 Dec 2016 00:24:47 GMT</pubDate>
      <dc:creator><![CDATA[SlavaO]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/?p=495</guid>
      <description><![CDATA[...I am back and getting ready to start blogging.

It has been almost ten years since my last blog...]]></description>
      <content:encoded><![CDATA[...I am back and getting ready to start blogging.

It has been almost ten years since my last blog post. Time flies, indeed!  As you can imagine I have plenty of things to share many of which are related to SQL Server, runtimes and  operating systems in general.

As we expanding our horizons, I am also planning  on taking many of you for a "design ride".  Yes, you got it right. My plan is to leverage your experience to help us with making design choices and bring you the best product possible.

On the side note, I know many of you are wondering, what I have been doing for the last ten years.  In brief, I moved to <a href="https://en.wikipedia.org/wiki/Midori_(operating_system)">Midori</a> project in the early 2007. I had spent seven years working there. There I worked on kernel and parts of the runtime. As many of Midorians I had had blast. I had really enjoyed working there. It was very special. Then after Midori, I had taken a quick few months d-tour to work on  Windows kernel team, specifically I had worked on Hypervisor for short period of time. In early 2015, I moved back to SQL Server to work on project Helsinki with the goal of bringing SQL Server to Linux.  And now you can enjoy some results of our work.  Today, you can play with <a href="https://www.microsoft.com/en-us/sql-server/sql-server-vnext-including-Linux">SQL Server on Linux</a>.  While in SQL, my role has expanded and I work on way more things that I could have ever imaged.  And yes, I will share more on this in the future...

So, now lets do the real stuff: Do you have questions? If you do then ask!

The game is back on! Lets have fun.]]></content:encoded>
    </item>
    <item>
      <title>Changing gears</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/changing-gears</link>
      <pubDate>Wed, 07 Mar 2007 11:15:00 GMT</pubDate>
      <dc:creator><![CDATA[slavao]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/2007/03/07/changing-gears/</guid>
      <description><![CDATA[You haven't heard from me in while and there is a reason. I moved from SQL Server's Storage...]]></description>
      <content:encoded><![CDATA[<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">You haven't heard from me in while and there is a reason. I moved from SQL Server's Storage Engine&nbsp;team to a&nbsp;new incubation team that is involved in exploring new directions in operating systems. This subject area has been always very fascinating for me as you easily might deduce from my previous&nbsp;posts. The new team is amazing. It is&nbsp;small but extremely talented. <A title=Chris href="http://blogs.gotdotnet.com/cbrumme/" mce_href="http://blogs.gotdotnet.com/cbrumme/">Chris</A> is one of the lead architects on the team. (I imagine many of you know him from your CLR and SQLCLR experience)</SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">It was sad for me to move out of SQL Server. I just love the team and product.&nbsp;However I couldn't let go such great opportunity&nbsp;:-).&nbsp; In the future&nbsp;expect my posts to become more operating system related - Yes I will try to continue blogging as I&nbsp;gain more&nbsp;knowledge and experience.&nbsp; At the same time please don't hesitate to ask questions about SQL Server, if I don't have answers I will forward them to people that do. To some of you I owe email replies. I am sorry for being slow in that regard but I will try to catch up in the next week or so. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">By the way if you have passion&nbsp;in operating system&nbsp;area, consider yourself&nbsp;hard working and fun person, feel free to contact me, we might need you :-). <o:p></o:p></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">&nbsp;Change is always good and I really enjoy it :-).<o:p></o:p></SPAN></P>
<P><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">As usual if you have questions don't hesitate to ask.&nbsp;</SPAN></P>]]></content:encoded>
    </item>
    <item>
      <title>Q and A: Ratio between AWE Allocated and VM Committed/Reserved in DBCC MEMORYSTATUS output</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/q-and-a-ratio-between-awe-allocated-and-vm-committedreserved-in-dbcc-memorystatus-output</link>
      <pubDate>Tue, 02 Jan 2007 20:02:00 GMT</pubDate>
      <dc:creator><![CDATA[slavao]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/2007/01/02/q-and-a-ratio-between-awe-allocated-and-vm-committedreserved-in-dbcc-memorystatus-output/</guid>
      <description><![CDATA[Q: What kind of ratio should you expect to see between AWE Allocated and VM Committed/Reserved?...]]></description>
      <content:encoded><![CDATA[<DIV>
<P><FONT face=Arial size=2>Q: What kind of ratio should you expect to see between AWE Allocated and VM Committed/Reserved? &nbsp;We are running 8GB with a cap of 7GB in the max server memory and yet the VM Committed is around 100MB. &nbsp;I was first shocked to see that the sqlservice in task manager only shows that SQL is using around 100MB and now that I have used MEMORYSTATUS I'm even more troubled.Does this mean that our server is starved for memory even though AWE can see almost all of the 7GB? &nbsp;On a side note we are seeing very high CPU utilization and my trail has come to a potential memory issue.</FONT></P>
<P><FONT face=Arial size=2>Memory Manager &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;KB </FONT></P>
<P><FONT face=Arial size=2>------------------------------ --------------------</FONT></P>
<P><FONT face=Arial size=2>VM Reserved &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1674140</FONT></P>
<P><FONT face=Arial size=2>VM Committed &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 104384</FONT></P>
<P><FONT face=Arial size=2>AWE Allocated &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;6747704</FONT></P>
<P><FONT face=Arial size=2>Reserved Memory &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1024</FONT></P>
<P><FONT face=Arial size=2>Reserved Memory In Use &nbsp; &nbsp; &nbsp; &nbsp; 0</FONT></P>
<P><FONT face=Arial size=2>A. Actually these two values are independent. VM Committed shows amount of physical&nbsp;memory SQL Server allocated using VirtualAlloc's MEM_COMMIT parameter. AWE allocated shows amount of memory allocated using AllocateUserPhysicalPages. Sum of these two counters gives an approximate amount of physical memory SQL Server uses. The reason it is an approximate amount is because some external components loaded in SQL Server address space allocate memory outside of SQL Server<SPAN class=323331801-03012007> memory manager</SPAN>&nbsp;framework. Consequently it is impossible to output exact amount.&nbsp; </FONT></P>
<P><FONT face=Arial size=2>In your case you shouldn't worry - SQL Server does use physical memory you configured it to use. High CPU utilization that your system&nbsp;experience might be due to memory pressure or to other reasons. You need to find out if SQL Server hits memory pressure and if it does classify it and fix it appropriately.&nbsp; You can find more on memory pressure in my previous posts related to memory: </FONT><A href="http://blogs.msdn.com/slavao/archive/tags/SQL+Server+Memory+Management/default.aspx"><FONT face=Arial size=2>http://blogs.msdn.com/slavao/archive/tags/SQL+Server+Memory+Management/default.aspx</FONT></A><FONT face=Arial size=2>&nbsp;or in recently&nbsp;published book on SQL Server 2005&nbsp;troubleshooting </FONT><A href="http://www.amazon.com/o/ASIN/0321447743/ref=s9_asin_image_1/002-4273860-1748002"><FONT face=Arial size=2>http://www.amazon.com/o/ASIN/0321447743/ref=s9_asin_image_1/002-4273860-1748002</FONT></A><FONT face=Arial size=2>. The book contains a chapter on how SQL Server memory manager works as well as how to recognize and fix different types of memory related issues. </FONT></P></DIV>]]></content:encoded>
    </item>
    <item>
      <title>Q &amp; A: I am running on 64 bit and all of my tasks are waiting on SOS_RESERVEDMEMBLOCKLIST, What is going on?</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/q-a-i-am-running-on-64-bit-and-all-of-my-tasks-are-waiting-on-sos_reservedmemblocklist-what-is-going-on</link>
      <pubDate>Tue, 14 Nov 2006 13:29:00 GMT</pubDate>
      <dc:creator><![CDATA[slavao]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/2006/11/14/q-a-i-am-running-on-64-bit-and-all-of-my-tasks-are-waiting-on-sos_reservedmemblocklist-what-is-going-on/</guid>
      <description><![CDATA[This wait type represents waiting on multi page allocations inside of SQLOS's memory manager. As...]]></description>
      <content:encoded><![CDATA[<DIV><FONT face=Arial size=2>
<P>This wait type represents waiting on multi page allocations inside of SQLOS's memory manager. As you remember from my description of memory manager's working internals, it has two major allocators single page allocator, SPA and multi page allocator, MPA. Majority of the time SQL Server internal code uses SPA, however in some cases it will use MPA, i.e. for example when request exceeds size of single page, 8KB. </P>
<P>On 64 bit systems SQL Server internal code can potentially generate larger memory&nbsp;requests which might exceed&nbsp;single page size&nbsp;- this is due to the fact that size of internal data structures on 64 bit is larger than on 32 bit platforms.&nbsp;A larger amount of concurrent&nbsp;MPA allocations&nbsp;could translate into more allocations served by MPA rather than by SPA.&nbsp; More concurrent allocations might possibly introduce more pressure on MPA and that&nbsp;could translate into&nbsp;SOS_RESERVEDMEMBLOCKLIST waits. </P>
<P>In SQL Server 2005 SP2 we have addressed this problem by making MPA significantly more concurrent. </P>
<P>If you see such issue and can't wait until SP2 is out,&nbsp;&nbsp;please contact MS Product support to get a fix. </P>
<P>&nbsp;Let me know if you have any questions.</P></FONT></DIV>]]></content:encoded>
    </item>
    <item>
      <title>SQLOSDMV's Continue</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/sqlosdmvs-continue</link>
      <pubDate>Tue, 14 Nov 2006 13:26:00 GMT</pubDate>
      <dc:creator><![CDATA[slavao]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/2006/11/14/sqlosdmvs-continue/</guid>
      <description><![CDATA[sys.dm_os_waiting_tasks
One can run lots of interesting queries using this view. &nbsp;You can even...]]></description>
      <content:encoded><![CDATA[<H2 style="MARGIN: 12pt 0in 3pt"><EM>sys.dm_os_waiting_tasks</EM></H2>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>One can run lots of interesting queries using this view. <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>You can even use this view to perform deadlock detection that is not resolvable by deadlock monitor, DM. For example if you have tasks waiting on external resources such as extended stored procedures and blocking others from running. This type of deadlock DM can’t detect but you can! </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<OL style="MARGIN-TOP: 0in" type=1>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><FONT face="Times New Roman" size=3>Q. How many tasks are currently waiting?</FONT></LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">count</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">(*)</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">sys.dm_os_waiting_tasks</SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>This query will give you an idea of how many tasks are waiting in the system. You can use this information to understand blocking characteristics of your load</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<OL style="MARGIN-TOP: 0in" type=1 start=2>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><FONT face="Times New Roman" size=3>Q. How many tasks that assigned to a worker (thread/fiber) are waiting?</FONT></LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: fuchsia">count</SPAN><SPAN style="COLOR: gray">(*)</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_waiting_tasks</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">where</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>wait_type <SPAN style="COLOR: gray">&lt;&gt;</SPAN> <SPAN style="COLOR: red">'THREADPOOL’</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>This query shows how many threads are actively running in the system. Latter on I will show how to find out if number of threads can be increased</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<OL style="MARGIN-TOP: 0in" type=1 start=3>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><FONT face="Times New Roman" size=3>What are the tasks waiting on?</FONT></LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>wait_type<SPAN style="COLOR: gray">,<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: fuchsia">count</SPAN> <SPAN style="COLOR: gray">(*)<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_waiting_tasks<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">group</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: blue">by<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>wait_type<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">order</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: blue">by<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: fuchsia">count</SPAN> <SPAN style="COLOR: gray">(*)</SPAN> <SPAN style="COLOR: blue">desc</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">One can use this query to investigate possible bottlenceks of an active load. This query groups tasks by wait type – it can’t be directly use to identify the actual bottlenecks on the system. The query gives you an idea about the wait characteristics of your load<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<OL style="MARGIN-TOP: 0in" type=1 start=4>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><FONT face="Times New Roman" size=3>Q. Does my load have an active resource bottleneck?</FONT></LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>You can answer this question by looking at the resource address that tasks are blocked on.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Keep in mind that not all wait types have resource associated with them. </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>resource_address<SPAN style="COLOR: gray">,<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: fuchsia">count</SPAN> <SPAN style="COLOR: gray">(*)<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_waiting_tasks<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">WHERE<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>resource_address <SPAN style="COLOR: gray">&lt;&gt;</SPAN> 0<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">group</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: blue">by<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>resource_address <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">order</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: blue">by<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: fuchsia">count</SPAN> <SPAN style="COLOR: gray">(*)</SPAN> <SPAN style="COLOR: blue">desc</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<OL style="MARGIN-TOP: 0in" type=1 start=5>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><FONT face="Times New Roman" size=3>Q: Is my system can be possibly bottlenecked on I/O?</FONT></LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>You can answer this question by looking at the wait type of tasks waiting on specifically you are interested in IO waits</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: gray">*</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_waiting_tasks</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">where</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>wait_duration_ms <SPAN style="COLOR: gray">&gt;</SPAN> 20 <SPAN style="COLOR: gray">AND<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>wait_type <SPAN style="COLOR: gray">LIKE</SPAN> <SPAN style="COLOR: red">'%PAGEIOLATCH%'<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>You might want to change 20ms base on your I/O subsystem</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<OL style="MARGIN-TOP: 0in" type=1 start=6>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"><FONT face="Times New Roman" size=3>Q: Does my load have long waiting chains?</FONT></LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>This information is particular interesting to understand if a single tasks, for example one that generated long I/O, blocks others. If this happens you will have a way to improve your scalability by figuring how to remove or minimize chain length. </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">WITH</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> TaskChain <SPAN style="COLOR: gray">(<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">waiting_task_address<SPAN style="COLOR: gray">,<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">blocking_task_address<SPAN style="COLOR: gray">,</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">ChainId<SPAN style="COLOR: gray">,</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Level</SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">AS<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">(<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">-- Anchor member definition: use self join so that we output <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">-- Only tasks that blocking others and remove dupliates<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN><SPAN style="COLOR: blue">SELECT</SPAN> <SPAN style="COLOR: blue">DISTINCT<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>A<SPAN style="COLOR: gray">.</SPAN>waiting_task_address<SPAN style="COLOR: gray">,</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>A<SPAN style="COLOR: gray">.</SPAN>blocking_task_address<SPAN style="COLOR: gray">,<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>A<SPAN style="COLOR: gray">.</SPAN>waiting_task_address <SPAN style="COLOR: blue">As</SPAN> ChainId<SPAN style="COLOR: gray">,<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>0 <SPAN style="COLOR: blue">AS</SPAN> <SPAN style="COLOR: blue">Level<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">FROM<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_waiting_tasks</SPAN> <SPAN style="COLOR: blue">as</SPAN> A<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">JOIN<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_waiting_tasks</SPAN> <SPAN style="COLOR: blue">as</SPAN> B<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">ON<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>A<SPAN style="COLOR: gray">.</SPAN>waiting_task_address <SPAN style="COLOR: gray">=</SPAN> B<SPAN style="COLOR: gray">.</SPAN>blocking_task_address<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">WHERE</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>A<SPAN style="COLOR: gray">.</SPAN>blocking_task_address <SPAN style="COLOR: gray">IS</SPAN> <SPAN style="COLOR: gray">NULL<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">UNION</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: gray">ALL<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">-- Recursive member definition: Get to the next level waiting<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">-- tasks<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">SELECT</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>A<SPAN style="COLOR: gray">.</SPAN>waiting_task_address<SPAN style="COLOR: gray">,</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>A<SPAN style="COLOR: gray">.</SPAN>blocking_task_address<SPAN style="COLOR: gray">,<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>B<SPAN style="COLOR: gray">.</SPAN>ChainId<SPAN style="COLOR: gray">,<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">Level</SPAN> <SPAN style="COLOR: gray">+</SPAN> 1<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_waiting_tasks</SPAN> <SPAN style="COLOR: blue">AS</SPAN> A<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">JOIN</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:place w:st="on"><st1:City w:st="on">TaskChain</st1:City> <st1:State w:st="on"><SPAN style="COLOR: blue">AS</SPAN></st1:State></st1:place> B <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">ON<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>B<SPAN style="COLOR: gray">.</SPAN>waiting_task_address <SPAN style="COLOR: gray">=</SPAN> A<SPAN style="COLOR: gray">.</SPAN>blocking_task_address<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>waiting_task_address<SPAN style="COLOR: gray">,</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>blocking_task_address<SPAN style="COLOR: gray">,</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ChainId<SPAN style="COLOR: gray">,<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">Level</SPAN><SPAN style="mso-spacerun: yes">&nbsp; </SPAN><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>TaskChain<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">order</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: blue">by<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>ChainId <SPAN style="COLOR: blue"><o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>If there are no chains, your load is not CPU bound and you see long waits on THREADPOOL, you might improve your throughput by increasing a number of threads in the system. </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>Keep in mind that you can extend this query to perform your own deadlock detection. </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p><FONT face="Times New Roman" size=3>&nbsp;</FONT></o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>You can also find out more information about each individual wait_type here </FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><FONT face="Times New Roman" size=3>http://msdn2.microsoft.com/en-us/library/ms179984.aspx</FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>Q &amp; A: Does SQL Server always respond to memory pressure?</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/q-a-does-sql-server-always-respond-to-memory-pressure</link>
      <pubDate>Mon, 13 Nov 2006 15:39:00 GMT</pubDate>
      <dc:creator><![CDATA[slavao]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/2006/11/13/q-a-does-sql-server-always-respond-to-memory-pressure/</guid>
      <description><![CDATA[Q: I thought I've seen reference recently to problems with SQL2005 not releasing memory when...]]></description>
      <content:encoded><![CDATA[<DIV class=CommentText minmax_bound="true">
<DIV class=CommentText minmax_bound="true">
<P minmax_bound="true"><FONT face=Arial size=2>Q: I thought I've seen reference recently to problems with SQL2005 not releasing memory when under pressure, and this was possibly due to the Lock Pages In Memory option. We have a server where this seems to be happening, i.e. SQL2005 uses all available memory and the server basically dies because there's no memory left for other processes.</FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2>How do I make it work like SQL2000 where it will release memory when it detects memory pressure from other applications?</FONT></P>
<P minmax_bound="true"><FONT face=Arial><FONT size=2>A: The memory behavior is slightly different between SQL Server 2005 and SQL Server 2000.&nbsp; SQL Server 2000 won't respond to memory pressure when running with lock pages in memory option so you will have to configure max server memory setting in such a way that you leave enough free memory to Windows and other applications on the machine<SPAN class=198315920-13112006> (see memory setting recommendations below)</SPAN></FONT></FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2>SQL Server 2005 does respond to memory pressure&nbsp;<SPAN class=198315920-13112006>both </SPAN>when lock pages in memory&nbsp;is enabled<SPAN class=198315920-13112006> and disabled</SPAN>. However there is a caveat that you need to be aware of - when OS hits memory pressure, depending on the state of the machine and applications, &nbsp;it could be really slow - attempting to free up the resources. This means that SQL Server might not get enough CPU cycles to respond to memory pressure quickly and hence causing&nbsp;&nbsp;other applications and possibly OS to return OOM errors.&nbsp;<SPAN class=198315920-13112006>In case when lock pages in memory is not enabled it is possible that OS will page out SQL Server. This situation might result in inappropriate SQL Server performance. </SPAN></FONT></P>
<P minmax_bound="true"><FONT size=+0><SPAN class=198315920-13112006></SPAN><FONT face=Arial size=2>You can avoid such conditio<SPAN class=198315920-13112006>ns</SPAN> by setting max memory setting to appropriate value. So what is this value? I usually recommend to derive this value based on amount of RAM available on the machine and amount of available memory you need to keep OS and other applications happy. </FONT></FONT></P>
<P minmax_bound="true"><FONT face=Arial><FONT size=2>RAM Installed&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Available Memory (as reported by TM) under heavy load<SPAN class=198315920-13112006> you would want to have</SPAN></FONT></FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2>&lt; 4GB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;512MB - 1GB<BR>4-32GB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1GB - 2GB<BR>32GB - 128GB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2GB-4GB<BR>128GB - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4GB- </FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2>There are couple of things you need be aware of: </FONT></P>
<P minmax_bound="true"><SPAN class=198315920-13112006><FONT face=Arial size=2>A. You only need to consider setting max server memory if&nbsp;you expect&nbsp;load on the machine to be memory bound</FONT></SPAN></P>
<P minmax_bound="true"><FONT face=Arial><FONT size=2><SPAN class=198315920-13112006>B</SPAN>. </FONT></FONT><EM><STRONG><FONT face=Arial><FONT size=2>You need to look at the machine<SPAN class=198315920-13112006> during&nbsp;</SPAN>heavy load to come up with appropriate max server memory setting<SPAN class=198315920-13112006> so that you keep available memory in recommended range</SPAN></FONT></FONT></STRONG></EM></P>
<P minmax_bound="true"><FONT face=Arial><FONT size=2><SPAN class=198315920-13112006>C</SPAN>. The more RAM you have on the machine (32GB+) &nbsp;the more important to have max server memory setting on<SPAN class=198315920-13112006>.</SPAN></FONT></FONT></P>
<P minmax_bound="true"><FONT face=Arial><FONT size=2><SPAN class=198315920-13112006>D</SPAN>. <STRONG><EM>My recommendations are<SPAN class=198315920-13112006> "personal"</SPAN>&nbsp;recomendations, you will need to tune your&nbsp;box to find what is the best combination for you.</EM></STRONG> </FONT></FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2><SPAN class=198315920-13112006>E. Max worker threads setting does affect how much memory server will require under heavy concurrent load. Consider&nbsp;on x64 platform&nbsp;each SQL&nbsp;Server thread can consume 2MB of physical memory. So if you configure SQL Server for 2000 threads, under heavy load in addition to max server memory it might require additional 4GB of physical memory (2MB * 2000), it is even higher on IA64, i.e 8GB (4MB * 2000)</SPAN></FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2><SPAN class=198315920-13112006>F. Max server memory setting only controls size of the Buffer Pool and hence doesn't affect allocations going through Multi Page Allocator (MPA). If your load does require MPA you will have to take that into account as well. You can monitor your MPA usage by using sys.dm_os_memory_clerks DMV. </SPAN></FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2><SPAN class=198315920-13112006>G. Memory allocations requested by external components such as xps, COM (sp_OACreate), and others are not controlled by max server memory setting</SPAN></FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2><SPAN class=198315920-13112006>Let me know if you have more questions</SPAN></FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2><SPAN class=198315920-13112006>Thanks</SPAN></FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2><SPAN class=198315920-13112006>-Slava</SPAN></FONT></P>
<P minmax_bound="true"><FONT face=Arial size=2><SPAN class=198315920-13112006></SPAN></FONT>&nbsp;</P></DIV></DIV>]]></content:encoded>
    </item>
    <item>
      <title>SQLOS's DMVs Continue</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/sqloss-dmvs-continue</link>
      <pubDate>Thu, 28 Sep 2006 22:22:00 GMT</pubDate>
      <dc:creator><![CDATA[slavao]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/2006/09/28/sqloss-dmvs-continue/</guid>
      <description><![CDATA[sys.dm_os_schedulers

Q. Do I need to by more CPUs?
In order to answer this question you have to...]]></description>
      <content:encoded><![CDATA[<H2 style="MARGIN: 12pt 0in 3pt"><EM><FONT face=Arial>sys.dm_os_schedulers</FONT></EM></H2>
<OL style="MARGIN-TOP: 0in" type=1>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">Q. Do I need to by more CPUs?</LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">In order to answer this question you have to find out if your load is really CPU bounded.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Your load is really CPU bounded if a number of runnable tasks per each scheduler always greater than 1 and all of your queries have correct plan.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>The latter statement is very important, your load can be CPU bounded due to the fact that somehow optimizer generated bad plan – it can happen if your statistics out of date or you tried to perform handcrafted optimization. In this case you don’t want to run to <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:place w:st="on"><st1:PlaceName w:st="on">Circuit</st1:PlaceName> <st1:PlaceType w:st="on">City</st1:PlaceType></st1:place> to buy more CPUs right a way – you want to fix the plan. Here is the query to find out average length of a runable queue on the system:</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">AVG</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: gray">(</SPAN>runnable_tasks_count<SPAN style="COLOR: gray">)</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">sys.dm_os_schedulers</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">where</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">status <SPAN style="COLOR: gray">=</SPAN> <SPAN style="COLOR: red">'VISIBLE ONLINE'</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Buying more CPUs has also to do with capacity planning. You have to be very careful when performing capacity planning on hardware with HT enabled – remember you don’t have extra physical CPUs. Keep in mind that if your load runs at 60% CPU utilization - it doesn’t mean that you have 40% of extra CPU capacity. You will be very surprise how fast CPU load will jump from 60% to 80% and then even faster to 100% once you apply more and more load. </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<OL style="MARGIN-TOP: 0in" type=1 start=2>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">Q. What is affinity of my schedulers to CPUs?</LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>scheduler_id<SPAN style="COLOR: gray">,</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: fuchsia">CAST</SPAN> <SPAN style="COLOR: gray">(</SPAN>cpu_id <SPAN style="COLOR: blue">as</SPAN> <SPAN style="COLOR: blue">varbinary</SPAN><SPAN style="COLOR: gray">)</SPAN> <SPAN style="COLOR: blue">AS</SPAN> scheduler_affinity_mask<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">sys.dm_os_schedulers</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in"><o:p>&nbsp;</o:p></P>
<OL style="MARGIN-TOP: 0in" type=1 start=3>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">Does my machine have either hard or soft NUMA configuration enabled?</LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">CASE</SPAN> <SPAN style="COLOR: fuchsia">count</SPAN><SPAN style="COLOR: gray">(</SPAN> <SPAN style="COLOR: blue">DISTINCT</SPAN> parent_node_id<SPAN style="COLOR: gray">)<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">WHEN</SPAN> 1 <SPAN style="COLOR: blue">THEN</SPAN> <SPAN style="COLOR: red">'NUMA disabled'<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">ELSE</SPAN> <SPAN style="COLOR: red">'NUMA enabled'<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">END<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_schedulers<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">where</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> parent_node_id <SPAN style="COLOR: gray">&lt;&gt;</SPAN> 32<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<OL style="MARGIN-TOP: 0in" type=1 start=4>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">Q. Should I configure SQL Server to use more threads – sp_configure ‘max server threads’?</LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">You can answer this question by looking at the work queue length for each scheduler. If on average such value is above 1 then you might benefit from adding more threads to the system but <I style="mso-bidi-font-style: normal">only if<o:p></o:p></I></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><I style="mso-bidi-font-style: normal">A.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Your load currently is not CPU bounded (See info above on how to find out if your load is CPU bound) <o:p></o:p></I></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><I style="mso-bidi-font-style: normal">B. Your load currently doesn’t experience any other heavy waits (If you add more threads in this case they will just end up waiting as everyone else)<o:p></o:p></I></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">AVG</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <SPAN style="COLOR: gray">(</SPAN>work_queue_count<SPAN style="COLOR: gray">)</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">sys.dm_os_schedulers</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">where</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">status <SPAN style="COLOR: gray">=</SPAN> <SPAN style="COLOR: red">'VISIBLE ONLINE'</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<OL style="MARGIN-TOP: 0in" type=1 start=5>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in">Q: Is my system I/O bound?</LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">You can answer this question by monitoring length of I/O queues.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>pending_disk_io_count <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_schedulers<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="mso-spacerun: yes">&nbsp;</SPAN>If over time they keep on growing or you are seeing periodic jumps or numbers stay relatively high most likely your system is I/O bound. In order to identify the cause you will have to dive further. </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>]]></content:encoded>
    </item>
    <item>
      <title>SQLOS's DMVs</title>
      <link>https://docs.microsoft.com/archive/blogs/slavao/sqloss-dmvs</link>
      <pubDate>Tue, 22 Aug 2006 19:54:00 GMT</pubDate>
      <dc:creator><![CDATA[slavao]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/slavao/2006/08/22/sqloss-dmvs/</guid>
      <description><![CDATA[SQL Server 2005 has a large number of DMVs that you can take advantage of especially when you try to...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 0pt">SQL Server 2005 has a large number of DMVs that you can take advantage of especially when you try to understand behavioral characteristics of your SQL Server 2005 installation. DMVs expose enormous amount of information but how can you make use of it? What questions you can answer using DMVs?<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">So in order to make you life a bit easier, I would like to start series of posts dedicated to SQLOS DMVs with emphasis on actual problems. </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Following set of DMVs is exposed by SQLOS or SQLOS related infrastructures.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_sys_info</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_schedulers</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_waiting_tasks</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_wait_stats</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_systhrteads</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_virtual_address_dump</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_latch_stats</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_hosts</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_buffer_descriptors</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_perf_counters</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_ring_buffers</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_tasks</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_workers</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">vsys.dm_os_memory_clerks</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_memory_cache_counters</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_memory_cache_clock_hands</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_memory_cache_hash_tables</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">sys.dm_os_memory_cache_entries</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">dbcc memorystatus</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">I listed them in a random order <SPAN style="FONT-FAMILY: Wingdings; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-char-type: symbol; mso-symbol-font-family: Wingdings"><SPAN style="mso-char-type: symbol; mso-symbol-font-family: Wingdings">J</SPAN></SPAN>. You can find description for each one of them in BO so I won’t repeat the description here. The main point is figure out, understand, how to make use of them.</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Once we are done with all posts you will be able to: </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>Find out if you need to buy more CPUs</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>Find out if you need to buy more memory</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>Find out if you running under memory pressure</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>Find out if you have problems with disks</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>Find out if you need to move to 64bit based solution</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>Find out if you need to change your application in order to take advantage of force parameterization</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>Find out what applications you loaded in SQL Server address space</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>Find out if SQL Server is paged out and if it affects performance of your application</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>Find out if your hardware is NUMA</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1; tab-stops: list .5in"><SPAN style="mso-list: Ignore">-<SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN>And much more</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">So here it goes:</P>
<H2 style="MARGIN: 12pt 0in 3pt"><EM><FONT face=Arial>sys.dm_os_sys_info</FONT></EM></H2>
<OL style="MARGIN-TOP: 0in" type=1>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in">Q. How many sockets does my machine have?</LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">cpu_count/hyperthread_ratio AS sockets<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">sys.dm_os_sys_info</SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 0.25in"><o:p>&nbsp;</o:p></P>
<OL style="MARGIN-TOP: 0in" type=1 start=2>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in">Q. Is my machine hyper threaded? </LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt">Well unfortunately you can’t derive this information using this DMV today though there is a column called hyperthread_ratio. On the other hand this column can tell you: </P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in">Q. How many either cores or logical CPU share the same socket?</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">hyperthread_ratio AS cores_or_logical_cpus_per_socket<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">sys.dm_os_sys_info</SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><o:p>&nbsp;</o:p></P>
<OL style="MARGIN-TOP: 0in" type=1 start=3>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in">Q. Does my 32 bit system have /3GB or /Userva switch in boot.ini? <SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"></LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><FONT color=#000000> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">CASE</SPAN><FONT color=#000000> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">WHEN</SPAN><FONT color=#000000> virtual_memory_in_bytes </FONT><SPAN style="COLOR: gray">/</SPAN><FONT color=#000000> 1024 </FONT><SPAN style="COLOR: gray">/</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: gray">(</SPAN><FONT color=#000000>2048</FONT><SPAN style="COLOR: gray">*</SPAN><FONT color=#000000>1024</FONT><SPAN style="COLOR: gray">)</SPAN><FONT color=#000000> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><FONT color=#000000> 1 </FONT><SPAN style="COLOR: blue">THEN</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: red">'No switch'</SPAN><FONT color=#000000> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">ELSE</SPAN><FONT color=#000000> </FONT><SPAN style="COLOR: red">'/3GB'</SPAN><FONT color=#000000> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes"><FONT color=#000000>&nbsp;&nbsp;&nbsp;&nbsp; </FONT></SPAN><SPAN style="COLOR: blue">END</SPAN><FONT color=#000000> </FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><FONT color=#000000> </FONT><SPAN style="COLOR: green">sys.dm_os_sys_info</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"></SPAN><o:p>&nbsp;</o:p></P>
<OL style="MARGIN-TOP: 0in" type=1 start=4>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in">Q. How much physical memory my machine has?</LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>physical_memory_in_bytes<SPAN style="COLOR: gray">/</SPAN>1024 <SPAN style="COLOR: blue">AS</SPAN> physical_memory_in_kb <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_sys_info</SPAN> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<OL style="MARGIN-TOP: 0in" type=1 start=5>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in">Q. How many threads/workers SQL Server would use if the default value in sp_configure for max worker threads is zero:</LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>max_workers_count<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from<o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_sys_info<o:p></o:p></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt"><SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<OL style="MARGIN-TOP: 0in" type=1 start=6>
<LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in">Q. What is a size of AWE window or what is the max amount of memory right now that can be used by QO, QE and Caches simultaneously when SQL Server running in AWE mode?</LI></OL>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo2; tab-stops: list .5in"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">select</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>bpool_visible <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">from</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: green">sys.dm_os_sys_info</SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="COLOR: green"></SPAN></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="COLOR: green"><FONT face="Times New Roman" color=#000000 size=3>I will be happy to answer your questions.</FONT></SPAN></SPAN></P>]]></content:encoded>
    </item>
  </channel>
</rss>