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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-1-10 15:57:27 | 显示全部楼层 |阅读模式
在判断当前是否开启了超线程之前,需要先判断另外几个数据:
1 a+ A8 a- A. M" x4 H( R5 W2 p) C1,物理CPU个数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1
0 w- V8 _/ r' O& R- T/ t. Y
2

# h) M( J9 [; d  d9 [' X
3

: O" h8 B- t4 m  z+ R8 j2 O3 a. h5 l0 W
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq
  p' E( n$ z1 _8 A) p! a
physical id : 0

1 h4 u1 p0 K* f, ^9 G0 P2 t: _
physical id : 1

& c5 f& l& p3 X& t5 \$ B+ Y- C

: `) u- T. X+ d: V$ y( z. V- N- d+ y

+ k0 A/ ^3 n% M1 ?0 o3 L/ `0 D+ J
可以看到物理CPU个数为2,物理CPU也就是机器外面就能看到的一个个CPU,每个物理CPU还带有单独的风扇。
: A% D( E: C- B9 O2,每个物理CPU的逻辑核数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1
7 n+ c& a% e( n: L
2

: J3 @2 ^5 v1 A. V2 ~! M/ o
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq
' H. _, ^1 G0 J9 m' _
cpu cores   : 6

( P& ~8 B" r8 U3 w- S: i% M
- H, I; n2 v5 K

( I- ]! x' B8 Z# V4 M) L0 s* |2 V9 l8 T  W# h7 l" X
3,系统整个cpu线程数:
[backcolor=rgb(255, 255, 255) !important][size=0.9em]
1

' d" d, k# g, }6 n2 S7 y  r
2

- l! c! |5 A1 u/ T& a/ f
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l
# v- D6 e+ P  z) W- ~7 L
24

+ R; L6 o2 c0 i  X

' x9 g9 s& R" @0 ^" B; X, d- Y

% Q0 _# r/ C: K* O4 \
  e0 E5 G3 ^) n- n% F
有了三面几个数据,就可以判断当前是否开启了超线程了,没开启超线程的情况下,系统的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
+ C+ Z# f7 g. P+ j  P7 T; ^
2
6 k/ D/ G  R0 N' a( Z3 u* \& z1 W7 K
3
9 h- ^2 x  e0 b: W' U/ V4 E' e
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq
4 r  Z/ X- B2 `) w" M6 F
model name  : Intel(R) Xeon(R) CPU           X5670  @ 2.93GHz
9 c7 n$ Y4 j% g! P2 n
[root@localhost ~]#

3 S$ g  F: I* b( i/ A3 T6 V0 u
" {4 {" V7 t1 d6 c4 B% h

/ a8 a  a) ]: n& v0 W) F1 s0 Y3 X# E5 o. Y1 Y; 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
, F$ K& W: k: W1 H4 M' `; P  N! V
2
; x5 e& z& h3 Y8 K" I
3
* g- _2 t& b; v$ g  G
4
: e) _/ e4 y$ F
5

- j2 J* x) q8 \3 Z$ q1 @: e+ R" K( E! c
6
+ Y4 e$ T& i. W) Y9 J
7

, ~/ A  q! u$ I; O& G) j2 Z$ ]( G
8

9 Z- N$ j, E" _- J- ~
9

, I7 J; Y1 j, t* B0 h3 k8 D# Q9 A
10

* S* T/ V+ M) x* A
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq

" E; Q# @! V5 M! g% v+ [
physical id : 0

6 N. C* s( s& U+ c3 r3 G
physical id : 1

8 W, c# q0 K4 r0 U  D0 g2 ~: I' S
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq
- z! U+ |- w; ~9 k& @" U
cpu cores   : 4

- V! O4 ~7 M) w9 J; s( ]4 D* `
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l
* b0 A; L7 ]* }9 s$ R
8
- v+ u4 V1 i6 S  l& T: i0 K
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq
$ ^* u9 b' p# l7 R" q0 ^8 j  ~2 C' }+ f
model name  : Intel(R) Xeon(R) CPU           E5504  @ 2.00GHz

) L7 b7 d8 X- _
[root@localhost ~]#
* L- s: {* r' n8 {* W& r' ]/ i
1 @; j, o  X9 N" f$ i  e4 M7 P+ K

! q( t2 U, R8 E9 g' e0 {/ ^& a/ ^1 h" ?% W( h/ a. @) I
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 X  G. q+ i* ]4 ~/ h9 D& t. F7 E
另外,根据physical id信息可以判断哪些逻辑核在同一个物理核上,因为同一物理核上的逻辑核的physical id相等;而根据core id信息又可以判断哪两个cpu线程跑在同一个逻辑核上,因为跑在同一逻辑核上的cpu线程的core id相等,但是,由于不同物理核上的逻辑核core id可以相等,所以在进行第二个判断(即哪两个cpu线程跑在同一个逻辑核上)前需要先进行第一个判断(即哪些逻辑核在同一个物理核上)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 05:34 , Processed in 0.023175 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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