KR20200114274A - I/0 optimization apparatus and method for improving loading performance of an application - Google Patents

I/0 optimization apparatus and method for improving loading performance of an application Download PDF

Info

Publication number
KR20200114274A
KR20200114274A KR1020190035713A KR20190035713A KR20200114274A KR 20200114274 A KR20200114274 A KR 20200114274A KR 1020190035713 A KR1020190035713 A KR 1020190035713A KR 20190035713 A KR20190035713 A KR 20190035713A KR 20200114274 A KR20200114274 A KR 20200114274A
Authority
KR
South Korea
Prior art keywords
input
output
padding
application
work set
Prior art date
Application number
KR1020190035713A
Other languages
Korean (ko)
Other versions
KR102202211B1 (en
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 국민대학교산학협력단
Priority to KR1020190035713A priority Critical patent/KR102202211B1/en
Publication of KR20200114274A publication Critical patent/KR20200114274A/en
Application granted granted Critical
Publication of KR102202211B1 publication Critical patent/KR102202211B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

The present invention relates to an I/O optimization device for improving the loading performance of an application and a method thereof. The I/O optimization device for improving the loading performance of an application comprises: a first work set generation part that generates a first work set through I/O scheduling including I/O alignment and I/O merging; an I/O padding part that performs I/O padding for filling a padded page between a plurality of page chunks constituting the first work set for the generated first work set; and a work set generation part that generates a second work set in which the I/O size is enlarged through the I/O padding. Accordingly, the present invention can shorten the loading speed of an application in a computing system by increasing the I/O size to increase effective storage I/O throughput.

Description

애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치 및 방법 {I/0 OPTIMIZATION APPARATUS AND METHOD FOR IMPROVING LOADING PERFORMANCE OF AN APPLICATION}I/O optimization device and method for improving application loading performance {I/0 OPTIMIZATION APPARATUS AND METHOD FOR IMPROVING LOADING PERFORMANCE OF AN APPLICATION}

본 발명은 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 기술에 관한 것으로, 보다 상세하게는 입출력의 크기를 확대하여 효과적인 스토리지 입출력 처리량을 증가시킴으로써 컴퓨팅 시스템에서 애플리케이션의 로딩 속도를 단축시키기 위한 입출력 최적화 장치 및 방법에 관한 것이다.The present invention relates to an input/output optimization technology for improving application loading performance, and more particularly, an input/output optimization device and method for reducing the loading speed of an application in a computing system by increasing the effective storage input/output throughput by increasing the size of the input/output. It is about.

최근의 스마트기기 및 모바일기기는 요구페이징(demand paging) 기반의 운영체제를 사용하여 다수의 사용자 애플리케이션에 대한 동시 실행을 지원하고 있다. 요구페이징은 제한된 시스템 자원의 효율적 공유 및 지속적으로 변하는 애플리케이션의 작업집합(working set)을 메모리에 유지하는데 뛰어난 효과를 보임이 입증되었다. 하지만 요구페이징은 페이지 부재(page fault) 발생시 이에 대한 페이지 반입이 완료된 이후 애플리케이션 실행을 재개할 수 있는데, 따라서 대량의 페이지 부재가 집중하여 발생하는 애플리케이션 시동 및 백그라운드 애플리케이션 활성화시 단일 페이지 크기(4KB)의 블록킹 읽기 명령을 발생시킨다. 한편, 스마트기기 및 모바일기기에 탑재되는 플래시 저장장치는 내부적으로 여러 개의 플래시칩으로 구성되어 병렬화를 통해 단일 칩의 낮은 전송속도를 극복하도록 구현되어 있는데, 이를 이용하기 위해서는 호스트 장치로부터 입출력 명령이 동시에 여러 개 전달되어 병렬적으로 처리되거나, 또는 호스트 장치에서 수백 KB 이상의 대용량 입출력 명령을 받아 내부적으로 이를 분할하여 병렬 처리를 수행해야 한다.Recent smart devices and mobile devices support simultaneous execution of multiple user applications using an operating system based on demand paging. Demand paging has proven to be effective in efficiently sharing limited system resources and maintaining a constantly changing working set of applications in memory. However, request paging can resume application execution after page fetching is completed when a page fault occurs. Therefore, a single page size (4 KB) can be reduced when starting an application and activating a background application caused by a large number of page faults. Generates a blocking read command. On the other hand, flash storage devices mounted on smart devices and mobile devices are internally composed of multiple flash chips and are implemented to overcome the low transmission speed of a single chip through parallelization. To use this, input/output commands from the host device are simultaneously Multiple numbers are transmitted and processed in parallel, or a host device receives a large I/O command of hundreds of KB or more and internally divides it to perform parallel processing.

따라서 요구페이징이 애플리케이션 반입 시에 발생시키는 입출력 패턴은 플래시 저장장치의 잠재 성능을 제대로 활용하지 못하는 문제를 지니고 있으나 기존 운영체제에서는 플래시 저장 장치의 이러한 특성을 고려한 최적화 기법이 충분히 적용되어 있지 않은 상황이다.Therefore, the I/O pattern generated when the request paging is brought in the application has a problem that the potential performance of the flash storage device is not properly utilized, but the existing operating system does not sufficiently apply the optimization technique that considers these characteristics of the flash storage device.

한국공개특허 제10-2007-0068801 (2007.07.02)호Korean Patent Publication No. 10-2007-0068801 (2007.07.02)

본 발명의 일 실시예는 입출력의 크기를 확대하여 효과적인 스토리지 입출력 처리량을 증가시킴으로써 컴퓨팅 시스템에서 애플리케이션의 로딩 속도를 단축시키는 입출력 최적화 장치 및 방법을 제공하고자 한다.An embodiment of the present invention is to provide an input/output optimization apparatus and method for shortening the loading speed of an application in a computing system by increasing the size of input/output to increase effective storage input/output throughput.

본 발명의 일 실시예는 사전에 학습된 애플리케이션 작업집합(working set)에 대해 작업집합을 구성하는 페이지 청크들 사이에 패딩 페이지를 채워 넣고 입출력의 크기를 키움으로써 작업집합의 로딩 시간을 단축시키는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치 및 방법을 제공하고자 한다.An embodiment of the present invention is an application that shortens the loading time of a working set by filling a padded page between page chunks constituting a working set for a previously learned application working set and increasing the size of input/output. To provide an input/output optimization device and method for improving the loading performance of

본 발명의 일 실시예는 페이지 청크들 사이에 존재하는 빈 공간들을 패딩 후보로 하는 패딩 벡터를 정의하고 동적 프로그래밍 모델을 통해 작업집합에 대해 최소의 반입(fetch) 시간을 획득할 수 있는 최적의 패딩 벡터를 결정하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치 및 방법을 제공하고자 한다.An embodiment of the present invention defines a padding vector that uses empty spaces between page chunks as padding candidates, and provides optimal padding to obtain a minimum fetch time for a working set through a dynamic programming model. It is to provide an input/output optimization apparatus and method for improving the loading performance of an application that determines a vector.

실시예들 중에서, 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치는 입출력 정렬 및 입출력 병합을 포함하는 입출력 스케줄링을 통해 제1 작업집합을 생성하는 제1 작업집합 생성부, 생성된 상기 제1 작업집합에 대해서, 상기 제1 작업집합을 구성하는 복수의 페이지 청크(chunk)들 사이에 패딩 페이지를 채워 넣는 입출력 패딩을 수행하는 입출력 패딩부 및 상기 입출력 패딩을 통해 입출력의 크기를 확대시킨 제2 작업집합을 최종적인 작업집합으로 생성하는 제2 작업집합 생성부를 포함한다.Among embodiments, an input/output optimization device for improving the loading performance of an application includes a first work set generation unit that generates a first work set through input/output scheduling including input/output sorting and input/output merging, and the generated first work set. On the other hand, an input/output padding unit performing input/output padding to fill a padded page between a plurality of page chunks constituting the first work set, and a second working set in which the size of input/output is increased through the input/output padding. And a second work set generation unit that generates a final work set.

상기 입출력 스케줄링부는 상기 입출력 정렬을 통해 상기 복수의 페이지 청크들을 LBA(Logical Block Address) 순서로 정렬할 수 있다.The input/output scheduling unit may arrange the plurality of page chunks in a logical block address (LBA) order through the input/output alignment.

상기 제1 작업집합 생성부는 상기 입출력 병합을 통해 상기 정렬된 복수의 페이지 청크들 중 서로 인접한 복수의 페이지 청크들에 대해서 단일의 페이지 청크로 병합하여 상기 제1 작업집합을 생성할 수 있다.The first work set generation unit may generate the first work set by merging a plurality of adjacent page chunks among the plurality of aligned page chunks into a single page chunk through the input/output merging.

상기 입출력 패딩부는 상기 복수의 페이지 청크들 사이사이에 존재하는 빈 공간들을 패딩 후보들로 결정하는 패딩 벡터를 정의할 수 있다.The input/output padding unit may define a padding vector that determines empty spaces between the plurality of page chunks as padding candidates.

상기 입출력 패딩부는 동적 프로그래밍 모델을 통해 상기 제1 작업집합에 대해 최소의 로딩 시간을 가지는 패딩 벡터를 검출할 수 있다.The input/output padding unit may detect a padding vector having a minimum loading time for the first working set through a dynamic programming model.

상기 동적 프로그래밍 모델은 상기 패딩 후보들의 크기 및 상기 패딩 후보들 각각을 둘러싸고 있는 인접한 페이지 청크들의 크기를 고려하여 상기 패딩 벡터를 검출할 수 있다.The dynamic programming model may detect the padding vector in consideration of the sizes of the padding candidates and the sizes of adjacent page chunks surrounding each of the padding candidates.

상기 동적 프로그래밍 모델은 근처 패딩 후보들에 대한 입출력 패딩 수행 여부 및 다른 시작 LBA와 전송 크기에 대한 스토리지 입출력 처리량(throughput)을 고려하여 상기 패딩 벡터를 검출할 수 있다.The dynamic programming model may detect the padding vector in consideration of whether input/output padding is performed for nearby padding candidates and storage input/output throughput for a different starting LBA and a transmission size.

상기 입출력 패딩부는 상기 검출된 패딩 벡터를 통해 상기 패딩 후보들에 대한 상기 입출력 패딩의 수행여부를 동적으로 결정할 수 있다.The input/output padding unit may dynamically determine whether to perform the input/output padding for the padding candidates through the detected padding vector.

실시예들 중에서, 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 방법은 입출력 정렬 및 입출력 병합을 포함하는 입출력 스케줄링을 통해 제1 작업집합을 생성하는 단계, 생성된 상기 제1 작업집합에 대해서, 상기 제1 작업집합을 구성하는 복수의 페이지 청크(chunk)들 사이에 패딩 페이지를 채워 넣는 입출력 패딩을 수행하는 단계 및 상기 입출력 패딩을 통해 입출력의 크기가 확대된 제2 작업집합을 최종적인 작업집합으로 생성하는 단계를 포함할 수 있다.Among embodiments, an input/output optimization method for improving the loading performance of an application includes generating a first work set through input/output scheduling including input/output sorting and input/output merging, and for the generated first work set, the first Performing input/output padding to fill a padded page between a plurality of page chunks constituting a work set, and generating a second work set in which the size of input/output is enlarged through the input/output padding as a final work set It may include steps.

실시예들 중에서, 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 방법은 애플리케이션의 실행 또는 백그라운드 애플리케이션의 활성화 시점에서 생성되는 제1 작업집합을 프로파일링(profiling)하는 단계, 상기 생성된 제1 작업집합으로부터, 상기 제1 작업집합을 구성하는 복수의 페이지 청크들 사이사이에 패딩 페이지를 채워 넣음으로써 입출력의 크기를 확대시킨 제2 작업집합을 생성하는 단계, 상기 애플리케이션의 실행 또는 상기 백그라운드 애플리케이션의 활성화가 검출되면 상기 애플리케이션 또는 상기 백그라운드 애플리케이션을 일시 중지시키는 단계 및 상기 애플리케이션 또는 백그라운드 애플리케이션에 상기 제2 작업집합을 적용하고 다시 실행시키는 단계를 포함할 수 있다.Among embodiments, the method for optimizing input/output for improving the loading performance of an application includes profiling a first work set generated at a time when an application is executed or a background application is activated, from the generated first work set, Creating a second work set in which the size of input/output is increased by filling in a padded page between a plurality of page chunks constituting the first work set, when the execution of the application or activation of the background application is detected Pausing the application or the background application, and applying the second work set to the application or the background application and executing it again.

개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.The disclosed technology can have the following effects. However, since it does not mean that a specific embodiment should include all of the following effects or only the following effects, it should not be understood that the scope of the rights of the disclosed technology is limited thereby.

본 발명의 일 실시예에 따른 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치 및 방법은 입출력의 크기를 확대하여 효과적인 스토리지 입출력 처리량을 증가시킴으로써 컴퓨팅 시스템에서 애플리케이션의 로딩 속도를 단축시킬 수 있다.The apparatus and method for optimizing input/output for improving application loading performance according to an embodiment of the present invention can reduce an application loading speed in a computing system by increasing an effective storage input/output throughput by increasing the size of the input/output.

본 발명의 일 실시예에 따른 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치 및 방법은 사전에 학습된 애플리케이션 작업집합(working set)에 대해 작업집합을 구성하는 페이지 청크들 사이에 패딩 페이지를 채워 넣고 입출력의 크기를 키움으로써 작업집합의 로딩 시간을 단축시킬 수 있다.The apparatus and method for optimizing input/output for improving the loading performance of an application according to an embodiment of the present invention include padding pages between page chunks constituting a working set and input/output with respect to a previously learned application working set. By increasing the size of the task set, you can shorten the loading time of the work set.

본 발명의 일 실시예에 따른 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치 및 방법은 페이지 청크들 사이에 존재하는 빈 공간들을 패딩 후보로 하는 패딩 벡터를 정의하고 동적 프로그래밍 모델을 통해 작업집합에 대해 최소의 반입(fetch) 시간을 획득할 수 있는 최적의 패딩 벡터를 결정할 수 있다.The apparatus and method for optimizing input/output for improving the loading performance of an application according to an embodiment of the present invention define a padding vector using empty spaces between page chunks as padding candidates, and minimize a working set through a dynamic programming model. It is possible to determine an optimal padding vector for obtaining the fetch time of.

도 1은 본 발명의 일 실시예에 따른 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 시스템을 나타내는 도면이다.
도 2는 도 1에 있는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치를 나타내는 블록도이다.
도 3은 일 실시예에 따른 입출력 크기에 따른 스토리지의 입출력 처리량을 보여주는 다이어그램이다.
도 4는 본 발명의 일 실시예에 따른 입출력 패딩부의 동적 프로그래밍 모델을 통한 패딩 벡터를 결정하는 방법을 보여주는 예시도이다.
도 5는 본 발명의 일 실시예에 따른 입출력 패딩부의 입출력 패딩 결과를 보여주는 도면이다.
도 6은 본 발명의 일 실시예에 따른 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 방법을 나타내는 순서도이다.
도 7은 본 발명의 다른 일 실시예에 따른 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 방법을 나타내는 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 애플리케이션의 로딩 속도 개선 효과를 보여주는 그래프이다.
1 is a diagram illustrating an input/output optimization system for improving loading performance of an application according to an embodiment of the present invention.
FIG. 2 is a block diagram illustrating an input/output optimizing device for improving loading performance of an application in FIG. 1.
3 is a diagram illustrating an input/output throughput of a storage according to an input/output size according to an exemplary embodiment.
4 is an exemplary diagram showing a method of determining a padding vector through a dynamic programming model of an input/output padding unit according to an embodiment of the present invention.
5 is a diagram illustrating an input/output padding result of an input/output padding unit according to an embodiment of the present invention.
6 is a flowchart illustrating an input/output optimization method for improving an application loading performance according to an embodiment of the present invention.
7 is a flowchart illustrating an input/output optimization method for improving an application loading performance according to another embodiment of the present invention.
8 is a graph showing the effect of improving the loading speed of an application according to an embodiment of the present invention.

본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.Since the description of the present invention is merely an embodiment for structural or functional description, the scope of the present invention should not be construed as being limited by the embodiments described in the text. That is, since the embodiments can be variously changed and have various forms, the scope of the present invention should be understood to include equivalents capable of realizing the technical idea. In addition, since the object or effect presented in the present invention does not mean that a specific embodiment should include all of them or only those effects, the scope of the present invention should not be understood as being limited thereto.

한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.Meanwhile, the meaning of terms described in the present application should be understood as follows.

"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.Terms such as "first" and "second" are used to distinguish one component from other components, and the scope of rights is not limited by these terms. For example, a first component may be referred to as a second component, and similarly, a second component may be referred to as a first component.

어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.When a component is referred to as being "connected" to another component, it should be understood that although it may be directly connected to the other component, another component may exist in the middle. On the other hand, when it is mentioned that a certain component is "directly connected" to another component, it should be understood that no other component exists in the middle. On the other hand, other expressions describing the relationship between components, that is, "between" and "directly between" or "neighboring to" and "directly neighboring to" should be interpreted as well.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.Singular expressions are to be understood as including plural expressions unless the context clearly indicates otherwise, and terms such as “comprise” or “have” refer to implemented features, numbers, steps, actions, components, parts, or It is to be understood that it is intended to designate that a combination exists and does not preclude the presence or addition of one or more other features or numbers, steps, actions, components, parts, or combinations thereof.

각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.In each step, the identification code (for example, a, b, c, etc.) is used for convenience of explanation, and the identification code does not describe the order of each step, and each step has a specific sequence clearly in context. Unless otherwise stated, it may occur differently from the stated order. That is, each of the steps may occur in the same order as specified, may be performed substantially simultaneously, or may be performed in the reverse order.

본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.The present invention can be embodied as computer-readable codes on a computer-readable recording medium, and the computer-readable recording medium includes all types of recording devices storing data that can be read by a computer system. . Examples of computer-readable recording media include ROM, RAM, CD-ROM, magnetic tape, floppy disk, and optical data storage devices. Further, the computer-readable recording medium is distributed over a computer system connected by a network, so that the computer-readable code can be stored and executed in a distributed manner.

여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.All terms used herein have the same meaning as commonly understood by one of ordinary skill in the field to which the present invention belongs, unless otherwise defined. Terms defined in commonly used dictionaries should be construed as having meanings in the context of related technologies, and cannot be construed as having an ideal or excessive formal meaning unless explicitly defined in the present application.

애플리케이션의 로딩(loading) 시간은 사용자가 인지할 수 있는 성능에 결정적인 영향을 미치는 요소이므로 컴퓨팅 시스템의 핵심 성능 지표 중 하나에 해당한다. 모바일 애플리케이션의 크기가 급격히 증가함에 따라 애플리케이션의 로딩 성능의 중요성이 모바일 기기에서 점점 강조되고 있고, 최신 모바일 OS(Operating System)는 요구 페이징에 의존하여 사용자 애플리케이션의 코드 및 데이터 페이지를 메모리에 가져온다. 특히, 요청한 페이지를 놓친 경우에만 입출력 요청을 생성하기 때문에 애플리케이션을 시작하거나 백그라운드 애플리케이션을 포그라운드로 가져오는 등 급변하는 작업집합을 로드 할 때 모바일 저장 장치의 약점이 현저히 드러난다.The loading time of an application is one of the key performance indicators of a computing system because it is a factor that has a decisive influence on the performance that users can perceive. As the size of mobile applications increases rapidly, the importance of application loading performance is increasingly emphasized in mobile devices, and the latest mobile OS (Operating System) relies on request paging to bring code and data pages of user applications into memory. In particular, since I/O requests are generated only when the requested page is missed, the weakness of mobile storage devices is remarkably revealed when loading a rapidly changing working set such as starting an application or bringing a background application to the foreground.

요구 페이징의 비효율성을 완화하기 위해, 본 발명의 일 실시예에 따른 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치 및 방법(이하 입출력 최적화 장치(110))으 공격적 병합 기법(aggressive merging scheme)을 개시한다. 일 실시예에서, 공격적 병합 기법은 입출력(I/O) 정렬, 입출력 병합 및 입출력 패딩을 포함하는 입출력 최적화 기술로 구성된 명시적 애플리케이션 로딩 방법(explicit application loading method)에 해당할 수 있다. 결론적으로, 입출력 최적화 장치(110)는 애플리케이션 로딩에 관한 입출력의 크기를 확대하여 효과적인 스토리지 처리량을 증가시킬 수 있다.In order to alleviate the inefficiency of requested paging, an aggressive merging scheme is initiated as an input/output optimization apparatus and method (hereinafter, input/output optimization apparatus 110) for improving application loading performance according to an embodiment of the present invention. do. In one embodiment, the aggressive merging technique may correspond to an explicit application loading method composed of an input/output optimization technique including input/output (I/O) alignment, input/output merging, and input/output padding. In conclusion, the input/output optimization device 110 may increase the effective storage throughput by increasing the size of the input/output related to application loading.

적극적 병합 기법의 명시적 애플리케이션 로딩 방법. 요구 페이징은 온-디맨드(on-demand) 방식으로 누락된 페이지만을 가져와서 암묵적으로 애플리케이션을 로드(load)할 수 있다. 요구 페이징은 지속적으로 변화하는 작업집합을 추적하는 데 있어 효율적이지만, 최적화 윈도우의 크기가 단일 입출력 요청으로 제한되므로 입출력 최적화의 기회를 심각하게 제한할 수 있다. 이러한 제한을 극복하기 위해 본 발명의 입출력 최적화 장치(110)는 1) 대상 애플리케이션의 작업집합을 프로파일 하는 단계, 2) 애플리케이션 로딩을 시작할 시기를 결정하는 단계, 3) 대상 애플리케이션을 일시 중지하는 단계, 4) 입출력 최적화 기술을 통해 작업집합을 로드 또는 반입하는 단계, 5) 대상 애플리케이션을 다시 시작하는 단계를 통해 애플리케이션의 작업 집합을 명시적으로 로드 또는 반입하는 방법을 개시한다.An explicit application loading method of the aggressive merge technique Demand paging can implicitly load an application by fetching only missing pages in an on-demand manner. Demand paging is efficient at keeping track of constantly changing working sets, but because the size of the optimization window is limited to a single I/O request, it can severely limit the opportunities for I/O optimization. In order to overcome this limitation, the input/output optimization device 110 of the present invention includes: 1) profiling a working set of a target application, 2) determining when to start loading an application, 3) pausing the target application, Disclosed is a method of explicitly loading or fetching a working set of an application through 4) loading or fetching a working set through input/output optimization technology, and 5) restarting the target application.

일 실시예에서, 입출력 최적화 장치(110)는 작업집합이 프로파일링에 의해 미리 결정된 경우에 적용될 수 있다. 따라서, 입출력 최적화 장치(110)는 요구 페이징을 보완할 수 있다. 예를 들어, 입출력 최적화 장치(110)는 애플리케이션을 시작하거나 비활성화된 백그라운드 애플리케이션을 활성화하는 경우에 적용될 수 있다. 일 실시예에서, 애플리케이션의 시작의 경우, 입출력 최적화 장치(110)는 입출력 추적 도구로서 blktrace(block layer I/O tracing mechanism)를 사용하여 애플리케이션의 실행 완료 직후의 작업집합을 획득할 수 있다. 보다 구체적으로, 입출력 최적화 장치(110)는 페이지 캐시(cache)를 비우고 애플리케이션 실행 프로세스 중에 생성된 입출력 요청들을 확보할 수 있다. 다른 일 실시예에서, 비활성화된 백그라운드 애플리케이션을 활성화하는 경우, 입출력 최적화 장치(110)는 해당 애플리케이션이 백그라운드로 비활성화 되기 직전의 작업집합을 대상 작업집합으로 결정할 수 있다. 예를 들어, 입출력 최적화 장치(110)는 애플리케이션이 백그라운드로 비활성화된 동안 작업집합의 대부분의 페이지들은 메모리로부터 제거되었다고 가정할 수 있다. 일 실시예에서, 입출력 최적화 장치(110)는 제거된 페이지들의 집합을 리눅스 스왑 시스템(Linux swap system)과 동일한 방식으로 추적할 수 있다. In one embodiment, the input/output optimizing apparatus 110 may be applied when a work set is predetermined by profiling. Accordingly, the input/output optimization device 110 may supplement the requested paging. For example, the input/output optimization device 110 may be applied when starting an application or activating a deactivated background application. In one embodiment, in the case of starting an application, the input/output optimization device 110 may acquire a work set immediately after execution of the application is completed using a block layer I/O tracing mechanism (blktrace) as an input/output tracking tool. More specifically, the input/output optimization device 110 may empty a page cache and secure input/output requests generated during an application execution process. In another embodiment, when activating a deactivated background application, the input/output optimization apparatus 110 may determine a task set immediately before the application is deactivated in the background as the target task set. For example, the input/output optimization device 110 may assume that most of the pages of the working set have been removed from memory while the application is deactivated in the background. In one embodiment, the input/output optimization device 110 may track the set of removed pages in the same manner as the Linux swap system.

일 실시예에서, 입출력 최적화 장치(110)는 운영체제를 통해 사용자가 애플리케이션을 실행시키거나 백그라운드 애플리케이션을 활성화하는 시기를 정확하게 감지할 수 있다. 그러나, 이러한 애플리케이션 실행 또는 활성화에 따라 애플리케이션을 로딩 하는 것이 항상 유익한 것은 아니다. 예를 들어, 작업 집합의 대부분 페이지들이 메모리에 남아있는 경우 애플리케이션의 로딩을 개시하면 애플리케이션의 실행 또는 활성화가 지연될 수 있다. 따라서, 운영체제는 페이지 캐시 상태를 확인하고, 예를 들어, 캐시에 있는 작업 집합의 일부가 임계치 아래에 있는 경우에만 선택적으로 본 발명의 방법을 수행할 수 있다. 일 실시예에서, 입출력 최적화 장치(110)는 콜드 스타트 시나리오, 즉, 메모리에 작업집합의 페이지가 존재하지 않는다고 가정하고 애플리케이션 로딩 속도 개선을 위한 입출력 최적화 장치 및 방법을 개시할 수 있다.In an embodiment, the input/output optimization device 110 may accurately detect when a user executes an application or activates a background application through an operating system. However, it is not always beneficial to load an application upon execution or activation of such an application. For example, when most pages of a working set remain in memory, starting the loading of the application may delay the execution or activation of the application. Accordingly, the operating system can check the page cache state and selectively perform the method of the present invention only when, for example, a part of the working set in the cache is below the threshold. In an embodiment, the input/output optimizing apparatus 110 may start an input/output optimization apparatus and method for improving an application loading speed assuming that a cold start scenario, that is, a page of a working set does not exist in memory.

입출력 정렬 및 입출력 병합은 입출력 스케줄러에 의해 수행되어 큐에 있는 입출력에 대한 입출력 최적화를 수행할 수 있다. 입출력 정렬 및 입출력 병합은 쓰기 요청 및 비동기 읽기와 같은 논 블로킹 입출력(non-blocking I/O)에서 효과적이지만, 입출력 스케줄러는 블로킹 읽기 입출력들이 주를 이루는 애플리케이션 로딩 프로세스에 거의 영향을 미치지 않는다. 보다 구체적으로, 입출력 대기열에 나타나는 블로킹 읽기 입출력들의 최대 수는 1로 제한되어, 다음 입출력은 현재 블로킹 읽기 입출력이 완료된 이후에만 실행된다.I/O sorting and I/O merging are performed by the I/O scheduler, so that I/O optimization for I/O in the queue can be performed. I/O sorting and I/O merging are effective for non-blocking I/O such as write requests and asynchronous reads, but I/O schedulers have little impact on the application loading process, where blocking read I/Os are dominated. More specifically, the maximum number of blocking read I/Os appearing in the I/O queue is limited to 1, and the next I/O is executed only after the current blocking read I/O is completed.

일 실시예에서, 입출력 최적화 장치(110)는 명시적 애플리케이션 로딩 방법을 개시하여 실제 입출력 요청을 보내기 전에 미리 결정된 작업집합에 액세스 할 수 있으므로 모든 페이지 청크들을 완벽하게 정렬할 수 있다. 예를 들어, 입출력 정렬 자체는 직접적으로 플래시 메모리의 작업집합의 로딩 시간에 많은 영향을 미치지 않지만, 간접적으로 더 많은 입출력 병합의 기회를 제공하여 작업집합을 로드하는 동안 입출력의 크기를 크게 증가시킬 수 있다.In one embodiment, the I/O optimization device 110 may initiate an explicit application loading method to access a predetermined working set before sending an actual I/O request, so that all page chunks may be perfectly aligned. For example, I/O alignment itself does not directly affect the loading time of a working set of flash memory, but it indirectly provides more I/O consolidation opportunities, greatly increasing the size of I/O while loading a working set. have.

입출력 정렬 및 입출력 병합은 작업집합의 데이터 양을 변화시키지 않는다는 점에서 제한적이다. 일 실시예에서, 입출력 최적화 장치(110)는 입출력 정렬과 입출력 병합에 입출력 패딩 기법을 연속적으로 적용하여 이러한 제한을 완화할 수 있다. 예를 들어, 입출력 최적화 장치(110)는 인접한 페이지의 청크들 사이에 패딩 페이지(padding page)를 삽입하여 전송되는 데이터의 양을 증가시킬 수 있다. 즉, 본 발명은 입출력 패딩을 통해 입출력 크기를 증가시켜 애플리케이션 로딩시에 효과적인 입출력 처리량을 증가시킬 수 있다. 그러나, 입출력 패딩을 성공적으로 수행하기 위해서는 입출력 크기의 확대를 통한 이득이 패딩 페이지들에 의한 오버헤드를 초과해야 한다. 단순히 임계치 아래에 있는 모든 패딩 후보들을 채우기 위해 일정한 크기를 찾는 것으로는 애플리케이션의 로딩 시간을 최소화할 수 없다. 대신, 입출력 최적화 장치(110)는 인접한 페이지 청크들 사이의 거리, 패딩후보들의 크기, 인접한 페이지 청크들의 크기, 가까운 다른 패딩후보들에 대한 패딩 여부 및 다른 시작 LBA와 전송크기에 대한 스토리지 입출력 처리량 등을 고려하여 최적의 입출력 패딩을 수행할 수 있다.I/O sorting and I/O merging are limited in that they do not change the amount of data in the working set. In an embodiment, the input/output optimization apparatus 110 may alleviate this limitation by continuously applying an input/output padding technique to input/output alignment and input/output merging. For example, the input/output optimization device 110 may increase the amount of transmitted data by inserting a padding page between chunks of adjacent pages. That is, the present invention can increase the size of the input/output through input/output padding, thereby increasing the effective input/output throughput during application loading. However, in order to successfully perform input/output padding, the gain through the expansion of the input/output size must exceed the overhead caused by the padding pages. Simply finding a certain size to fill all padding candidates below the threshold cannot minimize the loading time of the application. Instead, the input/output optimization device 110 determines the distance between adjacent page chunks, the size of the padding candidates, the size of the adjacent page chunks, whether padding for other nearby padding candidates, and storage input/output throughput for other starting LBAs and transmission sizes. In consideration of this, optimal input/output padding can be performed.

일 실시예에서, 입출력 최적화 장치(110)는 동적 프로그래밍 모델을 기초로 하는 효과적인 입출력 패딩 기법을 제안한다. 본 발명은 입출력 정렬 및 입출력 병합이 완료되면 n개의 페이지 청크들로 구성된 대상 애플리케이션의 작업집합은 W로 주어진다. 여기에서 W = (b0, b1, ..., bn-1)에 해당하고, bi는 LBA 순서로 정렬된 인접한 페이지들의 페이지 청크들에 해당할 수 있다. 일 실시예에서, 인접한 페이지 청크들 사이의 빈 공간은 단일 페이지의 크기보다 크거나 같을 수 있다. 입력 W0,n-1이 주어지면, 관련된 패딩 벡터 P를 정의할 수 있다. 여기에서, P = (p0, p1, ..., pn-2)에 해당할 수 있다. 여기에서, pi는 bi와 bi+1 사이의 빈 공간에 대한 패딩 후보에 해당한다. 일 실시예에서, 만약 bi와 bi+1 사이에 패딩 페이지를 삽입하는 것으로 결정하면 각 pi는 1로 설정될 수 있다. 예를 들어, P = (1, 1, 1, ..., 1)은 W의 모든 빈 공간이 패딩 페이지로 채워져 전체 작업집합을 포괄하는 단일의 입출력 요청을 생성하는 것을 의미할 수 있다.In one embodiment, the input/output optimization apparatus 110 proposes an effective input/output padding technique based on a dynamic programming model. In the present invention, when input/output sorting and input/output merging are completed, the working set of the target application consisting of n page chunks is given by W. Here, W = (b0, b1, ..., bn-1), and bi may correspond to page chunks of adjacent pages arranged in LBA order. In one embodiment, the blank space between adjacent page chunks may be greater than or equal to the size of a single page. Given the inputs W0,n-1, the related padding vector P can be defined. Here, it may correspond to P = (p0, p1, ..., pn-2). Here, pi corresponds to a padding candidate for an empty space between bi and bi+1. In one embodiment, if it is determined to insert a padded page between bi and bi+1, each pi may be set to 1. For example, P = (1, 1, 1, ..., 1) may mean that all empty spaces in W are filled with padded pages to generate a single I/O request covering the entire working set.

입출력 최적화 장치(110)는 패딩 결정 문제를 주어진 작업 집합 W에 대해 대상 응용 프로그램의 로딩 시간이 최소화되도록 최적의 패딩 벡터 P를 찾는 것으로 해결할 수 있다.The input/output optimization device 110 may solve the problem of determining the padding by finding an optimal padding vector P so that the loading time of the target application program is minimized for a given working set W.

일 실시예에서, 입출력 최적화 장치(110)는 동적 프로그래밍 모델을 통해 애플리케이션의 로딩 시간을 최소화시키는 최적의 패딩 벡터를 결정할 수 있다. 예를 들어, 작업집합 W에 대한 부분집합 Wi,j = (bi, ..., bj)를 결정하고, 부분집합에 대한 패딩 벡터를 Pi,j-1 = (pi, pi+1, ..., pj-1)로 결정한다. 그리고, read(i,j)를 Pi,j-1을 통해 Wi,j를 로드하기 위한 스토리지 액세스 시간으로 결정한다. 일 실시예에서, read(i,j)는 bi에서 bj까지 구간을 포함하는 단일 입출력 요청에 의해 산출될 수 있다. 마지막으로, t(i,j)를 최적의 패딩 벡터를 통해 Wi,j를 로드하는 시간으로 정의한다. 일 실시예에서, 아래 수학식1을 통해 t(i,j)와 이의 하위문제인 t(s,t) 사이의 관계를 구분할 수 있다.In an embodiment, the input/output optimizing device 110 may determine an optimal padding vector that minimizes the loading time of an application through a dynamic programming model. For example, determine the subset Wi,j = (bi, ..., bj) for the working set W, and set the padding vector for the subset to Pi,j-1 = (pi, pi+1, .. ., pj-1). Then, read(i,j) is determined as the storage access time for loading Wi,j through Pi,j-1. In one embodiment, read(i,j) may be calculated by a single input/output request that includes a section from bi to bj. Finally, we define t(i,j) as the time to load Wi,j through the optimal padding vector. In an embodiment, a relationship between t(i,j) and its subproblem t(s,t) may be distinguished through Equation 1 below.

[수학식1][Equation 1]

Figure pat00001
Figure pat00001

일 실시예에서, 만약 i=j 라면, 작업집합에 단 하나의 페이지 청크만이 존재하여, 입출력 패딩은 일어나지 않는다. 만약 j가 i보다 크면, 패딩 벡터 Pi,j-1는 (X,X,...,X)로 초기화된다. 여기에서 X는 아직 입출력 패딩 여부가 결정되지 않은 상태를 의미할 수 있다. 이후, min함수는 다음의 입출력 패딩 여부에 대한 결정들을 비교함으로써 Wi,j를 로드 할 수 있는 최소의 시간을 찾을 수 있다.In one embodiment, if i=j, there is only one page chunk in the working set, so no I/O padding occurs. If j is greater than i, then the padding vector Pi,j-1 is initialized to (X,X,...,X). Here, X may mean a state in which input/output padding has not yet been determined. Thereafter, the min function can find the minimum time to load Wi,j by comparing the next input/output padding decisions.

1) t(i,j)는 read(i,j)인 경우, 모든 패딩 후보들에 대해 입출력 패딩을 통해 빈 공간을 채운다. 즉, Pi,j-1 = (1,1,...,1).One) When t(i,j) is read(i,j), empty space is filled through input/output padding for all padding candidates. That is, Pi,j-1 = (1,1,...,1).

2) 하나의 후보

Figure pat00002
을 선택하고, Ps를 0으로 설정하고 나머지를 X로 설정한다. 예를 들어, s가 i+1로 설정되면, pi.j-1은 (X,O,X,...,X)가 되고 t(i,j)는 t(i,i+1)+t(i+2,j)가 된다.2) one candidate
Figure pat00002
Select, set Ps to 0 and the rest to X. For example, if s is set to i+1, pi.j-1 becomes (X,O,X,...,X) and t(i,j) becomes t(i,i+1)+ becomes t(i+2,j).

t(i,j)는 근본적인 하위문제의 계산을 완료한 후에만 산출될 수 있다. 예를 들어, 하위문제는 s=i+1인 Ps에 대한 t(i,i+1) 및 t(i+2,j)에 해당할 수 있다. 입출력 최적화 장치(110)는 하향식 접근법을 암기와 함께 사용하거나 필요한 모든 하위 문제를 평가하기 위해 표로 접근하는 상향식 접근법을 사용할 수 있다. 두 방법 모두 각 하위 문제를 한 번만 평가하여 계산 오버헤드를 크게 줄일 수 있다.t(i,j) can be calculated only after completing the calculation of the underlying subproblem. For example, the subproblem may correspond to t(i,i+1) and t(i+2,j) for Ps with s=i+1. The input/output optimizing device 110 may use a top-down approach with memorization or a bottom-up approach that approaches a table to evaluate all required sub-problems. Both methods can significantly reduce computational overhead by evaluating each subproblem only once.

마지막으로, t(0,n-1)에 대해 수학식1을 적용함으로써 입출력 최적화 장치(110)는 주어진 입력 W0,n-1에 대해서 최적의 패딩 벡터 P0,n-2를 산출할 수 있다. 도 4는 W0,3 = (b0,b1,b2,b3)에 대한 예시도에 해당한다. 도 4의 (c)-(e)는 t(0,3)이 6개의 서로 다른 하위문제들을 가지고 있음을 보여주고, 그 중 t(0,2)는 도면 4(f-h)에서 재귀적으로 결정될 수 있다. 예를 들어, t(0,0)과 t(0,1)이 이미 도면4(c-d)에서 산출되어 메모리에 저장되면, 도면4(g-h)의 두번째 계산은 단지 저장된 값을 불러들이는 것으로 수행될 수 있다.Finally, by applying Equation 1 to t(0,n-1), the input/output optimizing apparatus 110 may calculate an optimal padding vector P0,n-2 for a given input W0,n-1. 4 corresponds to an exemplary diagram for W0,3 = (b0,b1,b2,b3). 4(c)-(e) shows that t(0,3) has 6 different subproblems, of which t(0,2) is determined recursively in FIG. 4(fh). I can. For example, if t(0,0) and t(0,1) are already calculated in Fig. 4(cd) and stored in memory, the second calculation in Fig. 4(gh) is performed by simply retrieving the stored values. Can be.

수학식1은 주어진 시작 LBA 및 크기에 대한 읽기 액세스 시간을 반환하는 저장 성능 모델을 필요로 한다. 읽기 액세스 시간을 예측하기 위해 입출력 크기만을 사용하는 측정 기반 모델을 개발할 수 있다. 특히 주어진 입출력 크기에 대해 본 발명은 무작위로 생성된 LBA로 읽기 대기 시간 값을 측정하는 작업을 반복할 수 있다. 얻어진 값 중에서, 입출력 최적화 장치(110)는 특이점으로 인한 영향을 완화하기 위해 평균 보다는 중간 값을 선택할 수 있다.Equation 1 requires a storage performance model that returns the read access time for a given starting LBA and size. You can develop a measurement-based model that uses only the input/output size to predict the read access time. In particular, for a given input/output size, the present invention may repeat a task of measuring a read latency value with a randomly generated LBA. Among the obtained values, the input/output optimization device 110 may select an intermediate value rather than an average in order to mitigate the influence due to the singularity.

모든 가능한 입출력 크기에 대해 측정을 수행하는 데는 너무 많은 시간이 소요되기 때문에, 본 발명에서는 읽기 액세스 시간은 입출력 요청이 128KB보다 큰 경우 거의 선형으로 증가하는 점에 착안하여, 128KB보다 큰 입출력에 선형 외삽법을 사용하고 최대 128KB의 입출력 크기에 대한 룩업 테이블을 구성할 수 있다.Since it takes too much time to perform measurements for all possible I/O sizes, in the present invention, the read access time increases linearly when I/O requests are larger than 128 KB, and linear extrapolation to I/Os larger than 128 KB. You can use the method and construct a lookup table for I/O sizes of up to 128 KB.

결론적으로, 본 발명의 일 실시예에 따른 입출력 최적화 장치(110)는 다양한 입출력 크기에 대한 모바일 스토리지의 읽기 처리량을 측정하여 입출력 크기를 확대하는 것이 애플리케이션 로딩 성능을 향상시키는 효과적인 방법이 될 수 있다는 것을 개시한다. 또한, 입출력 최적화 장치(110)는 입출력 정렬, 입출력 병합 *?*및 입출력 패딩 기술과 함께 명시적 애플리케이션 로드 방법으로 구성된 적극적인 병합 기법을 개시할 수 있다. 마지막으로, 입출력 최적화 장치(110)는 입출력 패딩을 위한 최적의 패딩 결정(패딩 벡터)을 찾기 위해 동적 프로그래밍 모델을 산출하여 적용할 수 있다. 실험 결과, 구글 넥서스 5(Google Nexus 5) 스마트 폰에서 평균 입출력의 크기가 5.6X 증가하여 애플리케이션의 로딩 시간이 30 % 단축되었다. 이하, 도1 내지 도8을 통해 본발명의 일 실시예에 따른 입출력 최적화 장치(110)를 구체적으로 설명하기로 한다.In conclusion, the input/output optimization device 110 according to an embodiment of the present invention shows that increasing the input/output size by measuring the read throughput of the mobile storage for various input/output sizes can be an effective method of improving application loading performance. Start. In addition, the input/output optimizing device 110 may disclose an active merging technique composed of an explicit application loading method along with input/output alignment, input/output merge *?*, and input/output padding techniques. Lastly, the input/output optimization device 110 may calculate and apply a dynamic programming model to find an optimal padding determination (padding vector) for input/output padding. As a result of the experiment, the average input/output size on the Google Nexus 5 smartphone increased by 5.6X, reducing the application loading time by 30%. Hereinafter, an input/output optimizing apparatus 110 according to an embodiment of the present invention will be described in detail with reference to FIGS. 1 to 8.

도 1은 본 발명의 일 실시예에 따른 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 시스템(이하, 입출력 최적화 시스템)을 나타내는 도면이다.1 is a diagram illustrating an input/output optimization system (hereinafter, an input/output optimization system) for improving an application loading performance according to an embodiment of the present invention.

도 1을 참조하면, 입출력 최적화 시스템(100)은 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치(110, 이하 입출력 최적화 장치), 사용자 단말(120) 및 스토리지(130)를 포함할 수 있다.Referring to FIG. 1, the input/output optimization system 100 may include an input/output optimization device 110 (hereinafter referred to as input/output optimization device), a user terminal 120, and a storage 130 for improving application loading performance.

입출력 최적화 장치(110)는 애플리케이션의 시작 단계 또는 비활성화된 백그라운드 애플리케이션의 활성화 단계에서 애플리케이션의 로딩 속도를 줄이기 위한 입출력 명령의 최적화를 수행할 수 있다. 보다 구체적으로, 입출력 최적화 장치(110)는 사용자 단말(120)과 연결되어 사용자의 사용자 단말(120)을 통한 애플리케이션의 실행 또는 활성화 과정에서 로딩 속도를 줄이고 결과적으로 성능을 개선시킬 수 있다. 일 실시예에서, 입출력 최적화 장치(110)는 기존의 요구 페이징 기반의 운영체제에서 달성하지 못하는 플래시 스토리지의 최대 입출력 처리량을 달성할 수 있다. 예를 들어, 입출력 최적화 장치(110)는 애플리케이션의 로딩에서 입출력 패딩을 통해 입출력의 크기를 확대하여 스토리지 처리량을 늘리는 공격적인 병합 방안을 통해 로딩 성능을 개선할 수 있다.The input/output optimizing device 110 may optimize an input/output command to reduce a loading speed of an application in the starting stage of the application or the activation stage of the deactivated background application. More specifically, the input/output optimization device 110 may be connected to the user terminal 120 to reduce a loading speed in the process of executing or activating an application through the user terminal 120 of the user and, as a result, improve performance. In one embodiment, the input/output optimization device 110 may achieve a maximum input/output throughput of a flash storage that cannot be achieved in a conventional paging-based operating system. For example, the input/output optimization device 110 may improve loading performance through an aggressive merging scheme that increases the storage throughput by increasing the size of the input/output through input/output padding during application loading.

사용자 단말(120)은 입출력 최적화 장치(110)와 연결되어 사용자에게 다양한 애플리케이션을 제공할 수 있는 컴퓨팅 장치에 해당할 수 있다. 일 실시예에서, 사용자 단말(120)은 스마트폰 또는 태블릿 PC로 구현될 수 있으며, 반드시 이에 한정되지 않고, 애플리케이션을 실행할 수 있는 다양한 디바이스로 구현될 수 있다. 사용자 단말(120)은 입출력 최적화 장치(110)와 네트워크를 통해 연결될 수 있고, 적어도 하나의 사용자 단말(120)은 입출력 최적화 장치(110)와 동시에 연결될 수 있으며, 바람직하게는, 사용자 단말(120)의 내부에 구현될 수 있다.The user terminal 120 may correspond to a computing device that is connected to the input/output optimization device 110 to provide various applications to a user. In one embodiment, the user terminal 120 may be implemented as a smartphone or a tablet PC, and is not necessarily limited thereto, and may be implemented as various devices capable of executing applications. The user terminal 120 may be connected to the input/output optimization device 110 through a network, and at least one user terminal 120 may be connected to the input/output optimization device 110 at the same time, preferably, the user terminal 120 Can be implemented inside of

스토리지(130)는 다양한 종류의 메모리 또는 저장 장치에 해당할 수 있다. 스토리지(130)는 비휘발성 또는 휘발성 메모리로 구현되어 사용자 단말(120)의 애플리케이션을 실행하는데 필요한 데이터 전반을 저장하는데 사용되는 기억장치에 해당할 수 있다. 예를 들어, 스토리지(130)는 플래시 메모리에 해당할 수 있다. The storage 130 may correspond to various types of memories or storage devices. The storage 130 may be implemented as a nonvolatile or volatile memory, and may correspond to a storage device used to store all data required to execute an application of the user terminal 120. For example, the storage 130 may correspond to a flash memory.

도 2는 도 1에 있는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치(이하, 입출력 최적화 장치)를 나타내는 블록도이다.FIG. 2 is a block diagram illustrating an input/output optimizing device (hereinafter referred to as an input/output optimizing device) for improving the loading performance of the application shown in FIG. 1.

도 2를 참조하면, 입출력 최적화 장치(110)는 제1 작업집합 생성부(210), 입출력 패딩부(220) 및 제2 작업집합 생성부(230)를 포함한다.Referring to FIG. 2, the input/output optimization device 110 includes a first work set generation unit 210, an input/output padding unit 220, and a second work set generation unit 230.

작업집합(working set)은 애플리케이션의 시작 또는 활성화 등의 작업 단계에서 작업이 수행될 수 있도록 단위 작업들을 집합으로 구성한 것을 의미할 수 있다. 제1 작업집합 생성부(210)는 입출력 스케줄링을 통해 제1 작업집합을 생성할 수 있다. 여기에서, 입출력 스케줄링은 운영체제(OS, Operating System)가 복수의 프로세서들로부터 디스크를 읽거나 쓰려는 요청을 받았을 때, 우선순위를 정해주고 이를 관리하는 것을 의미할 수 있다. 예를 들어, 입출력 스케줄링은 다양한 종류의 입출력 스케줄러(I/O scheduler)에 의해 수행될 수 있다. 일 실시예에서, 제1 작업집합 생성부(210)는 입출력 정렬 및 입출력 병합을 포함하는 입출력 스케줄링을 통해 제1 작업집합을 생성할 수 있다. 여기에서, 입출력 정렬(I/O reordering)과 입출력 병합(I/O merging)은 입출력 스케줄러에 의해서 수행되고, 큐(queue)에서 계류(pending)중인 입출력(I/O)에 대한 최적화를 수행할 수 있다. 일 실시예에서, 제1 작업집합 생성부(210)는 입출력 정렬을 통해 복수의 페이지 청크들을 LBA(Logical Block Address) 순서로 정렬할 수 있다. 여기에서, 제1 작업집합(working set)은 복수의 페이지들의 묶음에 해당하는 복수의 페이지 청크(page chunk)들로 구성될 수 있고, LBA는 컴퓨터 기억 장치에 저장되는 데이터 블록의 위치를 지정하는데 쓰이는 공통 스킴(scheme)으로, 단순한 선형 주소 지정 스킴에 해당할 수 있다. 일 실시예에서, 제1 작업집합 생성부(210)는 입출력 병합을 통해 정렬된 복수의 페이지 청크들 중 서로 인접한 페이지 청크들을 단일의 페이지 청크로 병합하여 제1 작업집합을 생성할 수 있다. 일 실시예에서, 제1 작업집합 생성부(210)는 제1 작업집합의 생성 과정에서 입출력 정렬을 통해 페이지 청크들을 정렬하여 입출력 병합의 확률을 높임으로써 입출력의 크기를 증가시킬 수 있다.A working set may mean that unit tasks are configured as a set so that a task can be performed at a task stage such as starting or activating an application. The first work set generation unit 210 may generate a first work set through input/output scheduling. Here, input/output scheduling may mean that when an operating system (OS) receives a request to read or write a disk from a plurality of processors, it sets a priority and manages it. For example, I/O scheduling may be performed by various types of I/O schedulers. In an embodiment, the first work set generation unit 210 may generate the first work set through input/output scheduling including input/output sorting and input/output merging. Here, I/O reordering and I/O merging are performed by the I/O scheduler, and optimization for input/output (I/O) pending in the queue is performed. I can. In an embodiment, the first work set generation unit 210 may arrange a plurality of page chunks in a logical block address (LBA) order through input/output alignment. Here, the first working set may be composed of a plurality of page chunks corresponding to a bundle of a plurality of pages, and the LBA designates a location of a data block stored in a computer storage device. This is a common scheme used, and can correspond to a simple linear addressing scheme. In an embodiment, the first work set generation unit 210 may generate a first work set by merging adjacent page chunks from among a plurality of page chunks arranged through input/output merging into a single page chunk. In an embodiment, the first work set generation unit 210 may increase the size of input/output by increasing the probability of input/output merging by arranging page chunks through input/output alignment in the process of generating the first work set.

입출력 패딩부(220)는 생성된 제1 작업집합에 대해서, 제1 작업집합을 구성하는 복수의 페이지 청크들 사이에 패딩 페이지(padding page)를 채워 넣는 입출력 패딩(I/O padding)을 수행할 수 있다. 여기에서, 패딩 페이지는 각각 복수의 페이지(pages)들을 포함하는 복수의 페이지 청크들의 사이사이에 존재하는 빈 공간을 채워 넣기 위해 삽입되는 특정 페이지에 해당할 수 있다. 또한, 입출력 패딩은 패딩 페이지를 제1 작업집합을 구성하는 복수의 페이지 청크들 사이에 추가로 삽입하는 것을 의미할 수 있다. 보다 구체적으로, 입출력 패딩부(220)는 입출력 패딩을 수행하여 입출력의 크기를 확대시킴으로써 애플리케이션의 로딩 속도를 줄이고 성능을 개선시킬 수 있다. 일 실시예에서, 입출력 패딩부(220)는 입출력 패딩을 수행하는 과정에서 복수의 페이지 청크들 사이사이에 존재하는 빈 공간들을 패딩 후보들로 결정하는 패딩 벡터를 정의할 수 있다. 보다 구체적으로, 입출력 패딩부(220)는 입출력 패딩을 통해 입출력의 크기를 확대함으로써 얻는 이득이 패딩 페이지의 추가적인 삽입에 의한 오버헤드(overhead)를 초과하도록 하는 최적의 패딩 벡터를 정의할 수 있다. 즉, 입출력 패딩부(220)는 최적의 패딩 벡터를 통해 효율적인 입출력 패딩을 수행하여 입출력의 크기를 확대할 수 있다. 보다 구체적으로, 입출력 패딩부(220)는 입출력 정렬 및 입출력 병합을 포함하는 입출력 스케줄링을 통해 생성된 제1 작업집합에 대해서 입출력 패딩을 수행하는 과정에서 복수의 패딩 후보들 중에서 패딩 페이지를 채워 넣을 패딩 후보들을 결정하는 최적의 패딩 벡터를 검출할 수 있다.The input/output padding unit 220 performs input/output padding (I/O padding) filling a padding page between a plurality of page chunks constituting the first work set for the generated first work set. I can. Here, the padded page may correspond to a specific page inserted to fill an empty space existing between a plurality of page chunks each including a plurality of pages. In addition, input/output padding may mean additionally inserting a padding page between a plurality of page chunks constituting the first working set. More specifically, the input/output padding unit 220 may increase the size of the input/output by performing input/output padding, thereby reducing a loading speed of an application and improving performance. In an embodiment, the input/output padding unit 220 may define a padding vector for determining blank spaces between a plurality of page chunks as padding candidates in a process of performing input/output padding. More specifically, the input/output padding unit 220 may define an optimal padding vector such that a gain obtained by increasing the size of input/output through input/output padding exceeds an overhead due to additional insertion of a padding page. That is, the input/output padding unit 220 may increase the size of the input/output by performing efficient input/output padding through the optimal padding vector. More specifically, the input/output padding unit 220 includes padding candidates to fill the padding page among a plurality of padding candidates in the process of performing input/output padding for the first work set generated through input/output scheduling including input/output alignment and input/output merging. It is possible to detect an optimal padding vector to determine the.

모바일 애플리케이션의 작업집합은 일반적으로 수백, 수천 페이지 청크들로 구성될 수 있는데, 입출력 정렬 및 입출력 병합에 따른 계산 오버헤드는 무시할 수 있는 정도에 해당할 수 있다. 반면에, 입출력 최적화 장치(110)는 입출력 패딩부(220)를 통해 입출력 패딩을 수행하는 과정에서 동적 프로그래밍 모델을 사용하여 시간 및 공간적으로 계산과 저장에 필요한 오버헤드를 가진다. 일 실시예에서, 입출력 패딩부(220)는 오버헤드를 줄이기 위해 128KB보다 큰 패딩 후보들이 발생할 때마다 제1 작업집합을 복수의 부분집합들로 분할할 수 있다. 예를 들어, 입출력 패딩부(220)는 메신저 애플리케이션의 최적화 과정에서 테이블 항목 수를 555,985 (2,171KB)에서 3,756 (15KB)로 줄일 수 있고, 그에 따라 계산 시간을 213초에서 0.07초로 감소시킬 수 있다.The working set of a mobile application can typically consist of hundreds or thousands of page chunks, and the computational overhead of I/O sorting and I/O merging can be negligible. On the other hand, the input/output optimizing device 110 uses a dynamic programming model in a process of performing input/output padding through the input/output padding unit 220 and has overhead required for calculation and storage in terms of time and space. In an embodiment, the input/output padding unit 220 may divide the first working set into a plurality of subsets whenever padding candidates larger than 128 KB are generated to reduce overhead. For example, the input/output padding unit 220 can reduce the number of table items from 555,985 (2,171 KB) to 3,756 (15 KB) in the process of optimizing the messenger application, and accordingly, can reduce the calculation time from 213 seconds to 0.07 seconds. .

일 실시예에서, 입출력 패딩부(220)는 동적 프로그래밍 모델(dynamic programming model)을 통해 제1 작업집합에 대해 최소의 로딩 시간을 가지는 패딩 벡터를 검출할 수 있다. 보다 구체적으로, 입출력 패딩부(220)는 동적 프로그래밍 모델을 통해 패딩 후보들의 크기 및 패딩 후보들 각각을 둘러싸고 있는 인접한 페이지 청크들의 크기를 고려하여 패딩 벡터를 검출할 수 있다. 입출력 패딩부(220)는 동적 프로그래밍 모델을 통해 인접한 다른 패딩 후보들에 대한 입출력 패딩의 수행여부 및 다른 시작 LBA와 전송 크기에 대한 스토리지 입출력 처리량(throughput)을 고려하여 패딩 벡터를 검출할 수 있다. 결론적으로, 입출력 패딩부(220)는 검출된 패딩 벡터를 통해 패딩 후보들에 대한 입출력 패딩의 수행 여부를 동적으로 결정할 수 있다.In an embodiment, the input/output padding unit 220 may detect a padding vector having a minimum loading time for the first working set through a dynamic programming model. More specifically, the input/output padding unit 220 may detect the padding vector in consideration of the size of the padding candidates and the size of adjacent page chunks surrounding each of the padding candidates through the dynamic programming model. The input/output padding unit 220 may detect a padding vector in consideration of whether input/output padding for other adjacent padding candidates is performed and a storage input/output throughput for a different starting LBA and a transmission size through a dynamic programming model. In conclusion, the input/output padding unit 220 may dynamically determine whether to perform input/output padding for padding candidates through the detected padding vector.

일 실시예에서, 입출력 패딩부(220)는 입출력 정렬 및 입출력 병합이 완료되면 n개의 페이지 청크들로 구성된 대상 애플리케이션의 작업집합 W를 제1 작업집합으로 생성할 수 있다. 여기에서, W = (b0, b1, ..., bn-1)에 해당하고, bi는 LBA 순서로 정렬된 인접한 페이지들의 페이지 청크들에 해당할 수 있다. 인접한 페이지 청크들 사이의 빈 공간은 단일 페이지 크기보다 크거나 같을 수 있다. 입출력 패딩부(220)는 입력

Figure pat00003
이 주어지면, 관련된 패딩 벡터 P = (p0, p1, ..., pn-2)를 정의할 수 있다. 여기에서, pi는 bi와 bi+1 사이의 빈 공간에 대한 패딩 후보에 해당한다. 일 실시예에서, 입출력 패딩부(220)는 만약 bi와 bi+1 사이에 패딩 페이지를 삽입하는 것으로 결정하면, 각pi를 1로 설정할 수 있다. 예를 들어, P = (1, 1, 1, ..., 1)은 제1 작업집합(W)의 모든 빈 공간을 패딩 페이지로 채워 전체 작업집합을 포괄하는 단일의 입출력 요청을 생성하는 것을 의미할 수 있다. 일 실시예에서, 입출력 패딩부(220)는 제1 작업집합(W)에 대한 부분집합(subset) Wi,j = (bi, ..., bj)를 결정하고, 부분집합에 대한 패딩 벡터를 Pi,j-1 = (pi, pi+1, ..., pj-1)로 결정할 수 있다. 입출력 패딩부(220)는 read(i,j)를 Pj,j-1을 통해 Wi,j를 로드하기 위한 스토리지 액세스 시간으로 결정할 수 있다. 여기에서, read(i,j)는 bi에서 bj까지 구간을 포함하는 단일 입출력 요청에 의해 산출될 수 있다. 입출력 패딩부(220)는 t(i,j)를 최적의 패딩 벡터를 통해 Wi,j를 로드하는 시간으로 결정할 수 있다. 보다 구체적으로, 입출력 패딩부(220)는 아래 수학식1을 통해
Figure pat00004
에서 t(i,j)와 이의 하위문제인 t(s,t) 사이의 관계를 구별할 수 있다.In an embodiment, when input/output alignment and input/output merging are completed, the input/output padding unit 220 may generate a work set W of the target application composed of n page chunks as the first work set. Here, W = (b0, b1, ..., bn-1), and bi may correspond to page chunks of adjacent pages arranged in the LBA order. The empty space between adjacent page chunks may be greater than or equal to a single page size. Input/output padding unit 220 is input
Figure pat00003
Given is, we can define the associated padding vector P = (p0, p1, ..., pn-2). Here, pi corresponds to a padding candidate for an empty space between bi and bi+1. In one embodiment, if the input/output padding unit 220 determines to insert a padding page between bi and bi+1, each pi may be set to 1. For example, P = (1, 1, 1, ..., 1) fills all empty spaces in the first work set (W) with padded pages to create a single I/O request covering the entire work set. It can mean. In one embodiment, the input/output padding unit 220 determines a subset Wi,j = (bi, ..., bj) for the first working set W, and calculates a padding vector for the subset. It can be determined as Pi,j-1 = (pi, pi+1, ..., pj-1). The input/output padding unit 220 may determine read(i,j) as a storage access time for loading Wi,j through Pj,j-1. Here, read(i,j) can be calculated by a single input/output request that includes a section from bi to bj. The input/output padding unit 220 may determine t(i,j) as a time to load Wi,j through an optimal padding vector. More specifically, the input/output padding unit 220 is through Equation 1 below.
Figure pat00004
The relationship between t(i,j) and its subproblem t(s,t) can be distinguished.

[수학식1][Equation 1]

Figure pat00005
Figure pat00005

예를 들어, 입출력 패딩부(220)는 i=j인 경우, 제1 작업집합에 단 하나의 페이지 청크만이 존재하기 때문에 입출력 패딩을 수행하지 않는다. 입출력 패딩부(220)는 j가 i보다 큰 경우, 패딩 벡터 Pi,j-1를 (X,X,...,X)로 초기화시킬 수 있다. 여기에서, X는 아직 입출력 패딩 여부가 결정되지 않은 상태를 의미한다. 이후, 입출력 패딩부(220)는 수학식1의 min함수를 통해 Wi,j를 로드 하는 최소의 시간을 찾을 수 있다. 예를 들어, 입출력 패딩부(220)는 t(i,j)가 read(i,j)가 되는 경우, 모든 패딩후보에 대해서 (즉, Pi,j-1 = (1,1,...,1)이 되는) 입출력 패딩을 수행할 수 있다. 또한, 입출력 패딩부(220)는 입출력 패딩 여부를 결정하는 과정에서, 단일의 패딩 후보

Figure pat00006
를 선택하여 Ps를 0으로 결정하고 나머지를 X로 결정할 수 있다. 예를 들어, 입출력 패딩부(220)는 s를 i+1로 결정하면 Pi,j+1를 (X,0,X,...,X)로 t(i,j)를 t(i,i+1)+t(i+2,j)로 결정할 수 있다. 일 실시예에서, 입출력 패딩부(220)는 근본적 하위문제의 계산을 완료한 후에 t(i,j)를 산출할 수 있다. 예를 들어, 근본적 하위문제는 s=i+1에서 Ps에 대한 t(i,i+1) 및 t(i+2,j)에 해당할 수 있다. 일 실시예에서, 입출력 패딩부(220)는 암기와 함께 하향식 접근법을 사용하거나 표와 함께 상향식 접근법을 사용하여 모든 필요한 하위 문제들을 평가할 수 있다. 두 방법 모두 각 하위 문제를 한 번씩만 평가하여 계산 오버 헤드를 크게 줄일 수 있다. 결론적으로, 입출력 패딩부(220)는 t(0,n-1)에 대해 수학식1을 적용함으로써 주어진 입력
Figure pat00007
에 대해서 최적의 패딩 벡터
Figure pat00008
를 산출할 수 있다.For example, when i=j, the input/output padding unit 220 does not perform input/output padding because only one page chunk exists in the first working set. When j is greater than i, the input/output padding unit 220 may initialize the padding vector Pi,j-1 to (X,X,...,X). Here, X means a state in which input/output padding has not yet been determined. Thereafter, the input/output padding unit 220 may find the minimum time to load Wi,j through the min function of Equation 1. For example, when t(i,j) becomes read(i,j), the input/output padding unit 220 is for all padding candidates (ie, Pi,j-1 = (1,1,... ,1)) I/O padding can be performed. In addition, the input/output padding unit 220 determines whether or not to pad the input/output, a single padding candidate
Figure pat00006
By selecting, Ps can be determined as 0 and the remainder as X. For example, if the input/output padding unit 220 determines s as i+1, then Pi,j+1 is (X,0,X,...,X) and t(i,j) is t(i, It can be determined as i+1)+t(i+2,j). In an embodiment, the input/output padding unit 220 may calculate t(i,j) after completing the calculation of the fundamental subproblem. For example, the fundamental subproblem may correspond to t(i,i+1) and t(i+2,j) for Ps at s=i+1. In one embodiment, the input/output padding unit 220 may evaluate all necessary subproblems using a top-down approach with memorization or a bottom-up approach with a table. Both methods can significantly reduce computational overhead by evaluating each subproblem only once. In conclusion, the input/output padding unit 220 applies Equation 1 to t(0,n-1)
Figure pat00007
The optimal padding vector for
Figure pat00008
Can be calculated.

제2 작업집합 생성부(230)는 입출력 패딩을 통해 입출력의 크기가 확대된 제2 작업집합을 생성할 수 있다. 보다 구체적으로, 제2 작업집합 생성부(230)는 입출력 패딩부(220)에 의해 제1 작업집합에 대한 입출력 패딩을 수행하고 그에 따라 입출력의 크기가 확대된 제2 작업집합을 최종적인 작업집합으로 생성할 수 있다. 결과적으로, 입출력 최적화 장치(110)는 제2 작업집합 생성부(230)를 통해 생성된 최종적인 작업집합을 가지고 애플리케이션을 실행함으로써 스토리지의 처리량을 증가시키며 애플리케이션의 로딩 속도를 증가시킬 수 있다.The second work set generation unit 230 may generate a second work set in which the size of the input/output is enlarged through input/output padding. More specifically, the second work set generation unit 230 performs input/output padding for the first work set by the input/output padding unit 220, and accordingly, the second work set in which the size of the input/output is enlarged is a final work set. Can be created with As a result, the input/output optimization device 110 may increase the throughput of storage and increase the loading speed of the application by executing the application with the final work set generated through the second work set generation unit 230.

제어부(240)는 입출력 최적화 장치(110)가 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화를 수행하는 과정에서 입출력 최적화 장치(110)의 동작 전반을 제어하고, 제1 작업집합 생성부(210), 입출력 패딩부(220) 및 제2 작업집합 생성부(230)간 데이터 및 제어 흐름을 관리할 수 있다.The controller 240 controls the overall operation of the input/output optimization device 110 in the process of the input/output optimization device 110 performing input/output optimization for improving the loading performance of an application, and the first work set generator 210, the input/output Data and control flow between the padding unit 220 and the second work set generation unit 230 may be managed.

도 3은 일 실시예에 따른 입출력 크기에 따른 스토리지 입출력의 처리량을 보여주는 그래프이다.3 is a graph showing a throughput of a storage input/output according to an input/output size according to an exemplary embodiment.

도 3에서, 본 발명의 일 실시예에 따른 입출력 최적화 장치에서 수행하고자 하는 입출력 크기의 확대에 따른 스토리지의 입출력 처리량의 변화를 보여주는 그래프를 개시할 수 있다. 도 3은 구글 넥서스5 (32GB eMMC 스토리지)의 입출력 사이즈에 따른 처리량을 보여주는 그래프이다. 예를 들어, 애플리케이션의 로딩 과정에서 관측되는 입출력의 크기는 약 43.4KB로 관측되는데, 도 3에서 알 수 있듯이 eMMC 스토리지의 최대 입출력 처리량을 얻기 위해서는 적어도 256KB의 입출력 크기가 필요하다. 따라서, 입출력 최적화 장치(110)는 입출력 처리량을 적어도 256KB까지 확대시킴으로써 스토리지의 입출력 처리량을 최대 입출력 처리량에 가깝게 구현할 수 있다.In FIG. 3, a graph showing a change in an input/output throughput of a storage according to an enlargement of an input/output size to be performed by an input/output optimization apparatus according to an embodiment of the present invention may be disclosed. 3 is a graph showing throughput according to input/output size of Google Nexus 5 (32GB eMMC storage). For example, the size of the input/output observed during the loading process of the application is observed to be about 43.4KB. As can be seen in FIG. 3, an input/output size of at least 256KB is required to obtain the maximum input/output throughput of the eMMC storage. Accordingly, the input/output optimization device 110 can implement the input/output throughput of the storage close to the maximum input/output throughput by expanding the input/output throughput to at least 256 KB.

도 4는 본 발명의 다른 일 실시예에 따른 입출력 패딩을 수행하는 방법을 보여주는 도면이다. 4 is a diagram illustrating a method of performing input/output padding according to another embodiment of the present invention.

도 4에서, 입출력 최적화 장치(110)는 일 실시예에 따라 W0,3 = (b0,b1,b2,b3) 에 대해서 t(0,3)를 해결할 수 있다. 도 4의 (c-e)는 t(0,3)이 6개의 서로 다른 하위문제들을 가지고 있음을 보여주고, 그 중 t(0,2)는 도 4의 (f-h)에서 재귀적으로 구해질 수 있다. 예를 들어, 입출력 최적화 장치(110)는 t(0,0)과 t(0,1)이 이미 도 4의(c-d)에서 산출되어 메모리에 저장되면, 도 4(g-h)의 두번째 계산은 단지 메모리에서 저장된 값을 불러들여 수행할 수 있다.In FIG. 4, the input/output optimization device 110 may solve t(0,3) for W0,3 = (b0,b1,b2,b3) according to an embodiment. 4(ce) shows that t(0,3) has 6 different subproblems, of which t(0,2) can be recursively obtained from FIG. 4(fh). . For example, if the input/output optimization device 110 has already calculated t(0,0) and t(0,1) in FIG. 4(cd) and stored in the memory, the second calculation in FIG. 4(gh) is only It can be executed by retrieving the stored value from memory.

도 5는 본 발명의 일 실시예에 따른 입출력 패딩의 결과를 보여주는 도면이다.5 is a diagram illustrating a result of input/output padding according to an embodiment of the present invention.

도 5(a)는 본 발명의 일 실시예에 따른 입출력 패딩의 결과를 애플리케이션 중 메신저에 대해서 나타내는 논리 블록 맵의 일부에 해당한다. 도 5(b)는 결정된 입출력 패딩의 내역을 보여주는 도면이다.5(a) corresponds to a part of a logical block map showing the result of input/output padding for a messenger among applications according to an embodiment of the present invention. 5(b) is a diagram showing details of the determined input/output padding.

도 5(a)에서, 입출력 최적화 장치(110)는 입출력 패딩을 통해 인접한 페이지 청크의 크기를 효과적으로 확대하여 메신저 애플리케이션을 로드(load)하는 동안 입출력의 크기를 확대시킬 수 있다. 예를 들어, 도 5(a)에서, 입출력 최적화 장치(110)는 모든 테스트 애플리케이션에서 패딩 페이지의 양은 원래의 제1 작업집합의 크기의 7.4 %인 85.0MB에 해당할 수 있고, 결과적으로, 입출력 패딩에 따라 생성된 제2 작업집합의 입출력의 크기는 평균 5.6X 증가할 수 있다. 도 5(b)에서, 입출력 최적화 장치(110)는 입출력 패딩을 통해 다양한 크기의 패딩 후보들에 대해 패딩 결정을 내릴 수 있다. 도 5(b)를 참조하면, 예를 들어, 입출력 최적화 장치(110)는 패딩 후보의 크기가 작을수록 입출력 패딩을 선호적으로 수행할 수 있다.In FIG. 5A, the input/output optimization device 110 may effectively enlarge the size of adjacent page chunks through input/output padding to increase the size of input/output while loading a messenger application. For example, in FIG. 5 (a), the input/output optimization device 110 indicates that the amount of padding pages in all test applications may correspond to 85.0 MB, which is 7.4% of the size of the original first working set, and as a result, input/output The size of the input/output of the second working set generated according to the padding may increase by 5.6X on average. In FIG. 5B, the input/output optimization device 110 may determine padding for padding candidates of various sizes through input/output padding. Referring to FIG. 5B, for example, the input/output optimization apparatus 110 may preferentially perform input/output padding as the size of the padding candidate is smaller.

도 6은 본 발명의 일 실시예에 따른 로딩 속도 개선을 위한 입출력 최적화 방법을 나타내는 순서도이다.6 is a flowchart illustrating an input/output optimization method for improving a loading speed according to an embodiment of the present invention.

도 6에서, 입출력 최적화 장치(110)는 제1 작업집합 생성부(210)를 통해 입출력 정렬 및 입출력 병합을 포함하는 입출력 스케줄링을 통해 제1 작업집합을 생성할 수 있다(단계 S610). 입출력 최적화 장치(110)는 입출력 패딩부(220)를 통해 제1 작업집합에 대해서, 제1 작업집합을 구성하는 복수의 페이지 청크들 사이에 패딩 페이지를 채워 넣는 입출력 패딩을 수행할 수 있다(단계 S620). 입출력 최적화 장치(110)는 제2 작업집합 생성부(230)를 통해 입출력 패딩에 의해서 입출력의 크기가 확대된 제2 작업집합을 최종 작업집합으로 생성할 수 있다(단계 S630).In FIG. 6, the input/output optimization device 110 may generate a first work set through input/output scheduling including input/output alignment and input/output merging through the first work set generation unit 210 (step S610). The input/output optimization device 110 may perform input/output padding for filling a padded page between a plurality of page chunks constituting the first work set with respect to the first work set through the input/output padding unit 220 (step S620). The input/output optimizing device 110 may generate a second work set in which the size of the input/output is enlarged by the input/output padding through the second work set generation unit 230 as a final work set (step S630).

도 7은 본 발명의 다른 일 실시예에 따른 로딩 속도 개선을 위한 입출력 최적화 방법을 나타내는 흐름도이다.7 is a flowchart illustrating an input/output optimization method for improving a loading speed according to another embodiment of the present invention.

도 7에서, 입출력 최적화 장치(110)는 저장장치(스토리지(130))의 다양한 크기의 입출력에 대한 입출력 성능 모델을 확보할 수 있다(단계 S710). 일 실시예에서, 입출력 최적화 장치(110)는 최적화 대상 애플리케이션을 실행하는 사용자 단말(120)에 내장된 플래시 스토리지(eMMC 등)에 대해 다양한 크기의 입출력 명령을 인가하고 시간을 측정하여 성능 모델을 확보할 수 있다.In FIG. 7, the input/output optimization device 110 may secure an input/output performance model for input/output of various sizes of a storage device (storage 130) (step S710). In one embodiment, the input/output optimization device 110 secures a performance model by applying input/output commands of various sizes to the flash storage (eMMC, etc.) built into the user terminal 120 executing the optimization target application and measuring time. can do.

입출력 최적화 장치(110)는 애플리케이션의 입출력 명령을 모니터링하고 분석하여 애플리케이션의 반입(fetch)시에 작업집합을 추출할 수 있다(단계 S720).The input/output optimization device 110 monitors and analyzes the input/output command of the application to extract a work set when the application is fetched (step S720).

입출력 최적화 장치(110)는 추출한 작업집합의 페이지 청크에 대해 입출력 정렬 및 입출력 병합을 우선 수행한 후 동적 프로그래밍 모델을 통해 최적의 작업집합을 생성하고 저장할 수 있다(단계 S730). 일 실시예에서, 입출력 최적화 장치(110)는 입출력 정렬 및 입출력 병합을 수행한 작업집합을 제1 작업집합으로 생성하고, 이후, 제1 작업집합에 대해 동적 프로그래밍 모델을 통해 입출력 패딩을 수행하여 최적화된 제2 작업집합을 최종 작업집합으로 생성하고 저장할 수 있다.The input/output optimizing device 110 may first perform input/output sorting and input/output merging on page chunks of the extracted work set, and then generate and store an optimal work set through a dynamic programming model (step S730). In one embodiment, the input/output optimization device 110 generates a work set in which input/output alignment and input/output merge is performed as a first work set, and then, optimizes the first work set by performing input/output padding through a dynamic programming model. The resulting second work set can be created and saved as a final work set.

입출력 최적화 장치(110)는 애플리케이션의 시동 또는 백그라운드 애플리케이션의 활성화 등의 사건을 감지하는 즉시 애플리케이션이 요구페이징에 의해 반입되지 않도록 애플리케이션을 일시 중지할 수 있다(단계 S740).The input/output optimizing device 110 may pause the application so that the application is not loaded by the request paging immediately upon detecting an event such as startup of an application or activation of a background application (step S740).

입출력 최적화 장치(110)는 제2 작업집합을 반입시킨 후 애플리케이션의 실행 또는 활성화를 재개할 수 있다(단계 S750).The input/output optimizing device 110 may resume execution or activation of the application after importing the second work set (step S750).

도 8은 본 발명의 일 실시예에 따른 효과를 보여주는 그래프이다.8 is a graph showing an effect according to an embodiment of the present invention.

도 8(a)는 각각의 입출력 최적화 단계에 따른 다양한 종류의 애플리케이션들의 로딩 시간을 보여주고, 도 8(b)는 백그라운드의 입출력 간섭이 존재하는 상황에서 애플리케이션의 로딩 성능을 보여주는 그래프이다.FIG. 8(a) is a graph showing loading times of various types of applications according to each input/output optimization step, and FIG. 8(b) is a graph showing the loading performance of applications in the presence of background input/output interference.

도 8(a)에서, 입출력 정렬(I/O reordering) 자체는 로딩 시간에 거의 영향을 미치지 않지만, 입출력 병합(I/O merging)을 통해 로딩 시간은 19.3% 단축됨을 알 수 있다. 입출력 최적화 장치(110)는 추가적인 입출력 패딩(I/O padding)을 통해 총 29.9%의 로딩 시간 감소를 얻을 수 있다. 도 8(a)에서, 입출력 최적화 장치(110)를 통한 로딩 속도의 감소는 애플리케이션의 종류에 따라 다르게 나타날 수 있다. 예를 들어, temple run 2의 경우 입출력 병합에 따라 27.1%의 속도 감소를 얻은 반면, 입출력 패딩에 따른 추가적인 속도 감소는 2.9%P(percentage point)에 불과함을 알 수 있다. 반대로, 메신저의 경우에는 입출력 병합으로 8.0%의 속도 감소만을 얻는 반면, 입출력 패딩의 추가 적용을 통해서 25.1%P의 추가적인 속도 감소를 얻을 수 있다.In Fig. 8(a), although I/O reordering itself hardly affects the loading time, it can be seen that the loading time is shortened by 19.3% through I/O merging. The input/output optimization device 110 may achieve a reduction in loading time of 29.9% in total through additional input/output padding. In FIG. 8A, the reduction in the loading speed through the input/output optimization device 110 may differ depending on the type of application. For example, in the case of temple run 2, it can be seen that 27.1% of the speed reduction was achieved due to input/output merging, while the additional speed reduction due to input/output padding was only 2.9%P (percentage point). Conversely, in the case of messenger, only 8.0% of speed reduction is obtained through input/output merging, while additional speed reduction of 25.1%P can be obtained through additional application of input/output padding.

도 8(b)에서, 다양한(3가지) 종류의 백그라운드 입출력 간섭이 애플리케이션의 로딩 시간에 미치는 영향을 보여준다. 비디오 재생, FTP 다운로드 및 애플리케이션 업데이트는 각각 낮은, 중간 및 높은 입출력 강도를 나타낸다. 일 실시예에서, 유사한 입출력 간섭을 재현하기 위해 blktrace를 적용하여 각 프로세스의 백그라운드 입출력 시퀀스를 확보하고 R/W 비율, 초당 입출력 및 입출력 크기로 추출할 수 있다. 결론적으로, 도 8(b)에서 백그라운드 입출력의 간섭 강도가 높을수록, 베이스라인의 애플리케이션 성능과 입출력 최적화 장치(110)의 입출력 패딩을 통한 최적화에 따른 애플리케이션 성능의 차이는 증가함을 알 수 있다.In Fig. 8(b), the effect of various (three) types of background input/output interference on the loading time of an application is shown. Video playback, FTP download, and application update show low, medium and high input/output intensity, respectively. In an embodiment, in order to reproduce similar input/output interference, blktrace is applied to obtain a background input/output sequence of each process, and the R/W ratio, input/output per second, and input/output size may be extracted. In conclusion, it can be seen from FIG. 8(b) that as the intensity of background input/output interference increases, the difference between the baseline application performance and the application performance due to optimization through the input/output padding of the input/output optimization device 110 increases.

상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although the above has been described with reference to preferred embodiments of the present invention, those skilled in the art will variously modify and change the present invention within the scope not departing from the spirit and scope of the present invention described in the following claims. You will understand that you can do it.

100: 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 시스템
110: 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치
120: 사용자 단말
130: 스토리지
210: 제1 작업집합 생성부 220: 입출력 패딩부
230: 제2 작업집합 생성부
240: 제어부
100: I/O optimization system to improve application loading performance
110: I/O optimization device for improving application loading performance
120: user terminal
130: storage
210: first work set generation unit 220: input/output padding unit
230: second work set generation unit
240: control unit

Claims (9)

입출력 정렬 및 입출력 병합을 포함하는 입출력 스케줄링을 통해 제1 작업집합을 생성하는 제1 작업집합 생성부;
생성된 상기 제1 작업집합에 대해서, 상기 제1 작업집합을 구성하는 복수의 페이지 청크(chunk)들 사이에 패딩 페이지를 채워 넣는 입출력 패딩을 수행하는 입출력 패딩부; 및
상기 입출력 패딩을 통해 입출력의 크기가 확대된 제2 작업집합을 생성하는 제2 작업집합 생성부를 포함하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치.
A first work set generation unit for generating a first work set through input/output scheduling including input/output alignment and input/output merging;
An input/output padding unit for performing input/output padding for filling the padded page between a plurality of page chunks constituting the first work set, for the generated first work set; And
An input/output optimizing device for improving loading performance of an application, comprising: a second work set generation unit generating a second work set in which the size of the input/output is enlarged through the input/output padding.
제1항에 있어서, 상기 제1 작업집합 생성부는
상기 입출력 정렬을 통해 상기 복수의 페이지 청크들을 LBA(Logical Block Address) 순서로 정렬하는 것을 특징으로 하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치.
The method of claim 1, wherein the first work set generation unit
An input/output optimization device for improving loading performance of an application, comprising arranging the plurality of page chunks in a logical block address (LBA) order through the input/output alignment.
제2항에 있어서, 상기 제1 작업집합 생성부는
상기 입출력 병합을 통해 상기 정렬된 복수의 페이지 청크들 중 서로 인접한 복수의 페이지 청크들에 대해서 단일의 페이지 청크로 병합하여 상기 제1 작업집합을 생성하는 것을 특징으로 하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치.
The method of claim 2, wherein the first work set generation unit
I/O for improving the loading performance of an application, comprising merging a plurality of page chunks adjacent to each other among the plurality of aligned page chunks into a single page chunk through the input/output merging to generate the first working set Optimization device.
제1항에 있어서, 상기 입출력 패딩부는
상기 복수의 페이지 청크들 사이사이에 존재하는 빈 공간들을 패딩 후보들로 결정하는 패딩 벡터를 정의하는 것을 특징으로 하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치.
The method of claim 1, wherein the input/output padding unit
And defining a padding vector for determining blank spaces between the plurality of page chunks as padding candidates.
제4항에 있어서, 상기 입출력 패딩부는
동적 프로그래밍 모델을 통해 상기 제1 작업집합에 대해 최소의 로딩 시간을 가지는 패딩 벡터를 검출하는 것을 특징으로 하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치.
The method of claim 4, wherein the input/output padding unit
An input/output optimization device for improving loading performance of an application, characterized in that detecting a padding vector having a minimum loading time for the first working set through a dynamic programming model.
제5항에 있어서, 상기 입출력 패딩부는
상기 동적 프로그래밍 모델을 통해 상기 패딩 후보들의 크기 또는 상기 패딩 후보들 각각을 둘러싸고 있는 인접한 페이지 청크들간의 간격을 고려하여 상기 패딩 벡터를 검출하는 것을 특징으로 하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치.
The method of claim 5, wherein the input/output padding unit
And detecting the padding vector by considering the size of the padding candidates or the spacing between adjacent page chunks surrounding each of the padding candidates through the dynamic programming model.
제6항에 있어서, 상기 입출력 패딩부는
상기 동적 프로그래밍 모델을 통해 상기 패딩 후보들 각각을 둘러싸고 있는 인접한 페이지 청크들의 크기 및 인접한 다른 패딩 후보들에 대한 입출력 패딩 수행 여부를 고려하여 상기 패딩 벡터를 검출하는 것을 특징으로 하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치.
The method of claim 6, wherein the input/output padding unit
I/O for improving loading performance of an application, comprising detecting the padding vector by considering the size of adjacent page chunks surrounding each of the padding candidates and whether input/output padding is performed for other adjacent padding candidates through the dynamic programming model Optimization device.
제7항에 있어서, 상기 입출력 패딩부는
상기 검출된 패딩 벡터를 통해 상기 패딩 후보들에 대한 상기 입출력 패딩의 수행여부를 동적으로 결정하는 것을 특징으로 하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 장치.
The method of claim 7, wherein the input/output padding unit
An input/output optimizing apparatus for improving application loading performance, characterized in that it is dynamically determined whether to perform the input/output padding for the padding candidates based on the detected padding vector.
입출력 정렬 및 입출력 병합을 포함하는 입출력 스케줄링을 통해 제1 작업집합을 생성하는 단계;
생성된 상기 제1 작업집합에 대해서, 상기 제1 작업집합을 구성하는 복수의 페이지 청크(chunk)들 사이에 패딩 페이지를 채워 넣는 입출력 패딩을 수행하는 단계; 및
상기 입출력 패딩을 통해 입출력의 크기가 확대된 제2 작업집합을 최종적인 작업집합으로 생성하는 단계를 포함하는 애플리케이션의 로딩 성능 개선을 위한 입출력 최적화 방법.

Generating a first work set through input/output scheduling including input/output alignment and input/output merging;
Performing input/output padding for filling a padded page between a plurality of page chunks constituting the first work set on the generated first work set; And
And generating a second work set in which the size of the input/output is enlarged through the input/output padding as a final work set.

KR1020190035713A 2019-03-28 2019-03-28 I/0 optimization apparatus and method for improving loading performance of an application KR102202211B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190035713A KR102202211B1 (en) 2019-03-28 2019-03-28 I/0 optimization apparatus and method for improving loading performance of an application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190035713A KR102202211B1 (en) 2019-03-28 2019-03-28 I/0 optimization apparatus and method for improving loading performance of an application

Publications (2)

Publication Number Publication Date
KR20200114274A true KR20200114274A (en) 2020-10-07
KR102202211B1 KR102202211B1 (en) 2021-01-13

Family

ID=72884645

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190035713A KR102202211B1 (en) 2019-03-28 2019-03-28 I/0 optimization apparatus and method for improving loading performance of an application

Country Status (1)

Country Link
KR (1) KR102202211B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070068801A (en) 2005-12-27 2007-07-02 삼성전자주식회사 Apparatus and method of demanding paging for embedded system
KR101254911B1 (en) * 2012-01-31 2013-04-18 서울대학교산학협력단 Method, system and computer-readable recording medium for performing data input and output via multiple path
US20130326170A1 (en) * 2010-10-22 2013-12-05 Vijaya Kumar Kilari Methods and Devices for Reducing Compressed Page Loading Time on Page Fault

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070068801A (en) 2005-12-27 2007-07-02 삼성전자주식회사 Apparatus and method of demanding paging for embedded system
US20130326170A1 (en) * 2010-10-22 2013-12-05 Vijaya Kumar Kilari Methods and Devices for Reducing Compressed Page Loading Time on Page Fault
KR101254911B1 (en) * 2012-01-31 2013-04-18 서울대학교산학협력단 Method, system and computer-readable recording medium for performing data input and output via multiple path

Also Published As

Publication number Publication date
KR102202211B1 (en) 2021-01-13

Similar Documents

Publication Publication Date Title
US10114578B2 (en) Solid state disk and data moving method
US8793427B2 (en) Remote memory for virtual machines
US9189360B2 (en) Processor that records tracing data in non contiguous system memory slices
US9696934B2 (en) Hybrid solid state drive (SSD) using PCM or other high performance solid-state memory
US20090132761A1 (en) Storage management method and system using the same
US20180074715A1 (en) Dynamic adaptation of memory page management policy
US20140317628A1 (en) Memory apparatus for processing support of long routing in processor, and scheduling apparatus and method using the memory apparatus
KR20160079007A (en) Data processing apparatus and method for processing a plurality of threads
US10203899B2 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
US10891150B2 (en) Storage control method and storage controller for user individual service environment
KR101374065B1 (en) Data Distinguish Method and Apparatus Using Algorithm for Chip-Level-Parallel Flash Memory
US10261918B2 (en) Process running method and apparatus
US9934145B2 (en) Organizing memory to optimize memory accesses of compressed data
US8990741B2 (en) Circuit design support device, circuit design support method and program
KR102202211B1 (en) I/0 optimization apparatus and method for improving loading performance of an application
CN104899158A (en) Memory access optimization method and memory access optimization device
US11132128B2 (en) Systems and methods for data placement in container-based storage systems
US10210097B2 (en) Memory system and method for operating the same
JP5953808B2 (en) Random number processing apparatus, random number processing method, and program
US10007437B2 (en) Management apparatus, storage system, method, and computer readable medium
CN114138176A (en) Nor Flash erasing and upgrading method and device, computer equipment and storage medium
CN112860599A (en) Data caching processing method and device and storage medium
KR101866681B1 (en) Page control method and apparatus for dynamically controlling page size
JP2017068805A (en) Information processing apparatus, processor, and information processing method
US9836401B2 (en) Multi-core simulation system and method based on shared translation block cache

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant