Operational Defect Database

BugZero found this defect 1308 days ago.

Microsoft SQL Server | 13546338

KB3195888 - FIX: High CPU usage causes performance issues in SQL Server 2016 and 2017 - Microsoft Support

Last update date:

6/2/2022

Affected products:

SQL Server 2016 Developer - duplicate (do not use)

SQL Server 2016 Enterprise - duplicate (do not use)

SQL Server 2016 Enterprise Core - duplicate (do not use)

SQL Server 2016 Express - duplicate (do not use)

SQL Server 2016 Standard - duplicate (do not use)

SQL Server 2016 Web - duplicate (do not use)

SQL Server 2017 Developer on Windows

SQL Server 2017 Enterprise Core on Windows

SQL Server 2017 Enterprise on Windows

SQL Server 2017 Standard on Windows

SQL Server 2017 on Linux

Affected releases:

build lower than 14.0.3335.7

Fixed releases:

14.0.3335.7

Description:

Symptoms

When you use either a new instance of Microsoft SQL Server 2016 (or 2017) or an instance of SQL Server 2016 (or 2017) that's upgraded from an earlier version of SQL Server, you experience performance issues because of high CPU usage. Additionally, if you query the sys.dm_os_spinlock_stats table, you notice a high value in the spins column for the SECURITY_CACHE (Security Cache) and CMED_HASH_SET (Metadata Cache) rows (compared to other rows in the table). For example, you notice the following values.

Cause

This issue occurs because of high spin lock contention in a highly concurrent system. In these operating systems, multiple CPU threads are competing for resources and spinning for an extended interval while they run in a loop periodically to determine whether the resource is available instead of immediately yielding. When multiple CPU threads keep spinning (in a while loop) for a resource instead of yielding, this causes high CPU usage and performance issues.

Resolution

This problem was fixed in the following cumulative updates for SQL Server: Cumulative Update 21 for SQL Server 2017 Cumulative Update 2 for SQL Server 2016 Note After you apply SQL Server 2016 Cumulative Update 2 (CU2), the SECURITY_CACHE and CMED_HASH_SET names are changed to LOCK_RW_SECURITY_CACHE and LOCK_RW_CMED_HASH_SET, respectively. After CU2 is applied, the values appear as follows.

Additional Resources / Links

Share:

BugZero® Risk Score

What's this?

Coming soon

Status

Unavailable

Learn More

Search:

...