본문 바로가기

Study/linux

하이퍼쓰레드 켜고 끄기

하이퍼쓰레딩 확인하기

 

제일 편한 방법: `lscpu`명령

 

 

방법 1; siblings 가  cpu core 2배면 hyperthreading on

 

cat /proc/cpuinfo | egrep 'siblings|cpu cores' | head -2

 

방법 2 ; Thread Count가 Core Count의 2배면 hyperthreading on

 

dmidecode -t processor | egrep 'Core Count|Thread Count' | head -2

 

방법 3; hyperthreading on이면 HTT(Hyper-threading), off면 HTT(Multi-threading)

 

dmidecode -t processor | grep HTT | head -1

 

 

하이퍼쓰레드 설정 bash파일 만들기

1. set-hyper-threading.sh 만들기

#!/bin/bash
 
# NAME: set-hyper-threading
# PATH: /usr/local/bin
# DESC: Turn Hyper threading off or on.
 
# DATE: Aug. 5, 2017.
 
# NOTE: Written Part of testing for Ubuntu answer:
#       https://askubuntu.com/questions/942728/disable-hyper-threading-in-ubuntu/942843#942843
 
# PARM: 1="0" turn off hyper threading, "1" turn it on.
 
if [[ $# -ne 1 ]]; then
    echo 'One argument required. 0 to turn off hyper-threading or'
    echo '1 to turn hyper-threading back on'
    exit 1
fi
 
echo $1 > /sys/devices/system/cpu/cpu1/online
echo $1 > /sys/devices/system/cpu/cpu3/online
echo $1 > /sys/devices/system/cpu/cpu5/online
echo $1 > /sys/devices/system/cpu/cpu7/online
 
grep "" /sys/devices/system/cpu/cpu*/topology/core_id
 
grep -'^flags.*[[:space:]]ht[[:space:]]' /proc/cpuinfo && \
    echo "Hyper-threading is supported"
 
grep -'model|stepping' /proc/cpuinfo | sort -u
 
# stress --cpu 8 --io 1 --vm 1 --vm-bytes 128M --timeout 10s

위와 같은 내용을 `set-hyper-threading.sh`로 저장한다.

 

주의!!!

컴퓨터에 따라 cpu와 코어 매칭되는게 다르다.

> cpu 0 - core 0,1 / cpu 1 - core 2,3 / cpu 2 - core 4,5 / cpu 3- core 6,7

> cpu 0 - core 0,4 / cpu 1 - core 1,5 / cpu 2 - core 2,6 / cpu 3- core 3,7

이렇게 다를 수 있으므로 

`echo $1 > /sys/device/system/cpu/cpu1/online` 이부분에 알아서 숫자 바꿔 넣을것!!

 

 

 

2. .sh파일을 /usr/local/bin으로 옮기기

 

3. .sh파일을 실행하기

실행할 수 있게 권한 주기

$ sudo chmod +x ./set-hyper-threading

 

실행하기

$ sudo set-hyper-threading 0    # hyper threading off
$ sudo set-hyper-threading 1    # hyper threading on

 

 

cpu 정보 확인하기

# cpu 정보 확인
$ cat /proc/cpuinfo 
 
# cpu 코어 전체 개수 확인
$ grep -c processor /proc/cpuinfo
 
# 물리 CPU 수 확인
$ grep "physical id" /proc/cpuinfo | sort -| wc -
 
# CPU당 물리 코어 수 확인
$ grep "cpu cores" /proc/cpuinfo | tail -1

 

추가정보: CPU개수 조절하기

/sys/devices/system/cpu/안에 cpu정보가 들어가 있다.

위 디렉토리의 ./cpu번호/online 파일에서 cpu core를 on/off로 조절한다.

 

조절방법:

 

1
2
3
4
5
6
7
8
9
# 방법 1: 1번 cpu 끄고 켜기
 
# echo 0 > /sys/devices/system/cpu/cpu1/online
# echo 1 > /sys/devices/system/cpu/cpu1/online
 
# 방법 2: 2,3번 cpu 끄고 켜기
 
# chcpu -2,3
# chcpu -2,3

 

 

참고

 

[hyper threading on-off

 

[cpu 정보 확인하기]

 

https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%ED%95%98%EC%9D%B4%ED%8D%BC%EC%8A%A4%EB%A0%88%EB%94%A9_%ED%99%95%EC%9D%B8

 

리눅스 하이퍼스레딩 확인 - 제타위키

다음 문자열 포함...

zetawiki.com

http://blog.seabow.pe.kr/?tag=chcpu