모바일 OS 환경의 사용자 반응성 향상 기법 533 모바일 OS 환경의 사용자 반응성 향상 기법 (Enhancing Interactivity in Mobile Operating Systems) 배선욱 김정한 (Sunwook Bae) 엄영익 (Young Ik Eom) (Junghan Kim) 요 약 사용자 반응성은 컴퓨팅 시스템에서 가장 중요 한 요소 중에 하나이고, 전통적인 데스크탑 환경에서 이를 향상시키려는 많은 연구가 진행되어 왔다. 하지만, 최근에 등장하고 있는 스마트폰과 태블릿 PC와 같은 모바일 환경 에서 사용자 반응성을 향상시키는 연구는 거의 진행이 되 지 않았는데, 이를 위해서는 기존과는 다른 접근 방식이 요 구된다. 즉, 작은 화면 크기와 제한적인 입력 방법들로 인 해 여러 프로세스들이 동시에 실행되고 있지만, 실제 사용 자와 상호 작용을 하는 것은 최상위에 보여지는 프로세스 하나임을 고려해야 한다. 본 논문에서는 모바일 환경에서 최상위(topmost) 프로세스를 찾고, 이를 지원함으로써 사용 자 반응성을 향상시키는 시스템을 제안한다. 이 시스템은 OS의 핵심 요소 중의 하나인 프로세스 스케줄러와 I/O 프 리페처를 변경하여 반응성을 향상시킨다. 또한 실제 안드로 이드 모바일 플랫폼에 이를 구현 및 적용을 하여 실험을 해본 결과, 기존의 시스템 대비 최대 16%의 성능 향상이 있음을 확인할 수 있다. 키워드 : 사용자 반응성, 최상위 프로세스, 모바일 환경, 운영체제 본 연구는 지식경제부 및 정보통신산업진흥원의 대학 IT연구센터 육성 지원사업의 연구결과로 수행되었음(NIPA-2012-(H0301-12-3001)) 이 논문은 제38회 추계학술발표회에서 모바일 환경에서 사용자 반응성 향상을 위한 OS 지원 기법 의 제목으로 발표된 논문을 확장한 것임 학생회원 : 성균관대학교 DMC 공학과 swbae98@ece.skku.ac.kr 학생회원 : 성균관대학교 컴퓨터공학과 junghan@ece.skku.ac.kr 종신회원 : 성균관대학교 컴퓨터공학과 교수 yieom@ece.skku.ac.kr (Corresponding author임) 논문접수 : 2012년 1월 2일 심사완료 : 2012년 3월 15일 CopyrightC2012 한국정보과학회ː개인 목적이나 교육 목적인 경우, 이 저작 물의 전체 또는 일부에 대한 복사본 혹은 디지털 사본의 제작을 허가합니다. 이 때, 사본은 상업적 수단으로 사용할 수 없으며 첫 페이지에 본 문구와 출처 를 반드시 명시해야 합니다. 이 외의 목적으로 복제, 배포, 출판, 전송 등 모든 유형의 사용행위를 하는 경우에 대하여는 사전에 허가를 얻고 비용을 지불해야 합니다. 정보과학회논문지: 컴퓨팅의 실제 및 레터 제18권 제7호(2012.7) Abstract Interactivity is one of the most important factors in the computing systems. There has been a lot of research to improve the interactivity in traditional desktop environments. However, few research studies have been done for interactivity enhancement in mobile systems such as smart phones and tablet PCs. Different approaches are required to improve the interactivity of the mobile systems. Even if multiple processes are running in a mobile system, there is only one topmost process which interacts with the user due to the resource constraints including small screen sizes and limited input methods. In this paper, we propose the system which identifies the topmost process and enhances the interactivity. Our system improves the CPU process scheduler and I/O prefetcher in the mobile operating system. We also implement the proposed system on the Android mobile platform and performed several experiments. The experimental results show that the performance is increased up to 16% compared to that of the existing platform. Key words : Interactivity, Topmost process, Mobile system, Operating system 1. 서 론 최근 컴퓨팅 하드웨어의 급속한 발전에도 불구하고 멀티 태스킹과 소프트웨어 복잡도의 증가 등의 이슈로 사용자 반응성에 관한 문제는 여전히 존재하고 있다. 대 부분의 프로세스들은 동시에 실행이 되는데, 원활하게 실행되기 위해서는 충분한 시스템 자원들, 즉 메모리, CPU, I/O 자원 등이 필요하다. 전통적인 데스크탑 환경 에서는 이와 같은 시스템 자원들을 사용자에게 가장 중요 하다고 판단되는 프로세스들, 즉 인터랙티브(interactive) 프로세스들에게 우선적으로 할당한다. 모바일 환경에서 도 멀티 태스킹 기능을 지원하지만, 제한된 시스템 자원 들로 인해 데스크탑 환경에 비하여 성능이 낮다. 그러므 로 모바일 환경에서 사용자 반응성을 향상시키는 것이 더욱 중요해진다. 데스크탑 환경의 OS 측면에서 사용자 반응성을 향상 시키기 위한 많은 연구들이 진행되어 왔지만, 모바일 환 경에서는 거의 연구가 이루어지지 않았다. 데스크탑 환 경에서는 한 화면에 여러 포그라운드(foreground) 프로 세스들을 띄워서 작업을 하는 것이 가능하다. 예를 들 면, 워드 프로세서 작업을 하면서 계산기나 번역 프로그 램도 한 화면에서 동시에 작업을 할 수 있다. 모바일 환 경에서도 기존 데스크탑 환경과 같이 멀티 태스킹 기능 을 지원하지만, 사용자 반응성 측면에서는 다른 접근 방 식이 필요하다. 즉, 작은 화면 크기와 터치 기반의 입력 방식 등의 제한으로 인해 멀티 태스킹을 지원함에도 불 구하고 사용자와 상호 작용을 하는 프로세스는 최상
534 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제 18 권 제 7 호(2012.7) 그림 1 모바일 환경의 최상위 프로세스 위에 보여지는 최상위 프로세스 하나임을 고려하여야 한다[1]. 따라서 모바일 환경에서의 사용자 반응성은 그 림 1과 같은 최상위 프로세스의 성능에 따라 달라지게 된다. 본 논문은 모바일 환경의 특성을 고려하여 사용자 반 응성을 향상시키기 위한 시스템을 제안한다. 이 시스템 은 최상위 프로세스를 찾고, 이를 지원해줌으로써 모바 일 환경의 사용자 반응성을 향상시키는데, 특히, 프로세 스 스케줄러와 I/O 데이터의 프리페칭 메커니즘을 향상 시켜서 이를 지원한다. 런타임 오버헤드가 작으며 기존 의 OS 시스템을 최소한으로 수정하여 구현할 수 있다 는 장점을 가진다. 본 논문의 기여 항목은 다음과 같다. 작은 런타임 오버헤드로 인터랙티브 프로세스를 찾는 방법 사용자 반응성의 향상을 위한 프로세스 스케줄링과 I/O 프리페칭 기법의 적용 모바일 환경에서 사용자 반응성을 향상시킨 최초의 연구 본 논문의 구성은 다음과 같다. 2장에서는 사용자 반 응성 향상과 관련된 기존 연구에 대해서 알아보고, 3장 에서는 제안 기법에 대하여 설명한다. 4장에서는 안드로 이드 모바일 플랫폼에 제안 기법을 적용하여 평가 및 분석을 하고 5장에서는 결론 및 향후 연구 계획을 소개 하며 마무리하도록 한다. 2. 관련 연구 2.1 리눅스 커널의 프로세스 스케줄러 리눅스 커널 스케줄러는 2.6 버전에 와서 많은 변화가 있었다. 2.6 버전에서는 이전과 다른 O (1) 스케줄러가 도입 되었는데[2,3], 여기서는 두 가지 방식으로 인터랙 티브 프로세스에 우선 순위를 부여함으로써 사용자 반 응성을 향상시켰다. 첫 번째는 프로세스의 평균 슬립 시 간을 분석하여 인터랙티브 프로세스들에 동적 우선 순 위 보너스를 부여한 것이고[2], 두 번째는 타임 슬라이 스(time slice)를 모두 소진하더라도 익스파이어드 (expired) 큐로 옮기지 않고 그대로 액티브(active) 큐 에 남아 있도록 함으로써 다른 프로세스들로 인한 지연 이 덜 생기도록 한 것이다[2]. 커널 2.6.23 버전부터는 Completely Fair Scheduler(CFS)가 도입되었다[4]. CFS 스케줄러는 기본적으로 멀티프로세스 환경에 적합 하도록 모든 프로세스가 CPU 할당 시간을 공평하게 분 배 받을 수 있도록 개선한 것이다. 그렇지만 CFS 스케 줄러에서도 자주 슬립하고 있는 프로세스들은 스케줄링 시 사용되는 vruntime 값을 조절하여 사용자 반응성을 감소시키지 않도록 처리한다[5]. 위의 리눅스 커널 스케줄러 연구들은 인터랙티브 프 로세스들을 찾을 때 모두 평균 슬립 시간이라는 제한된 정보를 이용한다. 따라서 비록 스케줄러 측면에서의 성 능과 확장성 등이 개선되기는 했지만, 제한된 정보를 기 반으로 하므로 올바른 인터랙티브 프로세스들을 찾는 데에 어려움이 있다. 2.2 인터랙티브 프로세스 구별 기법 연구 Etsion[6]은 인터랙티브 프로세스뿐만 아니라 CPU 리소스를 많이 필요로 하는 멀티미디어 관련 프로세스 들도 같이 찾고, OS스케줄러에서 이들을 지원하는 방법 을 제안하였다. 이 논문에서는 해당 프로세스들을 Human-Centered(HuC) 프로세스라고 정의하였으며, 화 면에 출력되는 데이터를 분석해서 구별해내는 방법을 제안했다. 특히 백그라운드(background) 프로세스들이 많이 실행되고 있는 상황에서도 HuC 프로세스들의 성 능이 저하되지 않고 실행되는 것을 실험적으로 보였다. 그렇지만 특정 멀티미디어 프로세스들에 한정된 방법이 어서 일반화 시키기가 어렵고, 또한 모바일 환경에서는 멀티미디어 관련 프로세스 이외에도 메신저 어플리케이 션 등과 같은 인터랙티브 프로세스들이 다수 존재하기 때문에 모바일 환경에는 적합하지 않은 방법이다. Zheng[7]은 프로세스의 성격이 동적으로 변한다는 점 에 초점을 맞추었다. 따라서 여러 프로세스들을 모니터 링 하면서 사용자 인터랙션(user interaction)이 발생하 는 경우가 있으면 그 시점에서 프로세스 스케줄러가 해 당 프로세스의 우선 순위를 높이는 것으로 사용자 반응 성을 향상시키는 RSIO 기법을 제시했다. 하지만 인터랙 티브 프로세스를 찾는 방법으로 제시한 I/O 채널 중 터 미널 디바이스, 마우스 디바이스 등은 모바일 환경에서 는 적용할 수 없고, 또한 단순히 OS 스케줄러에서 프로 세스의 우선 순위만 조절하는 것으로는 사용자 반응성 을 향상시키는 것에 한계가 있다. 3. 제안 기법 3.1 최상위 프로세스 구별 최상위 프로세스를 찾는 방법은 각 모바일 OS 및 플 랫폼 환경에 따라 달라진다. 특히 UI 및 원도우 시스템 에서 해당 정보를 관리하기 때문에 단순히 OS 커널 단
모바일 OS 환경의 사용자 반응성 향상 기법 535 표 1 oomkilladj 변수 값에 따른 구분표 Group oomkilladj 변수값 SYSTEM -16 FOREGROUND_APP 0 VISIBLE_APP 1 SECONDARY_SERVER 2 HIDDEN_APP 7 CONTENT_PROVIDER 14 EMPTY_APP 15 에서 처리하는 것은 불가능하다. 안드로이드 모바일 플 랫폼의 경우, 메모리 부족 현상을 해결하기 위해 기존의 리눅스 커널에 로우 메모리 킬러(low memory killer) 모듈을 추가하였는데, 이를 이용하면 최상위 프로세스를 찾을 수 있다. 이 모듈은 UI 처리를 담당하는 activity manager와 연동이 되어 OS 커널에서 프로세스 정보를 다루는 task_struct 구조체의 oomkilladj 값을 프로세스 의 우선 순위에 따라 표 1과 같이 7개의 그룹으로 설정 을 하게 된다. 그리고 이를 이용하여 메모리 부족 현상 이 발생할 경우, EMPTY_APP, HIDDEN_APP 그룹과 같이 중요성이 떨어지는 프로세스들을 종료시키는 역할 을 한다[8]. 우리는 그러나 반대로 0의 값을 갖는 FOREGROUP_APP 그룹의 정보를 이용하여 최상위 프 로세스를 구별해 내도록 한다. 이 방법은 인터랙티브 프 로세스들을 찾기 위하여 평균 슬립 시간이나 I/O 채널 정보들을 분석하는 기존 연구들과 비교해볼 때, 작은 런 타임 오버헤드를 갖는 장점이 있다. 3.2 스케줄러 지원 최상위 프로세스의 사용자 반응성 향상을 위해서 여 러 OS 기법을 이용할 수 있지만, 우리는 먼저 프로세스 스케줄링 시 가중치를 부여하여 CPU 리소스를 추가적 으로 할당하는 방법을 제안한다. 이 방법은 백그라운드 프로세스들이 많이 실행되는 상황에서도 최상위 프로세 스의 사용자 반응성이 크게 저하되지 않는 장점이 있다. 본 논문에서는 그림 2와 같은 방법으로 안드로이드 에 뮬레이터에서 로우 메모리 킬러 모듈을 이용하여 최상 위 프로세스를 찾은 후 스케줄링 시 가중치를 부여하도 록 구현하였다. 먼저 프로세스의 정보를 저장하고 있는 각 task_struct 구조체에 최상위 변수를 추가한 후, false 값으로 초기화를 시킨다. 이후 activity manager 와 로우 메모리 킬러 모듈의 연동 과정을 모니터링하며 최상위 프로세스 정보를 획득하면, 해당 프로세스의 최 상위 변수 값을 true로 만들고 프로세스 스케줄러 쪽에 해당 정보를 전달한다. 스케줄러에서는 이 변수 값을 이 용하여 스케줄링 작업 시 최상위 프로세스의 우선 순위 를 부여하도록 구현함으로써 다른 프로세스들보다 좀 더 CPU 리소스를 할당 받을 수 있게 한다. 마지막으로 그림 2 스케줄러 지원 관련 작업 흐름 최상위 프로세스가 변하게 되면 새로운 프로세스의 최 상위 변수 값을 true로 설정하고, 이전 프로세스는 false 로 변경하여 스케줄링 시 우선 순위를 조절할 수 있게 처리한다. 3.2 I/O 지원 프로세스 스케줄링 과정에서 최상위 프로세스에게 CPU 리소스를 추가적으로 할당하여도, I/O 성능이 병목 이 되면 어플리케이션의 반응성이 떨어지게 된다. 더구 나 최근의 어플리케이션들은 게임, 음악, 영화 등과 같이 큰 데이터를 처리하고 있다. 따라서 이와 같은 데이터들 을 메모리에 미리 올려서 I/O 지연시간을 줄이는 I/O 프리페칭 기법은 매우 효과적이다. 본 논문에서는 그림 3 과 같이 리눅스 커널에서 I/O 작업 시 프리페칭 방법의 하나로 사용 중인 미리 읽기(read-ahead) 부분을 수정 하여 사용자 반응성을 개선하는 방법을 제안한다. 리눅스 커널에서는 I/O 데이터를 순차적으로 접근 하 는 경우에만 미리 읽기 기법을 적용하여 미리 일정한 크기의 데이터를 메모리에 읽어 들인 후, 이를 이용하도 록 구현이 되어 있다. 하지만 우리는 순차적인 접근뿐만 아니라 추가로 사용자 반응성을 고려한 미리 읽기 기법 을 제안한다. 즉, 최상위 프로세스가 요청한 I/O 데이터 의 읽기 작업 여부를 동적으로 체크하여 인접한 데이터 를 미리 메모리에 올리게 된다. 이때 사용되는 미리 읽 기 버퍼의 최대 크기는 리눅스 커널에서는 고정이 되어 있으나 우리는 이 크기를 최상위 프로세스의 경우에는 8배로 늘리도록 구현하였다. 이와 같은 방법은 적은 수 정으로도 최상위 프로세스의 I/O 성능을 높이고 사용자 반응성을 개선할 수 있다. 그림 3 I/O 프리페칭 지원 관련 작업 흐름
536 정보과학회논문지 : 컴퓨팅의 실제 및 레터 제 18 권 제 7 호(2012.7) 4. 평가 및 분석 실험은 인텔 코어 i5 2.40 GHz 프로세서, 4 GB 메모 리 및 리눅스 우분투 10.10 버전이 설치된 환경에서 진 행하였다. 우리는 안드로이드 2.2 프로요 에뮬레이터에 서 리눅스 커널 소스를 수정하여 제안된 시스템을 구현 하였다. 실험에 사용된 워크로드는 3가지 인데, 우리가 자체적 으로 만든 CPU, I/O 지향적인 마이크로 벤치마크와 린 팩(Linpack) 벤치마크[9] 프로그램이다. 린팩은 오랫동안 사용되어 온 벤치마크 프로그램으로 MFLOPS(Million Floating-point Operations Per Second) 값을 통해서 최상위 프로세스의 성능을 측정할 수 있다. 따라서 안드 로이드 에뮬레이터와 제안한 시스템의 이들 벤치마크 수치를 비교해보면 최상위 프로세스의 성능을 비교해볼 수 있으므로 사용자 반응성의 개선 여부를 파악할 수 있다. 우선 자체 제작한 CPU 지향적인 마이크로 벤치마크 로는 1부터 1000000까지의 범위를 가지는 중첩된 반복 문을 실행하며 덧셈 연산을 하는 안드로이드 프로그램 을 작성하였다. 이 벤치마크를 스케줄러에서 최상위 프 로세스의 우선 순위를 조정한 것과 하지 않은 것을 나 누어 실험을 진행하였다. 각각 50회 반복 수행하여 걸린 시간의 평균값은 그림 4와 같다. 첫 번째 그래프는 이 벤치마크를 단독으로 실행 한 것이고, 두 번째 그래프는 동일한 벤치마크 10개를 백그라운드 스트레스로 준 상 황에서 측정한 값이다. 첫 번째 그래프는 4%의 성능 개 선, 두 번째 그래프는 16%의 성능 개선 상황을 보여준다. 즉, 일반적으로 백그라운드 스트레스가 증가하면, 최상 위 프로세스의 성능이 저하가 되어 사용자 반응성이 나 빠지는데 이를 스케줄러에서 구별하여 우선 순위를 조 절함으로써 이전과 같은 성능을 보여줄 수 있게 되었다. I/O 지향적인 마이크로 벤치마크 프로그램은 30MB의 크기를 가지는 데이터 파일을 대상으로 48 바이트씩 순 차적으로 읽어 들이면서 파일의 마지막 위치에 도착할 그림 5 I/O 마이크로 벤치마크의 평균 수행 시간 그림 6 린팩 1.2.8 벤치마크를 수행한 결과 때까지 걸리는 시간을 측정하도록 작성하였다. I/O 데이 터의 미리 읽기 작업 시 미리 읽어 들이는 버퍼의 최대 크기는 각각 8배, 16배로 증가시켰고, 10회 실행 후 측 정한 평균값은 그림 5와 같다. 최대 크기를 8배로 증가 시켰을 경우는 5%의 성능 개선을 보였고, 16배로 증가 시켰을 때는 7%의 성능 개선을 보였다. 다음 실험은 린팩 1.2.8 벤치마크 프로그램을 수행해 서 수치를 비교해보았는데, 5회씩 수행 후 측정한 평균 값은 그림 6과 같다. 린팩 벤치마크 프로그램을 바로 수 행할 경우에는 두 값이 차이가 없으나, 마이크로 벤치마 크 10개를 백그라운드 스트레스들로 준 상황에서는 수 치가 18 배 이상의 큰 차이가 발생한다. 컴퓨팅 시스템 에서는 보통 백그라운드 작업들이 많아지게 될수록 최 상위 프로세스의 성능이 저하된다. 그러나 우리가 제안 한 시스템에서는 최상위 프로세스를 찾은 후 OS에서 이를 지원해주기 때문에 백그라운드 작업들이 많은 상 황에서도 꾸준한 성능을 보여줄 수 있게 된다. 5. 결론 및 향후 연구 그림 4 CPU 마이크로 벤치마크의 평균 수행 시간 본 논문에서는 모바일 환경에서 사용자 반응성을 향 상시킨 시스템을 제안하였다. 이 시스템은 사용자 반응 성에 가장 큰 영향을 미치는 최상위 프로세스를 찾은 후 이를 OS에서 프로세스 스케줄러에서의 우선 순위
모바일 OS 환경의 사용자 반응성 향상 기법 537 부여와 I/O 프리페칭 기법을 적용하여 지원하였다. 실제 안드로이드 모바일 플랫폼에 구현하여 적용한 결과 자 체 제작한 CPU, I/O 마이크로 벤치마크 프로그램에서 는 각각 평균 16%, 7%의 성능 개선을 보였다. 또한 린 팩 벤치마크 프로그램을 통해서 확인한 결과 18배 성능 향상이 있음을 보여주었다. 향후에는 메모리와 디스크 I/O 스케줄링 등을 고려하는 추가 연구를 진행할 계획 이다. 특히 데스크탑 환경에서 쓰이는 기법이 아닌 모바 일 환경에 맞는 기법들을 추가적으로 조사하고 연구할 계획이다. 참 고 문 헌 [1] H. Falaki, R. Mahajan, S. Kandula, D. Lymberopoulos, R. Govindan, and D. Estrin, "Diversity in Smartphone Usage," Mobile Systems, Applications and Services (MobiSys), Jun. 2010. [2] D. P. Bovet and M. Cesati, "Understanding the Linux Kernel," 3rd Ed., O'Reilly, 2006. [3] I. Molnar and C. Kolivas. Interactivity in Linux 2.6 Scheduler. http://www.kerneltrap.org/node/780. 2003. [4] I. Molnar. Linux CFS Scheduler. http://kerneltrap. org/node/11737. 2007. [5] C. S. Wong, I. K. T. Tan, R. D. Kumari, J. W. Lam, and W. Fun, "Fairness and Interactive Performance of O(1) and CFS Linux Kernel Schedulers," in Information Technology, 2008. ITSim 2008. [6] Y. Etsion, D. Tsafrir and D. G. Feitelson, "Process Prioritization Using Output Production: Scheduling for Multimedia," ACM Transactions on Multimedia Computing, Communications and Applications, Nov. 2006. [7] H. Zheng and J. Nieh, "RSIO: Automatic User Interaction Detection and Scheduling," in Proc. of the 2010 ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems, Jun. 2010. [ 8 ] Linux/drivers/staging/android/lowmemorykiller.c, http://lxr.free-electrons.com/source/drivers/staging/ android/lowmemorykiller.c?v=2.6.29. [9] Linpack for Android, http://www.greenecomputing. com/apps/linpack.