6.0이라는 숫자는 어디서, Turbo Boost vs Overclock

1.
ZeroAOS 서비스를 하면 서버 튜닝을 위한 요청을 받습니다. 이 때 하는 작업은 부팅 및 커널 패러매터를 조정하고 10G카드와 관련한 설정을 합니다. 요즘 가장 많이 사용하는 CPU는 Intel제품중 Intel(R) Core(TM) i9-13900k와 주로 사용하고 있습니다. OS는 Centos를 대신하여 Rocky Linux로 정착하였습니다. 한동안 Clear Linux를 사용했지만 가끔 비정상적인 동작을 하는 현상이 나타나서 Rocky Linux로 바꾸었습니다. 네트워크 카드는 RDMA방식을 사용하는 Mellanox입니다. OS를 설치한 후 가장 먼저 하는 작업은 grub cmdline에 성능을 위해 값을 추가합니다. 주로 CPU C-State와 관련한 설정들입니다.

설정을 하기 전과 설정한 후의 turbostat를 실행한 값을 비교하면 다음과 같습니다.


작업을 마친 후 시간을 내서 이런저런 값을 확인하였습니다. Linux에서 CPU Frequency를 설정하는 명령어인 cpupower로 CPU별 상태를 확인하였습니다. Core 1의 결과값입니다.

Core 5의 결과값입니다.

거의 같은 내용인데 한 부분이 다릅니다.

current CPU frequency: 3.00 GHz (asserted by call to kernel)
current CPU frequency: 5.98 GHz (asserted by call to kernel)

Turbostat로 보았던 값과 cpupower로 본 값이 다릅니다. 5번은 turbo boost로 동작한 결과이고 1번은 아닙니다. 왜 다른가가 시작이었습니다.

우선 Turbo Boost가 궁금했습니다. Intel의 설명입니다.

What Is Max Turbo Frequency?

When handling light workloads, the CPU runs at the base frequency listed in its specifications. (Or lower, when the energy-saving Intel SpeedStep® technology scales CPU speeds.) When handling hardware threads marked for high performance, Intel® Turbo Boost Technology increases the clock speed up to the Max Turbo Frequency.

동작 원리는 모르겠지만 무슨 말인지는 이해를 할 수 있습니다. 여기서 한발 더 나아가서 오버클라과 무엇인 다른지 궁금했습니다. Quora에 올라온 질문인 What is the difference between turbo boost and over clocking?에 달린 글입니다. 혹시나 해서 chatGPT에 같은 질문을 했는데 아래 글과 똑같은 답을 내놓네요 ㅠㅠㅠㅠ

Turbo Boost and Overclocking are both technologies used to increase the performance of a computer processor.

Turbo Boost is a feature built into Intel processors that temporarily increases the clock speed of the processor above its base clock speed, to improve performance for demanding tasks. It is automatic, and occurs when the processor determines that more processing power is required, such as when running a demanding application.
Overclocking, on the other hand, is the process of manually setting the clock speed of a processor to run above its rated maximum speed. This is done by changing the settings in the computer’s BIOS or UEFI firmware, and can be a way to increase performance, but also increases the risk of stability issues and potential damage to the processor if not done correctly.

In summary, Turbo Boost is a dynamic, automatic process built into Intel processors, while overclockng is a manual process that involves changing the clock speed of a processor.

위의 핵심은 회사가 보증하는 방식으로 CPU가 자체적으로 실행하는 방식인지, 아니면 외부에서 인위적으로 값을 만들어내는 방식의 차이입니다.

Turbo boost is speed boost done by the processor itself. Overclocking is manual speed increase, ie pushing limit of original operation.
The clock speed can differ in turbo boost, as it is controlled by the processor. The clock speed automatically drops if CPU overheats. In overclocking, you basically increase the max speed system can hit. The extent of overclocking dpends on system cooling, load etc.

2.
Turbo Boost의 결과인지 확인하려고 다른 프로그램을 확인하였습니다. msr-tools이 있네요. Intel이 개발보급한 소프트웨어인데 현재는 유지보수를 하지 않습니다. Turbo Boost를 Enable 혹은 disable을 하도록 하는 프로그램입니다. 따라서 현재 상태를 확인할 수 있습니다. 관련한 명령어를 실행하 결과로 보니까 cpupower의 마지막 값과 일치합니다.

[ium@ard13 ~]$ sudo rdmsr -p 0 0x1a0 -f 38:38
0
[ium@ard13 ~]$ sudo rdmsr -p 1 0x1a0 -f 38:38
0
[ium@ard13 ~]$ sudo rdmsr -p 2 0x1a0 -f 38:38
0
[ium@ard13 ~]$ sudo rdmsr -p 3 0x1a0 -f 38:38
0
[ium@ard13 ~]$ sudo rdmsr -p 4 0x1a0 -f 38:38
0
[ium@ard13 ~]$ sudo rdmsr -p 5 0x1a0 -f 38:38
0

boost state support:
Supported: yes
Active: yes

현재 튜닝한 서버가 보여주는 6.0이라는 숫자는 오버클락의 결과가 아니라 Turbo Boost의 결과입니다. 다만 intel_idle.max_cstate=0로 하였기 때문에 모든 Core의 숫자는 3.0Ghz입니다. 다만 5번 Core만 5.98Ghz로 동작합니다. 왜 이런 결과가 보일까요? 저 해석은 CPU Isolation 혹은 CPU Affinity때문입니다. grub cmdline에 isolcpus를 사용했기때문으로 보입니다. 현재 알고리즘매매를 위한 프로세스를 설정하지 않았기 때문에 5번을 제외한 CPU 코어는 어떤 역할도 하지 않습니다. 오직 5번만 동작하는 상태입니다.

이제 실거래할 때 다른 CPU 코어의 클락을 확인하는 일이 남았습니다. 위 추론이 맞는지, 틀리는지….

3.
서버작업을 하면서 오랜만에 공부를 하였습니다. 알고 있는 사실을 다시금 확인하는 계기이기도 합니다. MSR과 관련해서는 처음 접했습니다. 서버 모니터링으로 유명한 Brendan Gregg과 관련한 글을 남겼네요.

The MSRs of EC2

CPU와 관련한 여러가지 이슈를 잘 정리한 글도 보았습니다.

Intel CPUs: P-state, C-state, Turbo Boost, CPU frequency, etc.

그리고 C-State에 따라 CPU가 어떻게 달라지는지 Amazon의 글도 읽었습니다. 그동안 한 작업을 다시금 확인하는 계기였습니다.

Processor state control for your EC2 instance
turbo boost를 enable/disable을 할 수 있는 스크립트도 있습니다.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.