안드로이드 기반 스마트폰 플랫폼에서 사용하는 온디맨드 거버너 (Ondemand Governor)는 CPU 사용률(Utilization)에 따라 CPU 동작 주파수를 조절한다. CPU 사용률의 변화량은 작업 스케줄링에 의해 영향을 받으며, CPU 동작 주파수 증감에 따라 스마트 폰의 전력 소비량도 증감한다. 따라서 작업 스케줄링 방식에 따라 변하는 CPU 사용률 및 동작 주파수는 스마트폰의 전력 소비에 영향을 미친다. 이에 온디맨드 거버너 정책을 작업 스케줄링 기법에 적용시켜 CPU 사용률 및 전력 소비, 그리고 작업 마감시한 측면에서 비교 분석하였다.
The ondemand governor used in android-based smartphone platforms is a CPU frequency scaling technique. The ondemand governor sets the CPU operating frequency depending on the CPU utilization rate. Job scheduling affects the CPU utilization rate. The power consumption is proportional to the value of operating frequency. Consequently, CPU frequency scaling and CPU utilization rate have an effect on power consumption in a smartphone. In this paper, we evaluated the performance of job scheduling techniques incorporating the ondemand governor in terms of CPU utilization, power consumption, and job deadline miss ratio.
본 논문에서는 제한된 배터리 자원을 사용하는 안드로이드 기반 스마트폰 플랫폼에서 온디맨드 거버너를 적용시킨 작업 스케줄링의 성능을 비교 분석하였다. 온디맨드 거버너는 리눅스 기반 다양한 시스템 플랫폼에서 사용되고 있다[1]. 온디맨드 거버너는 주기적으로 관찰한 CPU 사용률 (Utilization)을 사용하여 CPU 동작 주파수를 조절한다. CMOS 기반 CPU 구동전압은 CPU 동작 주파수 값에 비례하며, CPU 소비 전류량은 CPU 구동 전압에 비례한다[2,3]. 온디맨드 거버너는 CPU 사용률이 임계점 이하가 될 때, CPU 동작주파수를 20%씩 선형으로 감소시킨다. 그리고 동작주파수의 감소는 전류 소비량을 감소시켜 스마트폰의 전력 소비를 감소시킨다. 온디맨드 거버너 외에 보존형 (Conservative), 파워세이브 (Powersave), 그리고 퍼포먼스 (Performance) 거버너가 기본적으로 제공하고 있다[4,5].
참고 문헌 [6]에서는, 온디맨드 거버너 정책을 사용하는 스마트폰이 CPU 동작 주파수에 비례하여 전력을 소비하였다. 참고 문헌 [7]과 [8]에서는 CPU 사용률 증가에 따라 CPU 소비 전류량도 선형으로 증가함을 보여주었다. 그러나 참고 문헌 [6]부터 참고 문헌 [8]까지 수행한 온디맨드 거버너 정책의 성능 평가는 단순히 CPU 사용률에 따른 전력 소비량의 분석이었다.
CPU 사용률의 변화량은 작업 스케줄링에 의해 영향을 받는다. CPU 스케줄링 방식은 작업 보존형 (Work Conserving) 및 비작업 보존형 (Non-Work Conserving) 스케줄링, 실시간 (Real-time) 및 비실시간 (None-realtime)스케줄링, 그리고 선점형 (Preemptive)및 비선점형 (Non-Preemptive)으로 구분된다[9]. 작업 보존형 방식은 처리해야할 작업이 있는 경우, 유휴 시간 없이 해당 작업을 바로 처리한다. 비작업 보존형 방식은 처리해야 할 작업을 바로 처리하지 않고, 일정 시간 동안 유휴 시간을 가진 후 작업을 처리한다. 비실시간 스케줄링과 달리, 실시간 스케줄링 방식은 작업의 실시간 속성을 보장한다. 비선점형 스케줄링과 달리, 선점형 스케줄링 방식에서는 최상위 우선순위를 가진 작업이 CPU 사용권한을 항상 먼저 선점한다.
그림 1은 온디맨드 거버너 성능 평가 과정을 보여준다. 성능 평가 과정의 주요 4개 구성 인자는 (1) 작업 속성, (2) 작업 스케줄링, (3) 스마트폰 CPU 속성, 그리고 (4) 온디맨드 거버너 정책이다. 작업은 실행 요청 시각, 실행 주기, 최악 실행 시간, 그리고 마감 시한 속성을 가진다.
작업 속성 (그림 1-(1))은 성능 평가에 사용되는 작업들의 속성 값이다. 작업은 스케줄링(그림 1-(2))을 통해 실행 순서가 결정되며, CPU (그림 1-(3))에서 실행된다. 그리고 CPU 사용률 변화량에 따라 온디맨드 거버너 정책 (그림 1-(4))이 적용되어 CPU 동작 주파수를 조절한다. 본 논문의 구성은 다음과 같다. II장에서는 온디맨드거버너 정책과 작업 스케줄링간의 상관관계를 분석하였다. III장에서는 온디맨드 거버너 정책을 적용한 작업스케줄링의 시뮬레이션 및 성능 평가를 수행하였다. 마지막으로 IV장에서는 결론을 기술하였다.
온디맨드 거버너 정책의 동작 과정은 표 1과 같다. 본 논문에서는 1GHz Qualcomm QSD8250 Snapdragon ARM 프로세서가 장착된 구글 넥서스 원 (Nexus One) 스마트폰을 사용하였다. 그리고 슈퍼 유저 권한으로 시스템 파일에 접근하기 위하여 루팅을 하였다. 온디맨드 거버너는 샘플링 주기마다 CPU 사용률을 계산하여 CPU 동작 주파수를 증가 혹은 감소시킨다(표 1의 ondemand() 함수 동작 과정). 표 1에서 기술한 변수들은 안드로이드 커널 디렉터리 /sys/devices/ system/cpu/cpuX/cpufreq/ondemand/에 시스템 파일 형태로 존재한다.
온디맨드 거버너 정책의 동작 과정
샘플링 주기는 시스템 파일 cpu_info_transition_latency에 저장된 40ms로 설정하였다 (표 1의 동작 과정 1.1). cpu_info_transition_latency는 CPU가 동작 주파수를 변경하는데 걸리는 지연 시간이다 [10]. 샘플링 주기의 최소 한계값 (sampling_rate_min)은 10ms로 설정하였다(표 1의 동작 과정 1.5). 샘플링 주기 sampling_rate의 최소 한계 값은 sampling_rate_min으로 설정된다 (표 1의 동작 과정 3.2). 온디맨드 거버너의 동작 과정은 다음과 같다. 온디맨드 거버너는 초기 CPU 동작주파수를 최고 주파수 (cpuinfo_max_freq)로 설정한다(표 1의 동작 과정 3.1). 샘플링 주기마다 CPU 사용률이 상위 임계치 (up_threshold) 혹은 하위 임계치 (down_threshold) 범위에 있는지 확인한다 (표 1의 동작 과정 3.5와 3.6). 상위 임계값은 CPU 사용률 80%로 설정하였다 (표 1의 동작 과정 1.4). 샘플링 주기 동안 CPU 사용률이 80% 이상이면, CPU 동작 주파수는 최대 주파수 값으로 설정된다 (표 1의 동작 과정 3.5). 하위 임계값은 CPU 사용률 20%로 설정하였다 (표 1의 동작 과정1.4). 샘플링 주기 동안 CPU 사용률이 20% 이하이면, CPU 동작 주파수를 20%씩 감소시킨다 (표 1의 동작 과정 3.6). 최소 CPU 동작 주파수 (cpuinfo_min_freq) 값은 100MHz로 설정하였다 (표 1의 동작 과정 1.2).
지금까지 살펴본 온디맨드 거버너의 핵심 동작 방식은 CPU 사용률에 따라 동작 주파수를 조절하는 것이다. CPU 사용률의 변화량은 작업 스케줄링 방식에 의해 영향을 받는다. 성능 분석에 적용한 기본 스케줄링 방식은 FCFS (First Come First Service)기반 비실시간 스케줄링과 EDF(Earliest Deadline First)기반 실시간 스케줄링 기법이며, 이를 다음과 같이 변형시켰다.
첫째, EDF는 기본적으로 선점형 (Preemptive) 스케줄링 방식이며, P_EDF (Preemptive EDF)로 표현한다. P_EDF에 대한 변형으로 비선점형 (Non-Preemptive) EDF 스케줄링 방식을 구현하였으며, NP_EDF (Non Preemptive EDF)로 표현한다. NP_EDF 스케줄링은 마감시한이 가장 이른 작업의 실행이 완료되면, 대기 중인 작업들 중에서 마감시한이 가장 이른 작업을 실행할 수 있다. 한편, FCFS는 실행 요청된 순서대로 작업을 처리하는 비선점형 스케줄링 방식이며, NP_FCFS (Non Preemptive FCFS)로 표현한다.
둘째, 작업 실행 시간이 짧은 작업을 먼저 실행하는 JFS (Job First with Shortest Execution Time) 정책을 적용시켜 변형된 FCFS 및 EDF 스케줄링을 구현하였다. JFS 정책을 통해 작업들의 평균 응답 시간을 빠르게 하고 실행 대기 중인 작업들의 마감시한 초과율도 부가적으로 감소시킬 수 있다. 변형된 스케줄링 방식은 NP_FCFS_JFS, P_EDF_JFS, NP_ EDF_JFS 스케줄링이다.
셋째, 비작업 보존형 스케줄링인 작업 그룹기반 스케줄링 (Job Group based Scheduling) 방식을 제안하였다. 첫째와 둘째에서 기술한 스케줄링 방식들은 작업 보존형 스케줄링 방식이다. 구현한 작업 그룹 기반 스케줄링 방식은 JG_NP_FCFS, JG_P_EDF, JG_NP_EDF, JG_NP_ FCFS_JFS, JG_P_EDF_JFS, 그리고 JG_NP_EDF_JFS이다. 작업 그룹 기반 스케줄링에서는 작업 그룹 상수
[표 2.] JG_NP_EDF 스케줄링 방식의 동작 과정
JG_NP_EDF 스케줄링 방식의 동작 과정
JG_NP_EDF 스케줄링에서는 작업 그룹 상수
그림 2는 표 3에서 기술한 3개의 작업이 작업 스케줄링들에 의해 처리되는 동작 과정을 보여준다. 표 3에서
태스크 집합
비선점형 작업 그룹 기반 JG_NP_EDF 스케줄링의 동작 과정을 살펴보면 다음과 같다. 작업 그룹 상수
수식 (1)은 시각
수식 (2)는
수식 (1)에서 시각
실행 유휴 시간은 온디맨드 거버너 정책을 적용한 스마트 폰의 전력 소비량 감소에 영향을 미친다. 그리고 실행 유휴 시간 및 작업 그룹의 형성은 수식 (1)과 수식 (2)에서 기술한
먼저, 성능 분석에 사용되는 작업 집합을 무작위로 생성하는 랜덤 작업 생성 알고리즘을 기술하였다. 작업생성 알고리즘은 표 4와 같다. CPU 사용률은 개별 작업마감시한 분의 작업 실행 시간들의 합으로 계산하였다. 총
작업 생성 알고리즘
표 4에서 기술한 작업 생성 알고리즘의 실행 순서는 다음과 같다. 먼저, 작업의 실행시간을 랜덤하게 생성한다 (표 4의 동작 과정 1.1).
표 4의 동작 과정 1.2 부터 1.6까지는 작업
성능 평가에 사용되는 구글 넥서스 원 (Nexus One) 스마트폰은 1GHz Qualcomm QSD8250 Snapdragon ARM 프로세서를 사용한다. 이 프로세서의 동작 전류량은 CPU 동작 주파수에 따라 변하며, 최대 1GHz에서 240mA/sec, 245MHz에서 70mA/sec, 그리고 19.2MHz에서 25.62mA/sec만큼의 동작 전류량을 소비한다. 동작 주파수는 19.2MHz 단위로 감소하거나 증가하며, 동작 주파수에 따른 전류 소비량은 선형으로 변한다[6,7]. 성능 평가 요소로는 전류 소비량과 작업의 마감시한 초과율, 그리고 실행 유휴 시간을 사용하였다. 표 4에서 제시한 알고리즘을 사용하여 개별 사용률 0.1부터 0.9까지 0.1 단위로 각각 10개의 작업 집합을 생성한 후, 시뮬레이션을 실행하였다. 시뮬레이션 시간은 1시간으로 설정하였다.
그림 3은 작업 보존형 스케줄링 방식인 NP_FCFS, NP_FCFS_JFS, P_EDF, P_EDF_JFS, 그리고 NP_EDF_JFS의 평균 전류 소비량을 보여준다. 작업 보존형 스케줄링은 처리해야 할 작업이 있으면 작업을 계속 처리해야 하므로, 작업 보존형 스케줄링의 종류와 상관없이 개별 작업 집합의 평균 전류 소비량은 동일하였다. 그리고 사용률 증가에 따라 평균 전류 소비량도 선형으로 증가하였다. 온디맨드 거버너 정책은 주기적으로 CPU 사용률을 샘플링하여 동작 주파수를 선형으로 조절하기 때문에 동작 주파수에 따른 전류 소비량도 선형으로 변한다.
그림 4에서는 실행 시간이 짧은 작업을 우선적으로 처리하는 JFS 방식의 마감시한 초과율 성능을 비교하였다. 마감시한을 고려하는 EDF 방식은 JFS 방식에 영향을 받지 않는다. 따라서 그림 4에서는 작업 보존형 스케줄링 방식인 비선점형 NP_FCFS 스케줄링 방식의 평균 및 최악 마감시한 초과율만을 보여준다. 그림 7에서 보는 바와 같이, 실행 시간이 짧은 작업을 우선적으로 실행하는 NP_FCFS_JFS 스케줄링의 마감시한 초과율이 NP_FCFS 스케줄링보다 낮음을 확인하였다.
그림 5는 비작업 보존형 스케줄링 방식이 작업 보존형 스케줄링 방식에 비해 감소된 평균 전류 소비량과 증가된 마감시한 초과율을 보여준다. 전체적으로 비작업 보존형 스케줄링 방식이 작업 보존형 스케줄링 방식보다 낮은 전류량을 소비한다. 그리고 마감시한 초과율 측면에서도 비보존형 작업 스케줄링 방식은 FCFS 방식을 제외하고, 작업 보존형 스케줄링 방식과 매우 유사한 성능을 보여 주었다.
그림 6과 그림 7은 비선점형과 비작업 보존형을 동시에 고려한 스케줄링 기법에서 성능이 가장 우수한 JG_NP_EDF_ JFS 스케줄링 방식의 세부 성능을 보여준다. 성능 분석에 사용한 사용률은 0.4와 0.7이며, 작업그룹 상수 값에 따라 변하는 평균 소비 전류 및 마감 시한이다. 작업 그룹 상수 25까지는 작업 그룹 상수 값이 증가하면, 실행 유휴 시간이 증가하여 전류 소비량이 감소하는 경향을 보여준다. 그러나 실행 유휴 시간의 증가로 인해 작업의 마감시한 초과율도 증가하는 경향을 보여준다. II장의 식 (2)에서 기술한 바와 같이, 작업그룹 상수가 증가하는 경우, 작업 그룹 내에 포함되는 작업의 수가 증가하여 실행 유휴 시간이 감소하여 전류 소비량은 증가한다. 그리고 작업 보존형 스케줄링 방식의 소비 전류량 및 마감 시한 초과율에 수렴한다. 또한 작업 그룹 상수가 증가하는 경우, 작업 그룹 내에 포함되는 작업의 수가 증가하기 때문에 해당 작업들의 마감시한 초과율은 감소한다.
안드로이드 기반 앱 환경에서는 선점형 스케줄링을 적용하지 못한다. 이에 비선점형에서 성능이 가장 우수한 JG_NP_EDF_JFS 및 NP _EDF_JFS 스케줄링을 스마트 폰에 적용하였다. 그림 8은 이러한 환경에서 소비된 전류량을 보여준다. 스마트폰에 장착된 배터리 용량은 1400mAh이다. 사용한 실험 환경은 리눅스 환경에 TCP 서버를 운영하며, 스마트 폰과 와이파이를 통해400K바이트 메시지를 30분 동안 계속해서 송수신한다. 각각의 메시지는 마감시한을 가지며 각각의 메시지는 스케줄링에서 처리해야 할 작업으로 대응된다. 작업 그룹 상수 값은 마감시한 초과율이 가장 낮고 전류 소비가 가장 작은 작업 그룹 상수 값을 JG_NP_EDF_JFS에 사용하였다. 비작업 보존형 스케줄링 방식 JG_NP_EDF_JFS에서는 실행 유휴 시간동안 와이파이 네트워크 인터페이스가 수면 모드로 전환되어 전력 소비를 감소시킬 수 있으며, CPU 동작 주파수도 온디맨드 거버너 정책에 의해 감소되기 때문에 전체 전력 소비를 감소시킬 수 있었다.
작업 스케줄링 기법의 성능 분석 결과를 정리하면 다음과 같다. 온디맨드 거버너의 핵심 동작 방식은 샘플링 주기 동안 발생한 CPU 사용 시간을 측정한다. 측정된 CPU 사용 시간을 샘플링 주기로 나누어 계산된 CPU 사용률 (Utilization)에 따라 동작 주파수를 조절하는 것이다. CPU 사용 시간과 CPU 유휴 시간을 포함한 CPU 사용률의 변화량은 작업 스케줄링에 의해 영향을 받는다. 즉 온디맨드 방식과 작업 스케줄링간의 밀접한 연관이 있음을 확인하였다. 그리고 CPU 사용률과 동작 주파수 변화는 스마트폰의 전력 소비량 변화에 영향을 미치는 것을 확인하였다. 제안한 비작업 보존형 스케줄링인 작업 그룹기반 스케줄링 (Job Group based Scheduling) 방식이 온디맨드 거버너 정책을 사용하는 경우 전력 소비와 작업 마감시한 보장 측면에서 우수한 성능을 보여주었다 .
온디맨드 거버너 정책을 사용하는 안드로이드 기반스마트 플랫폼에서는 실행 유휴 시간이 스마트 폰의 전력 소비를 감소시킬 수 있는 중요한 성능 인자이다. 이에 본 논문에서는 작업들 간에 실행 유휴 시간을 생성하는 비작업 보존형 스케줄링 기법을 제안하여 작업 보존형 스케줄링 기법과 성능을 비교 분석하였다. 성능분석을 수행한 결과, 비작업 보존형 스케줄링 방식이 전력 소비 및 마감 시한 측면에서 우수한 성능을 제공하였다.