KR20200080165A - 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법 - Google Patents

모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법 Download PDF

Info

Publication number
KR20200080165A
KR20200080165A KR1020190170007A KR20190170007A KR20200080165A KR 20200080165 A KR20200080165 A KR 20200080165A KR 1020190170007 A KR1020190170007 A KR 1020190170007A KR 20190170007 A KR20190170007 A KR 20190170007A KR 20200080165 A KR20200080165 A KR 20200080165A
Authority
KR
South Korea
Prior art keywords
cache
file
context information
application
priority
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
KR1020190170007A
Other languages
English (en)
Other versions
KR102278583B1 (ko
Inventor
박상오
김성조
이재환
남상혁
박승우
곽수환
김경찬
Original Assignee
중앙대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 중앙대학교 산학협력단 filed Critical 중앙대학교 산학협력단
Publication of KR20200080165A publication Critical patent/KR20200080165A/ko
Application granted granted Critical
Publication of KR102278583B1 publication Critical patent/KR102278583B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • G06F2003/0691

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 사용자 식별자(UID: User identifier)를 기준으로 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 파일의 상황정보를 수집하는 상황정보 수집부, 상기 수집된 상황정보를 기준으로 상기 파일의 캐시 우선순위를 분석하고, 상기 파일을 순차적으로 애플리케이션 저장소에 기록하여 상기 상황정보를 가공하는 상황정보 가공부, 상기 가공된 상황정보를 리눅스 커널로 공유하거나, 상기 리눅스 커널 내부 레이어 간 공유를 수행하는 상황정보 공유부, 상기 공유된 상황정보를 기준으로 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 입출력 스케줄링을 수행한 후, 상기 수행된 입출력 스케줄링에 따라 입출력을 수행하는 입출력 수행부를 포함하여 리눅스 커널의 입출력 스택의 각 레이어 간의 정보 공유를 통해 각 레이어의 구성요소 간 협동적 동작을 구현할 수 있는 파일 입출력 관리 기술을 제공할 수 있는 효과를 가진다.

Description

모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법{Context information File I/O management system and method for mobile devices}
본 발명은 모바일 기기에서의 파일 입출력 관리 기술에 관한 것으로서, 보다 상세하게는 입출력 스택의 각 레이어 간 정보 공유를 통해 효율적인 파일의 입출력을 관리할 수 있도록 하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법에 관한 것이다.
모바일 장치에서의 애플리케이션 동작 간의 실행시간을 줄여 애플리케이션의 반응성을 높이고, 이를 통해 사용자의 사용경험을 높이기 위해서 파일 입출력 스택 및 파일시스템의 성능향상을 위한 많은 연구들이 이루어지고 있다.
그 중 리눅스 커널의 입출력 스케줄러 관련 연구들이 많이 진행되고 있는데, 이러한 연구들은 리눅스 커널 입출력 스택의 하부에 있는 입출력 스케줄러만을 대상으로 개선이 이루어졌기 때문에, 입출력 스택의 VFS 레이어나 유저 애플리케이션과 같은 상위 레이어에서 발생할 수 있는 비효율성에 대해서는 하위 레이어에서 얻을 수 있는 정보가 한정되어 있기 때문에 개선의 한계가 명확한 한계점을 안고 있다.
한편, 모바일 장치에서 주 저장장치로 쓰이는 플래시 메모리는 입출력 특성이 하드디스크와 크게 다르기 때문에, 하드디스크를 고려하여 설계된 ext4 파일시스템 대신 플래시 메모리의 특성에 적합한 f2fs 파일시스템이 개발되었다.
f2fs 파일시스템은 NAND 기반 저장소의 특성을 활용하여 하드웨어 저장장치의 FTL 특성에 따라 segment, section, zone으로 구성된 디스크 레이아웃을 가지며, segment는 FTL의 접근단위(NAND Page), section은 FTL의 삭제단위(NAND Block)로 설정하며, zone은 기본적으로 section과 같은 크기로 설정되나, 사용자가 설정할 수 있도록 하여 FTL의 병렬성을 활용할 수 있도록 한다.
또한, 특정 위치의 데이터를 덮어쓰기 위해서 먼저 삭제단위(NAND Block)만큼 삭제를 한 다음에 새 데이터를 써야하는 NAND 플래시 메모리의 특성을 고려하여 데이터를 덮어 쓰는 것이 아닌, 새로운 데이터를 바뀐 부분만 기록하는 방식의 LFS(Log-structured file system)형식을 취한다. 또한, 주기적으로 조각난 파일을 모으는 방식을 취하여 하드웨어 저장장치에서 불필요한 데이터의 복제 혹은 삭제를 줄이도록 하여 스마트폰에 주로 쓰이는 NAND 기반 저장장치 장치에 적합하며 기존 ext4 파일 시스템보다 더 높은 성능을 보여준다.
다만 마찬가지로, 리눅스 입출력 스택 중 하나의 레이어인 파일시스템의 개선만 이루어졌기 때문에, 해당 레이어 상위 레이어와 하위 레이어에서 발생하는 비효율성에 대해서는 개선이 이루어지지 않은 한계점을 안고 있다.
기존 연구들은 운영체제 입출력 스택의 일부분을 개선하여 모바일 장치에서의 입출력 성능을 개선시키기 위한 연구들이었으나, 리눅스 입출력 스택 레이어 간 제한된 정보 교환으로 인한 레이어 간 비효율성에 대한 연구가 부족하고, 이를 해결하기 위한 스택 전반의 협업을 통한 개선에 대한 연구는 미흡한 한계점이 있다.
또한, 스마트폰에서 보여지는 애플리케이션의 특수한 실행 패턴을 활용한 개선보다는 순차 입출력, 랜덤 입출력 등 일반적인 입출력 특성만을 고려하여 연구가 진행된 바 있다.
미국공개특허공보 제2017-0052979호
이에 본 발명은 상기와 같은 종래의 제반 문제점을 해소하기 위해 제안된 것으로, 리눅스 커널의 입출력 스택의 각 레이어 간의 정보 공유를 통해 각 레이어의 구성요소 간 협동적 동작을 구현할 수 있는 파일 입출력 관리 기술을 제공하는 것을 목적으로 한다.
또한, 본 발명은 스마트폰의 애플리케이션 실행패턴을 활용하여 애플리케이션 실행에 걸리는 시간을 줄임으로써 사용자가 더 빠르게 애플리케이션을 사용할 수 있도록 하고, 향상된 사용자 경험을 제공할 수 있도록 하는 것을 목적으로 한다.
또한, 본 발명은 애플리케이션에 대한 파일의 상황정보를 가공 및 공유함으로써, 다른 모듈에서도 활용할 수 있도록 하는 것을 목적으로 한다.
또한, 본 발명은 캐시된 파일을 우선순위에 따라 분류함으로써, 캐시된 파일의 효율적인 관리를 도모하는 것을 목적으로 한다.
또한, 본 발명은 앞으로 필요할 수 있는 파일을 미리 메모리로 읽음으로써, 파일의 캐시 적중률을 높이는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템은, 사용자 식별자(UID: User identifier)를 기준으로 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 파일의 상황정보를 수집하는 상황정보 수집부, 상기 수집된 상황정보를 기준으로 상기 파일의 캐시 우선순위를 분석하고, 상기 파일을 순차적으로 애플리케이션 저장소에 기록하여 상기 상황정보를 가공하는 상황정보 가공부, 상기 가공된 상황정보를 리눅스 커널로 공유하거나, 상기 리눅스 커널 내부 레이어 간 공유를 수행하는 상황정보 공유부, 상기 공유된 상황정보를 기준으로 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 입출력 스케줄링을 수행한 후, 상기 수행된 입출력 스케줄링에 따라 입출력을 수행하는 입출력 수행부를 포함할 수 있다.
이 때 상황정보 수집부에서 수집되는 상황정보는 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 접근 횟수, 사용 시간에 기초한 사용빈도 점수를 포함할 수 있다.
사용빈도 점수는 하기 수학식 1로 표현되는 애플리케이션 사용빈도 점수 산출식을 이용하여 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 사용빈도를 산출할 수 있다.
<수학식 1>
Figure pat00001
(uid: 애플리케이션의 ID,
Figure pat00002
: 애플리케이션 uid의 사용빈도 점수,
Figure pat00003
: 7일 간 애플리케이션 uid의 접근 횟수들의 집합,
Figure pat00004
: 7일 간 애플리케이션 uid의 사용 시간들의 집합,
Figure pat00005
: 일별 애플리케이션 uid의 접근 횟수,
Figure pat00006
: 일별 애플리케이션 uid의 사용 시간)
상기 상황정보 가공부는 상기 수집된 상황정보에 기초한 캐시 적중률 점수에 따라 상기 파일에 대한 캐시 우선순위를 분류하는 캐시 우선순위 분류부, 상기 분류된 캐시 우선순위 중 기 설정된 우선순위 캐시에 해당하는 파일을 상기 애플리케이션 저장소에 기록하는 파일 기록부를 포함할 수 있다.
상기 캐시 적중률 점수는 하기 수학식 2로 표현되는 캐시 적중률 점수 산출식을 이용하여 상기 수집된 상황정보에 기초한 상기 파일에 대한 캐시 적중률 점수를 산출할 수 있다.
<수학식 2>
Figure pat00007
(inode: 파일의 inode ID,
Figure pat00008
: 캐시 적중률 점수,
Figure pat00009
: 읽기 캐시 적중 수의 집합,
Figure pat00010
: 쓰기 캐시 적중 수의 집합,
Figure pat00011
: 파일 inode의 읽기 캐시 적중 수,
Figure pat00012
: 파일 inode의 쓰기 캐시 적중 수)
상기 캐시 우선순위 분류부는 상기 캐시 적중률 점수가 상위 1/3 이상이면 높은 우선순위 캐시(High priority cache)로 분류하고, 상기 캐시 적중률 점수가 상위 2/3 이상 1/3 미만이면 표준 우선순위 캐시(Normal priority cache)로 분류하고, 상기 캐시 적중률 점수가 2/3 미만이면 낮은 우선순위 캐시(Low priority cache)로 분류할 수 있다.
한편, 본 발명의 기술적 사상에 의한 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템은, 상기 높은 우선순위 캐시는 우선순위 큐(Priority queue)로 관리하고, 상기 표준 우선순위 캐시는 LRU 큐로 관리하고, 상기 낮은 우선순위 캐시는 FIFO 큐로 관리하는 캐시 관리부를 더 포함할 수 있다.
또한, 상기 높은 우선순위 캐시(High priority cache)에 해당하는 파일을 단일파일과 다중파일로 구분하여 미리읽기(Readahead)를 각각 수행하는 미리읽기 수행부를 더 포함할 수 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법은, 상황정보 수집부에서 사용자 식별자(UID: User identifier)를 기준으로 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 파일의 상황정보를 수집하는 상황정보 수집단계, 상황정보 가공부에서 상기 수집된 상황정보를 기준으로 상기 파일의 캐시 우선순위를 분석하고, 상기 파일을 순차적으로 애플리케이션 저장소에 기록하여 상기 상황정보를 가공하는 상황정보 가공단계, 상황정보 공유부에서 상기 가공된 상황정보를 리눅스 커널로 공유하거나, 상기 리눅스 커널 내부 레이어 간 공유를 수행하는 상황정보 공유단계, 입출력 수행부에서 상기 공유된 상황정보를 기준으로 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 입출력 스케줄링을 수행한 후, 상기 수행된 입출력 스케줄링에 따라 입출력을 수행하는 입출력 수행단계를 포함할 수 있다.
이 때 상기 상황정보 수집단계에서 수집되는 상황정보는 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 접근 횟수, 사용 시간에 기초한 사용빈도 점수를 포함할 수 있다.
상기 사용빈도 점수는 하기 수학식 1로 표현되는 애플리케이션 사용빈도 점수 산출식을 이용하여 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 사용빈도를 산출할 수 있다.
<수학식 1>
Figure pat00013
(uid: 애플리케이션의 ID,
Figure pat00014
: 애플리케이션 uid의 사용빈도 점수,
Figure pat00015
: 7일 간 애플리케이션 uid의 접근 횟수들의 집합,
Figure pat00016
: 7일 간 애플리케이션 uid의 사용 시간들의 집합,
Figure pat00017
: 일별 애플리케이션 uid의 접근 횟수,
Figure pat00018
: 일별 애플리케이션 uid의 사용 시간)
상기 상황정보 가공단계는 캐시 우선순위 분류부에서 상기 수집된 상황정보에 기초한 캐시 적중률 점수에 따라 상기 파일에 대한 캐시 우선순위를 분류하는 캐시 우선순위 분류단계, 파일 기록부에서 상기 분류된 캐시 우선순위 중 기 설정된 우선순위 캐시에 해당하는 파일을 상기 애플리케이션 저장소에 기록하는 파일 기록단계를 포함할 수 있다.
상기 캐시 적중률 점수는 하기 수학식 2로 표현되는 캐시 적중률 점수 산출식을 이용하여 상기 수집된 상황정보에 기초한 상기 파일에 대한 캐시 적중률 점수를 산출할 수 있다.
<수학식 2>
Figure pat00019
(inode: 파일의 inode ID,
Figure pat00020
: 캐시 적중률 점수,
Figure pat00021
: 읽기 캐시 적중 수의 집합,
Figure pat00022
: 쓰기 캐시 적중 수의 집합,
Figure pat00023
: 파일 inode의 읽기 캐시 적중 수,
Figure pat00024
: 파일 inode의 쓰기 캐시 적중 수)
상기 캐시 우선순위 분류단계는 상기 캐시 적중률 점수가 상위 1/3 이상이면 높은 우선순위 캐시(High priority cache)로 분류하고, 상기 캐시 적중률 점수가 상위 2/3 이상 1/3 미만이면 표준 우선순위 캐시(Normal priority cache)로 분류하고, 상기 캐시 적중률 점수가 2/3 미만이면 낮은 우선순위 캐시(Low priority cache)로 분류할 수 있다.
캐시 관리부에서 상기 높은 우선순위 캐시는 우선순위 큐(Priority queue)로 관리하고, 상기 표준 우선순위 캐시는 LRU 큐로 관리하고, 상기 낮은 우선순위 캐시는 FIFO 큐로 관리할 수 있다.
미리읽기 수행부에서 상기 높은 우선순위 캐시(High priority cache)에 해당하는 파일을 단일파일과 다중파일로 구분하여 미리읽기(Readahead)를 각각 수행할 수 있다.
본 발명에 의한 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법에 따르면,
첫째, 리눅스 커널의 입출력 스택의 각 레이어 간의 정보 공유를 통해 각 레이어의 구성요소 간 협동적 동작을 구현할 수 있는 파일 입출력 관리 기술을 제공할 수 있는 효과를 가진다.
둘째, 스마트폰의 애플리케이션 실행패턴을 활용하여 애플리케이션 실행에 걸리는 시간을 줄임으로써 사용자가 더 빠르게 애플리케이션을 사용할 수 있도록 하고, 향상된 사용자 경험을 제공할 수 있는 효과를 가진다.
셋째, 애플리케이션에 대한 파일의 상황정보를 가공 및 공유함으로써, 다른 모듈에서도 활용할 수 있는 효과를 가진다.
넷째, 캐시된 파일을 우선순위에 따라 분류함으로써, 캐시된 파일을 효율적으로 관리할 수 있는 효과를 가진다.
다섯째, 앞으로 필요할 수 있는 파일을 미리 메모리로 읽음으로써, 파일의 캐시 적중률을 높일 수 있는 효과를 가진다.
도 1은 일반적인 리눅스 커널 입출력 스택을 나타낸 구성도.
도 2는 본 발명의 실시예로서, 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템을 나타낸 구성도.
도 3은 본 발명의 실시예로서, 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법을 나타낸 순서도.
도 4는 본 발명의 실시예에 따라 본 발명의 시스템을 안드로이드 운영체제에 적용한 구성도를 나타낸 도면.
도 5는 본 발명의 실시예에 따른 본 발명의 성능 평가 중, 애플리케이션 실행시간 테스트 결과를 나타낸 도면.
도 6은 본 발명의 실시예에 따른 본 발명의 성능 평가 중, 캐시 적중률 테스트 결과를 나타낸 도면.
도 7은 본 발명의 실시예에 따른 본 발명의 성능 평가 중, 읽기 속도 테스트 결과를 나타낸 도면.
첨부한 도면을 참조하여 본 발명의 실시예들에 의한 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법에 대하여 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
또한, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1은 일반적인 리눅스 커널 입출력 스택을 나타낸 구성도이다.
도 1을 참조하면, 일반적인 리눅스 커널 입출력 스택은 VFS(Virtual File System) 레이어, 블록 레이어(Block Layer), 디바이스 드라이버(Device Drivers) 등을 포함하여, 상위 애플리케이션(Applications)이 하드디스크나 플래시 저장소와 같은 보조 저장장치에 데이터를 읽거나 쓸 수 있도록 지원할 수 있다.
(1) VFS(Virtual File System) 레이어
리눅스 커널 입출력 스택에서 VFS(Virtual File System) 레이어는 블록저장소 기반의 파일시스템(Block-based File System), 네트워크 기반 파일시스템(Network File System), 동적으로 생성되는 데이터를 파일의 형태로 제공하는 수도 파일시스템(Pseudo File System), 장치 드라이버나 메인 메모리 공간을 제공하는 특수 파일시스템(Special File system) 등 여러가지 형태로 제공될 수 있는 파일 시스템들에서 공통적으로 사용하는 기능들을 정의하고, 통합적으로 관리 및 사용할 수 있도록 추상화 레이어를 제공하는 역할을 한다.
(2) 파일 시스템(File System)
리눅스 커널 입출력 스택에서 파일 시스템(File System)은 데이터를 관리하기 위하여 데이터 저장 체계와 접근방법 등을 제공하는 시스템이라 할 수 있다. 리눅스에서는 이 데이터를 파일이라는 단위로 처리를 할 수 있다. 리눅스는 다양한 파일시스템들을 지원하며, 대표적으로 하드디스크나 SSD와 같은 블록 저장장치에 사용되는 Ext3,4와 같은 Ext 계열 파일시스템과, 컨트롤러가 없는 NAND 메모리와 같은 MTD(Memory Technology Device) 저장장치에 사용되는 JFFS2, YAFFS와 같은 파일시스템들을 제공할 수 있다.
(3) 페이지 캐시(Page Cache)
리눅스 커널 입출력 스택에서 페이지 캐시(Page Cache)는 보조 저장장치에 대한 캐시를 제공하며, 모든 입출력은 페이지 캐시를 거쳐서 이루어질 수 있다. 페이지 캐시는 보조 저장장치에서 읽어온 데이터와 보조 저장장치에 써야할 데이터를 모두 페이지라는 단위로 관리를 할 수 있다. 이 때 이 페이지들은 메인 메모리에서 현재 사용 중이 아닌 공간에 할당을 하도록 하여 보조 저장장치 입출력에 대한 캐시로서 사용되어 매번 느린 보조 저장장치에서 데이터를 읽어오지 않고 빠른 주 메모리에서 바로 캐시 된 데이터를 읽어올 수 있도록 하여 입출력 성능을 높일 수 있도록 할 수 있다.
(4) 블록 레이어(Block Layer)
리눅스 커널 입출력 스택에서 블록 레이어(Block Layer)는 하드웨어 저장장치에 직접 접근하기 위한 레이어로, 하드웨어 저장장치에서 임의의 데이터를 임의의 위치에서 읽어오거나 쓸 수 있다. 이 때, 리눅스 블록 레이어는 하드웨어 저장장치로의 입출력의 단위로 bio를 사용하는데, 기본적으로 bio 구조체는 입출력을 수행할 저장장치의 영역 정보와 입출력을 수행할 데이터를 저장하기 위한 메모리 영역의 정보를 포함할 수 있다. 저장장치의 영역 정보는 sector_t 단위로 지정되며, 이 값은 대부분의 저장장치들의 최소 입출력 단위인 512 Byte로 고정되어 있고, 입출력을 수행할 메모리 영역의 정보는 페이지 단위로 지정되며, 이 때 페이지는 보통 4096 Byte라 할 수 있다.
또한, 블록 레이어는 입출력의 우선순위에 대한 조절을 위하여 입출력 스케줄러를 포함하고 있으며, 이 입출력 스케줄러는 하드웨어 저장장치로 요청을 보내기 전에 입출력 요청들을 합치거나 정렬하여 더 높은 입출력 성능을 낼 수 있도록 할 수 있다.
(5) 입출력 스케줄러(IO Scheduler)
리눅스 커널은 기본적으로 Noop 스케줄러, Deadline 스케줄러, CFQ(Completely Fair Queuing), 3개의 입출력 스케줄러(IO Scheduler)를 제공할 수 있다.
Noop 스케줄러는 가장 단순한 스케줄러로, FIFO(First In First Out) 큐로 들어오는 요청을 처리할 수 있다. 이 스케줄러는 가장 낮은 스케줄링 지연을 제공하며 요청을 재정렬 하지 않기 때문에 고성능의 하드웨어 컨트롤러를 장착한 저장장치에 사용하기에 적합할 수 있다.
Deadline 스케줄러는 입출력 요청에 데드라인을 할당하고, 데드라인이 가까운 요청부터 처리하며, 입출력의 처리량보다 지연시간 감소에 최적화된 스케줄러이며, 일반적으로 낮은 지연시간을 필요로 하는 실시간 시스템에 적합할 수 있다.
CFQ 스케줄러는 프로세스별 큐를 만들어 입출력 요청을 처리하며, 모든 프로세스가 공평하게 입출력을 처리할 수 있도록 처리시간을 할당하여 다수의 프로세스에서 입출력 요청이 발생하는 상황에서 좋은 성능을 가질 수 있다. 대다수의 운영환경은 다수의 프로세스가 입출력 요청을 발생시키기 때문에 리눅스 커널에서는 CFQ 스케줄러를 기본 입출력 스케줄러로 사용하고 있다.
도 2는 본 발명의 실시예로서, 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템을 나타낸 구성도이다.
도 2를 참조하면, 본 발명의 실시예에 따른 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템은 상황정보 수집부(100), 상황정보 가공부(200), 상황정보 공유부(300), 입출력 수행부(400)를 포함할 수 있다.
상황정보 수집부(100)는 사용자 식별자(UID: User identifier)를 기준으로 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 파일의 상황정보를 수집할 수 있다.
이 때 상황정보 수집부(100)에서 수집되는 상황정보는 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 접근 횟수, 사용 시간에 기초한 사용빈도 점수를 포함할 수 있다.
상기 사용빈도 점수는 하기 수학식 1로 표현되는 애플리케이션 사용빈도 점수 산출식을 이용하여 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 사용빈도를 산출할 수 있다.
<수학식 1>
Figure pat00025
(uid: 애플리케이션의 ID,
Figure pat00026
: 애플리케이션 uid의 사용빈도 점수,
Figure pat00027
: 7일 간 애플리케이션 uid의 접근 횟수들의 집합,
Figure pat00028
: 7일 간 애플리케이션 uid의 사용 시간들의 집합,
Figure pat00029
: 일별 애플리케이션 uid의 접근 횟수,
Figure pat00030
: 일별 애플리케이션 uid의 사용 시간)
상황정보 가공부(200)는 상기 수집된 상황정보를 기준으로 상기 파일의 캐시 우선순위를 분석하고, 상기 파일을 순차적으로 애플리케이션 저장소에 기록하여 상기 상황정보를 가공할 수 있다.
보다 상세하게, 상황정보 가공부(200)는 캐시 우선순위 분류부(210), 파일 기록부(230)를 포함할 수 있다.
캐시 우선순위 분류부(210)는 상기 수집된 상황정보에 기초한 캐시 적중률 점수에 따라 상기 파일에 대한 캐시 우선순위를 분류할 수 있다.
캐시 우선순위 분류부(210)는 상기 캐시 적중률 점수가 상위 1/3 이상이면 높은 우선순위 캐시(High priority cache)로 분류하고, 상기 캐시 적중률 점수가 상위 2/3 이상 1/3 미만이면 표준 우선순위 캐시(Normal priority cache)로 분류하고, 상기 캐시 적중률 점수가 2/3 미만이면 낮은 우선순위 캐시(Low priority cache)로 분류할 수 있다.
상기 캐시 적중률 점수는 하기 수학식 2로 표현되는 캐시 적중률 점수 산출식을 이용하여 상기 수집된 상황정보에 기초한 상기 파일에 대한 캐시 적중률 점수를 산출할 수 있다.
<수학식 2>
Figure pat00031
(inode: 파일의 inode ID,
Figure pat00032
: 캐시 적중률 점수,
Figure pat00033
: 읽기 캐시 적중 수의 집합,
Figure pat00034
: 쓰기 캐시 적중 수의 집합,
Figure pat00035
: 파일 inode의 읽기 캐시 적중 수,
Figure pat00036
: 파일 inode의 쓰기 캐시 적중 수)
파일 기록부(230)는 상기 분류된 캐시 우선순위 중 기 설정된 우선순위 캐시에 해당하는 파일을 상기 애플리케이션 저장소에 기록할 수 있다.
상황정보 공유부(300)는 상기 가공된 상황정보를 리눅스 커널로 공유하거나, 상기 리눅스 커널 내부 레이어 간 공유를 수행할 수 있다.
입출력 수행부(400)는 상기 공유된 상황정보를 기준으로 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 입출력 스케줄링을 수행한 후, 상기 수행된 입출력 스케줄링에 따라 입출력을 수행할 수 있다.
한편, 도 2에 도시된 바와 같이 본 발명의 실시예에 따른 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템은 캐시 관리부(510), 미리읽기 수행부(530)를 더 포함할 수 있다.
캐시 관리부(510)는 상기 높은 우선순위 캐시는 우선순위 큐(Priority queue)로 관리하고, 상기 표준 우선순위 캐시는 LRU 큐로 관리하고, 상기 낮은 우선순위 캐시는 FIFO 큐로 관리할 수 있다.
미리읽기 수행부(530)는 상기 높은 우선순위 캐시(High priority cache)에 해당하는 파일을 단일파일과 다중파일로 구분하여 미리읽기(Readahead)를 각각 수행할 수 있다.
도 3은 본 발명의 실시예로서, 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법을 나타낸 순서도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법은 상황정보 수집단계(S100), 상황정보 가공단계(S200), 상황정보 공유단계(S300), 입출력 수행단계(S400)를 포함할 수 있다.
상황정보 수집단계는 상황정보 수집부(100)에서 사용자 식별자(UID: User identifier)를 기준으로 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 파일의 상황정보를 수집할 수 있다(S100).
상황정보 수집단계(S100)에서 수집되는 상황정보는 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 접근 횟수, 사용 시간에 기초한 사용빈도 점수를 포함할 수 있다.
사용빈도 점수는 하기 수학식 1로 표현되는 애플리케이션 사용빈도 점수 산출식을 이용하여 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 사용빈도를 산출할 수 있다.
<수학식 1>
Figure pat00037
(uid: 애플리케이션의 ID,
Figure pat00038
: 애플리케이션 uid의 사용빈도 점수,
Figure pat00039
: 7일 간 애플리케이션 uid의 접근 횟수들의 집합,
Figure pat00040
: 7일 간 애플리케이션 uid의 사용 시간들의 집합,
Figure pat00041
: 일별 애플리케이션 uid의 접근 횟수,
Figure pat00042
: 일별 애플리케이션 uid의 사용 시간)
상황정보 가공단계는 상황정보 가공부(200)에서 상기 수집된 상황정보를 기준으로 상기 파일의 캐시 우선순위를 분석하고, 상기 파일을 순차적으로 애플리케이션 저장소에 기록하여 상기 상황정보를 가공할 수 있다(S200).
보다 상세하게, 상황정보 가공단계(S200)는 캐시 우선순위 분류단계(S210), 파일 기록단계(S230)를 포함할 수 있다.
캐시 우선순위 분류단계는 캐시 우선순위 분류부(210)에서 상기 수집된 상황정보에 기초한 캐시 적중률 점수에 따라 상기 파일에 대한 캐시 우선순위를 분류할 수 있다(S210).
캐시 적중률 점수는 하기 수학식 2로 표현되는 캐시 적중률 점수 산출식을 이용하여 상기 수집된 상황정보에 기초한 상기 파일에 대한 캐시 적중률 점수를 산출할 수 있다.
<수학식 2>
Figure pat00043
(inode: 파일의 inode ID,
Figure pat00044
: 캐시 적중률 점수,
Figure pat00045
: 읽기 캐시 적중 수의 집합,
Figure pat00046
: 쓰기 캐시 적중 수의 집합,
Figure pat00047
: 파일 inode의 읽기 캐시 적중 수,
Figure pat00048
: 파일 inode의 쓰기 캐시 적중 수)
캐시 우선순위 분류단계(S210)는 상기 캐시 적중률 점수가 상위 1/3 이상이면 높은 우선순위 캐시(High priority cache)로 분류하고, 상기 캐시 적중률 점수가 상위 2/3 이상 1/3 미만이면 표준 우선순위 캐시(Normal priority cache)로 분류하고, 상기 캐시 적중률 점수가 2/3 미만이면 낮은 우선순위 캐시(Low priority cache)로 분류할 수 있다.
그리고 상기 분류된 높은 우선순위 캐시, 표준 우선순위 캐시, 낮은 우선순위 캐시는 캐시 관리부(510)에서 각각 관리할 수 있다. 캐시 관리부(510)에서 상기 높은 우선순위 캐시는 우선순위 큐(Priority queue)로 관리하고, 상기 표준 우선순위 캐시는 LRU 큐로 관리하고, 상기 낮은 우선순위 캐시는 FIFO 큐로 관리할 수 있다.
미리 읽기 수행부(530)에서는 상기 높은 우선순위 캐시(High priority cache)에 해당하는 파일을 단일파일과 다중파일로 구분하여 미리읽기(Readahead)를 각각 수행할 수 있다.
파일 기록단계는 파일 기록부(230)에서 상기 분류된 캐시 우선순위 중 기 설정된 우선순위 캐시에 해당하는 파일을 상기 애플리케이션 저장소에 기록할 수 있다(S230).
상황정보 공유단계는 상황정보 공유부(300)에서 상기 가공된 상황정보를 리눅스 커널로 공유하거나, 상기 리눅스 커널 내부 레이어 간 공유를 수행할 수 있다(S300).
입출력 수행단계는 입출력 수행부(400)에서 상기 공유된 상황정보를 기준으로 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 입출력 스케줄링을 수행한 후, 상기 수행된 입출력 스케줄링에 따라 입출력을 수행할 수 있다(S400).
도 4는 본 발명의 실시예에 따라 본 발명의 시스템을 안드로이드 운영체제에 적용한 구성도를 나타낸 도면이다.
도 4를 참조하면, 본 발명의 실시예에 따라 본 발명의 시스템을 안드로이드 운영체제에 적용한 구성도는 Context Analysis 모듈, VFS/FD Mapper, Context-aware Readahead, Context-ware Cache Queue, Context-ware Defragger, CFQ-CA를 포함할 수 있다.
먼저, Context Analysis 모듈은 안드로이드 운영체제에서 애플리케이션을 구동하는 Android Framework 레이어에서 애플리케이션 별 정보 및 리눅스 커널 입출력 스택에서 생성된 정보의 수집과 분석을 통해, 하위 모듈들이 활용할 수 있는 상황인지 정보를 생성할 수 있다.
Context Analysis 모듈은 상황정보 수집부에 해당하는 I/O Context Manager(100), 상황정보 가공부에 해당하는 I/O Context Analyzer(200)를 포함할 수 있다.
(1) I/O Context Manager(100)
I/O Context Manager(100)는 본 발명의 시스템이 적용된 안드로이드 운영체제의 하위 모듈들에서 사용할 수 있는 애플리케이션 사용통계, 파일 사용통계 등의 상황정보들을 수집하고 관리할 수 있다. I/O Context Manager(100)에서는 애플리케이션 단위 별 상황정보를 수집할 수 있다.
모든 애플리케이션의 파일 사용통계를 지속적으로 수집하고 분석하는 것은 시스템 오버헤드가 크며, 스마트폰에서의 12% 정도의 애플리케이션이 전체 애플리케이션 사용시간의 50% 이상을 차지하고, 65% 정도의 애플리케이션이 전체 애플리케이션 실행 빈도의 80% 이상을 보이는 특성을 고려하였을 때, 모든 애플리케이션의 파일 사용통계를 수집하는 것은 비효율적이라 할 수 있다.
이에 사용자가 자주 사용하는 애플리케이션에 대해서만 파일 사용통계를 수집하기 위해서 안드로이드 시스템에서 애플리케이션을 구별하는 단위인 uid를 기준으로 애플리케이션 사용통계를 수집한 후, 파일 사용통계 컨텍스트(상황정보)를 수집할 대상 애플리케이션을 선정할 수 있다.
대상 애플리케이션 선정을 위해, I/O Context Manager(100)에서는 애플리케이션 접근횟수 및 사용시간을 측정할 수 있다. 스마트폰에서 애플리케이션 사용패턴에 따르면, 일간 사용통계가 사용자가 주로 사용하는 애플리케이션을 파악하기 위한 최소단위로써 적합하고, 주간 사용통계가 주로 사용하는 애플리케이션의 변화를 파악하기 위한 단위로 적합할 수 있다. 이에 일별 애플리케이션 접근횟수 및 사용시간을 측정하여 기록을 하고, 이전 7일 간의 접근횟수 및 사용시간의 평균값으로 주별 애플리케이션 접근횟수 및 사용시간을 생성할 수 있다.
생성된 애플리케이션 접근횟수 및 사용시간은 해당 애플리케이션의 사용빈도 점수를 추정하는 데에 사용되며, 애플리케이션의 사용빈도 점수는 하기 수학식 1을 통해 산출할 수 있다. 이 때 사용되는 변수들은 아래 표 1과 같다.
<수학식 1>
Figure pat00049
<표 1>
Figure pat00050
각 애플리케이션마다 구해진 사용빈도 점수를 기반으로 상위 N개의 애플리케이션에 대해 파일 사용통계 컨텍스트를 수집 및 저장하여, 해당 애플리케이션들의 입출력 요청에 대해서 CAFIO 모듈들이 동작하여 입출력 성능을 향상시킬 수 있도록 할 수 있다.
I/O Context Manager(100)에서 수집하는 파일 사용 통계는 애플리케이션 별 사용되는 각 파일들의 사용빈도와 두 개 이상의 파일 간 접근 패턴, 이 두 가지를 수집할 수 있다. 애플리케이션 별 파일의 사용빈도는 특정 파일이 얼마나 많이 사용되는지를 나타내며, 수집된 값에 따라 Hot, Warm, Cold 세 가지로 분류하여 관리할 수 있다. 그리고 애플리케이션 별 파일 간 접근 패턴은 해당 애플리케이션이 파일을 읽은 순서를 기록하며, 사용빈도에 따라 분류가 Hot인 파일들에 대해서만 추적을 하도록 하여 시스템 오버헤드를 줄일 수 있도록 할 수 있다.
애플리케이션 별 파일의 사용빈도는 하기 알고리즘 1에 따라 수집되며, 파일시스템 상 파일의 Inode ID, VFS단에서의 읽기/쓰기 횟수, 파일 열기 횟수를 수집할 수 있다.
<알고리즘 1>
Figure pat00051
상기 알고리즘 1의 onFileOpen은 Linux커널의 VFS 레이어에서 파일 사용통계 수집 대상인 애플리케이션이 파일을 열 때 호출되며, 해당 파일에 대한 통계를 inode를 통해 얻어온 다음 Read/Write 카운트를 1씩 늘려주는 역할을 할 수 있다.
onFileRead는 마찬가지로 Linux커널의 VFS에서 파일 사용 통계 수집 대상인 애플리케이션이 파일을 읽을 때 호출되며, 해당 파일에 대한 통계를 inode를 통해 얻어온 다음 Read 카운트를 1씩 늘려주는 역할을 할 수 있다.
이 때, 파일을 마지막으로 읽은 시점에서 Timeout만큼의 시간이 지나지 않았다면 Read 카운트를 늘리지 않을 수 있다. 이는 일반적으로 파일의 크기가 큰 경우 연속적인 읽기가 많이 발생할 수 있는데, 이 경우 모든 읽기 작업을 접근횟수로 카운트할 때 파일의 용량에 비례하여 Read 카운트가 늘어나기 때문에 실제 파일의 사용빈도를 측정하는데 문제가 되기 때문이다.
마찬가지로 onFileWrite에서도 onFileRead와 동일하게 동작하며, Linux커널의 VFS에서 파일 사용 통계 수집 대상인 애플리케이션이 파일을 쓸 때 호출될 수 있다.
(2) I/O Context Analyzer(200)
I/O Context Analyzer(200)는 I/O Context Manager(100)에서 수집한 정보를 활용하여 본 발명의 시스템이 적용된 안드로이드 운영체제의 다른 모듈들에서 사용할 수 있도록 정보를 가공할 수 있다.
이 때 I/O Context Analyzer(200)는 캐시 관리부에 해당하는 Context-aware Cache Queue(510)에서 사용하기 위한 파일별 캐시 우선순위를 분석 및 분류하는 캐시 우선순위 분류부(210)를 포함할 수 있다.
캐시 우선순위 분류부(210)의 파일별 캐시 우선순위는 I/O Context Manager(100)에서 수집된 파일의 사용빈도를 이용하여 분류를 하며, 이의 분륩방법은 아래 표 2를 참조할 수 있다.
<표 2>
Figure pat00052
이 때, High priority cache 그룹은 우선순위를 구하기 위하여 각 파일의 캐시 적중 횟수를 분석하여 읽기 캐시 적중 수와 쓰기 캐시 적중 수를 추적할 수 있다. 읽기 캐시 적중 수는 읽기 캐시가 적중된 페이지수를 추적하도록 하며, 쓰기 캐시 적중 수는 읽기-수정-쓰기가 수행된 횟수를 추적하며, 쓰기의 크기가 파일시스템의 블록사이즈보다 작은 경우도 추적하도록 할 수 있다.
추적된 읽기 캐시 적중 수와 쓰기 캐시 적중 수는 매 시간마다 적중률을 산출하기 위해 계산되거나 읽기, 쓰기 캐시 적중 수를 저장하고 있는 변수가 최대값에 도달했을 때 수행될 수 있다.
캐시 적중률을 정규화한 캐시 적중률 점수는 하기 수학식 2를 통하여 산출할 수 있으며, 이 때 사용되는 변수들은 아래 표 3을 참조할 수 있다.
<수학식 2>
Figure pat00053
<표 3>
Figure pat00054
또한, I/O Context Analyzer(200)는 미리읽기 수행부에 해당하는 Context-aware Readahead(530)에서 사용하기 위한 파일의 순차 접근 패턴을 분석 및 기록하는 파일 기록부(230)를 포함할 수 있다.
파일 기록부(230)의 파일 순차 접근 패턴은 I/O Context Manager(100)에서 수집된 파일의 사용빈도를 이용하여, 파일의 사용빈도가 Hot인 파일을 대상으로 순차적으로 읽힌 파일들의 순서를 기록할 수 있다. 이는 추후 Context-aware Readahead(530)에서 해당 기록을 사용할 수 있도록 하며, 하기 알고리즘 2에 따라 분석되어 분류되게 할 수 있다.
<알고리즘 2>
Figure pat00055
상기 알고리즘 2의 onFileOpen은 Linux커널의 VFS에서 파일 사용통계 수집 대상인 애플리케이션이 파일을 열 때 호출되며, 파일의 순차 접근 패턴을 분석하도록 할 수 있다.
파일의 순차 접근 패턴 분석의 오버헤드를 줄이고 불필요한 통계를 수집하는 것을 막기 위하여 Line 3에서 해당 파일이 Hot 파일인지 확인하여 Hot 파일일 때만 통계를 수집하도록 할 수 있다.
그리고 Line 4-6에서 파일 읽기의 순차성을 확인하기 위하여 마지막으로 읽은 파일이 다시 읽혔는지 확인하여 마지막으로 읽은 파일이 다시 읽힌 경우에는 무시하도록 할 수 있다.
또한 마지막으로 읽은 시점이 일정 시간 Timeout을 넘겼는지 확인하여 넘겼을 경우 무시하도록 하며, 마지막으로 읽기가 요청된 파일의 크기가 Readahead크기보다 큰지 확인하여 클 경우 무시하도록 할 수 있다.
파일의 순차성을 확인한 결과 파일이 순차적으로 읽혔다고 판단된 경우, Line 8에서 현재 읽기 요청된 파일을 마지막으로 읽은 파일 뒤로 오도록 하여 순서를 보존하여 추후 Context-aware Readahead 모듈에서 사용할 수 있도록 할 수 있다.
(3) VFS/FD Mapper(300)
상황정보 공유부에 해당하는 VFS/FD Mapper(300)는 Android Framework 레이어와 리눅스 커널 입출력 스택 간 정보 공유, 및 리눅스 커널 입출력 스택 내부 레이어 간 상황인지 정보 공유를 수행할 수 있다.
VFS/FD Mapper(300)는 Android Framework와 리눅스 커널 내부에서 처리되는 입출력을 추적하기 위하여 각 애플리케이션 Process들의 File descriptor와 리눅스 커널의 VFS entry를 매핑하고, IO tag를 생성하여 리눅스 커널의 각 계층에 존재하는 CAFIO 모듈들이 서로 효율적으로 정보를 전달할 수 있도록 할 수 있다.
(4) CFQ-CA(400)
입출력 수행부에 해당하는 CFQ-CA(400)는 블록 레이어(Block Layer)의 입출력 스케줄러(IO Scheduler)에서 동작하며, 사용자가 현재 사용하고 있는 애플리케이션의 입출력 요청을 우선적으로 처리함으로써, 사용자 요청에 대한 입출력 지연을 최소화할 수 있다.
CFQ-CA(400)은 리눅스의 입출력 스케줄러를 대체하여 동작을 하게 되며, 사용자가 현재 사용하고 있는 애플리케이션의 입출력을 우선적으로 처리하기 위한 입출력 스케줄러라 할 수 있다. 이는 I/O Context Analyzer(200)에서 분석된 (입출력 우선순위(I/O Priority)를 기반으로 입출력 스케줄링(I/O Scheduling)을 처리하여, 사용자가 현재 사용하고 있는 애플리케이션 및 해당 애플리케이션의 서비스들이 보다 높은 우선순위로 처리될 수 있도록 할 수 있다. 이는 사용자가 당장 필요로 하는 입출력작업들의 지연시간을 줄여 더 나은 사용자 경험을 제공할 수 있도록 할 수 있다.
(5) Context-aware Cache Queue(510)
캐시 관리부에 해당하는 Context-aware Cache Queue(510)는 상황인지 정보를 활용하여 캐시의 히트율을 높이고, 불필요한 캐시를 줄여 전체 캐시 활용율을 높일 수 있다.
Context-aware Cache Queue(510)은 캐시된 파일들의 효율적인 관리를 위하여, 앞서 I/O Context Analyzer(200)에서 분석된 캐시 우선순위에 따라 파일 페이지 캐시를 관리하는 역할을 하는 모듈이라 할 수 있다. High priority cache에 대해서는 해당 파일의 캐시 우선순위에 따른 Priority queue로 관리를 하고, Normal priority cache에 대해서는 LRU queue로 관리를 하며, Low priority cache에 대해서는 FIFO queue로 관리를 할 수 있다. 그리고 이 세 가지의 queue들을 priority queue로 통합 관리를 하여, 가장 먼저 Low priority cache부터 evict되도록 관리를 하여 재사용율이 높은 파일 캐시들이 최대한 메인 메모리에 머물러 있을 수 있도록 할 수 있다.
(6) Context-ware Readahead(530)
미리읽기 수행부에 해당하는 Context-ware Readahead(530)는 리눅스 커널의 페이지 캐시에서 동작하며, 상황인지 정보를 활용한 미리읽기를 수행하여 추후 필요한 데이터를 미리 읽는 것에 따른 효율성을 높일 수 있다.
Context-ware Readahead(530)는 파일의 캐시 적중률을 높이기 위하여 앞으로 필요할 수 있는 파일을 미리 메모리로 읽어오는 역할을 하는 모듈로써, 단일 파일 Readahead와 다중 파일 Readahead를 수행할 수 있다. 단일 파일 Readahead는 하나의 파일을 대상으로 파일의 일부 혹은 전체를 읽어오는 것으로, 대상 파일이 Readahead 크기(512KB)보다 크며, Sequential Read로 분류되었을 경우, 현재 읽기 요청 이후 Readahead 크기만큼 해당 파일의 내용을 미리 읽어 캐시 적중률을 높일 수 있도록 할 수 있다. 다중 파일 Readahead는 다수의 파일을 대상으로 파일의 일부 혹은 전체를 읽어오는 것으로, 미리 파악된 파일의 순차 접근 패턴을 사용하여 해당 접근 패턴에 해당하는 파일의 읽기 요청이 들어왔을 경우, 해당 패턴에 정의된 파일 순서대로 파일들을 Readahead 크기만큼 미리 읽어 캐시 적중률을 높일 수 있도록 할 수 있다.
(7) Context-ware Defragger
한편, 도 4에 도시된 Context-ware Defragger은 Ex4 File System에서 동작하며, 조각난 데이터를 모아 데이터를 효율적으로 한꺼번에 전달하기 쉽게 관리할 수 있다.
Context-aware Defragger는 Context-ware Readahead(530)에서 다중 파일 Readahead에서 사용되는 연속되어 자주 쓰이는 작은 크기의 파일들을 하위 저장장치의 연속된 공간에 저장될 수 있도록 하여 해당 파일들의 읽기 성능을 높이기 위한 모듈이라 할 수 있다. 이 모듈은 Bulk transfer(512KB)를 이용하여 해당 데이터가 하부 저장장치가 자체 FTL을 가지고 있는 Flash 기반 저장장치이더라도 최대한 연속된 공간에 저장되어 추후 해당 데이터를 읽어올 때 빠르게 읽어올 수 있도록 할 수 있다. 이 Bulk transfer를 이용한 파일의 relocation은 파일을 다시 쓰는 작업을 수행하기 때문에 파일의 내용 변화가 없으며, 최대한의 성능향상을 기대할 수 있는 다중 파일 Readahead 대상 파일들 중 Write가 없는 파일들을 대상으로만 수행할 수 있다.
도 5는 본 발명의 실시예에 따른 본 발명의 성능 평가 중, 애플리케이션 실행시간 테스트 결과를 나타낸 도면이고, 도 6은 본 발명의 실시예에 따른 본 발명의 성능 평가 중, 캐시 적중률 테스트 결과를 나타낸 도면이고, 도 7은 본 발명의 실시예에 따른 본 발명의 성능 평가 중, 읽기 속도 테스트 결과를 나타낸 도면이다.
본 발명인 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법의 성능을 평가하기 위해, 애플리케이션의 실행 시간(Launch time), 캐시 적중률(Cache ratio), 읽기 속도(Read speed)를 측정하여 기존의 안드로이드 시스템과 비교를 수행하였다. 기존의 안드로이드 시스템은 파란색의 Android이며, 본 발명의 시스템은 주황색의 Android+CAFIO(Context Aware I/O Management System)이다. 테스트가 진행된 디바이스의 사양은 하기 표 4와 같다.
<표 4>
Figure pat00056
또한, 성능 측정을 위해, Social, Multimedia, Game, Productivity 카테고리의 인기 애플리케이션을 각 5개씩, 총 20개의 애플리케이션을 대상으로 테스트를 진행하였다. 선정한 애플리케이션은 하기 표 5와 같다.
<표 5>
Figure pat00057
모든 테스트는 상기 표 5의 애플리케이션들을 한 번씩 순서대로 실행한 것을 1회의 테스트로 간주하며, 각 테스트 간 명시적인 애플리케이션 종료 및 캐시 invalidation을 하여 테스트 간 캐시가 결과에 영향을 주지 않도록 하였다.
테스트 방법으로는, 애플리케이션의 실행 시간(Launch time)의 경우 애플리케이션을 실행하기 시작한 순간부터 애플리케이션의 메인 Activity가 화면에 보여지기 까지의 시간을 측정한 것이며, 캐시 적중률은 애플리케이션의 실행 시간을 측정하는 동안 발생한 해당 애플리케이션에서 발생된 모든 읽기 요청의 캐시 적중률이며, 읽기 속도는 애플리케이션의 실행 시간을 측정하는 동안 발생한 해당 애플리케이션에서 발생된 모든 읽기 요청의 읽기속도의 평균값이다.
그 결과, 도 5에 도시된 바와 같이 애플리케이션 실행 시간 테스트 결과를 확인할 수 있다.
도 5를 참조하면, 테스트 대상 20개의 애플리케이션에서 평균 7%의 성능향상을 확인할 수 있다. 특히 애플리케이션 K(리니지 M)의 경우는 47%의 성능 향상을 보이며 15.9 초에서 10.8초로 5.1초의 실행시간 감소 효과를 보였다. 이는 다수의 작은 파일을 읽어 들이는 해당 애플리케이션의 특성상 캐싱 정책과 잘 맞아 성능향상을 보인 것이다.
또한, 도 6에 도시된 바와 같이 캐시 적중률 테스트 결과를 확인할 수 있다.
도 6을 참조하면, 테스트 대상 20개의 애플리케이션에서 평균 11%의 성능향상을 확인할 수 있다. 상기 애플리케이션 실행시간 테스트와 비슷하게, 애플리케이션 K(리니지 M)의 경우 74%의 성능향상을 보여주었다.
도 7에 도시된 바와 같이, 읽기 속도 테스트 결과를 확인할 수 있다.
도 7을 참조하면, 테스트 대상 20개의 애플리케이션에서 평균 7배의 성능향상을 확인할 수 있다. 특히 애플리케이션 F(TikTok)의 경우 0.05MB/s 에서 4.42MB/s로 82배의 성능향상을 보였으며, 이는 소수의 작은 파일을 읽어오는 해당 애플리케이션의 특성상 제안하는 시스템에서 수행하는 Context-aware Defragger와 Context-aware Readahead로 인해 다수의 작은 파일들을 파일 단위가 아닌 연속된 큰 블록단위로 읽어와 I/O Request 수를 줄여 읽기 성능이 비약적으로 늘어났으며, 높은 캐시 적중률로 인해 보조 저장장치가 아닌 주 저장장치에서 바로 읽어들였기 때문에 읽기속도가 비약적으로 향상되었다.
이와 같이 본 발명인 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법은 모바일 장치에서 사용자의 사용 경험을 높이기 위하여 상황인지 정보를 활용한 애플리케이션 레이어, VFS레이어, 블록 레이어간 정보 전달을 통하여 리눅스 입출력 스택 전반을 개선할 수 있는 효과를 가진다.
이는 기존의 안드로이드 시스템에서 발생하는 문제들을 해결하기 위해, 모바일 운영체제에서 실행되는 각 애플리케이션의 파일 사용 패턴을 분석하여 곧 사용할 파일의 일부 혹은 전체를 캐싱하며, 저장장치에서 같이 자주 쓰이는 작은 파일들을 연속적으로 읽어올 수 있도록 조각 모음 하여 읽기 성능을 향상시킬 수 있다.
또한 현재 사용 중인 애플리케이션의 입출력 우선순위를 높여 해당 애플리케이션의 입출력 작업을 우선적으로 처리함으로써, 입출력 지연시간을 줄여 애플리케이션의 반응성을 높이고 사용성을 개선할 수 있다.
도 5 내지 도 7의 실험 결과, 애플리케이션 실행시간에서는 평균 7%의 성능향상이 있었고, 캐시 적중률에선 평균 11%의 성능향상이, 읽기 속도에서는 평균 7배의 성능향상을 보인 바 있다.
이상에서 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 다양한 변화와 변경 및 균등물을 사용할 수 있다. 본 발명은 상기 실시예를 적절히 변형하여 동일하게 응용할 수 있음이 명확하다. 따라서 상기 기재 내용은 다음 특허청구범위의 한계에 의해 정해지는 본 발명의 범위를 한정하는 것이 아니다.
100 : 상황정보 수집부 (I/O Context Manager)
200 : 상황정보 가공부 (I/O Context Analyzer)
210 : 캐시 우선순위 분류부
230 : 파일 기록부
300 : 상황정보 공유부 (VFS/FD Mapper)
400 : 입출력 수행부 (CFQ-CA)
510 : 캐시 관리부 (Context-aware Cache Queue)
530 : 미리읽기 수행부 (Context-aware Readahead)

Claims (16)

  1. 사용자 식별자(UID: User identifier)를 기준으로 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 파일의 상황정보를 수집하는 상황정보 수집부;
    상기 수집된 상황정보를 기준으로 상기 파일의 캐시 우선순위를 분석하고, 상기 파일들이 순차적으로 접근된 패턴을 애플리케이션 저장소에 기록하여 상기 상황정보를 가공하는 상황정보 가공부;
    상기 가공된 상황정보를 리눅스 커널로 공유하거나, 상기 리눅스 커널 내부 레이어 간 공유를 수행하는 상황정보 공유부;
    상기 공유된 상황정보를 기준으로 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 입출력 스케줄링을 수행한 후, 상기 수행된 입출력 스케줄링에 따라 입출력을 수행하는 입출력 수행부;를 포함하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템.
  2. 제 1 항에 있어서, 상기 상황정보 수집부에서 수집되는 상황정보는,
    상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 접근 횟수, 사용 시간에 기초한 사용빈도 점수를 포함하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템.
  3. 제 2 항에 있어서, 상기 상황정보 가공부는,
    상기 수집된 상황정보에 기초한 캐시 적중률 점수에 따라 상기 파일에 대한 캐시 우선순위를 분류하는 캐시 우선순위 분류부; 및
    상기 분류된 캐시 우선순위 중 기 설정된 우선순위 캐시에 해당하는 파일을 상기 애플리케이션 저장소에 기록하는 파일 기록부;를 포함하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템
  4. 제 3 항에 있어서, 상기 캐시 우선순위 분류부는,
    상기 캐시 적중률 점수가 상위 1/3 이상이면 높은 우선순위 캐시(High priority cache)로 분류하고,
    상기 캐시 적중률 점수가 상위 2/3 이상 1/3 이하이면 표준 우선순위 캐시(Normal priority cache)로 분류하고,
    상기 캐시 적중률 점수가 2/3 미만이면 낮은 우선순위 캐시(Low priority cache)로 분류하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템.
  5. 제 4 항에 있어서,
    상기 높은 우선순위 캐시는 우선순위 큐(Priority queue)로 관리하고,
    상기 표준 우선순위 캐시는 LRU 큐로 관리하고,
    상기 낮은 우선순위 캐시는 FIFO 큐로 관리하는 캐시 관리부;를 더 포함하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템.
  6. 제 4 항에 있어서,
    상기 높은 우선순위 캐시(High priority cache)에 해당하는 파일을 단일파일과 다중파일로 구분하여 미리읽기(Readahead)를 각각 수행하는 미리읽기 수행부;를 더 포함하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템.
  7. 제 2 항에 있어서, 상기 사용빈도 점수는,
    하기 수학식 1로 표현되는 애플리케이션 사용빈도 점수 산출식을 이용하여 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 사용빈도를 산출하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템.
    <수학식 1>
    Figure pat00058

    (uid: 애플리케이션의 ID,
    Figure pat00059
    : 애플리케이션 uid의 사용빈도 점수,
    Figure pat00060
    : 7일 간 애플리케이션 uid의 접근 횟수들의 집합,
    Figure pat00061
    : 7일 간 애플리케이션 uid의 사용 시간들의 집합,
    Figure pat00062
    : 일별 애플리케이션 uid의 접근 횟수,
    Figure pat00063
    : 일별 애플리케이션 uid의 사용 시간)
  8. 제 3 항에 있어서, 상기 캐시 적중률 점수는,
    하기 수학식 2로 표현되는 캐시 적중률 점수 산출식을 이용하여 상기 수집된 상황정보에 기초한 상기 파일에 대한 캐시 적중률 점수를 산출하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템.
    <수학식 2>
    Figure pat00064

    (inode: 파일의 inode ID,
    Figure pat00065
    : 캐시 적중률 점수,
    Figure pat00066
    : 읽기 캐시 적중 수의 집합,
    Figure pat00067
    : 쓰기 캐시 적중 수의 집합,
    Figure pat00068
    : 파일 inode의 읽기 캐시 적중 수,
    Figure pat00069
    : 파일 inode의 쓰기 캐시 적중 수)
  9. 상황정보 수집부에서 사용자 식별자(UID: User identifier)를 기준으로 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 파일의 상황정보를 수집하는 상황정보 수집단계;
    상황정보 가공부에서 상기 수집된 상황정보를 기준으로 상기 파일의 캐시 우선순위를 분석하고, 상기 파일을 순차적으로 애플리케이션 저장소에 기록하여 상기 상황정보를 가공하는 상황정보 가공단계;
    상황정보 공유부에서 상기 가공된 상황정보를 리눅스 커널로 공유하거나, 상기 리눅스 커널 내부 레이어 간 공유를 수행하는 상황정보 공유단계;
    입출력 수행부에서 상기 공유된 상황정보를 기준으로 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션에 대한 입출력 스케줄링을 수행한 후, 상기 수행된 입출력 스케줄링에 따라 입출력을 수행하는 입출력 수행단계;를 포함하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법.
  10. 제 9 항에 있어서, 상기 상황정보 수집단계에서 수집되는 상황정보는,
    상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 접근 횟수, 사용 시간에 기초한 사용빈도 점수를 포함하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법.
  11. 제 10 항에 있어서, 상기 상황정보 가공단계는,
    캐시 우선순위 분류부에서 상기 수집된 상황정보에 기초한 캐시 적중률 점수에 따라 상기 파일에 대한 캐시 우선순위를 분류하는 캐시 우선순위 분류단계; 및
    파일 기록부에서 상기 분류된 캐시 우선순위 중 기 설정된 우선순위 캐시에 해당하는 파일을 상기 애플리케이션 저장소에 기록하는 파일 기록단계;를 포함하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법.
  12. 제 11 항에 있어서 상기 캐시 우선순위 분류단계는,
    상기 캐시 적중률 점수가 상위 1/3 이상이면 높은 우선순위 캐시(High priority cache)로 분류하고,
    상기 캐시 적중률 점수가 상위 2/3 이상 1/3 이하이면 표준 우선순위 캐시(Normal priority cache)로 분류하고,
    상기 캐시 적중률 점수가 2/3 미만이면 낮은 우선순위 캐시(Low priority cache)로 분류하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법.
  13. 제 12 항에 있어서, 캐시 관리부에서,
    상기 높은 우선순위 캐시는 우선순위 큐(Priority queue)로 관리하고,
    상기 표준 우선순위 캐시는 LRU 큐로 관리하고,
    상기 낮은 우선순위 캐시는 FIFO 큐로 관리하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법.
  14. 제 12 항에 있어서, 미리읽기 수행부에서,
    상기 높은 우선순위 캐시(High priority cache)에 해당하는 파일을 단일파일과 다중파일로 구분하여 미리읽기(Readahead)를 각각 수행하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법.
  15. 제 10 항에 있어서, 상기 사용빈도 점수는,
    하기 수학식 1로 표현되는 애플리케이션 사용빈도 점수 산출식을 이용하여 상기 사용빈도가 높은 적어도 하나 이상의 애플리케이션의 사용빈도를 산출하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법.
    <수학식 1>
    Figure pat00070

    (uid: 애플리케이션의 ID,
    Figure pat00071
    : 애플리케이션 uid의 사용빈도 점수,
    Figure pat00072
    : 7일 간 애플리케이션 uid의 접근 횟수들의 집합,
    Figure pat00073
    : 7일 간 애플리케이션 uid의 사용 시간들의 집합,
    Figure pat00074
    : 일별 애플리케이션 uid의 접근 횟수,
    Figure pat00075
    : 일별 애플리케이션 uid의 사용 시간)
  16. 제 11 항에 있어서, 상기 캐시 적중률 점수는,
    하기 수학식 2로 표현되는 캐시 적중률 점수 산출식을 이용하여 상기 수집된 상황정보에 기초한 상기 파일에 대한 캐시 적중률 점수를 산출하는 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 방법.
    <수학식 2>
    Figure pat00076

    (inode: 파일의 inode ID,
    Figure pat00077
    : 캐시 적중률 점수,
    Figure pat00078
    : 읽기 캐시 적중 수의 집합,
    Figure pat00079
    : 쓰기 캐시 적중 수의 집합,
    Figure pat00080
    : 파일 inode의 읽기 캐시 적중 수,
    Figure pat00081
    : 파일 inode의 쓰기 캐시 적중 수)
KR1020190170007A 2018-12-26 2019-12-18 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법 Active KR102278583B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20180169842 2018-12-26
KR1020180169842 2018-12-26

Publications (2)

Publication Number Publication Date
KR20200080165A true KR20200080165A (ko) 2020-07-06
KR102278583B1 KR102278583B1 (ko) 2021-07-16

Family

ID=71571644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190170007A Active KR102278583B1 (ko) 2018-12-26 2019-12-18 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102278583B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254404A (zh) * 2021-05-25 2021-08-13 技德技术研究所(武汉)有限公司 一种文件处理方法及装置
CN114217733A (zh) * 2021-04-30 2022-03-22 无锡江南计算技术研究所 一种面向io转发系统的io处理框架及io请求处理方法
CN114297132A (zh) * 2021-11-26 2022-04-08 中国科学院计算技术研究所 一种数据处理单元中控制信息管理系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12287738B2 (en) 2022-06-16 2025-04-29 Samsung Electronics Co., Ltd. System and method for caching in storage devices

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0444401A2 (en) * 1990-02-26 1991-09-04 Motorola, Inc. A data processor for reloading deferred pushes in a copy-back data cache
KR20070100779A (ko) * 2004-12-31 2007-10-11 인텔 코포레이션 구조 학습 방법, 제조물, 장치 및 시스템
JP2008525905A (ja) * 2004-12-31 2008-07-17 インテル コーポレイション ベイズ・ネットワーク構造学習のデータ分割及びクリティカル・セクション
US20130191599A1 (en) * 2012-01-20 2013-07-25 International Business Machines Corporation Cache set replacement order based on temporal set recording
JP2013186731A (ja) * 2012-03-08 2013-09-19 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータシステムを用いたネットワークシステム
US20130297912A1 (en) * 2012-05-03 2013-11-07 Freescale Semiconductor, Inc. Apparatus and method for dynamic allocation of execution queues
KR20150039747A (ko) * 2012-07-31 2015-04-13 소니 주식회사 수신 장치, 수신 방법, 송신 장치, 및 송신 방법
KR20170052979A (ko) 2015-11-05 2017-05-15 인하대학교 산학협력단 연마장치

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0444401A2 (en) * 1990-02-26 1991-09-04 Motorola, Inc. A data processor for reloading deferred pushes in a copy-back data cache
KR20070100779A (ko) * 2004-12-31 2007-10-11 인텔 코포레이션 구조 학습 방법, 제조물, 장치 및 시스템
JP2008525905A (ja) * 2004-12-31 2008-07-17 インテル コーポレイション ベイズ・ネットワーク構造学習のデータ分割及びクリティカル・セクション
US20130191599A1 (en) * 2012-01-20 2013-07-25 International Business Machines Corporation Cache set replacement order based on temporal set recording
JP2013186731A (ja) * 2012-03-08 2013-09-19 Mitsubishi Electric Corp コンピュータシステムおよびコンピュータシステムを用いたネットワークシステム
US20130297912A1 (en) * 2012-05-03 2013-11-07 Freescale Semiconductor, Inc. Apparatus and method for dynamic allocation of execution queues
KR20150039747A (ko) * 2012-07-31 2015-04-13 소니 주식회사 수신 장치, 수신 방법, 송신 장치, 및 송신 방법
KR20170052979A (ko) 2015-11-05 2017-05-15 인하대학교 산학협력단 연마장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Beckmann N. 외 2인."{LHD}: Improving Cache Hit Rate by Maximizing Hit Density".In 15th {USENIX} Symposium on Networked Systems Design and Implementation,2018.04.09.(제389면 내지 제403면)* *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114217733A (zh) * 2021-04-30 2022-03-22 无锡江南计算技术研究所 一种面向io转发系统的io处理框架及io请求处理方法
CN114217733B (zh) * 2021-04-30 2023-10-13 无锡江南计算技术研究所 一种面向io转发系统的io处理框架及io请求处理方法
CN113254404A (zh) * 2021-05-25 2021-08-13 技德技术研究所(武汉)有限公司 一种文件处理方法及装置
CN113254404B (zh) * 2021-05-25 2022-05-27 技德技术研究所(武汉)有限公司 一种文件处理方法及装置
CN114297132A (zh) * 2021-11-26 2022-04-08 中国科学院计算技术研究所 一种数据处理单元中控制信息管理系统

Also Published As

Publication number Publication date
KR102278583B1 (ko) 2021-07-16

Similar Documents

Publication Publication Date Title
KR102278583B1 (ko) 모바일 기기에서의 상황정보를 기반으로 한 파일 입출력 관리 시스템 및 방법
US11693570B2 (en) Machine learning to improve caching efficiency in a storage system
EP3118745B1 (en) A heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
Zhang et al. FlashKV: Accelerating KV performance with open-channel SSDs
Lee et al. Smart layers and dumb result: IO characterization of an android-based smartphone
CA2442188C (en) Methods and mechanisms for proactive memory management
US9858197B2 (en) Cache management apparatus of hybrid cache-based memory system and the hybrid cache-based memory system
US20140351505A1 (en) Providing data attributes to a storage manager to use to select a storage tier to use for a data set management operation
US20120102276A1 (en) Storing Corresponding Data Units in a Common Storage Unit
US11163684B1 (en) Systems and methods that predictively read ahead different amounts of data for different content stored in a multi-client storage system
CN108920387A (zh) 降低读延迟的方法、装置、计算机设备及存储介质
EP3293625B1 (en) Method and device for accessing file, and storage system
CN115470157B (zh) 预取方法、电子设备、存储介质及程序产品
Mativenga et al. RFTL: Improving performance of selective caching-based page-level FTL through replication
US11086798B2 (en) Method and computer program product and apparatus for controlling data access of a flash memory device
KR102863417B1 (ko) 저장 디바이스를 위한 캐시 아키텍처
Han et al. Command queue-aware host I/O stack for mobile flash storage
Wu et al. A data management method for databases using hybrid storage systems
CN116069752A (zh) 一种面向分布式文件系统的混合预取方法
Yao et al. Uniform scheduling of interruptible garbage collection and request IO to improve performance and wear-leveling of SSDs
Park et al. OFTL: Ordering-aware FTL for maximizing performance of the journaling file system
CN118860298B (zh) 缓存数据的管理方法和装置、存储介质及程序产品
Ozen et al. Performance comparison and analysis of Linux block I/O schedulers on SSD
Shen et al. A light-weight hot data identification scheme via grouping-based LRU lists
Tarasov et al. Efficient I/O scheduling with accurately estimated disk drive latencies

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20191218

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20210120

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20210709

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20210712

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20210713

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20240624

Start annual number: 4

End annual number: 4