RK3588 성능 모니터링 및 최적화 완벽 가이드

1. RK3588 성능 모니터링 도구 이해하기

RK3588 칩셋은.edge 컴퓨팅 디바이스부터 고급 태블릿, 다양한 AIoT 기기에 이르기까지 광범위하게 활용되고 있다. 6Tops NPU를 갖춘 이 칩셋은 AI 애플리케이션 구현을 상당히 용이하게 만들어 주지만, 제대로 활용하지 않으면 발열 문제나 프레임 레이트 불안정으로 인해 결국 성능을 낮춰야 하는 상황에 직면할 수 있다.

이러한 문제를 해결하려면 시스템의 각 핵심 모듈(CPU, GPU, NPU, DDR 등)의 동작 상태를 정확히 파악해야 한다. Linux 환경에서는 /sys/proc 파일시스템을 통해 상당수의 중요 정보에 접근할 수 있다. 별도의 복잡한 도구 설치 없이도 터미널에서 바로 모니터링을 시작할 수 있다는 점이 큰 장점이다.

성능 모니터링의 최종 목표는 애플리케이션 성능 요구사항을 충족하면서도 더 낮은 전력 소비와 더 안정적인 동작을 달성하는 것이다. 예를 들어, CPU 부하가 지속적으로 20% 정도라면 클럭 주파수를 낮출 수 있고, NPU가 간헐적으로 동작한다면 적절한 전원 지연 종료 시간을 설정하여 빈번한 온/오프带来的 지연과 에너지 소모를 줄일 수 있다. 이를 위해서는 먼저 시스템 상태를 "可視화"할 수 있어야 한다.

2. CPU 성능 모니터링 및 최적화: 주파수, 전압, 온도 관리

CPU는 시스템의 핵심으로서 전체 응답 속도와 에너지 효율을 직접적으로 결정한다. RK3588은 big.LITTLE 아키텍처를 채택하고 있다: 4개의 Cortex-A55 소형 코어가 저부하 백그라운드 작업을, 4개의 Cortex-A76 대형 코어가 고연산 요구사항을 처리한다.

2.1 실시간 모니터링: 주파수, 전압, 온도의 세 가지 핵심 지표

CPU의 현재 동작 속도를 확인하는 가장 직접적인 방법은 주파수 값을 읽는 것이다.

# 소형 코어 클러스터(policy0)의 실시간 주파수 모니터링 (1초 간격)
watch -n 1 cat /sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq

# 대형 코어 클러스터(policy4)의 실시간 주파수 모니터링
watch -n 1 cat /sys/devices/system/cpu/cpufreq/policy4/scaling_cur_freq

출력값은 KHz 단위이므로, 600000은 600MHz를 의미한다. watch 명령어를 사용하면 주파수 변화를 동적으로 관찰할 수 있다. 계산 집약적인 작업을 실행하면 주파수가 급등하는 것을 확인할 수 있다.

참고: policy0은 소형 코어, policy4는 대형 코어에 해당한다. 이는 일반적인 RK3588 기본 커널에서 해당되지만, 커스텀 커널을 사용하는 경우 /sys/devices/system/cpu/cpufreq/ 디렉토리에서 policy 디렉토리들을 확인하여 적절한 매핑을 검증하는 것이 좋다.

또 다른 방법으로 클럭 디버그 인터페이스를 통해 기본 클럭 소스의 주파수를 직접 읽을 수도 있다.

watch -n 1 cat /sys/kernel/debug/clk/armclkl/clk_rate  # 소형 코어 클럭
watch -n 1 cat /sys/kernel/debug/clk/armclkb/clk_rate  # 대형 코어 클럭

이 두 방법의 차이점은什么呢? cpufreq 인터페이스는 스케줄러가 조절한 "요청 주파수"를 반영하는 반면, clk 인터페이스는 클럭 하드웨어가 실제로 출력하는 주파수를 더底层으로 보여준다. 드문 경우이지만 DVFS(Dynamic Voltage and Frequency Scaling) 응답이 늦어지는 순간에 약간의 차이가 있을 수 있다.

주파수만으로는 불충분하다. 전압이 직접적인 전력 소비의 원인이다. 주파수와 전압은 일반적으로 OPP(Operating Performance Point)로 연결되어 있지만, 추가적인 전력 절약을 위해 미세 조정할 필요가 있을 수 있다.

# 소형 코어 전압 모니터링 (레귤레이터 이름은 보드에 따라 다를 수 있음)
watch -n 1 cat /sys/kernel/debug/regulator/vdd_cpu_l/voltage

# 대형 코어 전압 모니터링
watch -n 1 cat /sys/kernel/debug/regulator/vdd_cpu_b/voltage

태그: rk3588 ARM cpu-performance linux-kernel Monitoring

6월 3일 23:15에 게시됨