Setup Intel Speed Shift on pfSense

Setup Intel Speed Shift on pfSense
Key Value
pfSense+ 23.05.1

요약

pfSense + Mini PC 조합에서 Intel Speed Shift 설정해서 발열 문제 해결

Introduction

pfSesne 23.01과 23.05를 써멀 작업한 Mini PC에서 사용하고 있었지만 CPU 온도가 60도 전 후로 상당히 높게 유지되고 있었다. 원인은 Mini PC의 안 좋은 냉각 성능이라고 생각했고, 이를 해결하기 위해 USB 팬을 추가 구입해서 사용하고 있었다.

추가적으로 pfSense의 System Information에서는 CPU 속도가 Current: 2500 MHz, Max: 1996 MHz로 표시되고 있었다. 이것도 원인은 pfSense에서의 단순 오류로 생각하고 신경쓰지 않고 있었다.

Intel Speed Step and Speed Shift

우연히 Intel CPU의 전력 관리 방식에 Intel Speed Shift가 추가 되었다는 것을 알게 되었고, 6세대 CPU부터는 기존 Speed Step이 아닌 Speed Shift를 사용한다는 것을 알게 되었다.

Speed Step과 Speed Shift의 차이는 CPU 속도 조절을 누가하냐...이다. Speed Step에서는 OS가 했지만, Speed Shift는 CPU 안에 있는 HW 모듈이 담당한다. Speed Shift의 장점은 Speed Shift는 월등히 빠른 속도로 CPU clock을 조절할 수 있다고 한다.

그리고 Mini PC에서 사용하는 N5105 CPU (2000MHz)의 속도가 2500Mhz로 표시되는 것은 오류가 아닌 Turbo boost로 동작하고 있는 것이였다. 그리고 이것이 추가적인 발열의 원인이였던 것이였다.

해결 방안

이 모든 원인은 pfSense 23.x에서 사용하는 BSD 커널 14에서 CPU에 대한 Speed Step과 Speed Shift 동작 방식이 변경되었기 때문이고, Speed Shift를 N5105 CPU에 동작시키기 위해서는 커널 parameter를 아래와 같이 넣어주면 된다.

dev.hwpstate_intel.x.epp 추가

dev.hwpstate_intel.x.epp에서 x에는 CPU core 숫자 만큼 넣어주면 된다. 값은 0-100 값을 넣어줄 수 있는데, 0은 성능 향상, 100은 최대 절전이다. 나에게는 저전력이 중요하기에 90으로 설정했다. 마지막으로 값 추가 후 reboot 필요하다.

pfSense 수정 후 CPU의 Speed Shift 정상 동작
정상 CPU 온도 (수정 전 ~60도)

수정 후 CPU는 2000MHz 이하로 동작하고, 온도도 ~46도로 잘 유지되고 있다.