{"id":17169,"date":"2022-04-20T07:39:00","date_gmt":"2022-04-20T05:39:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/"},"modified":"2025-10-01T12:01:59","modified_gmt":"2025-10-01T10:01:59","slug":"sql-server-automatic-soft-numa-and-uneven-cpu-load","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/","title":{"rendered":"SQL Server: Automatic Soft-NUMA and uneven CPU load"},"content":{"rendered":"<p>SQL Server has CPU limitations depending on the Edition. If your VM is not configured properly you can reach these limits very easily.<br \/>\nIn a previous post, I described the effect VM misconfigurations can have on performance because not all available cores are used as expected.<br \/>\nSee: <a href=\"https:\/\/www.dbi-services.com\/blog\/sql-server-cpu-limitation-for-express-and-standard-edition\/\">SQL Server CPU limitation for Express and Standard Edition<\/a><\/p>\n<p>In this article I will share a similar case but this time in a context where the Automatic soft-NUMA feature comes into play.<\/p>\n<h4>Standard Edition limitations<\/h4>\n<p>In the article mentioned just above we saw that the Standard edition is limited to 4 sockets.<br \/>\nIf you decide to give your VM 8 cores but it is also configured with 8 sockets, you will find yourself limited to 4 sockets, therefore 4 cores.<br \/>\nIt can look like this from the Task Manager:<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-55225 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg\" alt=\"\" width=\"618\" height=\"549\"><\/a><\/p>\n<h4>NUMA architecture<\/h4>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Non-uniform_memory_access\">Non-Uniform Memory Access<\/a> (NUMA) is a computer system architecture that is used with multiprocessor designs in which some regions of memory have greater access latencies.<br \/>\nSome memory regions are connected directly to one or more processors, with all processors connected to each other through various types of interconnection fabric. For large multiprocessor systems, this arrangement results in less contention for memory and increased system performance.<\/p>\n<p>A NUMA architecture divides memory and processors into groups, called &#8220;NUMA nodes&#8221;.<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_2_NUMA_architecture.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-55226 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_2_NUMA_architecture.jpg\" alt=\"\" width=\"671\" height=\"457\"><\/a><\/p>\n<p>As illustrated above accessing local memory is faster than accessing the memory associated with other NUMA nodes.<br \/>\nSQL Server includes optimizations that recognize and adapt to a computer\u2019s NUMA topology.<\/p>\n<h4>SQL Server Automatic Soft-NUMA<\/h4>\n<p>Starting with <a href=\"https:\/\/techcommunity.microsoft.com\/t5\/sql-server-support-blog\/sql-2016-it-just-runs-faster-automatic-soft-numa\/ba-p\/318709\">version 2016<\/a>, during startup, SQL Server interrogates the hardware layout and <strong>automatically<\/strong> configures <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/configure-windows\/soft-numa-sql-server?view=sql-server-ver15\">Soft NUMA<\/a> on systems reporting 8 or more CPUs per NUMA node.<\/p>\n<p>There are benefits to having Soft-NUMA enabled. Some internal processes are partitioned by soft-NUMA. SQL Server creates one I\/O Completion Thread by NUMA node.<br \/>\nIf you have hardware NUMA you can have an increased number of Lazy Writers workers. This can be helpful for large systems to improve performance and scalability.<br \/>\nSee:<a href=\"https:\/\/techcommunity.microsoft.com\/t5\/sql-server-support-blog\/how-it-works-soft-numa-i-o-completion-thread-lazy-writer-workers\/ba-p\/316044\"> How It Works: Soft NUMA, I\/O Completion Thread, Lazy Writer Workers and Memory Nodes<\/a><\/p>\n<p>Soft-NUMA applies only for CPU Scheduling and Connectivity. Memory locality is not impacted.<\/p>\n<h4>Standard Edition limitations and Automatic Soft-NUMA<\/h4>\n<p>The origin of this article is a case that I encountered with a customer.<br \/>\nLet&#8217;s look at <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-views\/sys-dm-os-sys-info-transact-sql?view=sql-server-ver15\">sys.dm_os_sys_info<\/a> to see the resources available for the SQL Server instance.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT\n\tcpu_count, socket_count, hyperthread_ratio\n\t, scheduler_count\n\t, softnuma_configuration_desc, numa_node_count\nFROM sys.dm_os_sys_info<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_dm_os_sys_info.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-55227 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_dm_os_sys_info.jpg\" alt=\"\" width=\"890\" height=\"56\"><\/a><\/p>\n<p>The VM is configured with 12 logical cores, which are visible for SQL Server as &#8220;cpu_count&#8221;. The cores are distributed over 6 sockets.<br \/>\nBecause we have more than 8 cores Automatic soft-NUMA comes into play. It is enabled and 2 soft NUMA nodes are created. There is no hardware NUMA here.<\/p>\n<p>We also get the information from the ErrorLog.<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_ErrorLog_AutoSoftNUMA.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-55230 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_ErrorLog_AutoSoftNUMA.jpg\" alt=\"\" width=\"921\" height=\"82\"><\/a><\/p>\n<p>We can notice we have only 8 schedulers on the instance instead of 12. This is caused by the Standard Edition limitation of 4 sockets (of 2 cores in this case).<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_ErrorLog_Licensing.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-55231 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_ErrorLog_Licensing.jpg\" alt=\"\" width=\"1081\" height=\"47\"><\/a><\/p>\n<p>So we have 8 cores and 2 NUMA nodes. We could expect to have 2 NUMAnodes of 4 cores each. This can be checked with <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-views\/sys-dm-os-schedulers-transact-sql?view=sql-server-ver15\">sys.dm_os_schedulers<\/a>.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT\n\tparent_node_id, scheduler_id\n\t, status, is_online\nFROM sys.dm_os_schedulers\nWHERE scheduler_id &lt; 100<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_dm_os_schedulers.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-55233 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_dm_os_schedulers.jpg\" alt=\"\" width=\"486\" height=\"341\"><\/a><\/p>\n<p>We can see that the 2 NUMA nodes are composed of 6 schedulers each but that 4 schedulers are deactivated because of licensing.<br \/>\nThe second NUMA node has only 2 schedulers; schedulers with id 6 and 7.<br \/>\nThis situation is very interesting. We would have preferred to have 2 nodes of 4 cores.<\/p>\n<p>I was curious about the scheduler load across NUMA nodes. I came up with the following query on <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-views\/sys-dm-os-workers-transact-sql?view=sql-server-ver15\">sys.dm_os_workers<\/a>.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT\n\tCOUNT(*) AS WorkerCount\n\t, parent_node_id\n\t, COUNT(DISTINCT scheduler_id) AS SchedulersCount\n\t, COUNT(*)\/COUNT(DISTINCT scheduler_id) AS AvgWorkersBySchedulers\nFROM sys.dm_os_workers AS w\n\tJOIN sys.dm_os_schedulers AS s\n\t\tON w.scheduler_address = s.scheduler_address\nWHERE s.status = 'VISIBLE ONLINE'\nGROUP BY parent_node_id<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_AvgWorkersByScheduler_1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-55240 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_AvgWorkersByScheduler_1.jpg\" alt=\"\" width=\"668\" height=\"88\"><\/a><\/p>\n<p>The second NUMA node with only 2 schedulers has about 40% of all workers.<br \/>\nThere seems to be a load difference between the 2 NUMA nodes.<\/p>\n<p>Compared with another instance having a similar configuration but in Enterprise Edition, the workers seem better distributed on the schedulers.<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_AvgWorkersByScheduler_2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-55241 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_AvgWorkersByScheduler_2.jpg\" alt=\"\" width=\"667\" height=\"83\"><\/a><\/p>\n<p>Going a little bit further we can have look at <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-views\/sys-dm-os-tasks-transact-sql?view=sql-server-ver15\">tasks<\/a> and associated sessions per scheduler.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT COUNT(*) AS Tasks\n\t, s.parent_node_id\n\t, t.scheduler_id\n\t, s.is_idle\n\t, s.load_factor\n\t, STRING_AGG(COALESCE(CAST(t.session_id AS VARCHAR), 'n\/a'), ', ') AS session_id\nFROM sys.dm_os_tasks AS t\n\tLEFT JOIN sys.dm_os_workers AS w\n\t\ton w.task_address = t.task_address\n\t\t\tJOIN sys.dm_os_schedulers AS s\n\t\t\t\ton s.scheduler_address = w.scheduler_address\nWHERE s.status = 'VISIBLE ONLINE'\nGROUP BY s.parent_node_id, t.scheduler_id, s.is_idle, s.load_factor<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_Scheduler_Tasks_1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-55246 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_Scheduler_Tasks_1.jpg\" alt=\"\" width=\"718\" height=\"184\"><\/a><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_Scheduler_Tasks_2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-55247 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_Scheduler_Tasks_2.jpg\" alt=\"\" width=\"719\" height=\"195\"><\/a><\/p>\n<p>We can see a larger number of tasks on schedulers 6 and 7 which belong to the second NUMA node. The CPU load is on average higher on these two schedulers.<\/p>\n<h4>Connections round-robin<\/h4>\n<p>What happens is that new connections made to SQL Server are assigned to NUMA nodes in a round-robin fashion.<\/p>\n<p>Indeed with sys.<a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/relational-databases\/system-dynamic-management-views\/sys-dm-exec-connections-transact-sql?view=sql-server-ver15\">dm_exec_connections<\/a>, we can see that the distribution of connections is almost balanced on the 2 NUMA nodes.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT COUNT(*) AS NodeConnections\n\t, node_affinity\nFROM sys.dm_exec_connections\nGROUP BY node_affinity<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_Nodes_Connections.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-55245 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_Nodes_Connections.jpg\" alt=\"\" width=\"281\" height=\"80\"><\/a><\/p>\n<h4>Fix<\/h4>\n<p>In this particular case, we simply reconfigured the VM to have only 2 sockets and 6 cores per socket. The 12 cores can thus be used without being constrained by the limitation of 4 sockets maximum in the Standard edition.<br \/>\nThings look better now.<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_AvgWorkersByScheduler_after.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-55295 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_AvgWorkersByScheduler_after.jpg\" alt=\"\" width=\"582\" height=\"110\"><\/a><\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_Scheduler_Tasks_after.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-55296 aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_Scheduler_Tasks_after.jpg\" alt=\"\" width=\"615\" height=\"321\"><\/a><\/p>\n<p>The configuration change was done together with a change to the MAXDOP setting. We have set the MAXDOP value to the number of cores per NUMA node so in this case 6.<br \/>\nA slight decrease in CPU usage has been observed on this VM. As there is little activity on this SQL Server instance the change did not make a glaring difference.<\/p>\n<h4>Conclusion<\/h4>\n<p>Since the SQL Server connection assignment is done in a round-robin manner, having an uneven number of schedulers per NUMA node can result in an uneven CPU load.<\/p>\n<p>In this customer context, there is not a very important SQL activity and the consequences of this sub-optimal NUMA configuration are negligible.<\/p>\n<p>I found this subject interesting, beyond the license limitation it is a reminder that it is important to be aware of the NUMA configuration of your SQL Server environment.<br \/>\nI hope the few SQL queries above can help you understand a bit more about how the NUMA architecture works from a SQL Server perspective.<\/p>\n\n\n<p>Written by <a href=\"https:\/\/www.linkedin.com\/in\/steven-naudet-aa540158\/\">Steven Naudet<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQL Server has CPU limitations depending on the Edition. If your VM is not configured properly you can reach these limits very easily. In a previous post, I described the effect VM misconfigurations can have on performance because not all available cores are used as expected. See: SQL Server CPU limitation for Express and Standard [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,99],"tags":[423,2531,67,2532,51],"type_dbi":[],"class_list":["post-17169","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-sql-server","tag-cpu","tag-numa","tag-performance","tag-soft-numa","tag-sql-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SQL Server: Automatic Soft-NUMA and uneven CPU load - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server: Automatic Soft-NUMA and uneven CPU load\" \/>\n<meta property=\"og:description\" content=\"SQL Server has CPU limitations depending on the Edition. If your VM is not configured properly you can reach these limits very easily. In a previous post, I described the effect VM misconfigurations can have on performance because not all available cores are used as expected. See: SQL Server CPU limitation for Express and Standard [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-20T05:39:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T10:01:59+00:00\" \/>\n<meta name=\"author\" content=\"Microsoft Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"SQL Server: Automatic Soft-NUMA and uneven CPU load\",\"datePublished\":\"2022-04-20T05:39:00+00:00\",\"dateModified\":\"2025-10-01T10:01:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/\"},\"wordCount\":914,\"commentCount\":3,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg\",\"keywords\":[\"CPU\",\"NUMA\",\"Performance\",\"Soft-NUMA\",\"SQL Server\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"SQL Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/\",\"name\":\"SQL Server: Automatic Soft-NUMA and uneven CPU load - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg\",\"datePublished\":\"2022-04-20T05:39:00+00:00\",\"dateModified\":\"2025-10-01T10:01:59+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server: Automatic Soft-NUMA and uneven CPU load\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\",\"name\":\"Microsoft Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"caption\":\"Microsoft Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL Server: Automatic Soft-NUMA and uneven CPU load - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server: Automatic Soft-NUMA and uneven CPU load","og_description":"SQL Server has CPU limitations depending on the Edition. If your VM is not configured properly you can reach these limits very easily. In a previous post, I described the effect VM misconfigurations can have on performance because not all available cores are used as expected. See: SQL Server CPU limitation for Express and Standard [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/","og_site_name":"dbi Blog","article_published_time":"2022-04-20T05:39:00+00:00","article_modified_time":"2025-10-01T10:01:59+00:00","author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"SQL Server: Automatic Soft-NUMA and uneven CPU load","datePublished":"2022-04-20T05:39:00+00:00","dateModified":"2025-10-01T10:01:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/"},"wordCount":914,"commentCount":3,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg","keywords":["CPU","NUMA","Performance","Soft-NUMA","SQL Server"],"articleSection":["Database Administration &amp; Monitoring","SQL Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/","name":"SQL Server: Automatic Soft-NUMA and uneven CPU load - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg","datePublished":"2022-04-20T05:39:00+00:00","dateModified":"2025-10-01T10:01:59+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Blog28_1_Standard_8_sockets.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-automatic-soft-numa-and-uneven-cpu-load\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Server: Automatic Soft-NUMA and uneven CPU load"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4","name":"Microsoft Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","caption":"Microsoft Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/17169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=17169"}],"version-history":[{"count":3,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/17169\/revisions"}],"predecessor-version":[{"id":40617,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/17169\/revisions\/40617"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=17169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=17169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=17169"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=17169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}