RISC-V는 느려요
Source: Hacker News
트라이아징
Fedora RISC‑V 트래커 항목들을 살펴보고 대부분을 분류했습니다(현재 NEW 상태인 항목은 17개 남아 있습니다). 가능한 것들은 모두 처리하려고 노력했습니다.
Fedora 패키징
보통의 작업 흐름은 Fedora 패키지의 소스를 가져오고(fedpkg clone -a) 다음과 같이 빌드하는 것입니다:
fedpkg mockbuild -r fedora-43-riscv64
빌드가 끝나면 성공 여부를 확인하고, 실패했을 경우 빌드 로그를 검토해 원인을 파악합니다.
지금까지 86개의 풀 리퀘스트를 Fedora 패키지에 보냈습니다(링크). 여기에는 llvm15와 같은 무거운 패키지부터 iyfct(작은 게임)와 같은 간단한 패키지까지 포함됩니다. 대부분이 머지되어 Fedora 43용으로 빌드되었으며, 우리는 Fedora Koji의 f43-updates 태그를 따라 계속 빌드하고 있습니다.
느림
패키지 빌드는 주요 과제인 속도, 즉 속도의 부재를 강조합니다. 현재 RISC‑V 하드웨어는 느려서 빌드 시간이 매우 길어집니다. 예를 들어 binutils-2.45.1-4.fc43 패키지의 다양한 아키텍처별 빌드 시간은 다음과 같습니다:
| Architecture | Cores | Memory | Build time |
|---|---|---|---|
| aarch64 | 12 | 46 GB | 36 min |
| i686 | 8 | 29 GB | 25 min |
| ppc64le | 10 | 37 GB | 46 min |
| riscv64 | 8 | 16 GB | 143 min |
| s390x | 3 | 45 GB | 37 min |
| x86_64 | 8 | 29 GB | 29 min |
현재 RISC‑V Fedora 포트는 메모리 사용량과 빌드 시간을 줄이기 위해 LTO를 비활성화하고 빌드합니다. RISC‑V 빌더는 보통 4~8코어에 8, 16, 혹은 32 GB RAM(보드에 따라 다름)을 가지고 있으며, 이는 저가형 Arm Cortex‑A55 코어와 비슷한 수준입니다.
Milk‑V Titan 메인보드의 UltraRISC UR‑DP1000 SoC(최대 64 GB RAM)나 SpacemiT K3 기반 시스템(최대 32 GB RAM)과 같은 미래 하드웨어는 상황을 개선할 것이지만 완전한 해결책은 아닙니다. binutils 빌드 시간을 1시간 이하로 줄이려면 LTO를 시스템 전체에 활성화한 더 강력한 랙‑마운트 서버가 필요합니다.
아직도 QEMU 사용
긴 네이티브 빌드 시간 때문에 저는 더 빠른 빌드를 위해 QEMU에 의존합니다. 80개의 에뮬레이트된 코어를 사용하면 llvm15 패키지를 약 4시간에 컴파일할 수 있는데, 이는 Banana Pi BPI‑F3 빌더에서 10.5시간이 걸리는 것보다 훨씬 빠릅니다(아마 P550에서는 더 빠를 수도 있습니다).

LLVM 패키지는 사용 가능한 코어와 메모리를 모두 적극 활용하며, 저는 192코어나 384코어를 갖춘 Ampere One 기반 서버에서 어떻게 동작할지 궁금합니다.
향후 계획
우리는 Fedora 44 빌드를 시작할 계획입니다. 모든 것이 순조롭게 진행된다면 모든 빌더에서 단일 커널 이미지를 사용할 예정이며(현재는 다양한 커널 버전을 사용하고 있음), LTO는 당분간 비활성화된 상태를 유지할 것입니다.
속도 문제를 해결하기 위해 우리는 더 새롭고 빠른 빌더를 확보하고, 무거운 패키지를 그들에게 할당할 계획입니다.