728x90
반응형
맨 위로 올라가기
CPU Clock

 

CPU 클럭(CPU Clock)이란 중앙 처리 장치(CPU)가 명령을 처리하는 속도를 결정하는 요소이다.
클럭 속도는 일반적으로 헤르츠(Hz) 단위로 측정되며, 이는 초당 클럭 사이클의 수를 나타낸다.
예를 들어, 3GHz(기가 헤르츠) 클럭 속도를 가진 CPU 는 초당 3,000,000,000(30억)회의 클럭 사이클을 수행할 수 있다.

 

  • CPU 클럭의 중요성

    1. 성능:
      클럭 속도는 CPU의 성능을 결정하는 중요한 요소 중 하나이다.
      클럭 속도가 높을수록 CPU는 더 많은 연산을 더 빠르게 처리할 수 있다.
    2. 프로세스 처리:
      각 클럭 사이클에서 CPU는 기본적인 명령들(예: 데이터 read, write, calculate)을 수행한다.
      따라서 클럭 속도는 프로세스 처리 속도에 직접적인 영향을 미친다.
    3. 발열과 전력 소비:
      클럭 속도가 높아지면 CPU는 더 많은 전력을 소모하고 더많은 열을 발생시킨다.
      이는 냉각 시스템(쿨러)과 전력 관리에 추가적인 요구 사항을 만들어 낸다.
    4. 오버클럭킹:
      사용자는 때때로 CPU 클럭 속도를 공장에서 설정된 속도보다 높게 설정하는 오버클럭킹을 통해 성능을 향상시키려고 한다. 이는 추가적인 성능을 제공할 수 있으나, 시스템의 안정성과 수명에 영향을 줄 수 있다.

 

- 'ondemand' : CPU 클럭 속도를 부하에 따라 자동조절하는 스케일링 정책(CPU 성능조정 매개변수 파일)

- 'policy0': 첫 번째 CPU 코어의 주파수 정책과 관련된 설정 및 정보를 포함하는 디렉토리

 

CPU 코어 목록 나열, CPU 주파수 설정이 모든 코어에 적용된다는 것을 의미함.

 

CPU governor란 CPU 클럭 속도에 관련된 정책과 정보를 결정해주는 역할을 한다.(저전력, 최대 퍼포먼스 등)

 

위는 설정 가능한 유형이 나열 된 것이다.

 

  • conservative:
    이 정책은 시스템 부하가 증가할 때 점진적으로 CPU 속도를 증가시킨다.
    CPU 부하에 따라 클럭 속도가 동적으로 변경(일정 비율로 변경)되어 'ondemand' 보다 더 부드러운 성능 변화가 제공되어, 급격한 전력 소모 증가를 방지할 수 있다.

  • ondemand:
    시스템 부하에 따라 CPU 속도를 빠르게 조절한다. 부하가 높을 때는 속도를 즉시 높이고, 부하가 낮을 때는 속도를 줄인다. 반응성이 뛰어나 일반적인 사용 환경에서 널리 사용된다. 또한 부하에 따라 클럭 속도를 동적으로 변경하며(큰 범위로 변경됨) 그리고 라즈베리파이에서 기본적으로 제공하는 설정이기도 하다.

  • userspace:
    이 정책은 사용자나 응용 프로그램이 CPU의 속도를 직접 제어할 수 있도록 한다.
    시스템이나 특정 응용 프로그램에 맞춰 세밀하게 CPU 속도를 제어할 수 있다.(사용자 정의 설정)

  • powersave:
    CPU를 항상 최저 속도로 운영하여 전력 소모를 최소화한다.
    배터리 사용 시간을 최대화하고자 할 때 유용하다.(클럭 속도 가장 낮은 값으로 설정)

  • performance:
    CPU를 항상 최대 속도로 운영하며 최고의 성능을 제공하나 전력 소모가 크다.(성능 우선, 최대 클럭 속도)

  • schedutil:
    이 정책은 최신 리눅스 커널에서 도입된 것으로, CPU 스케줄러의 정보를 활용해 스케일링 결정을 내린다.
    'onedemand'와 유사하나 더 민감하게 변화에 반응하여 CPU 속도를 조절한다.(EAS:Energtyy Aware Scheduling) 가장 낮은 소비에너지 보장
$ echo -n 'userspace' | sudo tee /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

ondemand 에서 userspace로 변경되어 onedmand가 사라짐

  • Check Configurable Clock Speed



  • Set the Clock Speed of the CPU (min, current, max)

echo -n <available_frequency> | sudo tee /sys/devices/system/cpu/cpufreq/policy0/<scailing_<range>_freq

#<range>
#scailing_min_freq
#scailing_cur_freq
#scailing_max_freq

 

  • CPU Performance and Temperature Measurement
sudo apt-get install sysbench

 

sysbench --test=cpu --cpu-max-prime=20000 --num-thread=4 run

 

  • sysbench:
    sysbench 도구 호출 명령어, 시스템 성능 테스트 및 벤치마킹에 사용되는 도구
  • --test=cpu:
    CPU 성능 테스트 수행 옵션
  • --cpu-max-prime=20000:
    테스트 중 사용될 이벤트 처리량 제한(CPU 처리능력 시험) 옵션
  • --num-threads=4:
    테스트에 사용될 스레드 수 설정
  • run:
    sysbench 에게 설정된 매개변수로 테스트 시작 명령어

focus 'CPU speed: events per second' 초당 처리 가능한 이벤트 개수(동일 조건에서 CPU 클럭 높을 것이 높은 수치가 나옴)

 

  • Check current temperature.
cat /sys/class/thermal/thermal_zone0/temp

 

온도 센서가 감지한 온도 값이 출력되는데 일반적으로 millidegrees로 표시되어 섭씨온도로 변환하려면 1000으로

나누어 됨.

 

48,686 / 1000 == 48.7도(섭씨)


 

ubuntu@ubuntu:/sys/devices/system/cpu/cpufreq/policy0$ sudo cat scaling_governor
userspace

* 비교 위한 환경 구성(userspace:사용자 정의)

 

# CPU Clock 600000(600MHz)

echo -n 600000 | sudo tee /sys/devices/system/cpu/cpufreq/policy0/scailing_setspeed
# Running a test

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run

 

result

 

# CPU Clock 2200000(2.2GHz)

echo -n 2200000 | sudo tee /sys/devices/system/cpu/cpufreq/policy0/scailing_setspeed
# Running a test

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run

result

 

* cpu clock 높일 시 event 초당 처리량은 3배 가량 올랐으며, 온도는 8-10 도가량 상승하였음.


 

728x90
반응형

+ Recent posts