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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-1-10 15:57:27 | 显示全部楼层 |阅读模式
在判断当前是否开启了超线程之前,需要先判断另外几个数据:: b9 F+ n* v- I$ L4 Z1 Q5 N
1,物理CPU个数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1
* G7 Z2 l6 Q: C0 n8 }8 D
2
" G2 \; q" H/ u: V5 t) V  j
3
% Z, ?4 |9 m" ~& y8 g
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq
* \/ h# h- c& Y
physical id : 0

; w) a, W- j3 S. e" `4 z3 s
physical id : 1

5 P; b# H6 M7 a4 e6 b
, {: R( s9 Y; g  _) O

& D% [5 `! N7 \( @. _2 D4 ?/ ~, O% H/ ]1 D' p
可以看到物理CPU个数为2,物理CPU也就是机器外面就能看到的一个个CPU,每个物理CPU还带有单独的风扇。
! W) J. \2 U0 T/ @1 z& B+ V! o/ u2,每个物理CPU的逻辑核数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1
9 k  `0 L0 C6 k0 R4 b7 V' E
2

9 S: F# s4 X4 T
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq

0 ]  d: n1 B2 B# {; P
cpu cores   : 6
+ n* _% D0 _, g! a
' z- O. {/ a- f( u7 T' h
& d! t2 d' B- k% R7 _

, V$ H+ l8 v; _9 z5 m& e
3,系统整个cpu线程数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1

1 V. v- J$ M& ~7 l' b7 n$ X
2

8 ^# ]$ M2 p+ }1 b3 e& A8 L2 w
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l

5 i# U) `& J: d2 b, J) T1 D
24
! b+ @# m5 {) I

% M6 q2 r- ^& h* X2 s. t" l
, w: F8 }2 K) y' C# S
: X2 N: t( X# b
有了三面几个数据,就可以判断当前是否开启了超线程了,没开启超线程的情况下,系统的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
  z% N! B6 ]; [8 J: E: N6 G6 ~
2

2 _  q, ~/ N7 L6 `; g1 R
3
: C: b2 m" z. }3 ]
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq
" A( M* \$ V* d/ l' E" V
model name  : Intel(R) Xeon(R) CPU           X5670  @ 2.93GHz

5 b0 `4 f; Z( M8 X  j" _' T( n- t
[root@localhost ~]#
  }& k6 N' a$ I) I2 C7 p" z
7 b; N( R' R4 i5 X- A* T
3 i( W' y! @" S+ ^, B

* X# |1 C& c/ F
这是一台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
* Y9 V. S  Z0 u; x( r% N
2
3 g- m6 Z' g5 a
3
& b# g2 \3 K- ~' F: t% U) ?/ A/ G, e
4

/ q, J0 d! P) t  \
5

  B) l# k; w  O
6
# r  H9 o7 J- z( k
7
( C: V( u3 S9 q. a
8

! V& i' g1 e! c( x9 b# ]
9

. L) R$ n+ r6 p# @
10
$ ?9 N! X' X! \( c; ]5 h* K
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq

+ ^: s8 }- z9 }( [- W: M
physical id : 0

; k9 V8 @- r$ ?; R! `9 X7 ?) ?
physical id : 1
! t3 \* G- Z+ V: A, U! d5 T
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq

  B- c/ J& A$ k
cpu cores   : 4

# K5 d4 M# ^  z" w$ Q8 \2 z
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l

4 L- r' Q& _, k5 Z& k
8
  t# ]1 G* J7 \! E2 F* g7 H8 Y% I
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq

" a) j1 a' g  Z- s2 r% k
model name  : Intel(R) Xeon(R) CPU           E5504  @ 2.00GHz
9 u1 Z6 [8 K+ g$ A& I  S- _% f
[root@localhost ~]#
" \( D+ S2 U+ d$ E. G1 m+ ?3 \8 `

- S8 g) \( R1 {& }: j0 J
: D2 J8 |$ ^- Z% y
/ j) n7 S! g* B& s4 e
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,想开启都没法。
: |1 [  F+ L) }3 ~( @; m另外,根据physical id信息可以判断哪些逻辑核在同一个物理核上,因为同一物理核上的逻辑核的physical id相等;而根据core id信息又可以判断哪两个cpu线程跑在同一个逻辑核上,因为跑在同一逻辑核上的cpu线程的core id相等,但是,由于不同物理核上的逻辑核core id可以相等,所以在进行第二个判断(即哪两个cpu线程跑在同一个逻辑核上)前需要先进行第一个判断(即哪些逻辑核在同一个物理核上)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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