我想确定机器是否启用了超线程。为了确定这一点,我使用了我在网上找到的建议,其操作如下:
physical_proc_count = `grep "physical id" /proc/cpuinfo | sort -u | wc -l`
logical_proc_count = `grep "processor" /proc/cpuinfo | wc -l`
core_count = `grep "core id" /proc/cpuinfo | sort -u | wc -l`这样做的想法是,如果逻辑处理器的数量是核心数量的两倍,则启用超线程。
在我当时的天真中,我忽略了AMD处理器没有超线程的事实。我知道他们没有被称为“超线程”的精确技术,但我错误地认为他们的功能相当。所以我在一台有四个AMD Opteron处理器6276的机器上运行了脚本,输出是:
每物理CPU 8核,== 32核。然而,有64个逻辑CPU。因此,我得出结论,机器启用了超线程。更复杂的是,/proc/cpuinfo中的处理器标志包含"ht“标志。从那时起,我就学会了"HyperTransport“在AMD芯片中的代表-哦!
一位同事注意到了我的错误,并且礼貌地告诉我AMD处理器没有超线程。我还是不明白为什么我得到了上面的数字。
检查处理器的技术规格,它说每个物理CPU实际上有16个核心:http://products.amd.com/en-us/OpteronCPUDetail.aspx?id=759。
基本上,在我看来,输出就像是超线程。我哪里出错了?如何解析/proc/cpuinfo来获得所有AMD和Intel (HT和非HT)芯片的真实计数?
发布于 2015-03-24 15:50:35
AMD的推土机/Piledriver/Steamroller/挖掘机微结构,在其目前和最近的处理器中使用,包括你的6276,有“模块”是一对共享某些组件的“核心”。这些模块介于单个超线程内核和一对真正的独立核心之间,根据应用程序的不同,性能在一个内核和两个核心之间存在差异。
AMD将每一个这样的模块作为两个核心来销售,称Opteron 6276为16核.相反,有些软件将每个模块视为一个具有两个逻辑核的物理核心,而Linux似乎就是这样做的。
https://unix.stackexchange.com/questions/165088
复制相似问题