RYZEN CPU 를 리눅스에서 사용시 갑자기 멈추는 증상 해결법

| 2019년 7월 26일 | 0 Comments

안녕하세요 기술지원 팀 신경곤입니다.

오늘은 제가 개인적으로 사용하는 컴퓨터에서 발생한 문제로 라이젠 cpu를 사용하여 리눅스를 쓰는 분들에게 도움이 될만한 정보라고 생각하여 올리게되었습니다.

제 컴퓨터는 ryzen 1세대 1700 cpu 를 사용중이며 , 윈도우와 리눅스를 각각 다른디스크로 설치하여 사용중입니다. 

하지만 리눅스 os 를 사용할때 컴퓨터가 절전모드에 들어가거나 컴퓨터에 별다른 작업이 없는 상황에서 무작위로하게 컴퓨터가 멈추고 강제 재부팅을 하지않으면 정상작동하지않는 증상이 

일어났습니다. 같은 하드웨어 사양에서의 윈도우10 에서는 한번도 일어나지 않은 증상이였지만 리눅스에서만 컴퓨터가 멈추는 증상이 발생한것입니다. 

이를 해결하려 구글에 검색해 보았을때 흥미로운 글을 볼수가있었습니다. 

문제의 원인이 cpu 의 저전력 관리 에 사용되는 c-state 의 문제라는것이였습니다. 

여기서 C-STATE 란 cpu 가 유휴 상태일때 에너지를 절약하기 위하여 cpu를 저전력 모드로 전환하는것을 뜻하는데 , ryzen cpu 와 intel i 시리즈의 cpu 들은 메인보드의 설정을 변경하지 않는이상

기본적으로 적용되어있는 기술입니다. 

이기술은 작동 상태의 cpu 코어를 C0 으로  정의하고 코어의 사용이 줄고 유휴 상태로 들어가면 C1~C6 의 상태로 올라가며 클럭 신호를 줄이거나 나중에는 코어에 전달되는 전압을 줄이는식으로 적용됩니다. 

하지만 실제로 리눅스 시스템에서 코어가 C6 상태에서 다시 C0 상태로 되돌아올때 시스템이 멈추는 증상이 발생할수 있다는것을 알수있었습니다. 

이를 해결하기 위해서는 2가지의 방법이 있었습니다. 

 

  1. 메인보드의 BIOS 상에서 C-STATE 관련 옵션 disabled 하기

        cpu 가 c-state를 지원한다면 메인보드에는 반드시 관련 옵션이 존재합니다. 이는 기본적으로 auto 로 설정되어있는데 auto로 설정시 cpu가 전원관리를 하게되어 컴퓨터가 멈추는등의 증상이 발생할수있습니다. 이설정을 disabled 한다면 cpu가 소비하는 전력양은 늘어나겠지만 더욱더 안정적으로 사용이 가능합니다.  설정은 메인보드 제조사마다 다르며 일반적으로 cpu 오버클럭을 설정하는부분에 ‘Global C-state Control’ 이라는 이름으로 등록되어있습니다. 

기가바이트 x470 보드의 바이오스 화면입니다.

 

바이오스타 B350 보드에서의 바이오스 화면입니다. 

이와같이 Global C-state Control 옵션을 disabled 한후 저장하여 재시작하면 이전까지 컴퓨터가 멈추던 증상이 사라지는것을 확인할수있었습니다. 

 

2 . 리눅스 커널에서 C-state 옵션 추가 

 이 방법은 바이오스에 대하여 모르거나 바이오스에 진입하기 어려울때 사용할수있는 방법입니다. 

 1)  터미널창을 root의 권한으로 엽니다.

 

2) vi 편집기를 이용하여 /etc/default/grub 파일을 엽니다.

3) GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash 뒤에 processor.max_cstate=1″ 를 추가합니다.

 

4) grub 파일을 업데이트하고 재시작합니다.

 

저의 경우 위처럼 조치를 취하였을때 컴퓨터가 멈추는등의 증상은 없어졌습니다. 

cpu 오버클럭시에도 cstate 옵션은 불필요한 옵션이므로 꺼두시는것을 추천드립니다. 

Category: 솔루션/IT기타

About the Author ()