I recently received email from one of my very close friend from California. His question was very interesting. He wanted to know how many virtual processors are there available for SQL Server. He already had script for SQL Server 2008 but was mainly looking for SQL Server 2000. He made me go to my past. I found following script from my old emails (I have no reference listed along with it, so not sure the original source).
-- Identify Virtual Processors in for SQL Server 2005, 2008, 2008R2, 2012 SELECT cpu_count FROM sys.dm_os_sys_info GO -- Identify Virtual Processors in for SQL Server 2000 CREATE TABLE #TempTable ([Index] VARCHAR(2000), [Name] VARCHAR(2000), [Internal_Value] VARCHAR(2000), [Character_Value] VARCHAR(2000)) ; INSERT INTO #TempTable EXEC xp_msver; SELECT Internal_Value AS VirtualCPUCount FROM #TempTable WHERE Name = 'ProcessorCount'; DROP TABLE #TempTable GO
Yesterday I shared on facebook page about I am writing this blog post, SQL Server Expert Simran Jindal shared following script which is applicable to SQL Server 2005 and later versions. I just got update from her that this query is of my dear friend and SQL Server MVP Glenn Berry. Thanks Glenn.
SELECT cpu_count AS [Logical CPU Count], hyperthread_ratio AS Hyperthread_Ratio, cpu_count/hyperthread_ratio AS Physical_CPU_Count, physical_memory_in_bytes/1048576 AS Physical_Memory_in_MB, sqlserver_start_time, affinity_type_desc -- (affinity_type_desc is only in 2008 R2) FROM sys.dm_os_sys_info
If know any other reliable method to get the count of logical CPU, please share that in comment and I will update this blog post with due credit.
Reference: Pinal Dave (http://blog.sqlauthority.com)