找回密码
 注册
查看: 4403|回复: 0

Linux 下判断系统当前是否开启了超线程

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-1-10 15:57:27 | 显示全部楼层 |阅读模式
在判断当前是否开启了超线程之前,需要先判断另外几个数据:
- `+ I2 }* i" {0 {1,物理CPU个数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1

! w/ u2 n2 ^  C6 F% t7 q
2

6 W6 @0 }  J5 z4 f& R: m
3
) }8 r1 ?' x9 S( N1 L) o
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq

6 ~# H4 z' V# D
physical id : 0

. T, O* m  S; O3 r( \$ K2 [
physical id : 1

. ~6 {  H5 ~1 a

+ y4 F1 i  k" p) a( e

  K8 O: E5 }$ g7 c: {) R" x3 ~' d: A* ^% P- p/ h/ b9 J! s% P; ]5 m# s
可以看到物理CPU个数为2,物理CPU也就是机器外面就能看到的一个个CPU,每个物理CPU还带有单独的风扇。
4 S6 h. H2 V6 s+ P2,每个物理CPU的逻辑核数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1
7 r  d6 H# r- n) F
2

. I! n% D1 @9 u$ f. ~
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq
) a& Y0 L" [( c0 y5 F4 ^& s+ W
cpu cores   : 6

+ d7 @* C4 x( i9 n
1 _% L7 J9 j( o5 d+ X4 f

! v+ _" u& w# T7 V, [. \" x3 B
7 r& h2 _# q" b) K1 F
3,系统整个cpu线程数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1

$ g2 A% @( c# ^1 p& h
2
  _+ m, m& |3 A  ~$ n4 c- t
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l
+ x- ]6 R5 d, \6 |( A5 x
24
# S. r8 t% h0 R7 U8 E. Y# \

8 M/ D/ `8 P) g
  k6 H: A' J# e& H

5 j1 ]; R; l9 A' Q, B1 q1 d: n
有了三面几个数据,就可以判断当前是否开启了超线程了,没开启超线程的情况下,系统的cpu线程数=物理CPU个数*每个物理CPU的逻辑核数*1,因为每个逻辑核只跑了1个cpu线程,如果开启了超线程,那么cpu线程数=物理CPU个数*每个物理CPU的逻辑核数*N,因为每个逻辑核跑了2个cpu线程。所以,上面的24=2*6*2,可以判断当前开启了超线程。
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1

$ _$ ~, @9 \' [8 S0 H5 g/ U
2
3 W* t& A3 k9 _& N! ?6 P' A
3
: {- V! o; ]4 F( k! A" b
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq

1 o% [$ I1 x8 I  P* ~
model name  : Intel(R) Xeon(R) CPU           X5670  @ 2.93GHz

8 F5 g$ t: a% U4 t( l& t
[root@localhost ~]#
9 {  a4 J9 }; Q3 X& b5 r! A

& w2 M$ Y3 F& _; J" a# g
7 O" {- W; p  M* ?  Q

, |- I8 K' r: u5 G0 j" |& ^
这是一台X5670机器,从Intel的cpuX5670规格页面(http://ark.intel.com/products/47920/Intel-Xeon-Processor-X5670-%2812M-Cache-2_93-GHz-6_40-GTs-Intel-QPI%29)可以看到,其的确支持Intel® Hyper-Threading Technology。再看另外一个:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1

$ R/ @% F$ n; G  ]' h
2

! H% s- w2 Y) \7 p/ d' w4 `# I
3
2 g5 S7 r9 h8 I
4
- N$ J: m; F  x& n& R, ]
5

" s+ W' b% ]5 p( ?
6

! }) F" |: M5 j+ Y! J
7
6 X3 ~& M& _  ?2 w0 d" c4 m
8

" w& y! ]1 w7 Y2 z: u( O! N- Y
9

; n- E* I! N+ e$ P; [
10

# n8 j6 B4 U2 s  D- d
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq
3 T; z8 N6 e8 Z+ R& Q; T
physical id : 0
' A! i) ~% U% w" o' @
physical id : 1
; h+ ~: c. F. I" z
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq

& H1 N. p, d2 d( ?9 i# d9 U
cpu cores   : 4

; G( g1 ?3 }* o  h4 C+ W
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l
3 B4 f6 `; Q# t+ z/ @% l
8

, f+ n& T  B* C6 q6 E2 s! X
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq
2 [  U! }0 W- H4 S: s
model name  : Intel(R) Xeon(R) CPU           E5504  @ 2.00GHz
4 M+ L5 z; E* U! v& M4 g7 Q' _
[root@localhost ~]#

8 \* g$ b0 \" p( N6 X2 R7 j. ?
  ^0 k: B# W2 P7 p

2 T: x+ G  W0 _- C  t, i8 g
& O. D# L& h! T4 f4 Z9 J+ y
8=2*4,没有开启超线程,从Intel的cpuE5504规格页面(http://ark.intel.com/products/40711/Intel-Xeon-Processor-E5504-%284M-Cache-2_00-GHz-4_80-GTs-Intel-QPI%29)可以看到,其不支持Intel® Hyper-Threading Technology,想开启都没法。* X" q; v: _8 X1 D# U9 |
另外,根据physical id信息可以判断哪些逻辑核在同一个物理核上,因为同一物理核上的逻辑核的physical id相等;而根据core id信息又可以判断哪两个cpu线程跑在同一个逻辑核上,因为跑在同一逻辑核上的cpu线程的core id相等,但是,由于不同物理核上的逻辑核core id可以相等,所以在进行第二个判断(即哪两个cpu线程跑在同一个逻辑核上)前需要先进行第一个判断(即哪些逻辑核在同一个物理核上)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 04:28 , Processed in 0.019832 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表