使用Coreinfo工具查看电脑CPU相关信息(cache,NUMA node,socket )

官网下载链接

 Download Coreinfo

使用教程:

Coreinfo - Windows Sysinternals | Microsoft Docs

 简介

CoreInfo是一个命令行实用程序,它向您介绍逻辑处理器和物理处理器,NUMA节点和它们所在的套接字之间的映射,以及分配给每个逻辑处理器的缓存。

它使用Windows中GetLogicalProcessorInformation函数来获取此信息并将其打印到屏幕,表示与具有星号的逻辑处理器的映射。  '*'.CoreInfo可用于获得系统的处理器和缓存拓扑的洞察力。

安装

将zip文件提取到目录,然后通过在32位Windows版本或CoreInfo64上键入64位版本的控制台中的该目录CoreInfo来运行CoreInfo。 

使用CoreInfo

它将显示与指定资源相对应的OS可见处理器的映射,“*”表示适用的处理器。例如,在4核系统中,缓存输出中的一行,它具有由3核和4核共享的内存映射。

参数说明:coreinfo.exe [-c][-f][-g][-l][-n][-s][-m][-v]

ParameterDescription
-cDump information on cores.
-fDump core feature information.
-gDump information on groups.
-lDump information on caches.
-nDump information on NUMA nodes.
-sDump information on sockets.
-mDump NUMA access cost.
-vDump only virtualization-related features including support for second level address translation.

 具体使用方法:

将下载好的Coreinfo64.exe文件直接拖入cmd命令行中,输入相应指令,按下回车即可:

比如使用 -l 指令查看处理器的缓存类型:

C:\Users\LUO\Desktop\Coreinfo>C:\Users\LUO\Desktop\Coreinfo\Coreinfo64.exe -l

输出的信息:

Coreinfo v3.52 - Dump information on system CPU and memory topology
Copyright (C) 2008-2021 Mark Russinovich
Sysinternals - www.sysinternals.com


Logical Processor to Cache Map:
**--  Data Cache          0, Level 1,   32 KB, Assoc   8, LineSize  64
**--  Instruction Cache   0, Level 1,   32 KB, Assoc   8, LineSize  64
**--  Unified Cache       0, Level 2,  256 KB, Assoc   8, LineSize  64
****  Unified Cache       1, Level 3,    3 MB, Assoc  12, LineSize  64
--**  Data Cache          1, Level 1,   32 KB, Assoc   8, LineSize  64
--**  Instruction Cache   1, Level 1,   32 KB, Assoc   8, LineSize  64
--**  Unified Cache       2, Level 2,  256 KB, Assoc   8, LineSize  64

 从以上信息可知:

我的电脑处理器有三级缓存,缓存的cache line 的大小为64字节,一级缓存大小为32KB,分为数据缓存和指令缓存;二级缓存为Unified缓存,大小为256KB;三级缓存也为Unified缓存,大小为3MB。

从CPU到    大约需要的CPU时钟周期                            大约需要的时间
主存                                                                                约60-80ns
QPI            总线传输(between sockets, not drawn)        约20ns
L3 cache    约40-45 cycles                                             约15ns
L2 cache    约10 cycles                                                  约3ns
L1 cache    约3-4 cycles                                                约1ns
寄存器        1 cycle

GetLogicalProcessorInformation函数

#include <windows.h>
#include <malloc.h>    
#include <stdio.h>
#include <tchar.h>

typedef BOOL(WINAPI *LPFN_GLPI)(
	PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,
	PDWORD);


// Helper function to count set bits in the processor mask.
DWORD CountSetBits(ULONG_PTR bitMask)
{
	DWORD LSHIFT = sizeof(ULONG_PTR) * 8 - 1;
	DWORD bitSetCount = 0;
	ULONG_PTR bitTest = (ULONG_PTR)1 << LSHIFT;
	DWORD i;

	for (i = 0; i <= LSHIFT; ++i)
	{
		bitSetCount += ((bitMask & bitTest) ? 1 : 0);
		bitTest /= 2;
	}

	return bitSetCount;
}

int _cdecl _tmain()
{
	LPFN_GLPI glpi;
	BOOL done = FALSE;
	PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer = NULL;
	PSYSTEM_LOGICAL_PROCESSOR_INFORMATION ptr = NULL;
	DWORD returnLength = 0;
	DWORD logicalProcessorCount = 0;
	DWORD numaNodeCount = 0;
	DWORD processorCoreCount = 0;
	DWORD processorL1CacheCount = 0;
	DWORD processorL2CacheCount = 0;
	DWORD processorL3CacheCount = 0;
	DWORD processorPackageCount = 0;
	DWORD byteOffset = 0;
	PCACHE_DESCRIPTOR Cache;

	glpi = (LPFN_GLPI)GetProcAddress(
		GetModuleHandle(TEXT("kernel32")),
		"GetLogicalProcessorInformation");
	if (NULL == glpi)
	{
		_tprintf(TEXT("\nGetLogicalProcessorInformation is not supported.\n"));
		return (1);
	}

	while (!done)
	{
		DWORD rc = glpi(buffer, &returnLength);

		if (FALSE == rc)
		{
			if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
			{
				if (buffer)
					free(buffer);

				buffer = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc(
					returnLength);

				if (NULL == buffer)
				{
					_tprintf(TEXT("\nError: Allocation failure\n"));
					return (2);
				}
			}
			else
			{
				_tprintf(TEXT("\nError %d\n"), GetLastError());
				return (3);
			}
		}
		else
		{
			done = TRUE;
		}
	}

	ptr = buffer;

	while (byteOffset + sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION) <= returnLength)
	{
		switch (ptr->Relationship)
		{
		case RelationNumaNode:
			// Non-NUMA systems report a single record of this type.
			numaNodeCount++;
			break;

		case RelationProcessorCore:
			processorCoreCount++;

			// A hyperthreaded core supplies more than one logical processor.
			logicalProcessorCount += CountSetBits(ptr->ProcessorMask);
			break;

		case RelationCache:
			// Cache data is in ptr->Cache, one CACHE_DESCRIPTOR structure for each cache. 
			Cache = &ptr->Cache;
			if (Cache->Level == 1)
			{
				processorL1CacheCount++;
			}
			else if (Cache->Level == 2)
			{
				processorL2CacheCount++;
			}
			else if (Cache->Level == 3)
			{
				processorL3CacheCount++;
			}
			break;

		case RelationProcessorPackage:
			// Logical processors share a physical package.
			processorPackageCount++;
			break;

		default:
			_tprintf(TEXT("\nError: Unsupported LOGICAL_PROCESSOR_RELATIONSHIP value.\n"));
			break;
		}
		byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
		ptr++;
	}

	_tprintf(TEXT("\nGetLogicalProcessorInformation results:\n"));
	_tprintf(TEXT("Number of NUMA nodes: %d\n"),
		numaNodeCount);
	_tprintf(TEXT("Number of physical processor packages: %d\n"),
		processorPackageCount);
	_tprintf(TEXT("Number of processor cores: %d\n"),
		processorCoreCount);
	_tprintf(TEXT("Number of logical processors: %d\n"),
		logicalProcessorCount);
	_tprintf(TEXT("Number of processor L1/L2/L3 caches: %d/%d/%d\n"),
		processorL1CacheCount,
		processorL2CacheCount,
		processorL3CacheCount);

	free(buffer);

	return 0;
}

打印出的结果:


GetLogicalProcessorInformation results:
Number of NUMA nodes: 1
Number of physical processor packages: 1
Number of processor cores: 2
Number of logical processors: 4
Number of processor L1/L2/L3 caches: 4/2/1

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Windows 10家庭版上安装Hyper-V,您可以按照以下步骤进行操作: 1. 首先,打开一个文本编辑器(如记事本)并将以下内容复制粘贴到文件中: ``` pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i" del hyper-v.txt Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL ``` 2. 将保存为.bat文件,例如"install_hyper-v.bat"。 3. 以管理员身份运行该.bat文件。您可以右键点击该文件,然后选择“以管理员身份运行”。 4. 当提示您重启计算机时,请保存您的工作并重启计算机。 5. 重启后,您将能够使用完整功能的Hyper-V。 此外,您还可以使用Coreinfo工具软件来检查您的计算机是否支持Hyper-V。您可以按照以下步骤进行操作: 1. 下载Coreinfo工具软件(可在微软的Sysinternals Suite中找到)。 2. 将下载的Coreinfo解压到您的桌面上。 3. 以管理员模式打开PowerShell。您可以在开始菜单中搜索“PowerShell”,然后右键点击并选择“以管理员身份运行”。 4. 在PowerShell中,使用cd命令切换到Coreinfo所在的文件夹。例如,如果Coreinfo解压到桌面上的一个名为"Coreinfo"的文件夹中,则可以输入以下命令: ``` cd C:\Users\YourUsername\Desktop\Coreinfo ``` 5. 输入以下命令来运行Coreinfo查看计算机的虚拟化相关信息: ``` .\Coreinfo.exe -v ``` 6. 如果您已经成功安装了Hyper-V,那么您将看到显示您的计算机完全支持Hyper-V的相关信息。 希望这些信息对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SOC罗三炮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值