Ask a questionAsk a question
 

AnswerCPU Sockets versus CPU Cores

  • Thursday, March 12, 2009 6:15 PM_AdrianH_ Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Currently SCCM reports the processor count based on the number of cores found.
    Some software products (like SQL) are licensed based on the physical CPU sockets in a system.
    Is there a way to show the physical CPU sockets per computer using AI or standard SCCM reports?

Answers

All Replies

  • Monday, March 23, 2009 11:35 PMWallyMSFT, OwnerUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    How about looking at Win32_Processor? I just checked multiple systems, and if your box has multiple physical procs, it will have multiple DeviceID values.

    If it just has multiple cores, it will only have one DeviceID, but will list the number of cores (NumberOfCores) and logical procs (NumberOfLogicalProcessors).

    It doesn't look like these are enabled in the sms_def.mof (though DeviceID is) so you'd need to enable them if you want the core information.
    Wally Mead
  • Monday, April 20, 2009 7:44 PMWallyMSFT, OwnerUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Did this help Adrian?
    Wally Mead
  • Thursday, May 14, 2009 6:37 PMsteph4002 Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    The NumberOfCores and NumberOfLogicalProcessors properties are not in the sms_def.mof. I added them to the Processor class in sms_def.mof on a test SCCM server (after the MaxClockSpeed property): [SMS_Report (TRUE) ] string NumberOfCores; [SMS_Report (TRUE) ] string NumberOfLogicalProcessors; The InventoryAgent log on a test client reported an error: Component: InventoryAgent Thread: 2452(0x994) Source: collectiontask.cpp:347 Collection: Namespace = \\.\root\cimv2\sms; Query = SELECT __CLASS, __PATH, __RELPATH, AddressWidth, BrandID, CPUHash, CPUKey, DataWidth, DeviceID, Family, Is64Bit, IsMobile, IsMulticore, Manufacturer, MaxClockSpeed, Name, NormSpeed, PCache, ProcessorId, ProcessorType, Revision, SocketDesignation, Status, SystemName, Version, NumberOfLogicalProcessors, NumberOfCores FROM SMS_Processor; Timeout = 600 secs. Component: InventoryAgent Thread: 2452(0x994) Source: collectiontask.cpp:578 Unknown error encountered processing an instance of class SMS_Processor: 80041017 No data collection on SMS_Processor was done. The version of the ConfirMgr Inventory Agent is 4.0.6221.1000. The client is running W2k3 with SP2 with Hotfix 932370. Thanks in advance for the fix!
  • Friday, May 15, 2009 12:42 AMSherry KissingerMVP, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Remove the edits you did for "NumberOfLogicalProcessors" and "numberofcores", since it's giving you an error.

    Once you've fixed that and re-run inventory.... I see in the default sms_processor there is "IsMultiCore"  (it's not alphabetically listed, it's at the bottom).  Does that at least report a True (or a 1 or whatever means "yes") on a multicore box?

    Other ones you might want to turn on just to see what you get back:  "IsHyperThreadCapable" and "IsHyperThreadEnabled". 

    Also check win32_computersystem, "NumberofProcessors".
    Standardize. Simplify. Automate.
  • Tuesday, May 19, 2009 6:55 PMsteph4002 Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    After removing "NumberOfCores" and NumberOfLogicalProcessors", the processor inventory works again.  IsMulticore has a "1".  Enabling the 2 "IsHyperThread..." properties show "0" values.  Win32_Computersystem.NumberOfProcessors = 1. 
  • Wednesday, May 20, 2009 1:14 AMSherry KissingerMVP, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
  • Wednesday, June 10, 2009 12:39 AMSherry KissingerMVP, ModeratorUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    steph4002, did that work?  This will be marked as answered in a few weeks if no response.
    Standardize. Simplify. Automate.
  • Wednesday, November 04, 2009 12:56 AMTirzo Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Proposed Answer
    Hi Adrian,  I was able to determine the number of physical CPU's by analysing the data of our enviroment. 

    Basically from the v_GS_Processor table; 

     1) Filter the records that have the [ProcessorId0] with zeros
     2) Group by SocketDesignator0

    Here is the SQL statement;

    SELECT CPUList.ResourceID, LTRIM(Name0) AS CPU, COUNT(CPUList.ResourceID) AS CPU_Count
    FROM (
    SELECT DISTINCT ResourceID, Name0, SocketDesignation0 
    FROM dbo.v_GS_PROCESSOR WHERE [ProcessorId0] NOT LIKE '%000000'
    ) AS CPUList
    GROUP BY CPUList.ResourceID, LTRIM(Name0)

    Output looks like;

    ResourceID CPU CPU_Count
    ------------- ----------------------------- -----------
    2645           Intel(R) Xeon(R) CPU L5410  @ 2.33GHz 1
    2225 Intel(R) Xeon(TM) CPU 1.40GHz                     2
    1743            Intel(R) XEON(TM) CPU 1.80GHz 1

    Is not the cleanest way, but it did the job for me. (easier for me than applying the patch on 50 servers)

    Tirzo
    • Proposed As Answer byTirzo Wednesday, November 04, 2009 12:59 AM
    •