요약
전 세계 전력망의 1분 주기 주파수 흔들림은 시계에 맞춰 도는 장비 소프트웨어에서 비롯된 것으로 보입니다.
연구진이 Nature Energy에 발표한 논문입니다. 5개 대륙 12개 전력망의 주파수 기록에서 정확히 1분 주기의 신호를 찾았고, 율리히 연구소 캠퍼스 전력망을 측정해 원인을 추적했습니다.
왜 중요한가
- 고장이나 해킹이 아닌 평범한 제어 소프트웨어도 많은 기기가 함께 움직이면 전력망 전체에 영향을 줍니다.
- 아직 안전을 위협할 수준은 아니지만, 배터리와 데이터센터가 늘고 발전기 관성(주파수 변화를 버티는 힘)이 줄면 더 커질 수 있습니다.
- 진폭이 10mHz를 넘던 스칸디나비아는 수력 터빈 마모 우려로 2023년에 주파수 제어 규정을 고쳤을 만큼 이미 현실 문제입니다.
핵심 내용
- 캠퍼스에서 1분 신호가 뚜렷한 건물 4곳에는 모두 배터리 기반 무정전 전원 장치(UPS)가 있었고, UPS가 없는 건물에서는 신호가 없었습니다.
- 제조사에 확인해 보니 전류 피크의 정체는 배터리 관리 시스템이 1분마다 돌리는 자가 점검이었습니다.
- 이 신호는 변압기를 거쳐 110kV 고압망 연결부까지 전달됐습니다.
- 아일랜드는 데이터센터가 전력 수요의 약 18%에 이르렀고, 1분 주기 주파수 하락 폭도 2016년 약 3mHz에서 2021년 12mHz로 커졌습니다.
- 연구진은 실행 시점을 무작위로 흩뜨리라고 제안했지만, 제조사의 업데이트도 문제를 일부만 해결했고 가정용 기기는 더 어렵다고 봤습니다.
HN 반응
- 일부 이용자는 동작이 한꺼번에 몰리는 전형적인 문제라며 타이머에 무작위 지연을 넣자고 했고, 어느 정도로 흩뜨려야 충분한지 논쟁이 이어졌습니다.
- UPS만이 아니라 매분 0초에 맞춰 도는 모든 예약 작업이 합쳐진 결과일 것이라는 회의론에는, 논문도 같은 점을 짚었다는 답이 달렸습니다.
기어에도 똑같은 개념이 있습니다. 두 기어를 맞물릴 때는 잇수가 서로소가 아니면 피하는 게 좋은데, 마모가 한쪽으로 치우치기 때문입니다. 잇수가 서로소이면 각 이가 상대 기어의 모든 이와 같은 횟수만큼 맞닿게 되어, 사실상 이의 "마모 평준화(wear leveling)"가 이뤄집니다.
이번 경우의 해법 하나는 타이머를 59.XXX초마다 울리게 하는 것입니다. 그러면 시계의 분침과 자연스럽게 위상이 어긋나며 흘러갑니다.
작업을 꼭 정확히 60초마다 해야 한다면, 타이머를 처음 초기화할 때 WAIT(RAND(60e6)) 마이크로초를 넣으면 됩니다. 그러면 장비 1만 대가 동시에 켜져도 한꺼번에 몰려들지 않습니다. 대부분의(전부?) 시스템에서 좋은 관행입니다. 힌트를 드리면, 정전이나 인프라 장애 후 재연결 상황을 테스트해 보세요. 의도치 않게 타이머가 동기화될 수 있습니다.
많은 소프트웨어가 17시간마다 자동 업데이트를 하는 것도 이 때문입니다. 17은 24와 서로소거든요.
전형적인 "천둥 떼(thundering herd)" 완화 기법입니다.
추가: IoT 탓을 하고 싶어지지만, (이게 뉴스인 걸 보면) 여기에 고칠 게 있다는 걸 아무도 몰랐던 것 같습니다. 그래도 우리에겐 쓸 수 있는 도구가 있습니다.
같은 시간에 여러 부하를 한꺼번에 기동할 때의 돌입 전류를 고려하지 않은 장비를 정말 많이 봅니다. 개별 장치는 자기 부하의 돌입 전류를 감당하는 차단기로 보호되지만, 장비 전체의 주 차단기는 모든 부하가 동시에 켜지는 상황을 감당하도록 용량이 잡혀 있지 않습니다. 해법은 하나씩 순서대로 기동하는 로직을 넣는 건데, 엔지니어와 프로젝트 매니저, 장비 소유자에게 "놓친 게 있다"고 납득시키는 일이 쉽지 않습니다.
예전에 우리 쪽에 터보 펌프가 하나 있었는데, 냉간 상태에서 켤 때마다 차단기가 떨어졌습니다. 펌프가 안정적인 부하로 내려오기 전에 일단 최대 RPM까지 올리려고 하는 것 같았어요. 계속 켜 둘 수 있는 유일한 방법은 일단 한 번 켜서 첫 시도에서 예열이 되게 두고 차단기가 떨어지면, 이제 어느 정도 관성이 붙어서 전류를 조금 덜 끌 테니 한 번 더 시도하는 것이었습니다. 이렇게 굴러가기 시작하게 만들려면 몇 번 시도해야 할 때도 있었습니다.
그건 차단기를 못 쓰게 만드는 방법이긴 하죠. 운이 좋으면 래치가 고장 나는 정도고, 운이 나쁘면 접점이 용접돼서 붙어 버립니다.
이상적이진 않았지만 먹히는 건 그것뿐이었습니다. 100만 달러짜리 장비에 붙어 있던 거라, 전기 쪽 보수 교체 비용은 사실 별 문제가 아니었어요. 다행히 가능한 한 끄지 않고 쓰는 종류의 장비여서 이 절차를 많이 반복할 일은 없었습니다.
제조사도 눈치를 챘는지, 2세대 장비는 펌프를 천천히 예열하도록 바뀌어서 더는 이런 절차가 필요 없어졌습니다.
맞습니다, 소프트 스타트가 정답이죠. 그리고 제대로 된 산업용 차단기는 일시적인 과부하를 허용합니다. 저도 돌입 전류가 일반 차단기 한계를 훌쩍 넘는 장비가 몇 대 있는데, 동작이 느린 차단기에 물렸더니 이제 문제없습니다.
https://onccy.com/how-to-choose-between-type-a-b-c-and-d-miniature-circuit-breakers/
(그리고 제대로 된 산업용 차단기는 일시적인 과부하를 허용합니다)
멍키 렌치가 1000A짜리 지연형 퓨즈 역할을 훌륭하게 해낸다는 건 유명한 얘기죠.
5/32" 일자 드라이버는 노출된 버스바 위에 떨어뜨리면 훌륭한 속단형 퓨즈가 됩니다. 그리고 방 건너편에서 주워 오면, 남은 손잡이 조각은 커피 젓는 데 재활용할 수 있고요.
소프트 스타트가 이론상 정답이긴 한데, 모터 종류에 따라 크게 달라집니다. 유도 전동기만 해도 콘덴서 기동식, 영구 분상 콘덴서식, 셰이딩 코일식 등등 방식마다 필요한 방법이 다 달라서, 전압을 낮추거나 VFD나 VSD를 쓰거나, 아니면 원심 스위치를 쓰는 구식 방법도 있는데 이건 아주 조심스럽게 다뤄야 합니다. 원글 작성자 말처럼 100만 달러짜리 장비를 돌리는 거라면 그 수준까지 건드리고 싶지는 않을 겁니다.
컴퓨터 팬이 생각나네요. 일부 바이오스도 별 이유 없이 팬 속도를 한 번 끌어올리는 동작을 하는 것 같던데요.
팬은 0 RPM에서 냉간 기동할 때 돌기 시작하는 데 필요한 최소 속도가 있습니다. 그래서 컨트롤러가 각 팬의 정확한 동작 특성을 모르면, 최대 RPM 근처에서 시작해 목표 RPM으로 낮추는 쪽이 더 안전합니다.
속도 조절 노브나 ESP32로 직접 확인해 볼 수 있습니다. 이미 돌고 있는 팬은 노브를 듀티 30% 같은 값으로 낮춰도 얼마든지 계속 돕니다. 그런데 0%로 돌려서 날개가 완전히 멈출 때까지 기다린 뒤 다시 30%로 맞추면, 아예 꿈쩍도 안 하거나 수상한 딸깍 소리나 앓는 소리가 나면서 날개가 간헐적으로 꿈틀거리기만 할 수 있습니다.
저는 팬 속도용 PWM 센서를 보정하려는 거라고 늘 생각했습니다. 센싱이 꺼진 상태로 시작해 최대까지 올라간 다음, 센서가 작동하기 시작하면서 속도를 안정시키는 거죠. 팬을 돌리려고 최대 속도로 틀 필요는 없습니다. 대부분은 아주 약한 전력만 줘도 돌기 시작하거든요.
컴퓨터 팬과는 딱 맞는 얘기는 아니지만, 보통 쓰는 선풍기는 돌리려면 훨씬 큰 힘으로 한 번 쳐 줘야 합니다. 안 돌아가는데 전원이 계속 들어와 있으면 그대로 멈춰서 가열되다가 고장 납니다. 그래서 선풍기는 보통 가장 센 단계가 첫 번째 옵션에 있고, 처음에는 최고 속도로 켠 다음에야 줄이게 되어 있는 겁니다.
팬 제어가 없는 상태에서 CPU가 과열되지 않게 하는 것도 중요하죠. 드라이버가 로드되기 전까지는 아무것도 안 돌리는 것보다 풀가동이 더 안전합니다.
(DIN 레일 쪽에서) B/C/D형 차단기가 감당하도록 만들어진 범위를 넘어서는 얘기를 하시는 거죠?
어느 정도는 이미 해결된 문제입니다. 제가 아는 건 바로 이런 용도로 만든 LynTec의 시퀀스 패널이나, 곡선을 원하는 사양대로 제어할 수 있는 Siemens SENTRON 반도체 차단기 같은 것들입니다.
다만 이해관계자를 설득하는 건 그것만으로 거의 하나의 직업이죠.
전부 3상 600V 직입 기동 방식이라 천천히 기동할 방법이 없었습니다. 소프트 스타터가 이상적이었겠지만 가격이 5배입니다.
네? 돌입 전류는 전자공학에서 잘 알려진 개념인데요.
결국 무지한 사람을 설득하는 게 힘들다는 얘기네요. "돌입 전류"가 뭔지 아는 사람은 롤링 스타트의 가치를 굳이 설득할 필요가 없으니까요.
기어와 서로소에 관한 댓글, 정말 흥미롭네요. 둘 다 처음 들어 봅니다.
그런데 제 머릿속은 댓글과 전혀 상관없는 곳으로 흘렀어요. 바로 매미입니다!
어떤 매미 종은 왜 생애 주기가 17년인지가 수수께끼로 알려져 있는 걸로 압니다. 포식자를 피하려는 것 등 여러 가설이 있었고요.
그런데 17년이라는 주기(소수)가 DNA 차원에서 "고르지 않은 마모 패턴"을 피하려는 것일 수도 있지 않을까요??
마침 조금 전에 HN에 올라왔던 글이 있네요: https://news.ycombinator.com/item?id=50333323
59초여도 초 단위로는 여전히 정렬됩니다. 소수 밀리초나 마이크로초여야 할지도 모르겠네요.
하지만 초는 분보다 주파수가 60배 높습니다. 거의 6옥타브 위죠. 전력망은 1분 주기보다 훨씬 더 잘 저역 통과 필터처럼 걸러 낼 겁니다. (기사에 나온 도표에서도 그 경향이 보입니다. 왼쪽으로 갈수록 주기가 짧아지면서 진폭이 다 낮아지는데, 60초 주기의 돌출만 튀는 값이에요.)
둘째로, 진폭이 떨어집니다. xx:xx:00 시각에 몰려 있던 이벤트가 xx:xx:xx 시각으로 분산됩니다. 전체 이벤트 수가 같다면 각 :xx 시간대는 이제 :00에 몰려 있던 이벤트의 1/60만 받습니다. 여기서 전력 데시벨(20 log 10 x)을 따진다면, 구동 신호의 진폭이 35dB 줄어드는 셈입니다.
진폭이 35dB 줄고 전력망이 잘 반응하지 못하는 6옥타브 높은 주파수로 옮겨 가면 문제는 사실상 사라진다고 봐도 됩니다.
군인들이 다리를 건널 때 발걸음을 제각각 흩뜨리려고 일부러 박자를 맞춰 행진하지 않는 것과 아주 비슷한 상황입니다.
여러 요인에 따라 다르지만, 초 단위 분산만 해도 천둥 떼 현상이 60분의 1로 줄어듭니다. 더 필요한지, 아니 더 가능한지는 대개 구체적인 문제 영역에 달려 있고요. 예를 들어 작업이 20ms 걸린다면 마이크로초 단위 분산은 도움이 안 됩니다. 랜덤화를 쓴다면 오히려 더 나빠지죠. 마이크로초는 초보다 훨씬 많아서, 다른 지연들 때문에 실제로는 여전히 한꺼번에 스케줄되는 작업이 많이 생길 수 있거든요.
지터는 작업에 걸리는 시간보다 훨씬 커야 합니다. 그러지 않으면 직관에 반하는 성능 저하가 생겨서 풀려던 문제가 다시 나타날 수 있어요. 천둥 떼를 충분히 줄일 만큼 크면서도 작업 시간보다는 큰 지터를 고르는 건 균형 잡기입니다.
방금 답하신 글을 다시 읽어 보셔야 할 것 같습니다. 59.XXX초라고 했고, 바로 뒤에 이어지는 설명을 보면 XXX가 무작위로 고른 마이크로초 수를 뜻한다는 게 분명하거든요.
그건 나중에 수정으로 추가된 내용이에요.
이 1분 주기 지터가 전적으로 전력 인버터 장비의 1분 타이머 때문이라는 데는 회의적입니다. 마이크로프로세서가 들어간 모든 기기의 크론 같은 스케줄링이 합쳐진 규모 효과일 가능성이 큽니다. 개별 주기와 상관없이 분 단위 정밀도로 잡힌 모든 장기 스케줄링(초 필드가 암묵적으로 :00)이 그렇죠. 어떤 기기는 매시 x:17과 x:47에 돌고, 다른 기기는 x:06, x:09, x:12, x:15, ...에 돌고, 그 밖에도 수많은 조합이 있다면, 규모가 커질수록 공약수는 1분이 됩니다. 벽시계 시간을 쓰고 네트워크 시간에 동기화된 기기라면 전부, 크론 같은 스케줄링 이벤트가 모든 x 값에 대해 xx:xx:00에 발화하게 되고요.
이런 스케줄링은 초 단위에서 랜덤화하는 게 맞을 수 있습니다. 다만 안타깝게도 수많은 운영체제와 애플리케이션 스택이 대규모로 함께 움직여야 하는 일입니다.
이제 원인이 확인됐으니 예측해서 대응하는 편이 더 쉬울지도 모릅니다.
TV 픽업(TV pickup)처럼요. 텔레비전의 광고 시간에 전력 수요가 급증하는 현상입니다.
대표적인 예가 월드컵 하프타임에 모두가 동시에 차를 끓이는 겁니다.
매 분마다 일어나는 것처럼 흔하고 예측 가능한 일이라면 모델에 반영하기는 간단할 겁니다.
https://en.wikipedia.org/wiki/TV_pickup
(대표적인 예가 월드컵 하프타임에 모두가 동시에 차를 끓이는 겁니다.)
축구 얘기인가요? 영국 사람들이 경기를 보면서 차를 마시는 모습은 상상도 안 되는데요 :)
그 위키 문서에서 제일 흥미로운 건, 조명 등을 다 같이 한꺼번에 끄면 오히려 이산화탄소가 더 배출될 수 있다는 주장입니다.
(이 1분 주기 지터가 전적으로 전력 인버터 장비의 1분 타이머 때문이라는 데는 회의적입니다. 마이크로프로세서가 들어간 모든 기기의 크론 같은 스케줄링이 합쳐진 규모 효과일 가능성이 큽니다)
기사에도 그렇게 나와 있습니다.
(확인된 동기화 메커니즘은 UPS나 배터리 시스템에만 국한된 것이 아니라, 외부 타이밍 신호나 주기적 소프트웨어 루틴으로 동작하는 디지털 제어 장치의 일반적인 특성을 반영한다)