Solved

Server has high processor queue - how to find out which process is using the cpu

Posted on 2014-03-31
3
3,629 Views
Last Modified: 2014-04-16
Hi,

i get every few hours a ticket of one Server. It sais, that the cpu has a very large Queue. Everytime i look on the machine, th cpu is used at 10% (approx.). How can i find out, which Programm takes all the cpu from time to time.
I am using gfi max to Monitor the Server (this generates those tickets).
Server is Server 2008 (SQL on it) fully patched.


Any idea ?

Thanks in advance.

loosain
0
Comment
Question by:loosain
3 Comments
 
LVL 6

Accepted Solution

by:
Hassan Besher earned 250 total points
Comment Utility
The CPU - Processor Queue Length alarm becomes active when the number of Windows threads waiting for CPU resources exceeds a threshold. Sustained high processor queue length is a good indicator that you have a CPU bottleneck.
Note that since this is a Windows-based alarm, it can include CPU that was consumed by non-SQL Server processes.
Tip: If you are running the Spotlight Diagnostic Server on the same machine you are monitoring, the Processor Queue Length shown here can be artificially high, especially on single processor machines. Since Spotlight on SQL Server is a multi-threaded application, the process of running its data collection queries causes extra Spotlight client threads to be scheduled for execution, resulting in a higher than normal Processor Queue Length figure and the raising of this alarm.

When this alarm is current, you should:
In Spotlight on Windows, look at the Processor Queue Length chart on the Windows Summary page of the Windows Activity drilldown. This will show you how long the Processor Queue Length has been high.
In Spotlight on Windows, look at the Processes page on the Processes drilldown to see which Windows process is consuming the CPU. SQL Server is shown as the process called sqlservr.
Look at the Summary page on the SQL Activity drilldown to determine how much of the CPU is being consumed by SQL Server.
If you determine from the steps above that SQL Server is consuming most of the CPU, look at the Sessions tab on the SQL Activity drilldown to see which SQL Server users are currently executing SQL, and to determine the exact SQL that is running. If necessary, use the Session Trace sub-tab on active sessions.
On the Sessions page, select the sessions that have the highest CPU figure to see the exact SQL statement that the user is currently running. If necessary, use the Session Trace sub-tab to see further information about the active sessions.
Consider upgrading to a faster CPU or adding processors to your server.
If SQL Server is consuming most of the CPU and your system supports many concurrent users, you might benefit from SQL Server's lightweight pooling option, which causes SQL Server sessions to be scheduled as fibers rather than threads. On some heavily-loaded systems, this can save a small amount of CPU. Ensure you test this properly, because on some systems it can actually increase SQL Server's CPU demands.
This option can be changed by using the Configuration drilldown. Changes to this option do not take effect until the SQL Server instance is stopped and restarted.
0
 
LVL 39

Assisted Solution

by:lcohan
lcohan earned 250 total points
Comment Utility
I suggest you install and use SQL own Performance Dashboard Reports that can take you to the exact query(ies) or missing index(es) that are causing high CPU utilizations.
We use it and trust it on ALL our SQL PROD servers since it came out on SQL 2005.

Performance Dashboard

http://blogs.technet.com/b/rob/archive/2009/02/18/performance-dashboard-reports-for-sql-server-2008.aspx
http://blogs.msdn.com/b/sqlserverfaq/archive/2010/05/27/sql-server-performance-dashboard-reports-in-ssms-introduction-install-datediff-error-amp-modified-for-sql-2008.aspx
http://blogs.msdn.com/b/arvindsh/archive/2010/06/25/performance-dashboard-reports-in-sql-server-2008.aspx
0
 

Author Closing Comment

by:loosain
Comment Utility
Thanks, interesting and helpful
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

JSON is being used more and more, besides XML, and you surely wanted to parse the data out into SQL instead of doing it in some Javascript. The below function in SQL Server can do the job for you, returning a quick table with the parsed data.
You might have come across a situation when you have Exchange 2013 server in two different sites (Production and DR). After adding the Database copy in ECP console it displays Database copy status unknown for the DR exchange server. Issue is strange…
This tutorial will walk an individual through the steps necessary to enable the VMware\Hyper-V licensed feature of Backup Exec 2012. In addition, how to add a VMware server and configure a backup job. The first step is to acquire the necessary licen…
Via a live example, show how to setup several different housekeeping processes for a SQL Server.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now