KR102144011B1 - 가상화 서비스에서 페이지 캐시 관리 방법 및 장치 - Google Patents

가상화 서비스에서 페이지 캐시 관리 방법 및 장치 Download PDF

Info

Publication number
KR102144011B1
KR102144011B1 KR1020190018116A KR20190018116A KR102144011B1 KR 102144011 B1 KR102144011 B1 KR 102144011B1 KR 1020190018116 A KR1020190018116 A KR 1020190018116A KR 20190018116 A KR20190018116 A KR 20190018116A KR 102144011 B1 KR102144011 B1 KR 102144011B1
Authority
KR
South Korea
Prior art keywords
page
page cache
value
weight
container
Prior art date
Application number
KR1020190018116A
Other languages
English (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 KR1020190018116A priority Critical patent/KR102144011B1/ko
Priority to US16/774,575 priority patent/US11237982B2/en
Application granted granted Critical
Publication of KR102144011B1 publication Critical patent/KR102144011B1/ko

Links

Images

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • 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
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 가상화 서비스에서 페이지 캐시 관리 방법 및 장치에 관한 것으로, 본 발명의 일 실시 예에 따른 가상화 서비스에서 페이지 캐시 관리 방법은, 가상화 서비스에서 컨테이너의 가중치 값과 상기 컨테이너에 의해 동작하는 프로세스가 소유한 페이지의 가중치 변수를 비교하는 단계, 상기 비교 결과를 기반으로 상기 페이지의 가중치 변수를 변경하는 단계, 및 상기 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리하는 단계를 포함한다.

Description

가상화 서비스에서 페이지 캐시 관리 방법 및 장치{METHODS AND APPARATUSES FOR MANAGING PAGE CACHE IN VIRTURALIZATION SERVICE}
본 발명은 가상화 서비스에서 페이지 캐시 관리 방법 및 장치에 관한 것이다.
도커(Docker)는 같은 호스트(host)의 운영체제(OS: Operating system)를 공유하며 실행하는 컨테이너(Container)의 자원 제어를 위해 컨트롤 그룹들(Cgroups: Control Groups)을 사용한다. 컨트롤 그룹들을 통해 컨테이너별로 입/출력(I/O, Input/Output) 가중치는 블럭(block) I/O 가중치를 통해 지정할 수 있는데, 이 가중치는 CFQ(Completely Fair Queuing) 스케줄러와 같은 블럭(Block) I/O 스케줄러가 I/O 처리를 할 때 사용한다.
하지만, 이 스케줄러는 페이지 캐시(Page cache) 보다 아래 레이어(layer)에 위치하여 동작하기에, 페이지 캐시는 해당 가중치 값을 전혀 고려하지 않은 채로 페이지를 관리한다. 페이지 캐시는 공유 메모리 자원으로 여러 프로세스가 함께 사용한다. 그러므로 페이지 캐시의 페이지들을 어떤 프로세스가 소유하는지 파악이 힘들어 자신들만의 기준으로 페이지들을 관리한다. 페이지 캐시는 활성(active) LRU(Least Recently Used) 리스트와 비활성(inactive) LRU 리스트인 두 개의 LRU 리스트로 페이지들을 관리한다. 그런데 페이지 캐시는 이 리스트들로 페이지를 삽입 또는 해지할 때, 컨트롤 그룹들로 설정한 블록 I/O 가중치는 고려대상이 되지 않는다. 그로 인해, 프로세스들의 I/O 가중치가 다름에도, 페이지 캐시에는 해당 가중치의 비율만큼 프로세스의 페이지들이 남아있지 않는다. 결과적으로, 페이지 캐시를 통한 I/O 요청 위주의 워크로드(workload) 환경에서는 가중치가 서로 다른 컨테이너끼리 I/O 처리량의 비율이 유사한 결과를 띈다.
본 발명의 실시 예들은 도커와 같은 가상화 서비스에서 QoS를 보장하기 위한, 가상화 서비스에서 페이지 캐시 관리 방법 및 장치를 제공하고자 한다.
본 발명의 실시 예들은 페이지 캐시에서도 컨테이너별로 설정된 컨트롤 그룹들의 I/O 가중치를 고려하여 페이지 캐시에서 페이지를 할당하거나 페이지를 회수하여 페이지를 관리함으로써, 가중치가 다른 컨테이너들의 성능이 I/O 가중치 비율과 유사한 결과를 제공할 수 있는, 가상화 서비스에서 페이지 캐시 관리 방법 및 장치를 제공하고자 한다.
본 발명의 일 실시 예에 따르면, 페이지 캐시 관리 장치에 의해 수행되는 가상화 서비스에서 페이지 캐시 관리 방법에 있어서, 가상화 서비스에서 컨테이너의 가중치 값과 상기 컨테이너에 의해 동작하는 프로세스가 소유한 페이지의 가중치 변수를 비교하는 단계; 상기 비교 결과를 기반으로 상기 페이지의 가중치 변수를 변경하는 단계; 및 상기 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리하는 단계를 포함하는, 가상화 서비스에서 페이지 캐시 관리 방법이 제공될 수 있다.
상기 페이지의 가중치 변수를 비교하는 단계는, 읽기 요청된 페이지가 페이지 캐시에 존재하면, 상기 컨테이너의 가중치 값과 상기 페이지의 가중치 변수를 비교할 수 있다.
상기 페이지의 가중치 변수를 변경하는 단계는, 상기 컨테이너의 가중치 값이 상기 페이지의 가중치 변수를 초과하면, 상기 페이지의 가중치 변수를 상기 컨테이너의 가중치 값으로 설정할 수 있다.
상기 페이지의 가중치 변수를 변경하는 단계는, 상기 컨테이너의 가중치 값이 상기 페이지의 가중치 변수 이하이면, 상기 페이지의 가중치 변수를 유지시킬 수 있다.
상기 페이지 캐시의 페이지를 관리하는 단계는, 상기 페이지 캐시에 여유 공간이 있으면, 상기 페이지의 가중치 변수를 상기 컨테이너의 가중치 값과 동일하게 설정하고, 상기 설정된 페이지의 가중치 변수를 이용하여 페이지의 기회 값을 설정할 수 있다.
상기 페이지 캐시의 페이지를 관리하는 단계는, 상기 페이지 캐시에 여유 공간이 없으면, 활성 리스트와 비활성 리스트의 크기를 비교할 수 있다.
상기 페이지 캐시의 페이지를 관리하는 단계는, 상기 페이지 캐시의 활성 리스트가 상기 페이지 캐시의 비활성 리스트를 초과하면, 상기 활성 리스트의 테일에서 기설정된 페이지량을 분리시켜 페이지 회수를 준비할 수 있다.
상기 페이지 캐시의 페이지를 관리하는 단계는, 상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 상기 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값을 초과하면, 상기 회수되려는 페이지를 활성 리스트의 헤드로 이동시킨 후 기설정된 기회 값을 차감할 수 있다.
상기 페이지 캐시의 페이지를 관리하는 단계는, 상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 상기 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값 이하이면, 상기 회수되려는 페이지를 활성 리스트의 테일로 이동시킨 후 기설정된 기회 값을 차감할 수 있다.
상기 페이지 캐시의 페이지를 관리하는 단계는, 상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 남아있지 않으면, 상기 회수되려는 페이지를 비활성 리스트로 이동시킬 수 있다.
한편, 본 발명의 다른 실시 예에 따르면, 컨테이너에 의해 동작하는 프로세스가 소유한 페이지를 저장하는 페이지 캐시; 적어도 하나의 명령어를 저장하는 메모리; 및 상기 페이지 캐시 및 상기 메모리와 연결되는 프로세서를 포함하고, 상기 프로세서는, 상기 적어도 하나의 명령어를 실행함으로써, 가상화 서비스에서 컨테이너의 가중치 값과 상기 페이지의 가중치 변수를 비교하고, 상기 비교 결과를 기반으로 상기 페이지의 가중치 변수를 변경하고, 상기 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리하는, 페이지 캐시 관리 장치가 제공될 수 있다.
상기 프로세서는, 읽기 요청된 페이지가 페이지 캐시에 존재하면, 상기 컨테이너의 가중치 값과 상기 페이지의 가중치 변수를 비교할 수 있다.
상기 프로세서는, 상기 컨테이너의 가중치 값이 상기 페이지의 가중치 변수를 초과하면, 상기 페이지의 가중치 변수를 상기 컨테이너의 가중치 값으로 설정할 수 있다.
상기 프로세서는, 상기 컨테이너의 가중치 값이 상기 페이지의 가중치 변수 이하이면, 상기 페이지의 가중치 변수를 유지시킬 수 있다.
상기 프로세서는, 상기 페이지 캐시에 여유 공간이 있으면, 상기 페이지의 가중치 변수를 상기 컨테이너의 가중치 값과 동일하게 설정하고, 상기 설정된 페이지의 가중치 변수를 이용하여 페이지의 기회 값을 설정할 수 있다.
상기 프로세서는, 상기 페이지 캐시에 여유 공간이 없으면, 활성 리스트와 비활성 리스트의 크기를 비교할 수 있다.
상기 프로세서는, 상기 페이지 캐시의 활성 리스트가 상기 페이지 캐시의 비활성 리스트를 초과하면, 상기 활성 리스트의 테일에서 기설정된 페이지량을 분리시켜 페이지 회수를 준비할 수 있다.
상기 프로세서는, 상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 상기 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값을 초과하면, 상기 회수되려는 페이지를 활성 리스트의 헤드로 이동시킨 후 기설정된 기회 값을 차감할 수 있다.
상기 프로세서는, 상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 상기 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값 이하이면, 상기 회수되려는 페이지를 활성 리스트의 테일로 이동시킨 후 기설정된 기회 값을 차감할 수 있다.
상기 프로세서는, 상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 남아있지 않으면, 상기 회수되려는 페이지를 비활성 리스트로 이동시킬 수 있다.
한편, 본 발명의 다른 실시 예에 따르면, 프로세서 실행 가능한 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 상기 프로세서에 의해 실행되었을 때 상기 프로세서로 하여금, 가상화 서비스에서 컨테이너의 가중치 값과 상기 컨테이너에 의해 동작하는 프로세스가 소유한 페이지의 가중치 변수를 비교하고, 상기 비교 결과를 기반으로 상기 페이지의 가중치 변수를 변경하고, 상기 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리하게 하도록 구성된, 컴퓨터 판독 가능한 저장 매체가 제공될 수 있다.
본 발명의 실시 예들은 컨트롤 그룹들을 이용해 프로세스의 자원을 관리할 때, 개별의 프로세스마다 설정된 I/O 가중치를 페이지 캐시가 I/O를 처리할 때에도 적용시킴으로써, 프로세스들의 성능을 I/O 가중치의 비율대로 제공할 수 있다.
본 발명의 실시 예들은 도커와 같이 컨트롤 그룹들을 사용해 개별 컨테이너마다 자원 제어를 해주는 경우, 컨테이너별 I/O 가중치 비율을 달리 설정하여 컨테이너마다 원하는 비율의 I/O 처리량을 제공함으로써, 가상화 서비스에서 QoS를 보장할 수 있다.
도 1은 다이렉트 및 버퍼링된 I/O의 처리량의 비율을 나타낸 비교 그래프이다.
도 2는 본 발명의 일 실시 예에 따른 컨테이너별로 다르게 설정된 컨트롤 그룹들의 가중치가 적용된 페이지 캐시 회수 관리에 대한 예시도이다.
도 3은 본 발명의 일 실시 예에 따른 가상화 서비스에서 페이지 캐시 관리 방법을 설명하기 위한 순서도이다.
도 4 및 도 5는 본 발명의 일 실시 예에 따른 가상화 서비스에서 페이지 캐시 관리 방법을 구체적으로 설명하기 위한 순서도이다.
도 6은 이상적인 I/O 비율, 종래 기법 및 본 발명의 일 실시 예에 따른 페이지 캐시 관리 방법의 I/O 비율을 차이를 확인하기 위한 처리량 비율 비교 그래프 이다.
도 7은 종래 기법과 비교하여 본 발명의 일 실시 예에서 발생하는 오버헤드를 확인하기 위한 비교 그래프이다.
도 8은 본 발명의 일 실시 예에 따른 가상화 서비스에서 페이지 캐시 관리를 위한 페이지 캐시 관리 장치의 구성을 설명하기 위한 구성도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 다이렉트 및 버퍼링된 I/O의 처리량의 비율을 나타낸 비교 그래프이다.
전술된 바와 같이, 기존 리눅스 페이지 캐시는 컨트롤 그룹들의 블록 I/O 가중치를 반영하지 않고 페이지 캐시 레이어만의 기준으로 페이지들을 관리한다. 또한, 페이지 캐시는 모든 프로세스가 공유하는 자원으로, 페이지 캐시에 저장된 어떤 페이지들을 어떤 프로세스가 소유하는지 알 수가 없다. 그로 인해, 도커를 이용하여 컨테이너를 생성할 때 공유되는 자원의 사용을 제한하고 격리하기 위해 컨트롤 그룹들을 사용한다. 그렇기에 사용자가 컨테이너별로 I/O 처리량의 가중치를 다르게 주기 위해 가중치를 개별 컨테이너마다 다르게 설정하더라도 설정된 가중치 비율대로의 성능을 제공하지 못한다. 만일 각각의 가중치 값이 다른 컨테이너 4개를 생성하여 페이지 캐시 레이어를 거치지 않고 직접 I/O를 수행하는 O_direct 옵션을 설정하여 I/O 처리를 하게 되면 I/O의 비율은 컨테이너의 설정된 가중치 비율과 가깝게 된다.
하지만, 기존 리눅스가 I/O 처리를 하는 방식인 버퍼링된(buffered) I/O로 I/O 처리를 하게 되면 페이지 캐시 레이어를 사용하여 I/O 비율이 깨지게 되는 것이 확인 가능하다. 예를 들어, 도 1에 도시된 바와 같이, 컨테이너 1, 2, 3, 4가 있을 때 각각 가중치가 100, 200, 400 800으로 설정되었다 하면, 다이렉트(Direct) I/O의 처리량 비율(101)은 1:2:4:8에 가깝게 되지만, 버퍼링된(buffered) I/O의 처리량 비율((102)은 1:1:1:1이 된다. 이는 가중치(weight)에 따른 정규화된 I/O 대역폭(Normalized I/O Bandwidth)로 나타난다.
도 2는 본 발명의 일 실시 예에 따른 컨테이너별로 다르게 설정된 컨트롤 그룹들의 가중치가 적용된 페이지 캐시 회수 관리에 대한 예시도이다.
본 발명의 일 실시 예에서는 사용자가 애플리케이션 레이어(Application Layer)에 있는 개별 컨테이너(Container)마다 컨트롤 그룹들 I/O 가중치를 다르게 설정하여 생성했을 때, 페이지 캐시(Page Cache)가 I/O 가중치 값을 반영해 페이지들을 관리하여 I/O 처리량의 비율을 맞출 수 있다.
본 발명의 일 실시 예에서는 프로세스가 페이지 캐시 안에 있는 페이지에 접근할 때마다, 자신에게 설정된 컨트롤 그룹 I/O 가중치 값을 페이지 구조체에 저장하여 활성 LRU 리스트에서 비활성 LRU 리스트로 회수 작업이 일어날 때 가중치 값을 활용한다.
컨트롤 그룹들이 자원 그룹을 생성하여 블록 I/O 가중치를 지정할 때 블록 I/O 서브시스템(subsystem)이라는 컨트롤 그룹들 내부 데이터 구조체가 해당 가중치 값을 포함하게 된다. 본 발명의 일 실시 예에서는, 페이지 구조체에 ioweight 라는 가중치 변수를 생성하여, 컨트롤 그룹들의 I/O 가중치를 페이지가 유지할 수 있게 한다. 따라서 프로세스가 페이지 캐시로 새로운 페이지를 할당할 때, 프로세스의 자원 그룹(resource group)이 가지고 있는 I/O 가중치 값을 페이지의 ioweight 변수에 저장하게 된다.
하지만, 페이지 캐시에 저장된 페이지는 원래 자신을 소유한 프로세스보다 높은 가중치 값을 지닌 다른 프로세스에 의해 접근될 수도 있다. 이를 해결하기 위해, 프로세스가 페이지 캐시에 있는 페이지에 접근할 때마다, 페이지의 ioweight 값과 프로세스 자원 그룹의 I/O 가중치 값을 비교한다. 만약 ioweight 값이 더 낮은 경우, 프로세스의 I/O 가중치 값으로 대체를 하고 반대의 경우엔 ioweight의 값은 유지된다.
정리하자면, 페이지의 ioweight 변수는 자신에 접근한 프로세스들의 I/O 가중치 값들 중 제일 높은 값을 가지고 있게 된다. 본 기법에서는 이 ioweight 변수를 활용해 회수 작업 중 페이지가 회수되지 않고 남을 기회의 수로 사용한다. 이 기회는 I/O 가중치를 100으로 나눈 후 1을 뺀 값이 된다. 예를 들자면, 800이라는 I/O 가중치 값은 ioweight 변수에 7로 저장이 되게 된다.
본 발명의 일 실시 예에서는 본질적으로 페이지 캐시 회수 작업 중 가중치가 높은 페이지들을 페이지 캐시에 최대한 머무를 수 있도록 하여 해당 페이지를 사용하는 프로세스의 처리량을 높이자는 것이다. 페이지의 ioweight 변수는 회수작업 중 페이지가 내보내 지지 않고 살아남을 기회를 의미한다. 만약 ioweight 변수가 0 이상일 때는 페이지가 회수될 후보로 지정됐었어도 활성 리스트에 추가로 한 번 더 남을 기회를 얻어 ioweight값을 하나 낮추며 리스트의 선두나 후미로 이동하게 된다. 선두로 이동하는 경우는 상대적으로 ioweight 값이 다른 페이지보다 높을 때 이동한다. ioweight가 0일 때에는 비활성 리스트로 강등되게 된다. 이와 같이, 가중치 값이 높은 페이지들은 상대적으로 페이지 캐시에 오래 남을 수 있게 된다.
본 발명의 일 실시 예에서는 페이지가 할당될 때 해당 페이지를 사용하는 프로세스의 컨트롤 그룹들 I/O 가중치 값을 페이지 구조체에 ioweight라는 변수로 저장한다. 따라서 본 발명의 일 실시 예에서는 페이지 캐시의 활성 LRU 리스트에서 페이지 회수가 일어날 때, 페이지가 가지고 있는 ioweight 값을 고려하여 회수되도록 페이지 캐시를 관리할 수 있다.
도 2에 도시된 일례를 설명하기로 한다. 도 2의 애플리케이션 레이어(210)에는 각 컨테이너(211)들이 있다. 각 컨테이너(211)는 컨테이너마다 컨테이너의 가중치 값(예컨대, 100, 200, 400, 800 등)을 가지고 있다. 페이지 캐시(220)는 활성 리스트(active list)(221)와 비활성 리스트(inactive list)(222)를 포함한다. 페이지 캐시(220)에 있는 페이지는 남은 기회의 번호(The number of chances remained)를 나타내는 기회 값을 가지고 있다. 도 2의 (a)에 도시된 바와 같이, 활성 리스트(221)의 페이지는 활성 리스트(221)의 테일(tail)로 이동하면서 기회 값을 기설정된 값(예컨대, 1)씩 감소시킨다(The # of chances decrements). 도 2의 (b)에 도시된 바와 같이, 페이지 캐시에서 회수 준비 작업이 수행되면, 활성 리스트(221)의 테일 부분에서 기설정된 페이지량(223)의 페이지들이 비활성 리스트(inactive list)(222)로 회수되도록 준비된다. 여기서, 기설정된 페이지량(223)의 페이지들 중에서 기회 값이 0인 페이지는 비활성 리스트(222)로 회수된다(Evicting to inactive list). 도 2의 (c)에 도시된 바와 같이, 기설정된 페이지량(223) 중에서 기회 값이 기설정된 값(예컨대, 4, 5 등) 보다 많이 남아 있는 페이지는 활성 리스트(221)의 헤드로 이동된다(Moving to the head of the active list). 기회 값은 기설정된 값(예컨대, 1)씩 감소시킨다(The # of chances decrements).
도 3은 본 발명의 일 실시 예에 따른 가상화 서비스에서 페이지 캐시 관리 방법을 설명하기 위한 순서도이다.
단계 S101에서, 본 발명의 일 실시 예에 따른 페이지 캐시 관리 장치는 가상화 서비스에서 컨테이너의 가중치 값을 확인한다.
단계 S102에서, 페이지 캐시 관리 장치는 컨테이너의 가중치 값과 컨테이너에 의해 동작하는 프로세스가 소유한 페이지의 가중치 변수를 비교한다.
단계 S102에서, 페이지 캐시 관리 장치는 비교 결과를 기반으로 페이지의 가중치 변수를 변경한다.
단계 S102에서, 페이지 캐시 관리 장치는 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리한다.
도 4 및 도 5는 본 발명의 일 실시 예에 따른 가상화 서비스에서 페이지 캐시 관리 방법을 구체적으로 설명하기 위한 순서도이다.
본 발명의 일 실시 예는 컨테이너에 설정된 입/출력 성능 비율 가중치 값을 페이지 캐시를 사용하는 입/출력 요청에 반영하기 위한 페이지 캐시 관리 방법에 관한 것이다. 페이지 회수는 페이지를 할당할 때 페이지 캐시에 여유 공간 마련을 위해 혹은 메모리 공간이 부족할 때 페이지 회수 쓰레드(kswapd, Kernel swap daemon)가 진행하는 작업이다.
우선, 페이지를 할당할 때 페이지 캐시 여유 공간 마련을 위한 상황을 설명하기로 한다.
도 4에 도시된 바와 같이, 단계 S201에서, 본 발명의 일 실시 예에 따른 페이지 캐시 관리 장치는 읽기 요청이 있는지를 확인한다. 컨테이너가 읽기 입/출력 요청을 시도한다.
단계 S202에서, 페이지 캐시 관리 장치는 읽기 요청이면, 읽으려는 페이지가 페이지 캐시에 존재하는지를 확인한다. 페이지 캐시 관리 장치는 요청된 페이지가 페이지 캐시에 존재하는지 확인한다.
단계 S203에서, 페이지 캐시 관리 장치는 읽으려는 페이지가 페이지 캐시에 존재하면, 컨테이너의 가중치 값이 페이지의 가중치 변수를 초과하는지를 확인한다. 페이지 캐시 관리 장치는 페이지가 페이지 캐시에 존재하면, 요청을 시도한 컨테이너의 가중치 값과 페이지에 설정되어 있는 가중치 값을 비교하여, 컨테이너의 가중치 값이 크면, 페이지의 가중치 값을 컨테이너 가중치 값으로 설정한다.
단계 S204에서, 페이지 캐시 관리 장치는 컨테이너의 가중치 값이 페이지의 가중치 변수를 초과하면, 페이지의 가중치 변수를 컨테이너의 가중치 값과 일치시킨다. 페이지 캐시 관리 장치는 컨테이너의 가중치 값이 페이지의 가중치 변수를 초과하지 않으면, 페이지의 가중치 변수를 변경하지 않고 유지한다.
한편, 단계 S205에서, 페이지 캐시 관리 장치는 읽으려는 페이지가 페이지 캐시에 존재하지 않으면, 페이지 캐시에 여유공간이 충분한지를 확인한다. 페이지 캐시 관리 장치는 페이지 캐시에 존재하지 않으면, 현재 페이지 캐시에 여유 공간이 충분한지 확인한다.
단계 S206에서, 페이지 캐시 관리 장치는 페이지 캐시에 여유공간이 충분하면, 컨테이너의 가중치 값을 100으로 나누고 1을 차감하여 페이지의 기회 값으로 설정한다. 페이지 캐시 관리 장치는 여유 공간이 충분한 경우, 페이지 가중치를 컨테이너 가중치 값과 동일하게 설정한 후 페이지에 컨테이너 가중치 값에서 100의 자리에 1을 뺀 값을 기회 값으로 부여할 수 있다.
단계 S207에서, 페이지 캐시 관리 장치는 페이지의 기회 값을 설정한 후, 페이지 캐시에 페이지를 할당한다. 페이지 캐시 관리 장치는 페이지를 할당시켜준다.
단계 S208에서, 페이지 캐시 관리 장치는 읽기 요청이 아니면, 페이지 회수 쓰레드인지를 확인한다. 단계 S208 이후에서, 페이지 캐시 관리 장치는 페이지 회수 쓰레드가 아니면 페이지 관리 동작을 종료한다.
단계 S209에서, 페이지 캐시 관리 장치는 페이지 회수 쓰레드이면, 활성 리스트 및 비활성 리스트를 비교하여 페이지 회수 동작을 수행한다. 페이지 캐시 관리 장치는 단계 S205에서 페이지 캐시에 여유공간이 충분하지 않은 경우, 단계 S209를 수행한다. 페이지 캐시 관리 장치는 여유 공간이 충분하지 않은 경우 페이지 캐시의 활성 리스트와 비활성 리스트의 크기를 비교한다.
단계 S210에서, 페이지 캐시 관리 장치는 읽기 요청이었는지를 확인한다.
페이지 캐시 관리 장치는 단계 S210 이후 읽기 요청이었던 경우, 단계 S205를 수행한다. 단계 S210 이후 읽기 요청이 아닌 경우, 페이지 캐시 관리 동작을 종료한다.
한편, 단계 S209에 기재된 페이지 회수 동작은 도 5를 참고하여 구체적으로 설명하기로 한다.
단계 S208에서, 페이지 캐시 관리 장치는 읽기 요청이 아니면, 페이지 회수 쓰레드인지를 확인한다. 단계 S208 이후, 페이지 캐시 관리 장치는 단계 S301 내지 S309에 따라 페이지 회수 동작을 수행할 수 있다.
단계 S301에서, 페이지 캐시 관리 장치는 활성 리스트에 더 많은 페이지가 캐싱되어 있는지를 확인한다.
단계 S302에서, 페이지 캐시 관리 장치는 활성 리스트에 더 많은 페이지가 캐싱되어 있으면, 활성 리스트의 테일에서 일정량의 페이지 분리 후, 페이지 회수를 준비한다. 페이지 캐시 관리 장치는 활성 리스트가 더 큰 경우, 활성 리스트의 테일에서 일정량을 분리시킨 후 페이지 회수 준비를 한다.
단계 S303에서, 페이지 캐시 관리 장치는 회수 시도되는 페이지 기회 값이 0을 초과하는지를 확인한다. 페이지 캐시 관리 장치는 회수되려는 페이지의 기회가 0보다 큰지 확인을 한다.
단계 S304에서, 페이지 캐시 관리 장치는 페이지 기회 값이 0을 초과하면, 페이지의 기회가 많이 남아 있는지를 확인한다. 페이지 캐시 관리 장치는 페이지의 기회가 0보다 크면, 그 기회가 많이 남아 있는지를 확인한다.
단계 S305에서, 페이지 캐시 관리 장치는 페이지의 기회가 많이 남아 있으면, 페이지를 활성 리스트의 헤드로 이동시킨다. 페이지 캐시 관리 장치는 기회가 많이 남아 있는 경우 즉, 기회 값이 기설정된 값을 초과하는 경우, 페이지를 활성 리스트의 헤드로 이동한 후 기회를 1만큼 낮춘다.
단계 S306에서, 페이지 캐시 관리 장치는 페이지의 기회가 많이 남아 있지 않으면, 페이지를 활성 리스트의 테일로 이동시킨다. 페이지 캐시 관리 장치는 기회가 적게 남아 있는 경우 즉, 기설정된 값보다 적으면, 페이지를 활성 리스트의 테일로 이동한 후 기회를 1만큼 낮춘다.
단계 S307에서, 페이지 캐시 관리 장치는 페이지를 활성 리스트로 이동시키는 단계 S305 또는 단계 S306를 수행하고, 페이지의 기회 값에서 1을 차감한다.
한편, 단계 S308에서, 페이지 캐시 관리 장치는 페이지 기회 값이 0을 초과하지 않으면, 페이지를 비활성 리스트로 회수한다. 페이지 캐시 관리 장치는 페이지의 기회가 0인 경우엔 페이지를 비활성 리스트로 이동시킨다.
한편, 단계 S309에서, 페이지 캐시 관리 장치는 활성 리스트에 더 많은 페이지가 캐싱되어 있지 않으면, 기존 리눅스 회수 작업을 진행한다. 페이지 캐시 관리 장치는 비활성 리스트가 더 큰 경우, 기존 리눅스의 페이지 회수 기법으로 회수를 진행한다.
페이지 캐시 관리 장치는 단계 S307, 단계 S308, 또는 단계 S309를 수행한 후, 읽기 요청이였는지를 확인하는 단계 S210을 수행한다.
한편, 메모리 공간이 부족해 페이지 회수 쓰레드가 페이지 회수를 진행하는 상황은 도 5에 도시된 바와 같이 수행될 수 있다. 이하, 간략하게 다시 설명하기로 한다.
페이지 캐시 관리 장치는 페이지 캐시의 활성 리스트와 비활성 리스트의 크기를 비교한다.
페이지 캐시 관리 장치는 활성 리스트가 더 큰 경우, 활성 리스트의 테일에서 일정량을 분리시킨 후 페이지 회수 준비를 한다.
페이지 캐시 관리 장치는 회수되려는 페이지의 기회가 0보다 큰지 확인을 한다.
페이지 캐시 관리 장치는 페이지의 기회가 0보다 크면, 그 기회가 많이 남아 있는지를 확인한다.
페이지 캐시 관리 장치는 기회가 많이 남아 있는 경우, 페이지를 활성 리스트의 헤드로 이동한 후 기회를 1만큼 낮춘다.
페이지 캐시 관리 장치는 기회가 적게 남아 있는 경우, 페이지를 활성 리스트의 테일로 이동한 후 기회를 1만큼 낮춘다.
페이지 캐시 관리 장치는 페이지의 기회가 0인 경우엔 페이지를 비활성 리스트로 이동시킨다.
페이지 캐시 관리 장치는 비활성 리스트가 더 큰 경우, 기존 리눅스의 페이지 회수 기법으로 회수를 진행한다.
이후, 페이지 캐시 관리 장치는 페이지 회수 동작을 종료한다.
도 6은 이상적인 I/O 비율, 종래 기법 및 본 발명의 일 실시 예에 따른 페이지 캐시 관리 방법의 I/O 비율을 차이를 확인하기 위한 처리량 비율 비교 그래프 이다.
도 7은 종래 기법과 비교하여 본 발명의 일 실시 예에서 발생하는 오버헤드를 확인하기 위한 비교 그래프이다.
본 발명의 일 실시 예에 따른 실험 내용을 설명하기로 한다.
본 발명의 일 실시 예는 컨트롤 그룹들 가중치가 다르게 설정된 프로세스들이 가중치의 비율대로 페이지 캐시를 관리하는지와 본 발명의 일 실시 예로 인한 오버헤드(Overhead)를 검증하기 위해, 도커를 활용하여 컨트롤 그룹 I/O 가중치가 100, 200, 400, 800인 다른 4개의 컨테이너들 환경을 구축하였다. 리눅스 커널 4.17.3버전을 사용하였고, 컨테이너의 기본 이미지는 도커 허브(Hub)로부터 우분투(Ubuntu) 14.04 LTS를 활용하였다. I/O 비율 실험을 위해, 종래의 리눅스 환경과 본 발명의 일 실시 예에 따른 페이지 캐시 관리 방법이 적용된 환경에서 4개의 컨테이너들을 생성해 FIO 벤치마크를 사용하였다. 먼저 각 컨테이너들에서 1G 파일을 생성한 후 2번 가량 같은 파일을 읽어 해당 파일의 페이지들이 페이지 캐시의 비활성 리스트에서 활성 리스트로 승급되도록 하였다. 그 후, 4개의 컨테이너들을 구동중인 호스트에서 5G의 더미(dummy) 쓰기를 하여 비활성 리스트의 페이지를 대체시키고, 활성 리스트에서 회수 작업을 일으켰다. 마지막으로 이 4개의 컨테이너들에서 활성 리스트에 남아 있는 페이지를 활용하기 위해 다시 똑같은 1G 파일을 읽어 처리량을 확인한다. 그 후엔 가중치 100값에 표준화 하여 비율을 비교한다.
오버헤드 확인 실험에서는 실제 세계(real-world) 벤치마크인 파일벤치(Filebench)의 워크로드들(worklaods)을 활용하였다. 4개의 컨테이너들의 가중치 값은 같으며 기본 파라미터(parameter)로 파일서버(fileserver), 웹서버(webserver), 웹프록시(webproxy) 그리고 비디오서버(videoserver) 워크로드를 실행하였다.
도 6에 도시된 바와 같이, I/O 비율 실험에 대해 살펴보면, 각각의 가중치가 100, 200, 400 ,800인 4개의 컨테이너에서 FIO 벤치마크를 실행하였다.
도 7에 도시된 바와 같이, 오버헤드 실험에 대해 살펴보면, 가중치가 동일한 4개의 컨테이너에서 Filebench의 워크로드 벤치마크를 실행하였다.
이하, 실험 결과에 대해 설명하기로 한다.
도 6에 도시된 I/O 비율 실험에서는 종래 기법(Baseline)에선 페이지 캐시가 컨트롤 그룹들의 I/O 가중치를 고려하지 않고 I/O 처리를 하여, 각 프로세스는 자신의 컨트롤 그룹들 I/O 가중치가 다름에도 불구하고 유사한 처리량의 비율을 갖는다. 그러나 본 발명의 일 실시 예(Present invention)에 따른 페이지 캐시 관리 방법은 프로세스의 컨트롤 그룹들 I/O 가중치에 따라 페이지 캐시의 페이지 회수할 때 기회를 더 준다. 그러므로 본 발명의 일 실시 예는 페이지 캐시에 남아있는 성향을 가지기에 I/O 가중치의 비율과 유사하게 처리량을 가질 수 있다. 결과적으로는 100, 200, 400 800의 가중치를 가진 컨테이너는 이상인 경우(Ideal)의 1:2:4:8의 비율을 가진다. 그런데 종래 기법에서는 이 비율이 61%나 다른 비율을 가지게 되는 반면, 본 발명의 일 실시 예에서는 13% 차이밖에 가지지 않으므로, 상당히 이상적 비율에 가깝게 처리량을 가진다. 이는 정규화된 I/O 비율(Normalized I/O proportionality)로 나타난다.
또한, 도 7에 도시된 오버헤드 확인 실험에서, 본 발명의 일 실시 예에서는 페이지가 페이지 캐시에 오래 남아 있을수록 회수 작업 때 기회를 더 주기에 리스트에서 추가적인 페이지의 순환이 더 많이 일어난다. 결과적으로는 이 실험에서 본 발명의 일 실시 예는 종래 기법과 비교하였을 때 최대 5%의 오버헤드만 가진다.
I/O 비율 실험에 대해서 설명하면 다음과 같다.
종래 기법(Baseline)에서, 컨테이너 2, 3, 4가 컨테이너 1의 1.1, 1.4, 2.0 배의 I/O 처리량을 가진다.
종래 기법이 이상적인 수치(Ideal)와 61%의 차이를 보인다.
반면, 본 발명의 일 실시 예(Present invention)에서, 컨테이너 2, 3, 4가 컨테이너 1의 1.3, 3.2, 9.0배의 I/O 처리량을 가진다.
본 발명의 일 실시 예에서, 이상적인 수치와의 차이를 13%로 줄일 수 있다.
도 7에 도시된 오버헤드 실험에 대해서 설명하면 다음과 같다.
본 발명의 일 실시 예에서, 파일서버(fileserver), 웹서버(webserver), 웹프록시(webproxy) 및 비디오서버(videoserver)가 종래 기법의 0.99, 0.95, 0.98, 0.96배의 I/O 처리량으로 5% 이내의 오버헤드를 가진다. 이는 정규화된 전체 I/O 처리량(Normalized Total I/O Throughput)으로 나타난다.
도 8은 본 발명의 일 실시 예에 따른 가상화 서비스에서 페이지 캐시 관리를 위한 페이지 캐시 관리 장치의 구성을 설명하기 위한 구성도이다.
도 8에 도시된 바와 같이, 본 발명의 일 실시 예에 따른 페이지 캐시 관리 장치(300)는, 페이지 캐시(310), 메모리(320) 및 프로세서(330)를 포함한다. 그러나 도시된 구성요소 모두가 필수 구성요소인 것은 아니다. 도시된 구성요소보다 많은 구성요소에 의해 구현될 수도 있고, 그보다 적은 구성요소에 의해서도 구현될 수 있다. 여기서, 페이지 캐시 관리 장치(300)는 도커와 같은 가상화 서비스가 동작하는 클라우드 시스템(Cloud system), 또는 클라우드 서버(Cloud server)에 포함될 수 있다. 페이지 캐시 관리 장치는 파일서버(fileserver), 웹서버(webserver), 웹프록시(webproxy) 그리고 비디오서버(videoserver)에서 동작할 수 있다. 페이지 캐시 관리 장치(300)는 페이지 캐시(310)를 포함하고, 페이지 캐시(310)에 있는 페이지를 관리하는 장치나 시스템에 포함될 수 있으며, 특정 장치, 시스템, 또는 서버로 한정되지 않는다.
이하, 도 8의 페이지 캐시 관리 장치(300)의 각 구성요소들의 구체적인 구성 및 동작을 설명한다.
페이지 캐시(310)는 컨테이너에 의해 동작하는 프로세스가 소유한 페이지를 저장한다.
메모리(320)는 적어도 하나의 명령어를 저장한다.
프로세서(330)는 페이지 캐시 및 메모리와 연결된다.
프로세서(330)는, 상기 적어도 하나의 명령어를 실행함으로써, 가상화 서비스에서 컨테이너의 가중치 값과 상기 페이지의 가중치 변수를 비교하고, 비교 결과를 기반으로 페이지의 가중치 변수를 변경하고, 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리한다.
다양한 실시 예에 따르면, 프로세서(330)는 읽기 요청된 페이지가 페이지 캐시에 존재하면, 상기 컨테이너의 가중치 값과 상기 페이지의 가중치 변수를 비교할 수 있다.
다양한 실시 예에 따르면, 프로세서(330)는 컨테이너의 가중치 값이 페이지의 가중치 변수를 초과하면, 페이지의 가중치 변수를 컨테이너의 가중치 값으로 설정할 수 있다.
다양한 실시 예에 따르면, 프로세서(330)는 컨테이너의 가중치 값이 페이지의 가중치 변수 이하이면, 페이지의 가중치 변수를 유지시킬 수 있다.
다양한 실시 예에 따르면, 프로세서(330)는 페이지 캐시에 여유 공간이 있으면, 페이지의 가중치 변수를 컨테이너의 가중치 값과 동일하게 설정하고, 그 설정된 페이지의 가중치 변수를 이용하여 페이지의 기회 값을 설정할 수 있다.
다양한 실시 예에 따르면, 프로세서(330)는 페이지 캐시에 여유 공간이 없으면, 활성 리스트와 비활성 리스트의 크기를 비교할 수 있다.
다양한 실시 예에 따르면, 프로세서(330)는 페이지 캐시의 활성 리스트가 페이지 캐시의 비활성 리스트를 초과하면, 활성 리스트의 테일에서 기설정된 페이지량을 분리시켜 페이지 회수를 준비할 수 있다.
다양한 실시 예에 따르면, 프로세서(330)는 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값을 초과하면, 회수되려는 페이지를 활성 리스트의 헤드로 이동시킨 후 기설정된 기회 값을 차감할 수 있다.
다양한 실시 예에 따르면, 프로세서(330)는 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값 이하이면, 회수되려는 페이지를 활성 리스트의 테일로 이동시킨 후 기설정된 기회 값을 차감할 수 있다.
다양한 실시 예에 따르면, 프로세서(330)는 페이지 캐시에서 회수되려는 페이지의 기회 값이 남아있지 않으면, 회수되려는 페이지를 비활성 리스트로 이동시킬 수 있다.
상술한 본 발명의 실시 예들에 따른 가상화 서비스에서 페이지 캐시 관리 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 본 발명의 실시 예들에 따른 가상화 서비스에서 페이지 캐시 관리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 읽을 수 있는 기록매체에 기록될 수 있다.
프로세서 실행 가능한 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 상기 프로세서에 의해 실행되었을 때 상기 프로세서로 하여금, 가상화 서비스에서 컨테이너의 가중치 값과 상기 페이지의 가중치 변수를 비교하고, 상기 비교 결과를 기반으로 상기 페이지의 가중치 변수를 변경하고, 상기 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리하게 하도록 구성된, 컴퓨터 판독 가능한 저장 매체가 제공될 수 있다.
컴퓨터가 읽을 수 있는 기록 매체로는 컴퓨터 시스템에 의하여 해독될 수 있는 데이터가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래시 메모리, 광 데이터 저장장치 등이 있을 수 있다. 또한, 컴퓨터로 판독 가능한 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
구체적으로, 설명된 특징들은 디지털 전자 회로, 또는 컴퓨터 하드웨어, 펌웨어, 또는 그들의 조합들 내에서 실행될 수 있다. 특징들은 예컨대, 프로그래밍 가능한 프로세서에 의한 실행을 위해, 기계 판독 가능한 저장 디바이스 내의 저장장치 내에서 구현되는 컴퓨터 프로그램 제품에서 실행될 수 있다. 그리고 특징들은 입력 데이터 상에서 동작하고 출력을 생성함으로써 설명된 실시예들의 함수들을 수행하기 위한 지시어들의 프로그램을 실행하는 프로그래밍 가능한 프로세서에 의해 수행될 수 있다. 설명된 특징들은, 데이터 저장 시스템으로부터 데이터 및 지시어들을 수신하기 위해, 및 데이터 저장 시스템으로 데이터 및 지시어들을 전송하기 위해, 결합된 적어도 하나의 프로그래밍 가능한 프로세서, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그래밍 가능한 시스템 상에서 실행될 수 있는 하나 이상의 컴퓨터 프로그램들 내에서 실행될 수 있다. 컴퓨터 프로그램은 소정 결과에 대해 특정 동작을 수행하기 위해 컴퓨터 내에서 직접 또는 간접적으로 사용될 수 있는 지시어들의 집합을 포함한다. 컴퓨터 프로그램은 컴파일된 또는 해석된 언어들을 포함하는 프로그래밍 언어 중 어느 형태로 쓰여지고, 모듈, 소자, 서브루틴(subroutine), 또는 다른 컴퓨터 환경에서 사용을 위해 적합한 다른 유닛으로서, 또는 독립 조작 가능한 프로그램으로서 포함하는 어느 형태로도 사용될 수 있다.
지시어들의 프로그램의 실행을 위한 적합한 프로세서들은, 예를 들어, 범용 및 특수 용도 마이크로프로세서들 둘 모두, 및 단독 프로세서 또는 다른 종류의 컴퓨터의 다중 프로세서들 중 하나를 포함한다. 또한 설명된 특징들을 구현하는 컴퓨터 프로그램 지시어들 및 데이터를 구현하기 적합한 저장 디바이스들은 예컨대, EPROM, EEPROM, 및 플래쉬 메모리 디바이스들과 같은 반도체 메모리 디바이스들, 내부 하드 디스크들 및 제거 가능한 디스크들과 같은 자기 디바이스들, 광자기 디스크들 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 비휘발성 메모리의 모든 형태들을 포함한다. 프로세서 및 메모리는 ASIC들(application-specific integrated circuits) 내에서 통합되거나 또는 ASIC들에 의해 추가될 수 있다.
이상에서 설명한 본 발명은 일련의 기능 블록들을 기초로 설명되고 있지만, 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경 가능하다는 것이 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
전술한 실시 예들의 조합은 전술한 실시 예에 한정되는 것이 아니며, 구현 및/또는 필요에 따라 전술한 실시예들 뿐 아니라 다양한 형태의 조합이 제공될 수 있다.
전술한 실시 예들에서, 방법들은 일련의 단계 또는 블록으로서 순서도를 기초로 설명되고 있으나, 본 발명은 단계들의 순서에 한정되는 것은 아니며, 어떤 단계는 상술한 바와 다른 단계와 다른 순서로 또는 동시에 발생할 수 있다. 또한, 당해 기술 분야에서 통상의 지식을 가진 자라면 순서도에 나타난 단계들이 배타적이지 않고, 다른 단계가 포함되거나, 순서도의 하나 또는 그 이상의 단계가 본 발명의 범위에 영향을 미치지 않고 삭제될 수 있음을 이해할 수 있을 것이다.
전술한 실시 예는 다양한 양태의 예시들을 포함한다. 다양한 양태들을 나타내기 위한 모든 가능한 조합을 기술할 수는 없지만, 해당 기술 분야의 통상의 지식을 가진 자는 다른 조합이 가능함을 인식할 수 있을 것이다. 따라서, 본 발명은 이하의 특허청구범위 내에 속하는 모든 다른 교체, 수정 및 변경을 포함한다고 할 것이다.
300: 페이지 캐시 관리 장치
310: 페이지 캐시
320: 메모리
330: 프로세서

Claims (21)

  1. 페이지 캐시 관리 장치에 의해 수행되는 가상화 서비스에서 페이지 캐시 관리 방법에 있어서,
    가상화 서비스에서 컨테이너의 가중치 값과 상기 컨테이너에 의해 동작하는 프로세스가 소유한 페이지의 가중치 변수를 비교하는 단계;
    상기 비교 결과를 기반으로 상기 페이지의 가중치 변수를 변경하는 단계; 및
    상기 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리하는 단계를 포함하는, 가상화 서비스에서 페이지 캐시 관리 방법.
  2. 제1항에 있어서,
    상기 페이지의 가중치 변수를 비교하는 단계는,
    읽기 요청된 페이지가 페이지 캐시에 존재하면, 상기 컨테이너의 가중치 값과 상기 페이지의 가중치 변수를 비교하는, 가상화 서비스에서 페이지 캐시 관리 방법.
  3. 제1항에 있어서,
    상기 페이지의 가중치 변수를 변경하는 단계는,
    상기 컨테이너의 가중치 값이 상기 페이지의 가중치 변수를 초과하면, 상기 페이지의 가중치 변수를 상기 컨테이너의 가중치 값으로 설정하는, 가상화 서비스에서 페이지 캐시 관리 방법.
  4. 제1항에 있어서,
    상기 페이지의 가중치 변수를 변경하는 단계는,
    상기 컨테이너의 가중치 값이 상기 페이지의 가중치 변수 이하이면, 상기 페이지의 가중치 변수를 유지시키는, 가상화 서비스에서 페이지 캐시 관리 방법.
  5. 제1항에 있어서,
    상기 페이지 캐시의 페이지를 관리하는 단계는,
    상기 페이지 캐시에 여유 공간이 있으면, 상기 페이지의 가중치 변수를 상기 컨테이너의 가중치 값과 동일하게 설정하고, 상기 설정된 페이지의 가중치 변수를 이용하여 페이지의 기회 값을 설정하는, 가상화 서비스에서 페이지 캐시 관리 방법.
  6. 제1항에 있어서,
    상기 페이지 캐시의 페이지를 관리하는 단계는,
    상기 페이지 캐시에 여유 공간이 없으면, 활성 리스트와 비활성 리스트의 크기를 비교하는, 가상화 서비스에서 페이지 캐시 관리 방법.
  7. 제6항에 있어서,
    상기 페이지 캐시의 페이지를 관리하는 단계는,
    상기 페이지 캐시의 활성 리스트가 상기 페이지 캐시의 비활성 리스트를 초과하면, 상기 활성 리스트의 테일에서 기설정된 페이지량을 분리시켜 페이지 회수를 준비하는, 가상화 서비스에서 페이지 캐시 관리 방법.
  8. 제1항에 있어서,
    상기 페이지 캐시의 페이지를 관리하는 단계는,
    상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 상기 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값을 초과하면, 상기 회수되려는 페이지를 활성 리스트의 헤드로 이동시킨 후 기설정된 기회 값을 차감하는, 가상화 서비스에서 페이지 캐시 관리 방법.
  9. 제1항에 있어서,
    상기 페이지 캐시의 페이지를 관리하는 단계는,
    상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 상기 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값 이하이면, 상기 회수되려는 페이지를 활성 리스트의 테일로 이동시킨 후 기설정된 기회 값을 차감하는, 가상화 서비스에서 페이지 캐시 관리 방법.
  10. 제1항에 있어서,
    상기 페이지 캐시의 페이지를 관리하는 단계는,
    상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 남아있지 않으면, 상기 회수되려는 페이지를 비활성 리스트로 이동시키는, 가상화 서비스에서 페이지 캐시 관리 방법.
  11. 컨테이너에 의해 동작하는 프로세스가 소유한 페이지를 저장하는 페이지 캐시;
    적어도 하나의 명령어를 저장하는 메모리; 및
    상기 페이지 캐시 및 상기 메모리와 연결되는 프로세서를 포함하고,
    상기 프로세서는, 상기 적어도 하나의 명령어를 실행함으로써,
    가상화 서비스에서 컨테이너의 가중치 값과 상기 페이지의 가중치 변수를 비교하고,
    상기 비교 결과를 기반으로 상기 페이지의 가중치 변수를 변경하고,
    상기 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리하는, 페이지 캐시 관리 장치.
  12. 제11항에 있어서,
    상기 프로세서는,
    읽기 요청된 페이지가 페이지 캐시에 존재하면, 상기 컨테이너의 가중치 값과 상기 페이지의 가중치 변수를 비교하는, 페이지 캐시 관리 장치.
  13. 제11항에 있어서,
    상기 프로세서는,
    상기 컨테이너의 가중치 값이 상기 페이지의 가중치 변수를 초과하면, 상기 페이지의 가중치 변수를 상기 컨테이너의 가중치 값으로 설정하는, 페이지 캐시 관리 장치.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 컨테이너의 가중치 값이 상기 페이지의 가중치 변수 이하이면, 상기 페이지의 가중치 변수를 유지시키는, 페이지 캐시 관리 장치.
  15. 제11항에 있어서,
    상기 프로세서는,
    상기 페이지 캐시에 여유 공간이 있으면, 상기 페이지의 가중치 변수를 상기 컨테이너의 가중치 값과 동일하게 설정하고, 상기 설정된 페이지의 가중치 변수를 이용하여 페이지의 기회 값을 설정하는, 페이지 캐시 관리 장치.
  16. 제11항에 있어서,
    상기 프로세서는,
    상기 페이지 캐시에 여유 공간이 없으면, 활성 리스트와 비활성 리스트의 크기를 비교하는, 페이지 캐시 관리 장치.
  17. 제16항에 있어서,
    상기 프로세서는,
    상기 페이지 캐시의 활성 리스트가 상기 페이지 캐시의 비활성 리스트를 초과하면, 상기 활성 리스트의 테일에서 기설정된 페이지량을 분리시켜 페이지 회수를 준비하는, 페이지 캐시 관리 장치.
  18. 제11항에 있어서,
    상기 프로세서는,
    상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 상기 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값을 초과하면, 상기 회수되려는 페이지를 활성 리스트의 헤드로 이동시킨 후 기설정된 기회 값을 차감하는, 페이지 캐시 관리 장치.
  19. 제11항에 있어서,
    상기 프로세서는,
    상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 기설정된 임계치를 초과하고 상기 회수되려는 페이지의 기회 값이 기설정된 잔여 기회 값 이하이면, 상기 회수되려는 페이지를 활성 리스트의 테일로 이동시킨 후 기설정된 기회 값을 차감하는, 페이지 캐시 관리 장치.
  20. 제11항에 있어서,
    상기 프로세서는,
    상기 페이지 캐시에서 회수되려는 페이지의 기회 값이 남아있지 않으면, 상기 회수되려는 페이지를 비활성 리스트로 이동시키는, 페이지 캐시 관리 장치.
  21. 프로세서 실행 가능한 명령어들을 포함하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어들은 상기 프로세서에 의해 실행되었을 때 상기 프로세서로 하여금,
    가상화 서비스에서 컨테이너의 가중치 값과 상기 컨테이너에 의해 동작하는 프로세스가 소유한 페이지의 가중치 변수를 비교하고,
    상기 비교 결과를 기반으로 상기 페이지의 가중치 변수를 변경하고,
    상기 변경된 페이지의 가중치 변수를 이용하여 페이지 캐시의 페이지를 관리하게 하도록 구성된, 컴퓨터 판독 가능한 저장 매체.
KR1020190018116A 2019-02-15 2019-02-15 가상화 서비스에서 페이지 캐시 관리 방법 및 장치 KR102144011B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190018116A KR102144011B1 (ko) 2019-02-15 2019-02-15 가상화 서비스에서 페이지 캐시 관리 방법 및 장치
US16/774,575 US11237982B2 (en) 2019-02-15 2020-01-28 Methods and apparatuses for managing page cache in virtualization service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190018116A KR102144011B1 (ko) 2019-02-15 2019-02-15 가상화 서비스에서 페이지 캐시 관리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102144011B1 true KR102144011B1 (ko) 2020-08-12

Family

ID=72039015

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190018116A KR102144011B1 (ko) 2019-02-15 2019-02-15 가상화 서비스에서 페이지 캐시 관리 방법 및 장치

Country Status (2)

Country Link
US (1) US11237982B2 (ko)
KR (1) KR102144011B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11151050B2 (en) * 2020-01-03 2021-10-19 Samsung Electronics Co., Ltd. Efficient cache eviction and insertions for sustained steady state performance

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090016139A (ko) * 2007-08-10 2009-02-13 한국해양연구원 컨테이너 터미널에서의 실시간 컨테이너 장치장 위치결정방법
KR20140040798A (ko) * 2011-06-22 2014-04-03 시그너스 브로드밴드, 인코포레이티드 통신 네트워크에서 패킷을 우선순위결정 및 스케줄링하기 위한 검출 방법 및 시스템
KR20150091158A (ko) * 2012-12-25 2015-08-07 후아웨이 테크놀러지 컴퍼니 리미티드 공유 가상 메모리 페이지의 관리 모드를 결정하는 방법 및 관련 장치
KR20150097981A (ko) * 2014-02-19 2015-08-27 한국과학기술원 가상화 시스템에서 메모리 조정방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8171255B1 (en) * 2007-02-06 2012-05-01 Parallels IP Holdings GmbH Optimization of paging cache protection in virtual environment
US7747838B2 (en) * 2007-05-19 2010-06-29 International Business Machines Corporation Method and apparatus for dynamically adjusting page size in a virtual memory range
TWI518585B (zh) * 2015-05-18 2016-01-21 國立成功大學 具有草稿式記憶體的電子裝置與草稿式記憶體的管理方法
US10223276B2 (en) * 2017-02-23 2019-03-05 Red Hat, Inc. Page cache management during migration using a list of outstanding store requests transmitted to a destination host machine

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090016139A (ko) * 2007-08-10 2009-02-13 한국해양연구원 컨테이너 터미널에서의 실시간 컨테이너 장치장 위치결정방법
KR20140040798A (ko) * 2011-06-22 2014-04-03 시그너스 브로드밴드, 인코포레이티드 통신 네트워크에서 패킷을 우선순위결정 및 스케줄링하기 위한 검출 방법 및 시스템
KR20150091158A (ko) * 2012-12-25 2015-08-07 후아웨이 테크놀러지 컴퍼니 리미티드 공유 가상 메모리 페이지의 관리 모드를 결정하는 방법 및 관련 장치
KR20150097981A (ko) * 2014-02-19 2015-08-27 한국과학기술원 가상화 시스템에서 메모리 조정방법

Also Published As

Publication number Publication date
US20200264986A1 (en) 2020-08-20
US11237982B2 (en) 2022-02-01

Similar Documents

Publication Publication Date Title
US11163728B2 (en) Sharing container images utilizing a shared storage system
JP6779838B2 (ja) メモリシステムおよび制御方法
EP3108371B1 (en) Modified memory compression
US6957294B1 (en) Disk volume virtualization block-level caching
US11693789B2 (en) System and method for mapping objects to regions
US9495289B2 (en) Solid state memory device logical and physical partitioning
CN110196681B (zh) 业务写操作的磁盘数据写入控制方法及装置、电子设备
US10831374B2 (en) Minimizing seek times in a hierarchical storage management (HSM) system
US10585613B2 (en) Small storage volume management
US10956062B2 (en) Aggregating separate data within a single data log wherein single data log is divided in a plurality of blocks assigned to plurality of different streams
US10891150B2 (en) Storage control method and storage controller for user individual service environment
US10359945B2 (en) System and method for managing a non-volatile storage resource as a shared resource in a distributed system
US10891073B2 (en) Storage apparatuses for virtualized system and methods for operating the same
US10782922B2 (en) Storage device volume selection for improved space allocation
KR102144011B1 (ko) 가상화 서비스에서 페이지 캐시 관리 방법 및 장치
US11403026B2 (en) Method, device and computer program product for managing storage system
US10762048B2 (en) Dynamically increasing available storage space in a storage volume
US20190227957A1 (en) Method for using deallocated memory for caching in an i/o filtering framework
US10223035B2 (en) Scalable storage space allocation in distributed storage systems
US20240111755A1 (en) Two-phase commit using reserved log sequence values
WO2023024621A1 (en) Conditionally deploying a reusable group of containers for a job based on available system resources
KR102334237B1 (ko) 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치
US20240012679A1 (en) Asymmetric central processing unit (cpu) sharing with a containerized service hosted in a data storage system
US11055218B2 (en) Apparatus and methods for accelerating tasks during storage caching/tiering in a computing environment
KR20230085260A (ko) 데이터 마이그레이션 방법 및 그를 위한 numa 시스템

Legal Events

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