amd bc-250 보드에서 페도라리눅스43 커널 컴파일로 유휴전력 줄이기 정보
amd bc-250 보드에서 페도라리눅스43 커널 컴파일로 유휴전력 줄이기본문
### BC-250 에 페도라 43 버전을 설치후 gpu 주파수 관련 커널 패치 작업 bc-250 이라는 보드가 있는데. 이게 원래 소니의 플레이스테이션5에 들어가는 부품중에서 컷다운된 cpu 나 gpu 들을 가지고 비트코인 채굴용으로 사용하다가, 최근에 채산성이 떨어져서, 각각 보드 하나하나를 알리 같은데서 판매를 합니다. 메모리가 16기가나 되어서 나름 성능이 좋은데, 치명적인 문제가, 유휴 전원일 100w 넘게 먹는다는 점입니다. GPU 거버너를 설치해서 세팅하면 85w 까지 떨어지긴 하지만. 그래도, 아무것도 안하는 상태 idle 전력이 너무 많습니다. 아래 내용은, 이 보드에 페도라리눅스43을 설치해서 , 커널을 컴파일해서 GPU 주파수를 기존 최소 1000MHz 에서 350MHz 로 낮추어서, 유휴 전력을 85w 에서 75w 정도로 좀 줄이려는 발버둥입니다. 일단, bc-250이 뭐고, 리눅스설치하고, 오베론 같은 거버너 설치를 할줄안다고 가정하겠습니다. https://elektricm.github.io/amd-bc250-docs/ 이런 건 위 도움말문서 참조하면 됩니다. 그리고, 페도라리눅스43에서 커널 컴파일 하는건 아래 링크 참고 했습니다. https://docs.fedoraproject.org/en-US/quick-docs/kernel-build-custom/ 일단, bc-250에 설치된 페도라리눅스43에서 개인계정 nonots 로 로그인해서 작업하고, 작업 디렉토리는 /home/nonots 이고, 아래 커널컴파일 환경 디렉토리는 /home/nonots/kernel 에서 이루어 집니다. 1) 기존 컴파일 환경설정하기 - 필요한 rpm 패키지들을 왕창 설치합니다. $ sudo dnf install fedpkg $ fedpkg clone -a kernel $ cd kernel $ sudo dnf builddep kernel.spec $ git switch f43 ==> 이건 페도라43 브렌치를 사용하겠다는겁니다.다른 버전이면 다르게. 2) kernel 디렉토리에서 패치를 합니다. 우선 kernel.spec 파일을 편집기로 열어서 175 라인쯤에 buildid 를 적당하게 변경해 줍니다. 안해줘도 상관은 없는데, buildid 를 자기아이디 등으로 해두면 나중에 rpm 컴파일 된 이름에 붙어서 보입니다. 175 # define buildid .local 175 %define buildid .nonots ==> 주석 풀어서 구분값 3) 전체커널 소스를 가져옵니다. $ fedpkg source # linux-6.18.3.tar.xz 라는 이름으로 다운받은 소스를 압축 풀어줍니다. $ tar xvf linux-6.18.3.tar.xz # 압축푼 디렉토리는 linux-6.18.3 이라는 폴더가 생성되는데. linux-6.18.3-patched 라는 폴더를 새로 생성합니다. # 즉 linux-6.18.3 는 원래소스위치고 linux-6.18.3-patched 는 패치되어 수정된 곳입니다. $ mkdir -p linux-6.18.3-patched/drivers/gpu/drm/amd/pm/swsmu/smu11/ # 원소스에서 cyan-skillfish_ppt.c 라는 파일 하나만 linux-6.18.3-patched 아래로 복사합니다. $ cp ./linux-6.18.3/drivers/gpu/drm/amd/pm/swsmu/smu11/cyan_skillfish_ppt.c ./linux-6.18.3-patched/drivers/gpu/drm/amd/pm/swsmu/smu11/ # 그리고 그 소스파일을 편집기로 열어서 48,49 라인쯤 수정합니다. # 아래와 같이 1000 2000 을 350 2230 으로 수정합니다. $ vi ./linux-6.18.3-patched/drivers/gpu/drm/amd/pm/swsmu/smu11/cyan_skillfish_ppt.c 47 /* unit: MHz */ 48 #define CYAN_SKILLFISH_SCLK_MIN 1000 49 #define CYAN_SKILLFISH_SCLK_MAX 2000 48 #define CYAN_SKILLFISH_SCLK_MIN 350 49 #define CYAN_SKILLFISH_SCLK_MAX 2230 # 그리고 이렇게 수정된 파일을 diff 명령어로 linux-kernel-test.patch 라는 이름으로 저장합니다. # 이 linux-kernel-test.patch 는 기존 존재하고 크기가 0 인데 이걸 패치 내용으로 넣어줍니다. $ diff -rupN linux-6.18.3/drivers/gpu/drm/amd/pm/swsmu/smu11/cyan_skillfish_ppt.c linux-6.18.3-patched/drivers/gpu/drm/amd/pm/swsmu/smu11/cyan_skillfish_ppt.c > linux-kernel-test.patch 4) 커널 컴파일 # 이제 아래 명령어로 컴파일 하면, 1 ~ 2 시간 정도 무지하게 부하 먹으면서 컴파일 합니다. $ fedpkg local # 컴파일 다되면 x86_64 라는 폴더가 생기고 거기에 컴파일한 rpm 파일들이 왕창 생깁니다. # 루트권한으로 이 rpm 파일을 ivh 로 설치합니다. ( Uvh 가 아니라 ivh) # 필요하면 다른 것들도 같이 설치합니다. kernel-6.18.3-200.nonots.fc43.x86_64.rpm kernel-core-6.18.3-200.nonots.fc43.x86_64.rpm kernel-modules-6.18.3-200.nonots.fc43.x86_64.rpm kernel-modules-extra-6.18.3-200.nonots.fc43.x86_64.rpm 5) 재부팅후 $ uname -r 6.18.3-200.nonots.fc43.x86_64 $ cat /sys/class/drm/card1/device/pp_dpm_sclk 0: 350Mhz * 1: 1500Mhz 2: 2230Mhz 위와 같이 350MHz 가 보이면 성공한겁니다. 오베론 거버너 같은걸 세팅해서 최소 주파수를 기존 1000 에서 350 으로 낮추면 유휴전력이 75w 정도로 떨어진걸 볼수 있습니다.
공감
0
0
댓글 0개