如何查找有关CPU并行架构的信息?

时间:2010-11-26 11:33:50

标签: linux parallel-processing cpu-architecture

我是Intel(R)Core(TM)2 Duo CPU T6600 @ 2.20GHz(正如cat /proc/cpuinfo告诉我的那样),但我需要尽可能深入地研究。用于并行编程的架构(可能使用pthreads)。有什么指针吗?

3 个答案:

答案 0 :(得分:10)

sys文件系统知道 all

$ ls /sys/devices/system/cpu 
cpu0  cpu2  cpuidle  possible  sched_mc_power_savings
cpu1  cpu3  online   present

$ ls /sys/devices/system/cpu/cpu0/topology/
core_id        core_siblings_list   thread_siblings
core_siblings  physical_package_id  thread_siblings_list

这是documentation

使用这个文件系统,您可以了解您拥有多少CPU,拥有多少线程,哪些CPU与其他cpu相邻,以及哪些CPU与其他CPU共享缓存。

例如 - 问:哪些CPU使用?

与cpu0共享它的L2缓存
$ cat /sys/devices/system/cpu/cpu0/cache/index2/{type,level,shared_cpu_list}
Unified
2
0-1

答:它与cpu1(及其自身)共享它的统一L2缓存。

另一个例子:问:哪些CPU与cpu0位于同一物理包中(在较大的机器上):

cat /sys/devices/system/cpu/cpu0/topology/core_siblings
00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000055

A:内核0,2,4和6.(取自上面的位模式,lsb = cpu0)


并非所有的linux系统都有sys文件系统,并且它并不总是在root中。 (可能在proc / sys中?)。 thread_siblings_list表单并不总是可用,但是thread_siblings(位模式)表单是。

答案 1 :(得分:2)

我发现hwloc projectlstopo非常有用。这将为您提供图形输出 (根据Alex Brown描述的/proc/sys中的信息) 您系统的拓扑结构(请参阅其网页上的示例)。从图形 您可以轻松看到输出

  • 如果存在超线程核心
  • 哪个cpu号码对应的是同一物理核心上的不同超线程
  • 使用了多少个CPU插槽
  • 哪些核心共享L3缓存
  • 如果主插槽在CPU插槽之间是通用的,或者您是否在NUMA系统上

如果您需要以编程方式访问此信息,那么有一些文档可以将hwloc用作库。

答案 2 :(得分:-2)

为了获得有关处理器的最低细节,系统工程师可以运行其等效于CPUZ,并在法律允许的情况下达到安装和使用处理器的家庭或办公室地址的最低级别。通常不允许软件工程师和开发人员知道这种详细程度,但我可以告诉您,该体系结构可以是处理器生成的类型,也可以是虚拟第二处理器实现接近x1.75处理等效的类型,或者是真实的使用技术和控制方法在同一管芯上的物理多核作为先前设计实现的增强。核心处理器有一个供系统程序员,应用程序开发人员使用的接口,这种访问模式是英特尔的期望,可以从他们那里获得详细信息。