DBA Dash Overhead

Introduction

All monitoring tools have some overhead associated with them but generally, the overhead is low compared to the value they deliver. How much load does DBA Dash add to a server?

To find out I setup an extended event to capture the queries ran by the DBA Dash agent. I left the trace running for over 8hrs (8:23:33, ~504mins). This was done on a real production server – one of our busiest servers that supports a SaaS application. This was done during peak load. The results are valid for this server running version 2.13.1 of DBA Dash.

TLDR: The overhead of running DBA Dash is very small and it delivers great value!

Results

QuerySamplesAvg Duration (ms)Avg CPU (ms)Avg ReadsMax Duration (ms)Max CPU (ms)
Instance15200012216
RunningQueries
Changed to capture every 30sec instead of the default 1min on this server. Session waits are collected.
1008926950500157
Plan Collection
Plan collection is off by default but is enabled on this server. It only runs if there are plans to collect.
94230242036236141
Text Collection
Collects text for running queries and only runs if there is text to be collected.
8181292323832
SlowQueries
This is disabled by default. Query has a 1 second waitfor so look at CPU time
504146729535211793500
PerformanceCounters504412855114094
CPU5042925329463
ObjectExecutionStats5041714100619147
Waits5043302816
AvalabilityReplicas504112395216
DatabasesHADR50422362416
AvailabilityGroups5042123412116
MemoryUsage5041131316
IOStats504000216
JobHistory50400126031
DBFiles861155231219916585797
Backups827921512625510281
Custom Check
Note: This runs custom check that is NOT part of DBA Dash and is unique to this server. This is YOUR code (Or mine in this case)
810531882992411312203
Databases813910721564275141
ServerExtraProperties8598411061108862
DBConfig88337184318378
LogRestores822162474847
LastGoodCheckDB830165907647
DBTuningOptions818143003131
Corruption823107064732
SysConfig838308816
ServerProperties8221515
TraceFlags800000
DatabaseMirroring8104320
OSInfo83014660
Alerts880206130
Max date modified from sysjobs8003010

The queries with 504 samples are been run every 1min with RunningQueries sampled 1008 times on this server as it was changed to collect every 30 seconds instead of every 1min.

Of these frequently ran query captures, ironically it’s the SlowQueries capture query that is the slowest. The query has a 1-second delay built in while it starts a new extended event session before flushing the ring_buffer of the old one. It’s better to look at the average CPU time of 295ms for this query. It’s still the heaviest of the queries that are collected every 1min.

This is quite a busy production server and SlowQueries captures all queries taking longer than 1 second to run. This collection isn’t enabled by default and you can configure the threshold for collection as required.

The next slowest of the frequently executed queries is the RunningQueries capture with a 92ms average execution time. I’ve previously compared this to sp_WhoIsActive. In a lab environment with 12 active queries the average duration was only 15ms. So results will vary depending on your workload. The Plan Collection and Text Collection also form part of the RunningQueries capture with plan collection been optional.

Of the hourly collections, it’s the DBFiles collection that is the slowest. The overhead of this query will likely be different on your server depending on the databases and files on your SQL instance.

Other Caveats

  • The Slow Query capture doesn’t take into account the overhead of the associated extended event.
  • The repository database is on a different server. If you host both on the same server you will have additional overhead.
  • The DBA Dash agent is ran on a different server. If you run the agent on your monitored SQL instance this will also add additional overhead.
  • The results above are valid for this server with version 2.13.1 of DBA Dash.
  • See here for a list of what DBA Dash captures and when. The analysis above doesn’t include collections that are ran daily as they didn’t fall into the 8hr window of this test.
  • You have full control over the collection schedule. Disable some collections or change the frequency as required!

How to test

I’ve posted the results above to give an indication of the overhead of running DBA Dash. If you want to monitor the activity on your own server, this extended events session will get you started:

I saved the results to a table and ran a quick and dirty query to group the results.

Posted in Uncategorized.