모바일 환경의 에너지 인지 스케줄러 (Energy-Aware Scheduling, EAS)
핵심 인사이트 (3줄 요약)
- 본질: 에너지 인지 스케줄러 (EAS, Energy-Aware Scheduling)는 스마트폰의 리눅스 커널이 성능(Performance)만을 추구하던 과거의 낡은 스케줄링 공식(CFS)을 버리고, "이 스레드를 빅(Big) 코어에 넣었을 때 소모되는 배터리 전력량"과 "리틀(Little) 코어에 넣었을 때 소모되는 전력량"을 수학적 모델(Energy Model)로 실시간 계산하여 가장 가성비가 좋은 코어에 프로세스를 꽂아 넣는 지능형 스케줄러다.
- 가치: 배터리 용량이 절대적으로 부족한 모바일 기기 환경에서, 카카오톡 푸시 알림 같은 가벼운 잡무는 저전력 코어에 격리시키고, 고사양 3D 게임이 켜질 때만 전기 먹는 하마인 고성능 코어를 깨움으로써 스마트폰의 배터리 타임을 혁명적으로(수십 % 이상) 끌어올렸다.
- 융합: ARM의 **big.LITTLE (이기종 코어 아키텍처)**이라는 획기적인 하드웨어 설계와, OS 커널의 동적 전압 주파수 조절 (DVFS) 기술이 스케줄러라는 소프트웨어 계층에서 하나로 완벽히 융합(Hardware-Software Co-design)된 현대 모바일 공학의 결정체다.
Ⅰ. 개요 및 필요성 (Context & Necessity)
-
개념:
- 리눅스의 기본 스케줄러(CFS) 위에 올라간 전력 최적화 계층.
- OS가 CPU 칩셋의 물리적인 전력 소비 모델(이 코어는 1GHz일 때 전기를 몇 와트 먹는지에 대한 테이블)을 미리 읽어 들이고, 태스크(스레드)가 요구하는 연산량(Load)을 예측하여 가장 배터리를 적게 먹는 코어와 클럭(MHz) 조합을 찾아 배치한다.
-
필요성(문제의식):
- 과거 PC 서버 시대의 잣대로 만든 스케줄러(CFS)는 "모든 CPU 코어는 성능이 똑같다(SMP)"는 환상에 빠져있었다.
- 그런데 스마트폰 칩셋(AP)에 고성능 빅 코어 2개, 저전력 리틀 코어 4개가 달린 big.LITTLE 구조가 도입되었다.
- CFS는 멍청하게도 백그라운드에서 이메일 동기화를 하는 가벼운 스레드를 텅텅 비어있다는 이유로 냅다 고성능 '빅 코어'에 던져버렸다. 빅 코어가 1초만 깨어나도 스마트폰 배터리가 줄줄 샜다.
- 해결책: "스케줄러에게 전기 요금표(Energy Model)를 쥐여주자. 일을 던지기 전에 '이거 싼 코어(리틀)에 던져도 마감 시간 맞출 수 있나? 맞출 수 있으면 무조건 싼 코어에 던져!'라는 가성비 계산을 시키자!"
-
💡 비유:
- 기존 스케줄러 (무지성 할당): 이삿짐센터 반장님(OS)이 무거운 피아노든 가벼운 볼펜 한 자루든, 놀고 있는 직원이 있으면 무조건 힘세고 밥(전기) 엄청 먹는 덩치 큰 삼촌(빅 코어)에게 시킴. 삼촌이 볼펜 옮기고 뷔페 10접시를 먹어 치워 식비가 거덜 남.
- EAS 에너지 스케줄러: 반장님이 견적(Energy Model)을 뽑음. "볼펜 1자루는 밥 한 공기만 먹는 어린 조카(리틀 코어)에게 시키고, 피아노가 나왔을 때만 삼촌을 부르자!" 밥값(배터리)을 기가 막히게 아끼는 효율적 인력 배치.
-
등장 배경:
- ARM 홀딩스가 2011년 big.LITTLE 아키텍처를 발표한 이후, 하드웨어의 미친 잠재력을 리눅스 스케줄러가 못 따라가자 ARM과 Linaro 진영이 주도하여 리눅스 커널 5.0 이후 메인라인으로 정식 편입시킨 모바일 생태계의 구원 투수다.
┌─────────────────────────────────────────────────────────────┐
│ 이기종 코어(big.LITTLE)에서의 EAS 스케줄링 알고리즘 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [ 스마트폰 AP 칩셋 구조 (Heterogeneous Multi-Core) ] │
│ - 🔴 빅 코어 (P-Core): 엄청 빠름. 1명 처리할 때 배터리 100 소모 │
│ - 🟢 리틀 코어 (E-Core): 느림. 1명 처리할 때 배터리 10 소모 │
│ │
│ [ Task A (가벼운 메일 동기화) 도착 ] │
│ - EAS 계산기 작동: "이거 부하량(Utilization)이 15%네." │
│ ├─ 빅 코어에 넣으면? -> 전력 100 낭비. (기각 ❌) │
│ └─ 리틀 코어에 넣으면? -> 전력 10 소모로 널널하게 처리 가능! (채택 🟢)│
│ - 결과: Task A는 평생 🟢 리틀 코어에서만 놀게 묶어버림. │
│ │
│ [ Task B (3D 게임 고화질 렌더링) 도착 ] │
│ - EAS 계산기 작동: "부하량이 90%다!" │
│ ├─ 리틀 코어에 넣으면? -> 코어 능력 초과로 렉 100% 발생. (기각 ❌) │
│ └─ 빅 코어에 넣으면? -> 전력 100 먹지만 어쩔 수 없음 투입! (채택 🔴)│
│ - 결과: 🔴 빅 코어(사자)가 잠에서 깨어나 미친듯한 속도로 렌더링 시작! │
└─────────────────────────────────────────────────────────────┘
[다이어그램 해설] EAS의 위대한 점은 '미래 예측'에 있다. 태스크가 들어오면, 커널의 PELT(Per-Entity Load Tracking) 알고리즘이 "이 녀석이 과거에 얼마나 CPU를 썼지?" 하고 부하(Load)를 정밀하게 예측한다. 이 예측치(Utilization)를 들고 하드웨어 제조사가 커널에 박아둔 '에너지 모델(전력 소모 공식)'에 대입한다. 빅 코어의 500MHz 주파수로 돌릴 때의 전기세와, 리틀 코어의 1.2GHz 주파수로 돌릴 때의 전기세를 비교(Trade-off)하여, 가장 전기를 적게 먹으면서 렉이 안 걸리는 마지노선 코어로 태스크를 강제 마이그레이션(Migration) 시켜버리는 극악의 효율 짜내기다.
- 📢 섹션 요약 비유: 에어컨(빅 코어)과 선풍기(리틀 코어)가 같이 있는 집입니다. 옛날엔 조금만 더워도 막무가내로 에어컨을 켰지만, EAS 엄마는 온도계(PELT 부하 추적)를 보고 "지금은 선풍기만 틀어도 시원해(에너지 절약). 30도 넘을 때만 에어컨 틀자"며 전기세를 완벽하게 통제하는 가계의 여왕입니다.
Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)
3가지 핵심 톱니바퀴 (Energy Model, PELT, DVFS)
EAS가 동작하기 위해서는 커널 내부의 서로 남남이었던 3가지 서브시스템이 정보를 교환해야 한다.
- Energy Model (에너지 모델): 기기 제조사(퀄컴, 삼성, 애플)가 "우리 칩은 빅 코어 1단계 올릴 때마다 mW를 이만큼 더 먹어"라는 정밀한 물리적 측정 데이터를 표(Table)로 만들어 커널에 하드코딩해 둔 장부다.
- PELT (Per-Entity Load Tracking): 특정 스레드가 최근 32밀리초 동안 CPU를 얼마나 바쁘게 썼는지 가중 이동 평균(EWMA)을 내어 미래의 부하를 정확히 예측하는 추적기.
- DVFS (동적 전압 및 주파수 스케일링, cpufreq): 일을 배정받은 코어의 속도(클럭)를 높이거나 낮추고, 밥(전압)을 더 주고 덜 주는 하드웨어 제어기.
깨어남 스케줄링 (Wake-up Path)의 최적화
EAS가 가장 빛을 발하는 순간은, 자고 있던 스레드가 이벤트를 받고 '깨어날 때(Wake-up)' 어느 코어의 런큐(Run Queue)에 꽂아 넣을지를 결정하는 1마이크로초의 찰나다.
┌───────────────────────────────────────────────────────────────────┐
│ EAS Wake-up 배치 결정 알고리즘 (에너지 마진 계산) │
├───────────────────────────────────────────────────────────────────┤
│ │
│ [ 스레드 K가 Sleep에서 깨어나며 CPU를 요구함 ] │
│ │
│ 1. 타겟 코어 탐색: │
│ 후보 1: 내가 아까 놀았던 `리틀 코어 0번` (가장 캐시가 따뜻함) │
│ 후보 2: 지금 텅 비어있는 `빅 코어 1번` │
│ │
│ 2. 에너지 마진(Energy Margin) 시뮬레이션 돌림: │
│ - K를 리틀 0번에 얹었을 때 전체 시스템 소모 전력 -> 150 mW │
│ - K를 빅 1번에 얹었을 때 전체 시스템 소모 전력 -> 300 mW │
│ │
│ 3. 🚨 딜레마 체크 (Over-utilization): │
│ "리틀 0번에 얹으면 150mW로 전기는 싼데, K의 부하가 너무 무거워서 │
│ 리틀 코어 한계(Capacity)의 80%를 넘겨서 렉이 걸리지 않을까?" │
│ │
│ ├─ 렉 안 걸림 ──▶ [ 리틀 0번 코어로 확정! ] (배터리 보존) │
│ │ │
│ └─ 렉 걸림 ────▶ [ 빅 1번 코어로 강제 이주! ] (사용자 UX 방어) │
└───────────────────────────────────────────────────────────────────┘
[다이어그램 해설] EAS의 알고리즘은 "전기를 아끼다 렉이 걸려서 사용자가 폰을 집어 던지는 사태"를 가장 경계한다. 따라서 시뮬레이션의 1원칙은 "모든 코어가 자기 능력(Capacity)의 80%(임계점)를 넘기지 않는 선에서 가장 전기를 적게 먹는 위치를 찾는다"는 것이다. 만약 게임을 켜서 시스템 전체 부하가 미친 듯이 치솟아(Over-utilized 상태) 계산할 여력도 없게 되면, EAS는 이 에너지 절약 모드를 0.1초 만에 끄고 과거의 무식한 성능 최우선 밸런싱 모드(CFS 기본)로 돌변하여 일단 렉부터 막아내고 보는 지킬 앤 하이드 같은 구조를 지녔다.
- 📢 섹션 요약 비유: 연비 운전(EAS)을 한다고 엑셀을 살살 밟아서 기름을 아끼지만, 뒤에서 덤프트럭이 달려와서 죽게 생긴 비상 상황(Over-utilized)이 터지면 즉시 연비 운전을 포기하고 풀악셀(CFS 풀가동)을 밟아 일단 살고 보는 가장 현실적인 지능형 자율주행 컨트롤러입니다.
Ⅲ. 융합 비교 및 다각도 분석
CFS (성능 우선) vs EAS (전력 우선) 아키텍처 비교
서버 아키텍트와 모바일 펌웨어 아키텍트는 쳐다보는 북극성이 완전히 다르다.
| 스케줄링 모델 | CFS (Completely Fair Scheduler, 기존 리눅스) | EAS (Energy-Aware Scheduler, 안드로이드) |
|---|---|---|
| 최우선 목표 | 성능(Performance)과 공평성(Fairness) 극대화 | 배터리 수명(Energy)과 렉 방지(UX) 타협점 |
| 코어 인지 | 모든 코어의 능력을 동일하게 취급 (SMP) | 코어의 종류(Big, Mid, Little)를 등급별로 구별함 |
| 로드 밸런싱 | 코어 간의 남는 짐을 미친 듯이 섞어 대기열 평탄화 | 짐을 섞으면 빅 코어가 깨서 전기를 먹으므로 짐 섞기를 억제함 |
| 적합한 디바이스 | 전원이 항상 꽂혀있는 클라우드, 데이터센터, 데스크톱 PC | 스마트폰, 태블릿, IoT 디바이스, 전기차(EV) 인포테인먼트 |
과목 융합 관점
-
컴퓨터 구조 (동적 전압 주파수 스케일링, DVFS): EAS가 지시를 내리면, 하드웨어 칩셋은 CPufreq(CPU 주파수) 서브시스템을 통해 전압을 떨어뜨린다. CPU의 소모 전력 공식은 $P \propto C \cdot V^2 \cdot f$ 다. 즉 주파수($f$)를 낮추면 전력이 찔끔 줄지만, 전압($V$)을 낮추면 제곱으로 배터리가 아껴진다. EAS는 "빅 코어 클럭을 올리는 것보다, 차라리 리틀 코어 2개를 동시에 깨워서 낮은 전압으로 느리게 돌리는 게 전체 전력 소모(V제곱)에 압도적으로 유리하다"는 물리학적 꼼수를 커널 스케줄링에 접목한 것이다.
-
인공지능 (AI 엣지 추론): 최근 모바일 기기(NPU 탑재)에 온디바이스 AI 모델이 돌기 시작하면서, 무거운 행렬 곱 연산을 CPU 빅 코어에 할당할지, 아니면 아예 CPU를 재우고 NPU(신경망 처리 장치)로 오프로드(Offload) 시킬지를 결정하는 초고도화된 "이기종 가속기 인지 스케줄러 (Accelerator-Aware)"로 EAS가 진화의 다음 단계(HMP)를 맞이하고 있다.
-
📢 섹션 요약 비유: 100km/h로 달려야 할 때 페라리(빅 코어) 1대를 시동 걸어 기름을 바닥내는 대신, 티코(리틀 코어) 3대를 시동 걸어 각각 33km/h씩 느리게 달리게 한 뒤 짐을 나눠 실으면 전체 기름값($V^2$ 법칙)이 절반 이하로 싸게 먹힌다는 물리학과 소프트웨어의 소름 돋는 융합입니다.
Ⅳ. 실무 적용 및 기술사적 판단
실무 시나리오 및 트러블슈팅
-
시나리오 — 안드로이드 프론트엔드 앱의 스크롤 버벅임 (Jank) 사태: 앱 개발자가 리스트 스크롤 시 부드러운 60fps(16.6ms 제한)를 달성하려 코드를 최적화했는데, 화면을 터치할 때마다 초기 0.5초간 화면이 뚝뚝 끊기는 버벅임(Jank)이 발생한다.
- 원인 분석: 개발자가 짠 백그라운드 스레드에 아무런 우선순위 힌트(QoS)를 주지 않았다. 터치 이벤트가 발생했을 때, EAS는 이 스레드를 과거 부하(Load)가 없는 '가벼운 놈'으로 착각하고 가장 힘이 약한 리틀 코어의 최하단 클럭(300MHz)에 던져버렸다. 리틀 코어가 낑낑대며 클럭 주파수를 1.5GHz까지 천천히 올리며 반응하는 데 걸린 시간(DVFS Ramp-up 지연)이 0.5초의 버벅임을 낳은 것이다.
- 아키텍트 판단 (UX 최적화: cpuset 및 렌더 스레드 부스팅): 안드로이드 OS 아키텍트는 이런 참사를 막기 위해 **터치 부스트(Touch Boost)**라는 커널 튜닝을 도입했다. 사용자가 화면을 만지는 순간, EAS의 시뮬레이션을 깡그리 무시하고 즉각 빅 코어를 강제로 깨워 최고 클럭(Max 주파수)으로 1초 동안 고정(Pinning)시켜 버린다. 또한 앱 개발자는 UI 렌더링 스레드를 안드로이드 프레임워크의
RenderThread로 지정하여, 스케줄러가 이 스레드만큼은 cgroup의 전용top-app등급(빅 코어 독점 구역)으로 이주시키도록 인프라 힌트를 줘야만 매끄러운 60fps 방어가 가능하다.
-
시나리오 — AWS Graviton (Arm) 서버 인스턴스 도입 시의 스케줄러 함정: AWS가 인텔 대비 가성비가 30% 좋다는 자체 제작 Arm 칩(Graviton) 서버를 내놓아 백엔드 DB를 대거 이주(Migration) 시켰다. 그런데 특정 코어만 100%를 치고 앱 성능이 널뛰기한다.
- 원인 분석: 클라우드 서버에 들어가는 Arm 칩(Graviton 등)은 모바일 스마트폰 칩과 달리 빅-리틀(big.LITTLE) 이기종 구조가 아니다! 무려 64개의 코어가 전부 100% 동일한 '단일 종류 빅 코어(Neoverse)'로 구성된 완전 대칭형(SMP)이다. 그런데 커널 세팅이나 배포판 이미지를 모바일/IoT 찌꺼기가 남은 EAS 모드로 켜놓았거나, NUMA 노드 인지형 CFS가 제대로 돌지 못해 스케줄러가 코어 능력을 오판하고 삽질을 한 것이다.
- 아키텍트 판단 (클라우드 맞춤형 커널 튜닝): 서버 아키텍처에서는 전기를 아끼는 EAS 기능 자체를 꺼버리거나, 철저하게 고성능
performanceCPU 거버너(Governor)를 강제해야 한다. 서버용 Arm 환경에서는 CPU가 놀더라도 클럭을 떨어뜨리지 말고 무조건 최대 속도로 대기하게 만들며, 짐 섞기(Load Balancing) 주기를 맹렬하게 당겨서 모든 코어가 100% 피 터지게 일하게 만드는 전통적 CFS 최적화 모드로 회귀해야 한다. 모바일의 약이 서버에선 독이다.
┌───────────────────────────────────────────────────────────────────┐
│ 모바일 기기 배터리 및 발열 방어를 위한 OS 튜닝 계층 │
├───────────────────────────────────────────────────────────────────┤
│ │
│ [ 스마트폰에서 배터리 소모와 발열(Thermal)이 폭주한다! ] │
│ │ │
│ ▼ │
│ [ 1단계: 하드웨어 칩(SoC)의 자체 방어 - Thermal Throttling ] │
│ 온도가 80도 돌파! ──▶ OS 멱살 잡고 강제로 클럭 강등(성능 1/3 토막) │
│ │ │
│ ▼ │
│ [ 2단계: 커널 스케줄러 방어 - EAS (Energy Aware Scheduling) ] │
│ 발열/전력 모델을 감지하여 고사양 게임 스레드를 눈물을 머금고 리틀 코어로 │
│ 밀어내어 천천히 식히며 돌리게 강제 이주(Migration) 시킴 │
│ │ │
│ ▼ │
│ [ 3단계: 유저 스페이스 방어 - Android LMK & Doze Mode ] │
│ 화면 꺼짐. CPU 깨우는 백그라운드 앱들 네트워크 싹 다 끊고(Doze), │
│ 메모리 파먹는 좀비 앱들은 아예 Kill 쳐버림(LMK) │
└───────────────────────────────────────────────────────────────────┘
[다이어그램 해설] 스마트폰이라는 손바닥만 한 쇳덩이는 쿨링팬조차 없다. 배터리는 한 줌이고 칩셋 온도는 1초 만에 90도를 뚫는다. 이 극한의 환경에서 기기가 터지지 않으려면 최하단 하드웨어(칩셋)부터 최상단 자바 앱 프레임워크(Doze)까지 전 우주적인 '전력 쥐어짜기 공조'가 필요하다. EAS는 그 중간 허리에서 소프트웨어의 요구(스레드 부하)와 하드웨어의 한계(전력/온도)를 중재하는 가장 영리하고 복잡한 협상가(Negotiator) 역할을 담당한다.
안티패턴
-
모바일 환경에서 Spinlock의 무지성 남용 (바쁜 대기): 서버 환경(SMP)에서는 코어 1개가 스핀락을 쥐고
while루프를 돌며 대기하는 게 문맥 교환을 없애서 엄청 빠르다고 배웠다. 그걸 모바일 앱이나 IoT 펌웨어에 그대로 적용하는 짓. 스마트폰에서 특정 코어가 의미 없이while(true)를 돌고 있으면, EAS 스케줄러는 "와! 이 스레드는 CPU 100%를 갈구하는 미친 놈(High Load)이구나!"라고 착각하고 즉시 빅 코어(사자)를 잠에서 깨워버린다. 헛바퀴 도는 데 스마트폰 배터리를 1분에 1%씩 증발시켜 폰을 핫팩으로 만드는 최악의 배터리 암살자가 된다. 모바일에선 무조건 Sleep(Mutex) 기반으로 CPU를 놔줘서 코어가 깊은 잠(C-state)에 빠지게 둬야 한다. -
📢 섹션 요약 비유: 친구(락)를 기다릴 때, 밖에서 계속 서성거리며(스핀락) 폰 플래시를 비추고 있으면 경비원(EAS)이 도둑인 줄 알고 대형 탐조등(빅 코어)을 켜서 엄청난 전기세를 유발합니다. 그냥 휴게실에 들어가 불 끄고 조용히 자고(뮤텍스) 있으면 경비원도 보일러 끄고(전원 절약) 같이 잡니다. 모바일에선 절대 나대면 안 됩니다.
Ⅴ. 기대효과 및 결론
정량/정성 기대효과
| 구분 | 레거시 SMP 스케줄러 (CFS) | EAS (에너지 인지 스케줄러) 적용 | 개선 효과 |
|---|---|---|---|
| 정량 (배터리 소모율) | 리틀 코어가 놀 때 무지성으로 빅 코어 깨움 | 빅/리틀 에너지 교차점(Margin) 계산 후 배치 | 스마트폰 대기 전력 및 일상 사용 배터리 타임 20% 이상 연장 |
| 정량 (발열 관리) | 부하가 높으면 무조건 고클럭 유지로 쓰로틀링 | 최적의 저전압/저클럭 지점 탐색 유지 | 발열에 의한 강제 렉(Throttling) 도달 시간 지연 방어 |
| 정성 (UX 일관성) | 백그라운드 작업과 UI 작업이 섞여 버벅임 | cgroup(top-app) 기반 전용 코어 격리 통제 | 스크롤 60fps 우주 방어 및 쾌적한 화면 체감 성능 확보 |
미래 전망
- Apple Silicon (M1/M2 등)의 하드웨어-소프트웨어 수직 계열화: 인텔/ARM 진영이 OS(리눅스)와 칩 제조사가 달라 에너지 모델을 소프트웨어적으로 맞추느라 똥꼬쇼를 했다면, 애플은 칩(M 시리즈)과 OS(macOS, iOS)를 혼자 다 깎아 만들었다. 스케줄러가 부하를 예측할 필요도 없이, 앱의 메타데이터와 하드웨어 칩이 직접 텔레파시 하듯 성능/효율 코어(P/E Core)를 배분해 버리는 극강의 수직 통합이 PC 시장까지 뒤흔들며 배터리 20시간 시대의 뉴노멀을 선언했다.
- Intel Thread Director (이기종 PC 시장 진입): 인텔도 12세대부터 P-Core(빅)와 E-Core(리틀)를 섞어버린 하이브리드 아키텍처를 데스크톱/서버에 출시했다. 멍청한 윈도우 스케줄러가 게임을 E-Core에 던져 렉이 걸리는 대참사를 막기 위해, 인텔 칩 내부에 하드웨어 스케줄러 힌트(Thread Director)를 박아 넣어 OS에게 "이건 무거운 게임이니 P코어로 보내"라고 실시간 훈수를 두는 융합 기술로 PC 스케줄링의 판을 갈아엎고 있다.
참고 표준
- ARM big.LITTLE / DynamIQ: 코어 크기를 달리하여 하나의 칩에 때려 박고, 이들 사이에 캐시 일관성(CCI)을 하드웨어로 보장하여 OS 스케줄러가 마음껏 짐을 옮겨 다닐 수 있게 만든 모바일 칩의 절대 표준 아키텍처.
- Linux HMP (Heterogeneous Multi-Processing) 및 EAS 패치: 리눅스 메인라인(커널 5.x 이상)에 공식 병합되어 구글, 삼성, ARM이 수년간 기여하며 완성시킨 전력 모델링 기반 이기종 코어 스케줄링 서브시스템.
모바일 환경 에너지 인지 스케줄러(EAS)는 "가장 빠른 것이 가장 좋은 것이다"라는 70년간 이어진 컴퓨터 공학의 절대 신앙을 깨부순 이단아다. 인류는 손바닥 위에 세상 모든 지식을 쥐기 위해 연산 속도를 얻는 대신, 전기와 열이라는 가혹한 물리 법칙의 청구서를 받아 들었다. EAS는 가장 게으르고 쪼잔하게 일을 시키는 것이야말로, 한 줌밖에 안 되는 배터리로 하루 종일 세상을 연결해 내는 가장 위대하고 완벽한 운영체제의 지휘법임을 증명해 냈다.
- 📢 섹션 요약 비유: 망치로 못을 박을 때, 예전에는 무조건 무거운 쇠망치(빅 코어)를 꺼내서 전력을 다해 내려치느라 5분 만에 힘이 빠져 지쳤습니다(배터리 고갈). 이제는 못 크기를 살짝 보고 작은 압정(가벼운 스레드)은 장난감 고무망치(리틀 코어)로 툭툭 쳐서 넣고, 굵은 대못이 나올 때만 쇠망치를 들어 올려 하루 종일 지치지 않고 수만 개의 못을 박는 노련한 목수의 완벽한 힘 조절 기술입니다.
📌 관련 개념 맵 (Knowledge Graph)
| 개념 명칭 | 관계 및 시너지 설명 |
|---|---|
| DVFS (동적 전압 주파수 스케일링) | 스케줄러가 특정 코어에 일을 몰아넣었을 때, 그 코어가 버티게 하려고 클럭 속도와 밥(전압) 양을 실시간으로 조절하는 영혼의 파트너다. |
| CFS (Completely Fair Scheduler) | EAS의 토대가 되는 기본 스케줄러로, 공평하게 나누려는 놈(CFS)의 멱살을 잡고 "공평함보다 전기세(배터리)가 먼저다!"라고 틀어버린 게 EAS다. |
| Cgroups (Control Groups) | 안드로이드에서 화면에 켜진 앱(top-app)은 무조건 빅 코어로, 백그라운드 앱은 무조건 리틀 코어 구역으로 물리적으로 가두는 벽 역할을 한다. |
| 문맥 교환 (Context Switch) | 스레드를 빅 코어에서 리틀 코어로 이주(Migration)시킬 때 캐시 무효화라는 대가를 치러야 하므로, 이사 비용과 전기 절약 비용을 저울질하게 만든다. |
| OOM Killer / LMK | 아무리 배터리를 아껴도 램(RAM) 자체가 꽉 차버리면 전력 최적화고 뭐고 다 터지므로, 메모리 바닥에서 빈 공간을 칼같이 확보해 주는 저승사자 파트너다. |
👶 어린이를 위한 3줄 비유 설명
- 폰 안에는 힘세고 밥 엄청 먹는 '사자(빅 코어)'와, 힘은 약하지만 밥을 적게 먹는 '개미(리틀 코어)' 일꾼들이 섞여 살고 있어요.
- 옛날 대장(구형 OS)은 모기 잡는 일(이메일 알림)도 무조건 사자를 깨워서 시켰어요. 사자가 한 번 깨면 밥(배터리)을 너무 많이 먹어 폰이 금방 꺼져버렸죠.
- 새로운 대장(EAS)은 똑똑해서 모기 잡는 일은 개미한테 시키고, 무거운 바위(3D 게임)를 들 때만 사자를 깨워요. 그래서 우리 스마트폰이 안 뜨거워지고 하루 종일 쌩쌩하게 오래갈 수 있답니다!