This is my 37th blog on SQL Server Ring Buffer Trace Flag 8018 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, 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.
SQL Server collects ring buffer events information for exceptions also and records last 256 exceptions, raised on a node. Record will be added to ring buffer collection during the occurrence of exception. By default this record will contain error information along with stack trace.
Under high performance workload we can disable the collection of these additional ring buffers for exceptions by using trace flag 8018. 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 8018 can be turn on only at start up.
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