Programming, IT, Algorithm, Security
article thumbnail

동기

최근, 카트라이더 드리프트라는 게임을 노트북으로 하던 도중 간헐적으로 갑자기 플레이 할 수 없을 정도의 렉이 걸리는 증상이 발생했다. 이 문제를 해결하기 위해 여러 방법을 시도하던 중 가장 좋은 방법을 찾아서 글을 쓰게 되었다.

 

원인은 쓰로틀링

나는 이 문제의 원인을 파악하기 위하여 hwinfo 라는 프로그램을 사용하였다. 해당 프로그램을 다른 모니터에 띄워놓고 게임을 플레이하며 간헐적 렉이 발생하는 원인을 파악하기 위하여 관찰했다. 관찰 결과, 렉이 걸리면 CPU의 클럭이 4000Mhz 이상에서 500Mhz 대로 급격하게 저하되는 것을 확인하였다. 이것의 원인은 CPU온도가 100도를 넘나들며, 열 조절 항목의 값이 '예'로 되어있는 것으로 확인 가능했다.

CPU의 쓰로틀링(열 조절)이 발동한 것으로 과열로 인한 기기의 손을 막기위해 시스템이 자동으로 CPU의 클럭을 저하시킨 것이었다. 

HWinfo 센서 정보 요약

 

해결

첫 번째 시도

나는 쓰로틀링 문제를 해결하기 위하여 먼저 노트북의 히트파이프에 열을 전달하는 서멀구리스를 교체하는 방법을 시도했다. 왜냐하면 기본으로 제공되는 서멀구리스는 성능이 떨어지는 경우가 있고 시간이 지나면 서멀구리스의 성능도 저하되기 때문이다. 

나는 Artic의 mx-6 이라는 서멀구리스를 구매하여 CPU와 외장 GPU에 모두 바르고 히트파이프를 재장착했다. CPU 근처의 칩셋에는 서멀패드가 부착되어 있었는데 이건 기존 패드를 그대로 재사용했다. 

결과는 CPU 최대 온도가 100도에서  90도로 10도 하락하면서 쓰로틀링에 걸리지 않아 문제가 해결되나 싶었으나, 다시 쓰로틀링이 걸렸다. 쓰로틀링의 원인이 CPU 말고 다른 곳에도 존재했던 것이다.
그 이유는 CPU의 전원 공급에 관련된 칩셋의 과열에 인한 것으로 추정되었다. 그 이유는 열 조절(PROCHOT EXT)로 알 수 있었는데, PROCHOT EXT는 CPU 이외의 메인보드의 외부 구성 요소로 인한 쓰로틀링을 의미했다. 그 원인은 CPU 근처에 붙어있던 서멀패드가 전원부의 열을 잘 방출하지 못하거나 노트북 자체의 쿨링 성능이 떨어지는 것으로 추정되었다. 서멀패드를 교체하고 다시 시도해보는게 좋겠지만 지금은 서멀패드가 없어서 다른 방법을 시도했다.

 

두 번째 시도

나는 쓰로틀링을 해결하기 위해 다른 접근을 시도했다. 애초에 발생하는 열을 적게하면 쓰로틀링에 걸리기 않기 때문에 열을 줄이기 위한 아래와 같은 여러 방법을 찾았다.

  • 언더 볼팅
  • 전력 제한
  • 클럭 제한

이 방법 중에서 언더 볼팅을 CPU가 동작할때 인가되는 전압을 낮춤으로써 성능을 그대로 유지하면서 발열은 해소하는 방법이다. 이 방법은 성능이 저하되지 않는 유일한 방법이기에 가능하다면 이 방법을 사용하고 싶었으나, 내가 사용하는 AMD의 R5-5600U는 언더볼팅을 지원하지 않았다. 또한, 언더볼팅은 설정을 잘못하면 CPU에 치명적인 손상을 줄 수 있다는 단점이 있다.

 

그래서 다음으로 찾은 방법은 전력 제한이다. 이건 Universal x86 Tuning Utility 라는 별도의 프로그램을 사용하는 방법으로 CPU에 인가되는 전력을 상세히 설정할 수 있는 방법이었다. 하지만 이 방법은 부팅 시 마다 해당 프로그램이 실행되게 설정을 해줘야 한다는 불편함이 있었고, 전력 설정을 할때 slow boost, fast boost 경우의 전력 등 고려해야 할 부분이 매우 많았고, 어떻게 설정해야 할지 기준을 정하기 애매했다. 

Universal x86 Tuning Utility

마지막으로 찾은 방법은 클럭 제한이다. 이 방법은 운영체제의 숨겨진 전원 설정인 '프로세서 주파수 제한'을 레지스트리를 수정하여 드러나게 한뒤, 최대 클럭을 제한하는 방법이다. 이 방법은 설정이 매우 간단하고, 운영체제의 옵션이기 때문에 별도로 설치할 프로그램이 없어 매우 편했다. 그래서 나는 이 방법을 사용하여 사용하는 전력을 제한하고 쓰로틀링을 막으려고 시도했다.

고급 전원 설정 최대 프로세서 주파수 제한

방법은 매우 간단하다.  먼저, regedit을 사용하여 레지스트리를 수정한다.

컴퓨터\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\75b0ae3f-bce0-45a7-8c89-c9611c25e100

경로에 있는 Attributes의 값을 2로 변경하면 전원 옵션 최대 프로세서 주파수가 생기게 된다.

만약, 해당 경로가 존재하지 않는다면 Description의 값을 읽으면서 해당 설정이 있는지 확인하자.

 

다음은 전원 옵션에 들어가서 고급 전원 설정에서 최대 프로세서 주파수 값을 수정하는 것이다.

 

결과

hwinfo 에 따르면, 내 CPU의 기본 클럭은 2300Mhz 였고, 최대 부스트 클럭은 4200MHz 이었다. 나는 4200Mhz에서 200Mhz 씩 줄여가면서 쓰로틀링이 발생하는지 테스트하였고, 전원 사용시 최대 클럭을 3800Mhz로 제한하여 쓰로틀링을 방지하였더니 성공적으로 문제가 해결되었다. 재미있는 부분은 클럭을 제한하였음에도 불구하고 오히려 최대 프레임이 100에서 120으로 대폭 올랐다는 점이다. 원인은 hwinfo에 나오지 않는 하드웨어적인 쓰로틀링이 걸려있었거나, CPU의 클럭을 제한하면서 남은 전력이 외장 GPU에 공급되어 더 나은 결과를 가져온것으로 추정된다. 

HWinfo의 CPU 클럭 정보

 

profile

Programming, IT, Algorithm, Security

@PITAS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!