- Intel i5-12400, ASUS Prime H770-Plus D4, 64GB DDR4, Ubuntu Server 23.04, Corsair RM750 조합은 저장장치 추가 전 벽면 전력계 기준 7W 유휴 전력을 달성함
- 낮은 전력의 핵심은 BIOS에서 C-State, ASPM L1, RC6, ALPM을 켜고 PowerTOP auto-tune으로 CPU 패키지가 C8/C10 절전 상태에 들어가게 만드는 것임
- 12개 HDD와 여러 NVMe를 붙이면 전력은 24~25W까지 올라갔고, JMicron JMB585가 ASPM을 막아 C3에 묶이는 문제가 ASM1166 SATA 컨트롤러 교체로 완화됨
- CPU 직결 PCIe/M.2 슬롯, NVMe·SATA SSD 모델, Realtek NIC, USB 장치, SATA 컨트롤러 펌웨어가 C-State를 바꿀 수 있어 부품 조합별 A/B 테스트가 필요함
- HDD 11개와 NVMe/SATA 컨트롤러를 포함한 최종 구성도 HDD 스핀다운, 화면·키보드 절전을 적용하면 15~16W까지 내려갔고, 장기적으로 SSD 전환 시 10~11W 유휴 전력을 기대함
7W 유휴 전력 빌드의 기준 구성
- 목표는 낮은 유휴 전력, 압축에 충분한 CPU 성능, 12개 HDD와 최소 1개 NVMe 처리, 향후 6개 NVMe와 6개 SATA SSD로 전환 가능한 확장성, 비용 통제였음
- 7W 측정값은 저장장치를 본격적으로 추가하기 전 벽면 전력계 기준임
- Intel H770 메인보드
- Intel i5-12400 CPU
- 64GB DDR4 RAM
- Ubuntu Server 23.04 부팅용 SSD
- Corsair PSU
- BIOS에서 C-State를 설정해 C8에 도달하게 했고,
powertop --auto-tune을 적용함 - PowerTOP auto-tune은 USB 포트 절전으로 USB 키보드를 비활성화했으며, 키보드를 계속 쓰도록 하면 벽면 전력은 8W였음
- 디스플레이 출력이 켜진 상태에서는 9~10W였고,
consoleblank=600으로 600초 뒤 화면이 꺼지면 7W까지 내려감
과거 저전력 빌드와 이번 목표
- 이전 저전력 빌드 기록은 이번 목표의 기준점이 됨
- 2016년 Skylake 기반 저전력 PC: Building a Low Power PC on Skylake – 10 watts idle에서 10W 유휴
- 2019년 4개 저장장치 홈 NAS/파일 서버: 9w Idle – Creating a low power home NAS / file server with 4 Storage Drives에서 9W 유휴
- 2021년 Gigabyte H470M DS3H와 Intel i3-10320 조합은 11W였지만 별도 글은 없었음
- 2022년 다른 시스템 2대는 각각 19W와 27W였고, 모든 CPU/메인보드 조합이 10W 근처로 내려가지는 않았음
- 벽면 기준 10W 근처의 새 시스템을 맞추려면 부품 선택과 튜닝 후 실제 결과를 확인해야 하는 도박에 가까운 작업임
메인보드 선택: ASUS Prime H770-Plus D4
- 최종 선택은 ASUS Prime H770-Plus D4였음
- 당시 일반 소비자용 선택지는 Intel 600/700 시리즈와 AMD 500/600 시리즈 메인보드였음
- 향후 6개 NVMe 드라이브 사용 가능성이 중요했지만, 6개 M.2를 모두 PCIe 모드로 동시에 쓸 수 있는 소비자용 메인보드는 없다고 봄
- AMD MEG X570S Unify-X Max는 6개 M.2처럼 보이지만, 매뉴얼상 6개를 모두 채우면 마지막 슬롯은 SATA 변형이어야 함
- ASRock Z790 PG Sonic도 6개 슬롯이 있지만 Gen5 NVMe 슬롯의 배타 조건 때문에 5개만 사용할 수 있음
- 소비자용 보드에서 모든 M.2를 Gen4 x4로 쓰려 할 때 칩셋 레인 제한이 있음
- AMD X570, Intel B760: 최대 3개
- AMD B650, Intel H670/Q670/Z690/W680: 4개
- AMD X670, Intel H770: 5개
- Intel Z790: 6개
- 6개 NVMe 목표 때문에 PCIe-to-M.2 어댑터가 필요했고, 내장 M.2 슬롯 수와 x4 이상 PCIe 슬롯 수의 합계가 메인보드 선택 기준이 됨
- Intel 플랫폼을 고른 이유는 칩셋 전력, 칩셋-CPU 링크 속도, 보유 부품, AM5 전력 소비 우려였음
- Intel 600/700 시리즈 칩셋 TDP는 모두 6W
- AMD X670 칩셋은 7W+7W로 봄
- Intel H670/Q670/W680/Z690/H770/Z790은 CPU와 DMI 4.0 x8로 연결되고, AMD X570/B650/X670은 PCIe 4.0 x4로 연결되어 이론 처리량은 16GB/s 대 8GB/s 수준임
- 보유한 64GB DDR4와 Intel 12세대 CPU를 재사용할 수 있었음
- AMD 600 시리즈 칩셋은 DDR5 전용임
CPU, 메모리, 부팅 드라이브, PSU
- CPU는 보유 중이던 Intel i5-12400 H0 stepping Alder Lake를 사용함
- 이전 데스크톱 빌드에서 AV1 하드웨어 디코드, E-core 실리콘 오버헤드 회피, 12세대 라인업 중 성능 등을 이유로 선택했음
- 이전 데스크톱 빌드는 GPU와 디스플레이 관련 문제가 많았지만, 이번 서버 지향 빌드에서는 핵심 요인이 아니었음
- 메모리는 64GB DDR4-3200을 사용함
- 2x16GB Kingston HyperX dual-rank Hynix DJR
- 2x16GB Kingston HyperX single-rank Hynix CJR
- 4개 모듈을 16-18-18-36으로 구동하고 RAM 전압은 1.25V로 설정함
- TestMem5와 Memtest86에서는 1.22V도 안정적이었지만 안정성 여유를 위해 1.25V를 사용함
- 테스트용 부팅 드라이브는 Sandisk Ultra 3D 1TB SATA SSD였음
- PCIe와 NVMe A/B 테스트가 많아 PCIe 슬롯을 비워두기 위해 SATA SSD에 Ubuntu 23.04를 설치함
- 테스트 후 주 OS는 Samsung SSD 970 EVO Plus 500GB NVMe에서 실행할 예정이었음
- PSU는 Corsair RM750을 사용함
- 10W 근처 유휴 시스템에는 750W가 과해 보이지만, 12개 드라이브 모터가 동시에 회전 시작할 때 순간 부하가 높을 수 있음
- Seagate는 10TB 3.5인치 드라이브 하나의 12V 레일 피크 전류를 DC/AC 기준 2A/3A로 명시함
- 6개 드라이브가 동시에 150~200W를 끌고 CPU가 피크 120W를 끌면 10W 유휴 상태에서 약 400W까지 순간 점프할 수 있다고 계산함
- 순간 전력 부족은 전압 강하, 크래시, 재부팅, 쓰기 중 데이터 손상으로 이어질 수 있음
BIOS와 OS 전력 설정
- 초기 전력 측정 조건은 Ubuntu Server 23.04, Intel PowerTOP auto-tune, 벽면 측정이었음
- BIOS에서 적용한 주요 설정은 다음과 같음
- CPU C-state를 C10까지 활성화
- ASPM 활성화 및 모두 L1로 설정
- RC6(Render Standby) 활성화
- Aggressive LPM Support(ALPM) 활성화
- HD Audio, Connectivity Mode, LEDs, GNA Device, Serial Port 비활성화
- 저전력 목표에서는 메인보드 지원과 BIOS 구성이 핵심임
- ASUS H770 보드에서는 저전력 소비를 위해 Native ASPM과 적절한 L1 상태를 활성화해야 함
- 이 설정은 BIOS 제어 대신 OS 제어를 허용하기 위한 것임
저장장치를 붙인 뒤 드러난 병목
- 12개 HDD를 연결하고 회전 정지 상태로 두자 대기 전력이 7W에서 24~25W로 증가함
- 처음에는 2.5인치 HDD 6개와 3.5인치 HDD 6개를 사용함
- 메인보드 SATA 포트가 4개뿐이라 SATA 컨트롤러와 포트 멀티플라이어를 사용함
- 초기에는 NVMe 4개도 사용했고, Western Digital SN770은 유휴 상태에서도 뜨거워 저전력 모드에 들어가지 않는 것으로 보였음
- HDD를 분리하고 구성 요소를 하나씩 테스트한 결과, JMicron JMB585 SATA 컨트롤러가 전력 증가의 주요 원인으로 보였음
- JMB585가 없으면 CPU 패키지는 C6에 도달함
- JMB585를 다시 연결하면 최대 C3까지만 도달함
- PCIe 장치가 ASPM L1으로 들어가지 않으면 CPU가 더 깊은 절전 상태에 들어가지 못함
- JMB585 컨트롤러 카드는 ASPM을 지원하지 않는 것으로 보임
CPU 직결 PCIe 레인의 영향
- 이 시스템은 CPU 직결 PCIe 레인에 아무것도 연결되지 않았을 때만 C8에 도달함
- 상단 PCIe 슬롯이나 상단 NVMe 슬롯에 무엇이든 꽂으면 C6가 한계였음
- C6와 C8 사이 전력 차이는 간단한 테스트에서 1W 미만으로 보였음
- C8은 있으면 좋은 수준이지만, C6 도달은 필수로 봄
- C3는 전력을 너무 많이 사용한다고 판단함
- 이 특정 메인보드에서는 낮은 지연시간이나 CPU 직결 전체 대역폭이 꼭 필요하지 않다면 CPU 직결 레인 사용을 피하는 편이 좋음
ASM1166 SATA 컨트롤러와 JMB585 비교
- SATA HBA를 찾는 과정에서 ASM1166 SATA 컨트롤러가 ASPM L1을 지원할 수 있지만, 제대로 쓰려면 펌웨어 플래시가 필요하다고 판단함
- ASM1166 카드 도착 후 펌웨어를 먼저 플래시함
- 최신 펌웨어는 SilverStone ECS06 다운로드 섹션의 “fix compatibility issue” 파일을 사용함: https://www.silverstonetek.com/en/product/info/expansion-cards/ECS06/
- 절차는 Phil Barker 문서를 따름: https://docs.phil-barker.com/posts/…
- SilverStone 파일은 unRAID 포럼에서 찾은 펌웨어와 MD5가 동일했음
- 드라이브 미연결 상태의 전력 측정 결과
- SATA 컨트롤러 없음: 8W, C8
- ASM1166을 칩셋 직결 x4 슬롯에 장착: 9W, C8
- JMB585를 CPU 직결 x16 슬롯에 장착: 12W, C3
- JMB585를 칩셋 직결 x4 슬롯에 장착: 15W, C3
- ASM1166을 CPU 직결 x16 슬롯에 장착: 22W, C2
- 드라이브 연결 상태에서는 ASM1166이 JMB585보다 전력 면에서 확실히 나았음
- ASM1166을 칩셋 직결 x4 슬롯에 장착: 10W, C8
- ASM1166 2개를 칩셋 직결 x4 슬롯에 장착하고 NVMe 1개만 사용: 11W, C8
- JMB585를 칩셋 직결 x4 슬롯에 장착: 16W, C3
- JMB585를 CPU 직결 x16 슬롯에 장착: 24W, C2
- 칩셋 직결 슬롯에 4개 드라이브를 붙였을 때 ASM1166은 시스템 전력에 +2W를 더했고, JMB585는 +8W를 더함
NVMe와 SATA 드라이브도 C-State를 바꿈
- WD Black SN770 Gen4 NVMe를 CPU 직결 상단 PCIe/NVMe 포트에 사용할 때 AER Bus Error와 BadTLP 문제가 발생함
- BIOS의 “PEG – ASPM”을 Disabled 또는 L0s로 두면 오류가 없었음
- 하지만 L1은 전력 절감에 중요해 좋은 선택이 아니었음
- Link Speed를 Gen3로 설정하면 오류가 크게 줄었지만 없어지지는 않았음
- WD 드라이브를 Crucial P3로 교체하자 오류가 사라짐
- Crucial P3 NVMe 2개를 CPU 직결 PCIe x16 슬롯과 상단 M.2 슬롯에 설치했을 때 컨트롤러 유휴 온도가 높았음
- NAND는 약 27~29°C였지만 컨트롤러는 49~50°C로 보고됨
- NVMe 두 개를 모두 칩셋 직결 PCIe 슬롯에 두자 L1.1/L1.2가 활성화되고 컨트롤러 온도도 38~41°C로 내려감
- 최종 빌드의 Crucial P3 컨트롤러 온도는 31~34°C, NAND 온도는 23~24°C였다고 업데이트됨
- SATA SSD 브랜드와 모델도 C-State 결과를 바꿀 수 있음
- 1TB Patriot P210 SATA SSD는 시스템을 C6에 묶어 둠
- C10을 허용한 드라이브에는 Samsung 850 EVO SATA SSD, Seagate SATA HDD, Toshiba SATA HDD, Sandisk Ultra 3D SATA SSD, Crucial MX500 등이 포함됨
- SATA SSD는 브랜드와 모델을 주의해서 고르고, 구매 후 반품 기간 안에 성능 지표를 검증하는 편이 좋음
현재 저장장치 구성과 전력
- 현재 구성은 저장장치가 크게 늘어난 상태임
- 1x Samsung 970 EVO Plus NVMe 500GB 부팅 드라이브
- 2x Crucial P3 NVMe 4TB
- 5x Seagate 2.5인치 HDD 5TB, 각각 4TB 활용
- 6x Seagate 3.5인치 HDD 10TB, 각각 8TB 활용
- 2x ASM1166 SATA 카드
- 디스플레이 켜짐, 키보드 활성화 상태에서 단계별 벽면 전력은 다음과 같음
- 11개 HDD가 모두 active-idle: 50W
- 6개 3.5인치 HDD가 Idle B: 38W
- 6개 3.5인치 HDD가 Idle C: 34W
- 6개 3.5인치 HDD가 Standby_Z로 spin down: 21W
- 5개 2.5인치 HDD도 Standby: 18W
- 디스플레이 출력 꺼짐: 16W
- PowerTOP이 USB 키보드를 비활성화하도록 허용: 15W
- Seagate가 명시한 standby 소비 전력은 3.5인치 드라이브 약 0.8W/개, 2.5인치 드라이브 약 0.18W/개이며 실제 관측과 맞아 보였음
- 3.5인치 드라이브는 나머지 시스템 구성품과 비교해 전력 소모가 큰 장치임
HDD에서 SSD로의 장기 전환
- HDD standby 상태의 유휴 소비가 낮기 때문에 급하게 SSD로 전환할 필요는 없다고 봄
- HDD와 예비 드라이브가 고장 나거나 SSD 가격이 내려가면 점진적으로 전환할 예정임
- 최종 목표는 all-SSD 빌드임
- 원래 계획은 부팅 드라이브 1개, RAIDZ2용 6x NVMe, 두 번째 RAIDZ2용 6x SATA SSD였음
- NVMe는 아마 Crucial P3 4TB, SATA SSD는 아마 Samsung 870 QVO 8TB를 고려함
- CPU 직결 M.2/PCIe 슬롯 사용은 예측 불가능성과 약간의 C-State·전력·온도 비용이 있어, NVMe 일부를 포기하고 SATA를 더 써서 CPU 직결 레인을 피하는 방향으로 바꿀 수도 있음
- 모든 HDD를 SSD로 교체하면 72TB 드라이브, 64GB RAM, 꽤 괜찮은 프로세서를 갖춘 상태에서 유휴 전력이 약 10~11W가 될 것으로 기대함
ZFS 캐시와 Special vdev 활용
- HDD를 SSD로 모두 교체하는 데 시간이 걸릴 가능성이 높아, 그동안 ZFS의 고속 저장장치 활용 기능을 사용함
- ZFS는 느린 저장장치 앞에 SSD 같은 고속 저장장치를 두는 옵션으로 Special Allocation Class와 L2ARC 캐시 드라이브를 제공함
- Special Allocation Class는 메타데이터와 선택한 크기의 작은 블록을 위한 전용 vdev를 만들 수 있음
- 파일 목록과 디렉터리 탐색이 빨라짐
- 파일 자체는 HDD에 두면서도 여러 디렉터리에
ls를 실행할 때 HDD를 깨우지 않을 수 있음 - 단, 모든 메타데이터가 special vdev에 있으므로 vdev가 죽으면 모든 데이터 접근이 사실상 불가능해짐
- 최소 mirror 구성이 필요하고, 3-way mirror도 고려할 수 있음
- L2ARC는 ZFS의 2단계 캐시임
- RAM 캐시가 가득 차면 ZFS가 일부 블록을 L2ARC로 복사한 뒤 RAM에서 제거함
- 다음 접근 시 해당 데이터는 디스크가 아니라 L2ARC에서 읽힘
- L2ARC는 SSD 1개만 사용해도 괜찮고, 체크섬 오류나 드라이브 장애가 있으면 ZFS가 원본 디스크에서 다시 읽음
- 이번 구성에서는 4TB NVMe를 L2ARC로 사용함
- 나머지 2.5인치 드라이브가 모두 SSD로 교체되어 SSD 캐시의 속도 이점이 사라지면 이 캐시 장치를 제거할 수 있음
실무 결론
- 낮은 유휴 전력을 원하면 메인보드 BIOS가 C-State, ASPM, ALPM 설정을 충분히 제공해야 함
- 모든 장치가 ASPM L1을 지원해야 결과가 안정적임
- 가장 어려운 부분은 ASPM L1을 지원하는 SATA 컨트롤러를 찾는 것이었음
- 가능하면 별도 카드가 필요 없도록 Intel 칩셋 직결 SATA 포트가 충분한 메인보드를 쓰는 편이 좋음
- NVMe도 ASPM 아래에서 저전력 APST 상태가 제대로 동작하는 제품인지 조사해야 함
- C8을 목표로 한다면 CPU 직결 PCIe 레인 사용을 피하는 것이 좋음
- CPU 직결 레인은 상단 PCIe와 M.2 슬롯임
- 낮은 지연시간과 CPU 직결 전체 대역폭이 필요하거나 장치가 계속 활동해 절전 상태에 들어가지 않는 경우는 예외임
- Kill-A-Watt 같은 벽면 전력 측정기가 실제 상황 확인에 필수임
- 소프트웨어 지표만으로는 PSU 효율, 드라이브 대기 전력, USB 장치 영향, 디스플레이 출력 영향을 확인하기 어려움
- Realtek NIC 관련 업데이트에 따르면 최근 Linux 커널은 대부분의 Realtek NIC에서 L1 절전 모드를 비활성화해 CPU가 적절한 C-State에 들어가지 못하고 전력 소비가 늘어날 수 있음
- 우회 방법은 있지만, 향후 Intel 1 Gigabit 네트워크 어댑터가 들어간 메인보드로 제한할 가능성이 높음
- 댓글에서 언급한 스크립트는 RTL8125-ASPM.sh.txt에서 확인할 수 있음