컴퓨터/노트북/인터넷
IT 컴퓨터 기기를 좋아하는 사람들의 모임방
개요
CPU 부하테스트를 진행하던 중…
분명 Full load가 걸려있는데 일정 온도 이상 올라가지 않았으며, 전류를 덜 소모하는 상황이 발생.
그래서 원인을 밝히기 위해 리눅스 환경에서 CPU 사용정보를 확인하였고, 방법을 문서에 기록함.
CPU 정보 확인
lscpu
architecture, op-mode, byte-order 등 CPU의 spec 확인 가능
사용법
터미널에서 lscpu
입력
1 |
$ lscpu |
작동 클럭 관련
hwinfo
1 2 |
sudo apt-get install hwinfo hwinfo --cpu | grep Clock |
cpufreq-info
CPU 클럭 속도 확인 및 조절 가능
사용법
설치
1 |
apt-get install cpufrequtils |
클럭 확인
1 |
cpufreq-info |
클럭 변경
1 2 3 |
# 주의 : 허용 범위를 벗어난 클럭 조절은 권장하지 않음. # x는 임의의 값을 의미 cpufreq-set -c x -d x.xGhz |
-d
: minimum frequency
-u
: maximum frequency
-f
: specific frequency
-g
: governor
-c
: specific core
부팅시 자동 변경
/etc/init.d/cpufrequtils
파일 직접 수정하여 옵션 부여가능
대부분의 설정 references는 /sys/devices/system/cpu/cpu0/cpufreq
에서 확인가능
해당 디렉터리를 참조하면 설정에 도움이 됨.
ex) cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
입력하여 사용 가능한 governor 목록 확인 가능
- 현재 run level에서 자동 실행되도록 변경
- GOVERNOR="performance"로 변경하고 재부팅.
스크립트 이용
각 코어의 현재 속도 확인
1 |
watch -n.1 "cat /proc/cpuinfo | grep "^[c]pu MHz"" |
Tip: watch가 1초 이내 간격으로 작동하지 않으면 아래와 같이 사용:
1 |
watch -n1 "cat /proc/cpuinfo | grep "^[c]pu MHz"" |
이것은 각 코어의 속도를 실시간으로 표기함.
By running the following command, one or more times, from another terminal one can see the speed change with the above watch command, assuming SpeedStep is enabled (Cool’n’Quiet for AMD).
echo “scale=10000; 4*a(1)” | bc -l &
(This command uses bc to calculate pi to 10000 places.)
사용 정보 관련
htop
각 코어별 점유율, task와 thread 수, uptime 등등 간편하게 확인할 수 있다.
설치 및 사용
1 2 |
sudo apt-get install htop htop |
사용 화면
상태바의 색상정보
htop 실행 후 F1 누르면 나타나는 ref 및 구글검색하여 참조하였음
CPU
- Blue - 낮은 우선순위의 스레드(thread)
- Green - 사용자가 점유중인 항목들 (사용자 프로세스, 우선순위 보통))
- Red - 커널이 점유중인 항목들 (kernel, iowait, irqs…)
- Orange - 가상 시간 (steal time + guest time)
메모리
- Green - 점유중인 메모리
- Blue - 버퍼
- Yellow/Orange - 캐시
psutil
스크립트로 툴을 만드는 경우 사용되는 방법
설치
python, pip 선행설치 요구됨
1 2 |
sudo apt-get install python python-pip sudo pip install psutil |
사용
d3fau1t@d3fau1t:~$ python Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import psutil >>> psutil.cpu_percent() 3.4 >>> dict(psutil.virtual_memory()._asdict()) {'available': 5222060032, 'used': 2346713088, 'cached': 3024846848, 'percent': 36.6, 'free': 1591271424, 'inactive': 2034737152, 'active': 3844825088, 'shared': 623927296, 'total': 8230621184, 'slab': 624201728, 'buffers': 1267789824} >>>
shell
평균 사용량을 확인하고 싶을 때
1 |
grep 'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage }' |