This is my 36th blog on SQL Server Ring Buffer Trace Flag 8012 in the series of One Trace Flag a Day. You can go to all blogs under that series by clicking here.
Ring buffer is very good mechanisms to collect the information that can be used to troubleshoot various kinds of issues like internal memory pressure, external memory pressure and schedulers etc. collection of such information also consume some resources because everything comes at a cost. We can see the information collected by ring buffer using sys.dm_os_ring_buffers DMV. If you will go through this DMV then you will find out a column [ring_buffer_type]. This shows that SQL Server collects the information about various ring buffer types like RING_BUFFER_EXCEPTION, RING_BUFFER_SCHEDULER, RING_BUFFER_MEMORY_BROKER_CLERKS, RING_BUFFER_RESOURCE_MONITOR etc.
Here SQL Server collects ring buffer event information for schedulers during the occurrence of any below condition:
1- Whenever scheduler switches context to another worker.
2- Whenever worker suspended.
3- Whenever worker resumed.
4- Whenever worker enters into preemptive or non preemptive mode.
Under high performance workload we can disable the collection of these additional ring buffers for Schedulers by using trace flag 8012. Keep in mind that disabling the collection will eliminate the information that can be used for troubleshooting the server issue.
Another important thing to keep in mind is: SQL Server Ring Buffer Trace Flag 8012 can be turn on only at startup.
PS: Do not use trace flags in production environment without testing it on non production environments and without consulting because everything comes at a cost.
Prince Kumar Rastogi