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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-1-10 15:57:27 | 显示全部楼层 |阅读模式
在判断当前是否开启了超线程之前,需要先判断另外几个数据:* b( ?* f6 p" @) Y- Y. v
1,物理CPU个数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1
) R" G' F; M$ a& k4 l: N' _
2
  R9 H! J2 S4 a' T7 n/ E; l( `3 ?" i4 x
3
$ x1 F4 g4 y2 E& F$ F1 _
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq
& X; F( G$ C) g! P9 \: m/ S. V
physical id : 0

5 U/ c1 _. k& b4 n+ T
physical id : 1

8 p7 P& \: K/ d( y7 O0 U9 N
7 H. F* I/ `5 {: e/ U0 A& y# W

2 w9 c" n4 R7 d3 \6 V
& D3 p! M  v8 p- O3 K
可以看到物理CPU个数为2,物理CPU也就是机器外面就能看到的一个个CPU,每个物理CPU还带有单独的风扇。$ B4 n$ F: ?8 v# f- B" U
2,每个物理CPU的逻辑核数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1

/ f7 x& h+ p/ W8 |0 w
2
( o0 V% s4 i! {2 R( d
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq

9 L1 }& Y, v  {' F* N# Q
cpu cores   : 6

" E5 k1 G7 \# ?+ }

7 f$ `( b* H- {& Y* d; f4 ?
( w5 `% H8 O6 I
+ ?- [" W; R1 Q# X
3,系统整个cpu线程数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1
& U( t* y, F0 I  |" T
2

9 v5 ?, P" Y# }9 P( E! }6 f
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l

! U) d/ }6 J. K# V+ H: F
24
$ O' h4 D( x# I; ^
4 d1 t) o/ v  @9 U  V
: ]. T! d7 G7 z" U- H) c' E

6 y% F; }. T# }* k! {4 D* |
有了三面几个数据,就可以判断当前是否开启了超线程了,没开启超线程的情况下,系统的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
' h, K7 O% a/ E5 [0 j6 ]
2

- ?# T) u' x! e6 q0 u5 A
3

" c$ W! l" x. o$ f# ~3 v
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq
0 @4 I! s: `' j- _) v3 ]6 ~
model name  : Intel(R) Xeon(R) CPU           X5670  @ 2.93GHz

# Q. ~! C' B/ \
[root@localhost ~]#

5 E3 q4 r* K- D6 t% |3 X  g

3 l% g$ x: S) |. |& u7 N

1 V2 \6 ~2 ^8 h& X6 B( [/ Q! {
' u) S" L& C( o- Y- v
这是一台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
) B+ r: Z- d+ g/ D! g* i
2

0 f: c5 v, R: ^+ a4 z
3

* b: y9 L8 b2 q4 H2 G, P
4

% D+ t; c9 X' I7 y, ~3 E: x
5

1 Y8 E  c7 l! T% C4 B
6
; J! {& v- u7 m" o  Z' X
7

0 O6 A( X; i$ }6 M) v- k$ [6 j
8
' r: j5 x, f+ ~. b7 l
9
+ v* i  v8 m% O: `
10

5 z/ T7 ]! {% E# D' |$ G, p- K5 Y
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq

! u6 i4 M8 E3 o, I7 U% W1 J" w8 _" o
physical id : 0

/ o1 R+ D2 x- F. j. L$ l2 |5 |$ N9 P
physical id : 1
; }* d- B9 H7 c) @/ p& n
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq

3 [8 i! E  u( G' E, T) [
cpu cores   : 4

6 |1 }6 `, C  W# ]$ X5 _+ z
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l
# K5 B" r3 D" M
8
6 L/ p( X. ]/ C! Y  ^1 V* A
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq
1 o5 ~8 e6 N: H
model name  : Intel(R) Xeon(R) CPU           E5504  @ 2.00GHz

+ j" l( X3 }! ^
[root@localhost ~]#
  E2 m( n/ e8 a2 r2 d
' r/ @$ X' _2 j8 l3 q1 D% c* @
2 b  U: O& v# M
* U& |4 R0 ^' v" u
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,想开启都没法。
9 ]+ ~+ B* g" N9 E7 K另外,根据physical id信息可以判断哪些逻辑核在同一个物理核上,因为同一物理核上的逻辑核的physical id相等;而根据core id信息又可以判断哪两个cpu线程跑在同一个逻辑核上,因为跑在同一逻辑核上的cpu线程的core id相等,但是,由于不同物理核上的逻辑核core id可以相等,所以在进行第二个判断(即哪两个cpu线程跑在同一个逻辑核上)前需要先进行第一个判断(即哪些逻辑核在同一个物理核上)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 05:31 , Processed in 0.021285 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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