디지털 라이브러리[ 검색결과 ]
Scudo 메모리 할당자의 메모리 사용 효율성 분석
http://doi.org/10.5626/JOK.2023.50.2.103
모바일 시스템에서는 다양한 어플리케이션이 제한된 메모리 용량을 공유하기 때문에 메모리 사용량을 최적화하는 것이 중요하다. 안드로이드의 기본 메모리 할당자인 Scudo는 힙-메모리 관련 취약점 완화와 메모리 할당 성능 최적화를 고려하려 설계되었지만, 메모리 사용량 측면의 비효율성이 존재한다. 본 논문에서는 Scudo의 구조와 동작 방식을 기반으로 두 가지 문제에 대해 분석한다. 첫 번째로 고정 개수의 로컬캐시의 할당으로 인한 문제를 분석하며, 이후 두 번째로는 비효율적인 프리 청크 관리 정책으로 인해 발생하는 페이지 내부 단편화 문제에 대해 분석한다. 분석 결과, 안드로이드의 고정 개수의 로컬캐시로 인해 어플리케이션의 특징에 따라 성능 측면의 오버헤드 및 메모리 낭비가 발생함을 확인하였으며, 지속적인 메모리 할당 및 해제가 반복되는 경우 사이즈 클래스에 따라 메모리의 90% 이상이 해제된 경우에도 페이지의 내부 단편화 문제로 인해 페이지 회수가 진행되지 않는 문제를 확인하였다.
안드로이드 시스템에서 CPU 성능 간섭을 완화하기 위한 데드라인 태스크 관리 기법
http://doi.org/10.5626/JOK.2020.47.1.11
안드로이드 리눅스 커널에서는 대부분의 작업이 공평하게 수행되기 때문에 시간 민감성이 있는 응용의 수행에 지연이 발생할 수 있다. 특히 미디어 데이터 처리나 지문인식과 같은 생체 인식에 지연이 발생하면 사용자의 불편을 초래하기 때문에, 시간적 제약이 있는 작업들을 데드라인 태스크로 수행할 필요가 있다. 그러나 현재 안드로이드 환경에서 데드라인 스케줄러를 사용할 경우 두 가지 문제점이 발생할 수 있다. 첫째로 데드라인 태스크가 수행되면서 CPU의 소모전류를 크게 증가시킬 수 있으며, 둘째로 데드라인 태스크의 높은 우선순위로 인해 기존에 수행 중이던 일반 태스크의 성능저하를 유발할 수 있다. 본 논문에서는 안드로이드 환경에서 일반 태스크에 주는 영향을 감소시키면서 소모전류를 높이지 않고 데드라인 태스크를 수행하는 방법을 제안한다. 실험 결과 제안 기법이 기존 데드라인 스케줄러 대비 약 10%의 성능을 향상시켰으며, CPU 주파수를 효과적으로 사용해 소모전류를 증가시키지 않음을 확인하였다.
CPU 사용량을 고려한 고성능 저장장치 기반 가상화 시스템의 I/O 완료 처리 기법
http://doi.org/10.5626/JOK.2019.46.7.612
최근 Samsung Z-SSD 및 Intel Optane SSD와 같은 고성능 저장장치의 등장으로 인해 시스템의 I/O 성능 오버헤드가 저장장치에서 소프트웨어 I/O 계층으로 이동하였다. 이로 인해 하이퍼바이저 및 운영체제는 고성능 저장장치의 성능을 최대한 활용하기 위해 I/O 완료 처리 기법 중 하나인 폴링 방식의 효용성을 주목하고 있으며, 하이브리드 폴링(Hybrid Polling) 및 적응형 폴링(Adaptive Polling)과 같은 새로운 기법들을 적용하여 사용하고 있다. 본 논문은 QEMU-KVM 하이퍼바이저에서 제공하는 적응형 폴링 방식의 문제점을 설명한 뒤, 고성능 저장장치의 응답 시간을 최대한으로 활용하면서 CPU 사용량을 감소시키는 새로운 I/O 완료 처리 기법을 제안한다. 실험 결과, 제안된 기법은 64KB 이하 크기의 I/O 요청에 대해 기존 기법 대비 최대 5.3% 지연된 응답 시간을 보여주지만, CPU 사용량은 최대 39.7% 감소한 것을 확인할 수 있다.