본문 바로가기
My Projects

시놀로지 대체를 위한 고성능 저전력 NAS 구축하기 (J5005, 9W) / 자작 NAS 만들기 (4) - "최적화 그리고 소비전력"

by BestUgi 2020. 6. 7.

"개인용 NAS 서버 구축"

 

EP 01. 자작 NAS 서버 장비 구매 편

EP 02. 자작 NAS 서버 조립 및 확장 편
EP 03. 자작 NAS OS/RAID/SOTWARE 설치 편
EP 04. 자작 NAS 성능 및 소비전력 편

 

 

"Windows 10 최적화"

 

Windows 10 Enterprise LTSC와 이전 이야기에서 언급한 소프트웨어를 설치 완료하였다. Windows 부팅 시 모든 프로그램을 자동 실행하도록 설정하고, 부팅이 완료되면 아래의 그림처럼 리소스 사용량을 볼 수 있다. 

 

 

Windows 10 LTSC의 디스크(SSD) 및 메모리 사용량

 

 

SSD는 총 19.2 Gb( 3GB는 Plex의 메타 데이터), 메모리는 2.2 GB를 사용한다. 모든 프로그램이 백그라운드로 동작 중이고 메모리를 점유하고 있다.

 

Windows 10 LTSC 버전에서도 여전히 사용하지 않는 프로그램과 서비스가 존재하는데 이를 정리하고 추가적인 설정을 진행한다.

  • '선택적 기능 관리'를 실행하여 Internet Explorer를 제거 후 오페라 브라우저를 다운로드하여 설치를 설치한다.
    • 데탑에서 주로 크롬을 사용하지만 빠른만큼 사용하는 리소스가 많다.
  • 가상 메모리 비활성화 (참고)
    • 가상 메모리는 디스크를 사용하므로 디스크를 Standby 모드로 진입하는 것을 방해할 우려가 있으므로 사용하지 않는다.
    • 현재 8GB의 메모리면 충분하다고 생각하여 가상 메모리를 비활성화하였다. 만약 메모리를 많이 요구하는 프로그램을 사용할 경우, 메모리를 16GB로 증설(루리웹 게시글에서 유저 중 한 분이 된다고 댓글 담)하거나 가상 메모리를 다시 활성화하면 될듯하다.
  • 전원 설정
    • 전원 모드는 '균형 조정'으로 선택
    • 서버가 항상 켜져 있어야 하므로, '절전 모드' 비활성화
    • Idle시에 전력 사용량 최소화를 위해서 전원 설정의 '하드 디스크 끄기'는 10~20분 정도로 적당하게 설정
  • SSD와 HDD의 색인 끄기 (참고)
  • 작업 스케줄러 비활성화(참고)
  • 미사용 윈도우 서비스 비활성화 (참고)

 

추가로 원격 데스크톱(RDP)을 사용하기 위한 설정을 진행하고, Windows 업데이트 및 보안 업데이트를 수행한다.

 

모든 작업을 마친 후 NAS 서버를 리부팅한 후에 CPU-Z의 벤치를 수행해 보았다. 아래의 왼쪽 그림에서 볼 수 있듯이 J5005가 저전력 CPU 중에서 비교적 괜찮은 성능이지만 데스크톱 전용 CPU들의 비해서는 부족하다.

 

 

 

 

Stress 테스트로 CPU에 최대 부하(100%)를 준 상태에서 CPU의 온도는 약 70도 정도로 유지되었다(오른쪽 그림). 일반적인 Idle 상태에서는 35~40도를 유지한다.

 

 

"소비전력 이야기"

 

이렇게 구성된 NAS 서버의 소비전력은 얼마나 될까. 우선 실제 전력 측정을 하기 전에 기댓값을 한번 계산해 보자. 개인용 NAS는 많은 시간을 Idle 상태에 머물러 있을 것이므로 Idle 상태에서의 소비전력은 아래와 같이 생각해 볼 수 있다. 

CPU의 Idle 상태의 소모 전력 = 6w
DDR4 8GB 메모리 소모 전력 = 3w
PCIe 확장 카드의 소모 전력 = 1w
SSD의 Idle 상태의 소모전력 = 0.06w
HDD 2개의 STANDBY 모드 소모전력 = 1w (0.5w * 2)
DVD의 Idle 상태의 소모전력 = 0.5w

최종 Idle 상태의 예상 소모전력 = 6 + 1 + 0.06 + 1 + 0.5 + 3 = 11.56w

 

실제 NAS 서버를 구축하기 전부터 계산한 소비전력이다. 이 정도로 유지된다면 일반 가정에서 사용하는 전력 구간에서 크게 영향을 미치지 않을 수준이 될 것이다.

 

이제 실제 Idle 상태에서의 소비전력을 측정해 보도록 하자. Tuya의 스마트 플러그의 전력 사용량 모니터링을 통해 측정한 값이다. Tuya의 스마트플러그 강력 추천한다. 가격도 매우 저렴(4개에 35$, 알리익스플레스)하고 어플로 연동되어 전원 On/Off, 스케줄링, 모니터링까지 가능해서 가성비 매우 좋다. (리뷰 참고

 

NAS 서버의 Idle 상태에서의 최소 소비전력은 10.3로 측정되었다.

 

 

 

 

 

예상했던 것보다 1w 이상 낮게 측정되었다. 항상 10.3w에 머물러 있는 것은 아니고 10.3~11.3 사이를 오르락내리락한다. 평균 10Wh 후반대의 전력 사용량을 보인다. 

 

현재 상태에서 소비전력을 더 낮출 수 있을까~? 답은 '그렇다'이다. 소비전력을 낮추기 위해서는 아래의 두 가지에 초점을 맞춰야 한다.

1. 전원 옵션에서 '절전'을 선택하라.
2. Idle 상태에서의 디스크 사용량을 최소화 하라.

 

첫 번째, 아래의 그림과 같이 '절전' 전원 관리 옵션으로 선택한다.

 

 

전원 관리 옵션 선택

 

 

전원 관리 옵션에서 '절전' 모드를 선택하면 Idle 상태에서의 최소 소비전력이 9.2w로 낮아진다. (9.2w~10.3w, 9.8Wh)

 

 

 

 

 

그렇다면 왜 '균형 조정'보다 '절전' 옵션이 더 적은 소비전력을 보이는 것일까?

 

그 이유는 각 옵션에 따라서 CPU의 소비전력이 변한다. 즉, 전원 옵션에 따라 CPU의 성능이 변한다는 얘기이다. CPU-Z의 벤치마크를 통해서 '절전' 옵션에서의 성능을 한번 측정해 보자.

('균형 조정' 옵션의 벤치 결과는 위에서 참고. '고성능'옵션도 '균형 조정' 옵션과 비슷한 양상을 보여서 제외하였다.)

 

 

 

'절전' 전원 옵션의 CPU 벤치 결과

 

 

CPU의 멀티 스레드 성능이 대폭 하락(804점->526점) 한 것을 볼 수 있다. '절전' 옵션이 Idle 상태뿐만 아니라 다양한 프로그램이 동작하는 상황마다 대부분 1w 정도를 적게 사용하는 것으로 측정되었다. 결론적으로 소비전력'절전' 전원 옵션이 우세하고 성능은 '균형 조정' 전원 옵션이 좋다는 것이다.

 

필자는 대부분의 CPU 부하가 적은 상황에서는 사용 전력을 줄이고 싶고, CPU 성능이 필요한 상황(e.g. 트랜스 코딩)에서는 성능을 최대한 활용하고 싶다. 방법이 없을까?

 

결국, CPU 전체 사용량에 따라서 자동으로 전원 모드를 변경해주는 프로그램을 C#으로 개발했다.

 

 

CPU 사용량에 따른 전원 옵션 변경 프로그램

 

 

CPU 최근 사용량의 평균(최소 36초, 최대 120초 동안)이 10% 이하를 유지할 경우 자동으로 '절전' 옵션이 선택된다. CPU 사용량이 급격하게 떨어질수록 변경되는 시간이 빨라진다. 반면 CPU 최근 사용량의 평균(최소 12초, 최대 46초 동안)이 60% 이상 유지될 경우 자동으로 '균형 조정' 옵션으로 변경된다. CPU 사용량이 급격하게 증가할수록 변경 시간이 빨라진다. CPU 사용량이 급격하게 변경될수록 더 빠른 전원 옵션 전환이 필요할 것이라 판단하는 것이다.

이제 필자의 NAS 서버는 대부분 '절전' 옵션으로 동작할 것이고 필요한 순간 '균형 조정' 옵션으로 변경돼서 동작한다.

 

해당 프로그램에 관심이 있으신 분들은 이 포스팅을 참고하시기 바란다.

 

두 번째, Idle 상태에서의 디스크 사용량을 최소화하는 것이 소비전력을 줄일 수 있는 방법이다.

 

Seagate Ironwolf 4TB HDD의 경우 일반 동작에서는 약 5w, Sleep(Standby) 모드에서는 약 0.5w를 사용하므로 차이가 10배가 된다. SSD(Sandisk X600)의 경우에는 Sleep 모드에서는 5~7 mW, 최대 활성화 상태에서는 2.05W(Active Read)까지 사용한다. Sleep 모드가 아니고 IO가 발생하지 않는 상태에서는 52mW를 사용한다. (참고)

 

그래서 필자가 추천하고 싶은 사항은 다음과 같다.

  • 전략 1. 운영체제(Windows 10)와 모든 소프트웨어는 SSD에 설치하자
    • Windows 10의 Idle 상태에서 항상 주기적으로 실행되는 프로세스는 Windows Defender, System, Registry 프로세스 등이 있다. 해당 프로세스들은 매우 짧은 간격으로(System 프로세스는 거의 항상 실행됨) 항상 디스크에 데이터(혹은 이벤트 로그)를 읽거나 쓰는 작업을 실행한다. 즉, 운영체제가 설치된 디스크에 대한 IO는 항상 발생하므로 해당 디스크가 Sleep 모드로 빠지는 상황은 쉽게 발생하지 않는다.
    • SSD에 OS/SOFTWARE 설치 시 장점 1. SSD의 경우 HDD에 비해 향상된 IO 성능 차이(약 2.5배)로 인한 디스크 접근 시간을 줄일 수 있을 뿐만 아니라 IO 수행 시의 소비전력 차이(약 3배)도 존재한다. 즉, 같은 크기의 파일을 쓸 경우 최대 6.5배까지의 소비전력 차이가 발생할 수 있다(단순히 순차적 IO만 고려한 상황). 그러므로 Windows 10의 Idle 상태에서 발생하는 데이터를 읽고 쓰는 것은 SSD가 HDD에 비해 소비전력 측면에서 상당히 유리하다.
      • 예를 들어 1GB의 데이터를 쓸 경우,
      • HDD의 소비전력 = 5W(Write시 소비전력) * 5초(대략 속도를 200MB/s로 계산) = 25W
      • SSD의 소비전력 = 1.7W(Active Write시 소비전력) * 2초(대략 쓰기 속도를 500MB/s로 계산) = 3.4W
    • SSD에 OS/SOFTWARE 설치 시 장점 2. 디스크가 슬립 모드가 아니고 IO도 발생하지 않는 상태에서의 소비전력도 SSD가 HDD에 비해 월등히 우수하다. Seagate Ironwolf HDD의 경우 Disk의 Idle 상태의 소비전력은 3.95W이고 Sandisk X600의 Active 소비전력은 52mW이다. 어마어마한 소모전력 차이이므로 SSD에 운영체제를 설치하는 것이 유리함은 명백하다. (물론, NAS의 주요 데이터 저장까지 SSD를 이용할 수 있다면 더 좋겠지만 말이다...)  
    • 추가로 Idle 상태에서 Windows 10이 생성하는 IO를 줄이기 위해서,
      • '로컬 보안 정책'에서 로그온, 권한 요청과 관련된 이벤트 몇 가지를 실패 상태에서만 남기도록 설정함.
      • 'Windows Defender'의 바이러스 및 위협 방지 설정에서 Windows Defender 관련 ProgramData 폴더를 제외함.
  • 전략 2. HDD를 최대한 Sleep 모드로 유지하자.(참고)
    • NAS의 모든 데이터를 HDD에 저장하고 있는데, 해당 데이터들은 항상 접근하는 것이 아니라 사용자가 필요한 시점에만 연속적으로 접근하는 성향을 가진다. 즉, 장시간 동안 접근하지 않으므로 HDD를 Sleep 모드로  진입할 수 있도록 허용하자(필자는 전원 옵션에서 약 10분 동안 미사용시 Sleep 모드로 진입하도록 설정함).
    • 다음과 같은 이유로 HDD를 Sleep 모드로 진입을 허용하지 않는 유저도 많은 것으로 알고 있다.
      • 운영체제가 설치된 HDD에 대해서 Sleep 모드를 활성화할 경우 가끔씩 지연이 발생하여 성능에 영향을 주는 경우가 생긴다. 하지만, 위에서 언급하였듯 운영체제는 SSD에 설치하여 이와 같은 문제를 해결하자.
      • HDD를 Sleep 모드로 변경할 경우 HDD의 수명에 영향을 줄까? HDD가 Sleep 모드로 진입할 경우 HDD의 Spin이 발생하지 않아서 수명에 오히려 긍정적인 영향을 준다. 하지만, Sleep 상태에서 활성화로 진입하는 단계에서 발생하는 Spin은 HDD의 사용량을 급증시켜 안 좋은 영향을 준다. 결론은 빈번한 Sleep은 피하되 Sleep을 하는 것이 좋다.

추가적으로, 필자는 Windows 10의 리소스 모니터링을 통해 Idle 상태에서 디스크에 접근하는 프로세스들이 어떠한 프로그램 (혹은 서비스)인지 조사하고, 제거 혹은 비활성화 가능한 프로세스일 경우 이를 제거하거나 비활성화하는 방향으로 진행하였다. 

 

"NAS 기능 별 소비전력"

 

이제 NAS의 기능을 이용할 경우의 전력 소비를 알아보도록 하자.

 

외부에서 인터넷을 통해 WebDAV를 접근하는 상황에서의 성능과 소비전력에 대해서 알아보자. 파일을 읽는 경우 100 mbps 속도에 맞게 읽기 성능이 나온다. 그리고 항상 17.6W의 전력을 소모한다.

 

 

WebDAV 읽기 성능
WebDAV 읽기의 소비전력

 

 

 쓰기의 경우 성능은 읽기와 유사한 반면 디스크 두 개를 동시 접근하므로 전력 소모가 19.4W로 유지된다.

 

 

WebDAV write 수행시 성능
WebDAV write 수행시 소비전력

 

 

 
Plex로 트랜스코딩 수행 시 전력 소모량은 어떻게 될까? 결론은 WebDAV 보다 자원 사용량이 많으므로 소비전력도 더 크다.

1대의 기기로 접속하여 1080p 동영상을 720p로 트랜스 코딩하여 재생할 경우, 초반 약 60초 동안 CPU 60~70%를 점유하다가 이후에 10~20% 정도 점유하는 것을 볼 수 있다. CPU 온도도 초반 60초 동안에는 약 51도를 유지하다가 그 이후에는 43도로 유지된다.

 

 

 

단일 기기 접속, 트랜스코딩 부하

 

 

2개의 기기가 동시에 트랜스코딩을 할 경우에는 더 많은 자원을 사용한다. 동시 트랜스코딩을 하더라도 동영상은 끊김 없이 매우 잘 재생된다.

 

 

2개의 머신 동시 트랜스코딩 부하

 

 

소비전력은 외부 접속 기기의 개수에 상관없이 19.6~32.9w 사이를 오르락내리락한다. 물론 전체적인 소비전력의 총합은 접속 기기가 많을수록 더 많을 것이다.

 

 

 

트랜스코딩시 최소(왼쪽), 최대(오른쪽) 소비전력

 

 

 
4K 동영상은 어떨까?

4K 60 fps 동영상을 1080p로 트랜스코딩으로 재생해 보았다. 단일 기기에서 접속했으며 끊김 없이 재생 매우 잘 된다.

 

 

4K 동영상 정보
4K 동영상 트랜스코딩 부하

 

 

전력 사용량은 위에서 테스트한 트랜스 코딩과 동일한 수준(19~32w 사이)으로 유지된다.

 

6월의 5일간 일별 소비전력의 그래프(5일 오후 1시 47분경 캡처)이다. 1일과 2일은 다양한 설치 및 설정을 하느라 소비전력이 더 크다. 보통 하루 최대 0.3~0.4 kWh 정도를 사용하고 한 달 동안 약 9~12 kWh를 소모할 것으로 예상된다. 

 

 

 

 

 

 

 

301~450 kWh 구간에서 NAS 서버를 한달동안 12kWh 사용 시 2254(=12 * 187.9) 원의 전기세가 청구될 것이다. 

 

소비전력을 더 줄이기 위해서는 사용하지 않는 시간에 자동 종료하도록 설정하고 WOL(V330 지원)이나 메인보드에서 제공하는 설정된 시간에 자동 시작(V330 지원) 기능을 사용할 수도 있을 것이다.

지금까지 저전력 NAS 구축과 관련된 이야기를 하였다. 최소 소비전력 9.2W(평균 9.8W)가 누군가에게는 큰 의미가 없을 수도 있지만 Windows 10을 기반으로 익숙함과 편의성 갖춘 저전력, 나름 고성능(?) 나스를 구축했다는데 의미를 두고 싶다. 

 

이 이야기가 누군가에게 도움이 되었으면 하는 바람으로 '저전력 NAS 구축' 연재 글을 마무리한다.

 

EP 01. 자작 NAS 서버 장비 구매 편

EP 02. 자작 NAS 서버 조립 및 확장 편
EP 03. 자작 NAS OS/RAID/SOTWARE 설치 편
EP 04. 자작 NAS 성능 및 소비전력 편

 

댓글