KR102254501B1 - Partially order preserving i/o scheduler and method thereof - Google Patents
Partially order preserving i/o scheduler and method thereof Download PDFInfo
- Publication number
- KR102254501B1 KR102254501B1 KR1020190015744A KR20190015744A KR102254501B1 KR 102254501 B1 KR102254501 B1 KR 102254501B1 KR 1020190015744 A KR1020190015744 A KR 1020190015744A KR 20190015744 A KR20190015744 A KR 20190015744A KR 102254501 B1 KR102254501 B1 KR 102254501B1
- Authority
- KR
- South Korea
- Prior art keywords
- write request
- order
- input
- barrier
- guaranteed
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 일 실시예에 따른 입출력 스케줄러가 부분적으로 입출력 순서가 보장되도록 입출력 요청을 스케줄링하는 방법은 입출력 순서 보장의 단위인 에포크(epoch)의 구성을 완료하는 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받는 단계; 상기 스케줄링 큐에서 상기 입력받은 배리어 기반 쓰기 요청을 순서 보장 쓰기 요청으로 변경하는 단계; 및 상기 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청을 디스패치 큐에게 전송하되, 마지막으로 전송되는 순서 보장 쓰기 요청을 상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 단계를 포함한다.The method of scheduling an I/O request so that the I/O order is partially guaranteed by the I/O scheduler according to an embodiment of the present invention is to receive a barrier-based write request that completes the configuration of an epoch, which is a unit of ensuring the I/O order, into the scheduling queue. step; Changing the barrier-based write request received from the scheduling queue into an order guaranteed write request; And transmitting at least one order-guaranteed write request included in the scheduling queue to the dispatch queue, changing the last transmitted order-guaranteed write request to the barrier-based write request and transmitting.
Description
본 발명은 부분적으로 기록 순서를 보장하는 입출력 스케줄러 및 그 방법에 관한 것이다.The present invention relates to an input/output scheduler and a method for partially ensuring the write order.
사용자가 파일에 데이터를 쓰면, 파일 시스템에 의해 블록 단위 입출력 요청으로 변환되어 입출력 스케줄러에게 전달된다. 입출력 스케줄러는 블록 디바이스마다 하나씩 존재하며, 블록 디바이스에 대한 입출력 요청들을 관리한다. 입출력 요청들을 효율적으로 처리하기 위해서 입출력 스케줄러는 입출력 요청들을 병합하고, 분리하고, 재정렬한다. 예를 들어, 연속된 블록에 대한 입출력 요청들은 병합하여 한번에 처리될 수 있도록 하고, 블록 번호 순으로 입출력 요청들을 정렬하여 저장장치가 효율적으로 입출력 요청을 처리할 수 있도록 돕는다.When a user writes data to a file, it is converted into block-based input/output requests by the file system and delivered to the input/output scheduler. One I/O scheduler exists for each block device, and manages I/O requests for block devices. To efficiently process I/O requests, the I/O scheduler merges, separates, and rearranges I/O requests. For example, I/O requests for contiguous blocks are merged to be processed at a time, and I/O requests are sorted in order of block number, so that the storage device can efficiently process I/O requests.
기존 입출력 스케줄러가 입출력 요청들을 재정렬하는 이유는 하드 디스크(HDD)의 탐색 시간을 줄이기 위해서이다. 입출력 요청들이 블록 번호 순으로 정렬되어 전달되면 저장 장치는 효율적으로 디스크 헤드를 움직여 입출력 요청들을 처리할 수 있다. 하지만, 이러한 정렬은 사용자가 원하는 입출력 요청 처리 순서를 임의로 변경할 수 있다. 종래 기술은 사용자가 요청한 입출력 요청의 순서를 전혀 고려하지 않고 있다.The reason why the existing I/O scheduler rearranges I/O requests is to reduce the search time of the hard disk (HDD). When I/O requests are sorted and delivered in order of block number, the storage device can efficiently move the disk head to process I/O requests. However, such arrangement can arbitrarily change the order of processing input/output requests desired by the user. The prior art does not consider the order of input/output requests requested by the user at all.
관련 선행기술로는 대한민국 공개특허공보 제10-2011-0019763호(발명의 명칭 : 파일 입출력 스케줄러)가 있다.As a related prior art, there is Korean Laid-Open Patent Publication No. 10-2011-0019763 (name of the invention: file input/output scheduler).
본 발명에서는 적어도 하나의 순서 보장 쓰기 요청으로 구성되는 에포크(epoch)라는 단위를 정의하여, 에포크 단위로 사용자가 요청한 입출력 요청의 순서를 보장하는 입출력 스케줄러 및 그 방법을 제공하고자 한다.In the present invention, by defining a unit called an epoch consisting of at least one order-guaranteed write request, it is intended to provide an input/output scheduler and a method for ensuring the order of input/output requests requested by a user in units of epochs.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The problem to be solved by the present invention is not limited to the problem(s) mentioned above, and another problem(s) not mentioned will be clearly understood by those skilled in the art from the following description.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 입출력 스케줄러가 부분적으로 입출력 순서가 보장되도록 입출력 요청을 스케줄링하는 방법은 입출력 순서 보장의 단위인 에포크(epoch)의 구성을 완료하는 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받는 단계; 상기 스케줄링 큐에서 상기 입력받은 배리어 기반 쓰기 요청을 순서 보장 쓰기 요청으로 변경하는 단계; 및 상기 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청을 디스패치 큐에게 전송하되, 마지막으로 전송되는 순서 보장 쓰기 요청을 상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 단계를 포함한다.In order to achieve the above object, a method of scheduling an input/output request such that an input/output scheduler partially guarantees the input/output order according to an embodiment of the present invention is a barrier-based write request that completes the configuration of an epoch, which is a unit of guaranteeing the input/output order. Receiving input into the scheduling queue; Changing the barrier-based write request received from the scheduling queue into an order guaranteed write request; And transmitting at least one order-guaranteed write request included in the scheduling queue to the dispatch queue, and changing the last transmitted order-guaranteed write request to the barrier-based write request and transmitting.
바람직하게는, 상기 스케줄링 큐에 입력받는 단계와 상기 순서 보장 쓰기 요청으로 변경하는 단계의 사이에, 상기 스케줄링 큐로 입력되는 입출력 요청을 차단하는 단계를 더 포함하고, 상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 단계의 이후에, 상기 입출력 요청의 차단을 해제하는 단계를 더 포함할 수 있다.Preferably, between the step of receiving the input to the scheduling queue and the step of changing to the order guaranteed write request, further comprising blocking the input/output request input to the scheduling queue, and changing to the barrier-based write request and transmitting After the step of performing, the step of releasing the blocking of the input/output request may be further included.
바람직하게는, 상기 스케줄링 큐에 입력받는 단계의 이전에 상기 에포크를 구성하는 적어도 하나의 순서 보장 쓰기 요청 또는 순서 보장이 되지 않는 적어도 하나의 순서 없는 쓰기 요청을 상기 스케줄링 큐에 입력받는 단계를 더 포함하고, 상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 단계는 상기 스케줄링 큐에 포함된 모든 쓰기 요청을 소정의 기준에 따른 순서로 상기 디스패치 큐에게 전송할 수 있다.Preferably, prior to the step of receiving input to the scheduling queue, receiving at least one order-guaranteed write request constituting the epoch or at least one unordered write request constituting the epoch is input to the scheduling queue. And, in the step of changing and transmitting the barrier-based write request, all write requests included in the scheduling queue may be transmitted to the dispatch queue in an order according to a predetermined criterion.
바람직하게는, 상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 단계는 상기 스케줄링 큐에 입력되거나 또는 상기 스케줄링 큐로부터 출력되는 상기 순서 보장 쓰기 요청 및 상기 배리어 기반 쓰기 요청의 개수를 카운트하는 카운터를 이용하여, 전송되는 순서 보장 쓰기 요청이 마지막인지 판단할 수 있다.Preferably, the step of changing and transmitting the barrier-based write request includes using a counter for counting the number of the order guaranteed write request and the barrier-based write request input to the scheduling queue or output from the scheduling queue, It can be determined whether the transmitted order guaranteed write request is the last.
바람직하게는, 상기 순서 보장 쓰기 요청은 상기 순서 없는 쓰기 요청에 순서보장에 대응되는 플래그를 설정한 요청이고, 상기 배리어 기반 쓰기 요청은 상기 순서 보장 쓰기 요청에 배리어에 대응되는 플래그를 설정한 요청일 수 있다.Preferably, the order guarantee write request is a request in which a flag corresponding to order guarantee is set in the unordered write request, and the barrier-based write request is a request in which a flag corresponding to a barrier is set in the order guarantee write request. I can.
또한, 상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 부분 순서 보장 기반 입출력 스케줄러는 입출력 순서 보장의 단위인 에포크(epoch)의 구성을 완료하는 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받는 입력부; 상기 스케줄링 큐에서 상기 입력받은 배리어 기반 쓰기 요청을 순서 보장 쓰기 요청으로 변경하는 갱신부; 및 상기 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청을 디스패치 큐에게 전송하되, 마지막으로 전송되는 순서 보장 쓰기 요청을 상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 전송부를 포함한다.In addition, the partial order guarantee-based input/output scheduler according to an embodiment of the present invention for achieving the above object includes: an input unit receiving a barrier-based write request for completing the configuration of an epoch, which is a unit of guaranteeing the input/output order, to a scheduling queue; An update unit for changing the barrier-based write request received from the scheduling queue into an order guaranteed write request; And a transmission unit that transmits at least one order-guaranteed write request included in the scheduling queue to the dispatch queue, and changes the last transmitted order-guaranteed write request to the barrier-based write request.
바람직하게는, 상기 입력부가 상기 스케줄링 큐에 상기 배리어 기반 쓰기 요청을 입력받으면 상기 스케줄링 큐로 입력되는 입출력 요청을 차단하고, 상기 전송부가 상기 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청의 전송을 완료하면 상기 입출력 요청의 차단을 해제하는 차단제어부를 더 포함할 수 있다.Preferably, when the input unit receives the barrier-based write request into the scheduling queue, the input/output request input to the scheduling queue is blocked, and the transmission unit completes the transmission of at least one order-guaranteed write request included in the scheduling queue. If so, it may further include a blocking control unit for releasing the blocking of the input/output request.
바람직하게는, 상기 입력부는 상기 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받기 이전에, 상기 에포크를 구성하는 적어도 하나의 순서 보장 쓰기 요청 또는 순서 보장이 되지 않는 적어도 하나의 순서 없는 쓰기 요청을 상기 스케줄링 큐에 더 입력받고, 상기 전송부는 상기 스케줄링 큐에 포함된 모든 쓰기 요청을 소정의 기준에 따른 순서로 상기 디스패치 큐에게 전송할 수 있다.Preferably, the input unit transmits at least one order-guaranteed write request constituting the epoch or at least one orderless write request that is not order-guaranteed to the scheduling queue before receiving the barrier-based write request into the scheduling queue. Further input is received, and the transmission unit may transmit all write requests included in the scheduling queue to the dispatch queue in an order according to a predetermined criterion.
바람직하게는, 상기 스케줄링 큐에 입력되거나 또는 상기 스케줄링 큐로부터 출력되는 상기 순서 보장 쓰기 요청 및 상기 배리어 기반 쓰기 요청의 개수를 카운트하는 카운터를 더 포함하고, 상기 전송부는 상기 카운터를 이용하여, 전송되는 순서 보장 쓰기 요청이 마지막인지 판단할 수 있다.Preferably, it further comprises a counter for counting the number of the order guaranteed write request and the barrier-based write request input to the scheduling queue or output from the scheduling queue, and the transmission unit is transmitted using the counter. It can be determined whether or not the ordered write request is the last.
바람직하게는, 상기 순서 보장 쓰기 요청은 상기 순서 없는 쓰기 요청에 순서보장에 대응되는 플래그를 설정한 요청이고, 상기 배리어 기반 쓰기 요청은 상기 순서 보장 쓰기 요청에 배리어에 대응되는 플래그를 설정한 요청일 수 있다.Preferably, the order guarantee write request is a request in which a flag corresponding to order guarantee is set in the unordered write request, and the barrier-based write request is a request in which a flag corresponding to a barrier is set in the order guarantee write request. I can.
본 발명은 에포크 단위로 사용자의 파일 입출력 요청의 순서를 유지하여 디스패치 큐에 전달함으로써, 스토리지에 전달되는 쓰기 요청의 순서를 부분적으로 보장하는 효과가 있다.The present invention has an effect of partially guaranteeing the order of write requests transmitted to the storage by maintaining the order of the user's file input/output requests in units of epochs and transferring them to the dispatch queue.
도 1은 종래의 기술에 따른 호스트와 스토리지 간의 데이터 입출력 과정을 설명하기 위한 도면이다.
도 2는 종래의 기술에 따른 EXT4 파일시스템의 동기화 명령인 fsync()의 동작 과정을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 순서 보장 입출력 스택을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 부분 순서 보장 기반 입출력 스케줄링 방법의 흐름도이다.
도 5는 본 발명의 다른 실시예에 따른 부분 순서 보장 기반 입출력 스케줄링 방법의 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 부분 순서 보장 기반 입출력 스케줄러의 블록도이다.
도 7은 본 발명의 일 실시예에 따른 부분 순서 보장 기반 입출력 스케줄링을 설명하기 위한 도면이다.1 is a diagram illustrating a data input/output process between a host and a storage according to the related art.
2 is a diagram for explaining an operation process of fsync(), which is a synchronization command of an EXT4 file system according to the prior art.
3 is a diagram illustrating an order guaranteed input/output stack according to an embodiment of the present invention.
4 is a flowchart of a method for scheduling an input/output based on partial order guarantee according to an embodiment of the present invention.
5 is a flowchart of a method for scheduling an input/output based on partial order guarantee according to another embodiment of the present invention.
6 is a block diagram of an input/output scheduler based on partial order guarantee according to an embodiment of the present invention.
7 is a diagram for describing I/O scheduling based on partial order guarantee according to an embodiment of the present invention.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.In the present invention, various modifications may be made and various embodiments may be provided, and specific embodiments will be illustrated in the drawings and described in detail in the detailed description. However, this is not intended to limit the present invention to a specific embodiment, it should be understood to include all changes, equivalents, and substitutes included in the spirit and scope of the present invention. In describing each drawing, similar reference numerals have been used for similar elements.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.Terms such as first, second, A, and B may be used to describe various elements, but the elements should not be limited by the terms. The above terms are used only for the purpose of distinguishing one component from another component. For example, without departing from the scope of the present invention, a first element may be referred to as a second element, and similarly, a second element may be referred to as a first element. The term and/or includes a combination of a plurality of related listed items or any of a plurality of related listed items.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.When a component is referred to as being "connected" or "connected" to another component, it is understood that it may be directly connected or connected to the other component, but other components may exist in the middle. It should be. On the other hand, when a component is referred to as being "directly connected" or "directly connected" to another component, it should be understood that there is no other component in the middle.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in the present application are only used to describe specific embodiments, and are not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In the present application, terms such as "comprise" or "have" are intended to designate the presence of features, numbers, steps, actions, components, parts, or combinations thereof described in the specification, but one or more other features. It is to be understood that the presence or addition of elements or numbers, steps, actions, components, parts, or combinations thereof does not preclude in advance.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein including technical or scientific terms have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention belongs. Terms as defined in a commonly used dictionary should be interpreted as having a meaning consistent with the meaning in the context of the related technology, and should not be interpreted as an ideal or excessively formal meaning unless explicitly defined in the present application. Does not.
도 1은 종래의 기술에 따른 호스트와 스토리지 간의 데이터 입출력 과정을 설명하기 위한 도면이다.1 is a diagram illustrating a data input/output process between a host and a storage according to the related art.
도 1을 참조하면, 호스트에서 운영되는 파일시스템은 IO 스케줄러 큐(IO scheduler queue)에 쓰기 요청(write request)를 입력한다. 그리고, 블록 디바이스 드라이버는 IO 스케줄러 큐로부터 하나 이상의 쓰기 요청을 제거하여, 이로부터 쓰기 명령(write command)를 구성한다. 그리고, 블록 디바이스 드라이버는 가능한 경우에 그 쓰기 명령을 스토리지 디바이스에게 전달한다. 이때, 스토리지 디바이스의 커맨드 큐(command queue)가 가득차 있지 않으면, 가능한 경우에 해당할 수 있다. 또한, 스토리지 컨트롤러(storage controller)는 커맨드 큐로부터 그 전달된 쓰기 명령을 제거하고, 호스트로부터 그 쓰기 명령에 관련 데이터를 수신하여 캐시에 저장한다. 수신이 완료되면, 스토리지는 호스트에 시그널을 전송한다. 한편, 캐시에 저장된 데이터는 주기적으로 또는 호스트로부터의 명시적인 요청에 의하여 스토리지 표면에 기록된다.Referring to FIG. 1, a file system operated by a host inputs a write request to an IO scheduler queue. In addition, the block device driver removes one or more write requests from the IO scheduler queue, and constructs a write command therefrom. Then, the block device driver transmits the write command to the storage device when possible. In this case, if the command queue of the storage device is not full, it may be possible. In addition, the storage controller removes the transmitted write command from the command queue, receives data related to the write command from the host, and stores it in the cache. When reception is complete, the storage sends a signal to the host. Meanwhile, data stored in the cache is written to the storage surface periodically or by an explicit request from the host.
여기서, 쓰기 요청의 입력 순서(I), 쓰기 명령 전달 순서(D), 데이터 전송 순서(X) 및 데이터 기록 순서(P)를 고려할 때, 다음과 같은 순서 상의 불일치가 존재할 수 있다.Here, when the input order (I) of the write request, the write command transfer order (D), the data transfer order (X), and the data write order (P) are considered, there may be a discrepancy in the following order.
우선, I와 D가 불일치할 수 있다. 이는, IO 스케줄러가 쓰기 요청을 스케줄링 원칙에 따라 재배치(reorder)하거나 병합(coalescence)할 수 있기 때문이다.First of all, I and D may be inconsistent. This is because the IO scheduler can reorder or coalesce write requests according to scheduling principles.
또한, D와 X가 불일치할 수 있다. 이는, 스토리지 컨트롤러가 자유롭게 커맨드 큐의 쓰기 명령의 순서를 조정할 수 있기 때문이다.Also, D and X may be inconsistent. This is because the storage controller can freely adjust the order of write commands in the command queue.
또한, X와 P가 불일치할 수 있다. 이는, 스토리지의 캐시가 FIFO가 아니기 때문이다. 즉, 플래시 기반 스토리지에서, 데이터 기록 순서는 캐시에 기록된 순서가 아니라, 관련된 맵핑 테이블에 기록된 순서에 따라 결정될 수 있다.Also, X and P may be inconsistent. This is because the storage cache is not a FIFO. That is, in the flash-based storage, the data writing order may be determined not according to the order in which the data is written to the cache, but according to the order in which the data is written to the related mapping table.
이러한 다양한 순서 상의 불확실성 때문에, 현대의 IO 스택을 이용한 데이터 입출력 과정은 전 과정을 통해 순서가 지켜지기 어려운 것으로 인식되어 왔다.Due to this uncertainty in various orderings, it has been recognized that the order of data input/output using the modern IO stack is difficult to maintain throughout the entire process.
도 2는 종래의 기술에 따른 EXT4 파일시스템의 동기화 명령인 fsync()의 동작 과정을 설명하기 위한 도면이다.2 is a diagram for explaining an operation process of fsync(), which is a synchronization command of an EXT4 file system according to the prior art.
EXT4(extended file system 4)는 리눅스의 대표적인 저널링 파일 시스템으로, 기존 EXT3 파일 시스템의 향상된 버전이다. 저널링 파일 시스템은 파일 시스템에 변경사항을 반영(commit)하기 전에, 저널안에 생성되는 변경사항을 추적하여 기록하는 파일 시스템이다. 이를 통해, 시스템 충돌이나 전원 문제가 발생할 때 초래될 수 있는 시스템의 손상을 최소화할 수 있는 효과가 있다.EXT4 (extended file system 4) is a typical journaling file system of Linux, and is an improved version of the existing EXT3 file system. The journaling file system is a file system that tracks and records changes created in a journal before committing changes to the file system. Through this, there is an effect of minimizing damage to the system that may be caused when a system crash or a power problem occurs.
EXT4 파일 시스템에서는 기록 순서를 제어하기 위하여 fsync() 함수를 이용한다. Ordered모드(default)에서는 데이터 블록(D)이 저널 트랜잭션에 앞서 기록된다.In the EXT4 file system, the fsync() function is used to control the write order. In the ordered mode (default), the data block (D) is recorded prior to the journal transaction.
우선, 파일 시스템이 데이터 블록(D)에 대한 쓰기 요청을 입력한다. 이때, 데이터 블록(D)은 다른 파일들에 대한 복수의 블록일 수 있다. 그 후, 어플리케이션 쓰레드는 DMA 전송이 완료될 때까지 대기한다. 그리고, DMA 전송이 완료되면 그 어플리케이션 쓰레드는 JBD 쓰레드를 동작시켜 저널 트랜잭션을 반영하도록 한다. 그 후, 그 어플리케이션 쓰레드는 다시 슬립 상태로 진입하며, JBD 쓰레드가 저널 트랜잭션을 모두 기록한 후, 반환(return)한다.First, the file system inputs a write request for the data block D. In this case, the data block D may be a plurality of blocks for other files. After that, the application thread waits until the DMA transfer is complete. Then, when the DMA transfer is completed, the application thread operates the JBD thread to reflect the journal transaction. After that, the application thread enters the sleep state again, and after the JBD thread records all journal transactions, it returns.
보다 구체적으로, 저널 트랜잭션은 두개의 쓰기 요청을 통해 반영될 수 있다. 이는, 저널 디스크립터 블록 및 로그 블록(JD)과 커밋 블록(JC)이다. 또한, 저널 트랜잭션을 반영하는 과정에서, JBD 쓰레드는 단일 트랜잭션 내부에서, 그리고 트랜잭션들 간에서 그 기록 순서를 유지할 필요가 있다. More specifically, the journal transaction can be reflected through two write requests. These are the journal descriptor block, log block (JD), and commit block (JC). Also, in the process of reflecting journal transactions, the JBD thread needs to maintain the order of writing within a single transaction and between transactions.
단일 트랜잭션 내부에서는, JBD 쓰레드가 JD를 JC보다 먼저 기록해야 할 필요가 있다. 즉, JBD 쓰레드는 JD가 JC보다 먼저 기록되도록, Transfer-and-Flush 기법을 이용할 수 있다. 이때, Transfer-and-Flush 기법은 JD에 관한 데이터가 DMA를 통해 전송(transfer)되고, 스토리지에 기록(flush)되는 동안 대기한 후, JC에 관한 데이터가 DMA를 통해 전송(transfer)되고, 스토리지에 기록(flush)되도록 함으로써, 그 기록 순서를 지키는 것이다.Inside a single transaction, the JBD thread needs to write JD before JC. That is, the JBD thread can use the Transfer-and-Flush technique so that JD is written before JC. At this time, in the Transfer-and-Flush technique, data related to JD is transferred through DMA, waits while being flushed to storage, and then data related to JC is transferred through DMA. By making them flush, the order of writing is preserved.
또한, 트랜잭션들 간에는, JBD 쓰레드가 저널 트랜잭션의 요청 순서에 따라서 그 트랜잭션들이 기록되도록 해야 할 필요가 있다.Also, between transactions, the JBD thread needs to ensure that the transactions are recorded according to the request order of the journal transaction.
이처럼, EXT4 파일 시스템에서는 fsync()를 이용한 동기화 과정에서, 여러 차례의 컨텍스트 스위치가 발생하며, 데이터 전송과 기록에 따른 대기 시간이 요구되어 전송 오버헤드, 플러시 오버헤드가 필연적으로 발생하게 된다.As described above, in the EXT4 file system, in the synchronization process using fsync(), several context switches occur, and a waiting time according to data transmission and recording is required, so that transmission overhead and flush overhead inevitably occur.
도 3은 본 발명의 일 실시예에 따른 순서 보장 입출력 스택을 설명하기 위한 도면이다.3 is a diagram illustrating an order guaranteed input/output stack according to an embodiment of the present invention.
본 발명의 일 실시예에 따른 순서 보장 입출력 스택은 순서 보장 블록 디바이스 레이어에서 새롭게 정의된 배리어 기반 쓰기 명령, 순서 보장 디스패치 모듈(order preserving dispatch module), 에포크 기반 IO 스케줄러(Epoch-based IO scheduler)로 구성될 수 있다. 이와 같은 구성들을 이용함으로써, Transfer-and-Flush 기법을 이용하지 않고도, 부분적으로 쓰기 요청에 대한 순서가 스토리지에까지 반영될 수 있다.The order-guaranteed input/output stack according to an embodiment of the present invention is a barrier-based write command newly defined in the order-guaranteed block device layer, an order-guaranteed dispatch module, and an epoch-based IO scheduler. Can be configured. By using such configurations, the order of partial write requests can be reflected to the storage without using the Transfer-and-Flush technique.
보다 구체적으로, 순서 보장 블록 디바이스 레이어는 쓰기 요청을 두 종류로 구분한다. 순서 보장 쓰기 요청과 순서 없는 쓰기 요청이 그것이다. 여기서, 순서 보장 쓰기 요청은 스토리지 기록 순서가 보장되도록 하기 위한 쓰기 요청이다. More specifically, the ordering block device layer classifies write requests into two types. These are ordered write requests and unordered write requests. Here, the order guaranteed write request is a write request for ensuring the storage write order.
또한, 순서 보장 쓰기 요청의 집합으로, 그 집합 내부에서는 기록 순서가 변경가능한 단위가 에포크이다. 또한, 순서 보장 쓰기 요청에 대응되는 순서 보장 쓰기 명령 중에서 특별한 하나의 타입이 배리어 기반 쓰기 명령이다. 즉, 배리어 기반 쓰기 명령은 에포크를 분류하기 위하여 이용되며, 그 전후의 순서 보장 쓰기 명령 간의 스토리지에서의 기록 순서가 보장된다.In addition, as a set of order-guaranteed write requests, a unit in which the write order can be changed is an epoch. In addition, one special type of order-guaranteed write commands corresponding to the order-guaranteed write request is a barrier-based write command. That is, the barrier-based write command is used to classify epochs, and the order of writes in the storage between the before and after order guarantee write commands is guaranteed.
이때, 순서 보장 쓰기 명령 및 배리어 기반 쓰기 명령에는 각각 새로운 속성인 REQ_ORDERED 및 REQ_BARRIER가 이용될 수 있다. 즉, 일반적인 순서 보장 쓰기 명령에는 REQ_ORDERED가 이용되고, 배리어 기반 쓰기 명령에는 REQ_ORDERED와 REQ_BARRIER가 함께 이용될 수 있다.In this case, new attributes, REQ_ORDERED and REQ_BARRIER, may be used for the order guaranteed write command and the barrier-based write command, respectively. That is, REQ_ORDERED may be used for a general order guaranteed write command, and REQ_ORDERED and REQ_BARRIER may be used together for a barrier-based write command.
도 4는 본 발명의 일 실시예에 따른 부분 순서 보장 기반 입출력 스케줄링 방법의 흐름도이다.4 is a flowchart of a method for scheduling an input/output based on partial order guarantee according to an embodiment of the present invention.
단계 S410에서는, 입출력 스케줄러가 입출력 순서 보장의 단위인 에포크(epoch)의 구성을 완료하는 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받는다.In step S410, the input/output scheduler receives a barrier-based write request for completing the configuration of an epoch, which is a unit of guaranteeing the input/output order, to the scheduling queue.
즉, 입출력 스케줄러는 스케줄링 큐에 배리어 기반 쓰기 요청을 입력받으면, 에포크의 구성을 완료할 수 있다. 또한, 배리어 기반 쓰기 요청은 순서 보장 쓰기 요청의 한 종류이며, 에포크의 구성을 완료시키기 위한 목적으로 입력되는 쓰기 요청일 수 있다. 즉, 특정한 어플리케이션 또는 쓰레드가 순서를 보장받기 원하는 다수의 순서 보장 쓰기 요청을 입력할 때, 마지막 순서 보장 쓰기 요청을 배리어 기반 쓰기 요청으로 설정할 수 있다.That is, the input/output scheduler may complete the configuration of the epoch when receiving a barrier-based write request to the scheduling queue. In addition, the barrier-based write request is a type of order guaranteed write request, and may be a write request input for the purpose of completing the configuration of the epoch. That is, when a specific application or thread inputs a plurality of order-guaranteed write requests for which the order is to be guaranteed, the last order-guaranteed write request may be set as a barrier-based write request.
한편, 스케줄링 큐에는 순서 보장 쓰기 요청이 적어도 하나 포함되어 있거나 포함되지 않을 수 있다. 또한, 순서 없는 쓰기 요청이 적어도 하나 포함되어 있거나 포함되지 않을 수 있다. Meanwhile, the scheduling queue may or may not include at least one order-guaranteed write request. In addition, at least one unordered write request may or may not be included.
이때, 순서 보장 쓰기 요청은 에포크에 포함될 수 있으나, 순서 없는 쓰기 요청은 에포크에 포함될 수 없다.In this case, the order guaranteed write request may be included in the epoch, but the unordered write request cannot be included in the epoch.
단계 S420에서는, 입출력 스케줄러가 스케줄링 큐에서 그 입력받은 배리어 기반 쓰기 요청을 순서 보장 쓰기 요청으로 변경한다.In step S420, the input/output scheduler changes the barrier-based write request received from the scheduling queue into an order guaranteed write request.
즉, 입출력 스케줄러는 스케줄링 큐에 포함된 배리어 기반 쓰기 요청을 보통의 순서 보장 쓰기 요청으로 변경한다. 이는, 입출력 스케줄러가 스케줄링 큐에 포함된 쓰기 요청의 순서를 변경하거나, 병합하여 처리할 수 있기 때문이다. 다시 말하면, 스케줄링 큐에 포함된 쓰기 요청의 순서가 변경되거나, 다른 쓰기 요청과 병합되어 처리될 수 있으므로, 입력된 배리어 기반 쓰기 요청이 마지막으로 디스패치 큐에게 전송된다는 보장이 없기 때문이다.That is, the I/O scheduler changes the barrier-based write request included in the scheduling queue into a normal order-guaranteed write request. This is because the input/output scheduler can change the order of write requests included in the scheduling queue or merge and process the write requests. In other words, since the order of write requests included in the scheduling queue may be changed or merged with other write requests to be processed, there is no guarantee that the input barrier-based write request is finally transmitted to the dispatch queue.
마지막으로 단계 S430에서는, 입출력 스케줄러가 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청을 디스패치 큐에게 전송하되, 마지막으로 전송되는 순서 보장 쓰기 요청을 배리어 기반 쓰기 요청으로 변경하여 전송한다.Finally, in step S430, the input/output scheduler transmits at least one order-guaranteed write request included in the scheduling queue to the dispatch queue, but changes the last-to-send order guarantee write request to a barrier-based write request and transmits it.
예컨대, 입출력 스케줄러는 스케줄링 큐에 포함된 모든 순서 보장 쓰기 요청을 디스패치 큐에게 전송하여, 스토리지에 전달될도록 할 수 있다. 이때, 입출력 스케줄러는 마지막으로 전송되는 순서 보장 쓰기 요청을 배리어 기반 쓰기 요청으로 변경함으로써, 최종적으로 스토리지에서의 에포크에 포함된 적어도 하나의 순서 보장 쓰기 요청의 기록 순서가 보장되도록 할 수 있다.For example, the input/output scheduler may transmit all order-guaranteed write requests included in the scheduling queue to the dispatch queue to be delivered to the storage. In this case, the input/output scheduler may change the last transmitted order guarantee write request into a barrier-based write request, so that the writing order of at least one order guarantee write request included in the epoch in the storage is finally guaranteed.
결과적으로, 앞서 설명한 바와 같이, 본 발명의 입출력 스케줄러는 모든 순서 보장 쓰기 요청 단위로 기록 순서를 보장하지 않으며, 에포크 단위로만 기록 순서를 보장할 수 있다. 즉, 단일한 에포크에 포함된 적어도 하나의 순서 보장 쓰기 요청 간의 기록 순서는 변경될 수 있으나, 다른 에포크에 포함된 적어도 하나의 순서 보장 쓰기 요청과의 기록 순서는 보장될 수 있는 것이다.As a result, as described above, the input/output scheduler of the present invention does not guarantee the write order in units of all order-guaranteed write requests, and can guarantee the write order only in units of epochs. That is, the writing order between at least one order-guaranteed write request included in a single epoch may be changed, but the writing order with at least one order-guaranteed write request included in another epoch may be guaranteed.
한편, 변경된 배리어 기반 쓰기 요청은 SCSI 우선순위 중에서 ordered priority로 설정되어 디스패치 큐에 입력될 수 있다.Meanwhile, the changed barrier-based write request may be set as an ordered priority among SCSI priorities and may be input to the dispatch queue.
이와 같이, 본 발명의 일 실시예에 따른 부분 순서 보장 기반 입출력 스케줄링 방법은 에포크 단위로 사용자의 파일 입출력 요청들의 순서를 유지하여 디스패치 큐에 전달함으로써, 스토리지에 전달되는 쓰기 요청의 순서를 부분적으로 보장하는 효과가 있다.In this way, the partial order guarantee-based I/O scheduling method according to an embodiment of the present invention partially guarantees the order of write requests transmitted to the storage by maintaining the order of the user's file I/O requests in units of epochs and transferring them to the dispatch queue. There is an effect.
도 5는 본 발명의 다른 실시예에 따른 부분 순서 보장 기반 입출력 스케줄링 방법의 흐름도이다.5 is a flowchart of a method for scheduling an input/output based on partial order guarantee according to another embodiment of the present invention.
단계 S510에서는, 입출력 스케줄러가 입출력 순서 보장의 단위인 에포크(epoch)의 구성을 완료하는 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받는다.In step S510, the input/output scheduler receives a barrier-based write request for completing the configuration of an epoch, which is a unit of guaranteeing the input/output order, to the scheduling queue.
단계 S520에서는, 입출력 스케줄러가 스케줄링 큐로 입력되는 입출력 요청을 차단한다.In step S520, the input/output scheduler blocks the input/output request input to the scheduling queue.
즉, 입출력 스케줄러는 에포크 단위의 기록 순서 보장을 명확하게 하기 위하여 입출력 요청을 차단할 수 있다. That is, the input/output scheduler may block the input/output request to clarify the guarantee of the write order in units of epochs.
예컨대, 입출력 스케줄러가 입출력 요청을 차단하지 않는다면, 아래의 단계 S530 또는 S540의 도중에 새로운 순서 보장 쓰기 요청을 입력받은 경우, 에포크의 구성이 불명확해질 수 있다. For example, if the input/output scheduler does not block the input/output request, when a new order guarantee write request is received in the middle of step S530 or S540 below, the configuration of the epoch may become unclear.
즉, 입출력 스케줄러는 스케줄링 큐에 포함된 쓰기 요청의 순서를 변경하거나, 병합하여 처리할 수 있기 때문에, 기존의 적어도 하나의 순서 보장 쓰기 요청과 새로운 순서 보장 쓰기 요청이 그 과정에서 뒤섞여 버릴 수 있는 것이다.That is, since the I/O scheduler can change the order of write requests included in the scheduling queue or merge and process them, at least one existing order-guaranteed write request and a new order-guaranteed write request may be mixed in the process. .
단계 S530에서는, 입출력 스케줄러가 스케줄링 큐에서 그 입력받은 배리어 기반 쓰기 요청을 순서 보장 쓰기 요청으로 변경한다.In step S530, the input/output scheduler changes the barrier-based write request received from the scheduling queue into an order guaranteed write request.
단계 S540에서는, 입출력 스케줄러가 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청을 디스패치 큐에게 전송하되, 마지막으로 전송되는 순서 보장 쓰기 요청을 배리어 기반 쓰기 요청으로 변경하여 전송한다.In step S540, the input/output scheduler transmits at least one order-guaranteed write request included in the scheduling queue to the dispatch queue, but changes the last transmitted order-guaranteed write request to a barrier-based write request and transmits it.
마지막으로 단계 S550에서는, 입출력 스케줄러가 입출력 요청의 차단을 해제한다.Finally, in step S550, the input/output scheduler releases the blocking of the input/output request.
이때, 입출력 스케줄러는 단일 에포크에 대한 처리가 완료되었기 때문에, 입출력 요청의 차단을 해제하여 다시 스케줄링 큐에 입출력 요청을 입력받을 수 있다.At this time, since the processing of the single epoch is completed, the input/output scheduler may release the blocking of the input/output request and receive the input/output request into the scheduling queue again.
다른 실시예에서는, 입출력 스케줄러가 단계 S510의 이전에, 에포크를 구성하는 적어도 하나의 순서 보장 쓰기 요청 또는 순서 보장이 되지 않는 적어도 하나의 순서 없는 쓰기 요청을 스케줄링 큐에 입력받고, 단계 S540은 스케줄링 큐에 포함된 모든 쓰기 요청을 소정의 기준에 따른 순서로 디스패치 큐에게 전송할 수 있다.In another embodiment, before step S510, the input/output scheduler receives at least one order-guaranteed write request constituting the epoch or at least one unordered write request for which order is not guaranteed into the scheduling queue, and step S540 is the scheduling queue. All write requests included in may be transmitted to the dispatch queue in an order according to a predetermined criterion.
즉, 입출력 스케줄러가 배리어 기반 쓰기 요청을 입력받는 시점에, 스케줄링 큐에는 이미 적어도 하나의 순서 보장 쓰기 요청 또는 적어도 하나의 순서 없는 쓰기 요청이 입력되어 있을 수 있다.That is, at a time when the input/output scheduler receives the barrier-based write request, at least one ordered write request or at least one unordered write request may already be input to the scheduling queue.
또한, 입출력 스케줄러는 단계 S540에서, 스케줄링 큐에 포함된 모든 쓰기 요청, 즉, 적어도 하나의 순서 보장 쓰기 요청과 (존재한다면) 적어도 하나의 순서 없는 쓰기 요청을 디스패치 큐에게 전송할 수 있다.In addition, in step S540, the input/output scheduler may transmit all write requests included in the scheduling queue, that is, at least one ordered write request and at least one unordered write request (if present) to the dispatch queue.
나아가, 입출력 스케줄러는 기보유한 스케줄링 규칙(scheduling discipline)에 따라, 쓰기 요청의 순서를 변경하거나, 여러 개의 쓰기 요청을 병합하여 처리할 수 있다.Further, the input/output scheduler may change the order of write requests or merge and process several write requests according to a pre-owned scheduling discipline.
또 다른 실시예에서는, 순서 보장 쓰기 요청은 순서 없는 쓰기 요청에 순서보장에 대응되는 플래그를 설정한 요청이고, 배리어 기반 쓰기 요청은 순서 보장 쓰기 요청에 배리어에 대응되는 플래그를 설정한 요청일 수 있다.In another embodiment, the order-guaranteed write request may be a request in which a flag corresponding to order guarantee is set to an unordered write request, and the barrier-based write request may be a request in which a flag corresponding to the barrier is set in the order-guaranteed write request. .
즉, 순서 없는 쓰기 요청, 순서 보장 쓰기 요청 및 배리어 기반 쓰기 요청은 플래그 설정에 따라 구분될 수 있다. 다시 말하면, 순서 없는 쓰기 요청에 순서보장 플래그를 설정하면 순서 보장 쓰기 요청이 되고, 순서 보장 쓰기 요청에 배리어 플래그를 설정하면 배리어 기반 쓰기 요청이 될 수 있다.That is, an unordered write request, an order guaranteed write request, and a barrier-based write request may be classified according to flag settings. In other words, if an order guarantee flag is set for an unordered write request, the order guarantee write request is made, and if a barrier flag is set in the order guarantee write request, a barrier-based write request can be made.
또 다른 실시예에서는, 입출력 스케줄러가 스케줄링 큐에 입력되거나 또는 스케줄링 큐로부터 출력되는 순서 보장 쓰기 요청 및 배리어 기반 쓰기 요청의 개수를 카운트하는 카운터를 이용하여, 전송되는 순서 보장 쓰기 요청이 마지막인지 판단할 수 있다.In another embodiment, the input/output scheduler determines whether the transmitted order-guaranteed write request is the last, using a counter that counts the number of order-guaranteed write requests and barrier-based write requests that are input to the scheduling queue or output from the scheduling queue. I can.
즉, 입출력 스케줄러는 스케줄링 큐에서 입력 또는 출력되는 순서 보장 쓰기 요청 및 배리어 기반 쓰기 요청의 개수를 카운트하는 카운터를 포함하여, 스케줄링 큐에 남아있는 순서 보장 쓰기 요청의 개수를 카운트할 수 있다. That is, the input/output scheduler may include a counter for counting the number of order guaranteed write requests and barrier-based write requests input or output from the scheduling queue, and may count the number of order guaranteed write requests remaining in the scheduling queue.
한편, 도 7을 참조하면, 사용자가 fsync()를 호출하여 3개의 순서 보장 쓰기 요청(W1, W2, W4)을 생성하고, pdflush 쓰레드가 역시 3개의 순서 없는 쓰기 요청(W3, W5, W6)을 생성하였다.On the other hand, referring to FIG. 7, a user calls fsync() to generate 3 order-guaranteed write requests (W 1 , W 2 , W 4 ), and the pdflush thread also calls 3 unordered write requests (W 3 , W 5 , W 6 ) were produced.
이때, W4는 REQ_ORDERED 플래그와 REQ_BARRIER 플래그를 모두 가지고 있어, 배리어 기반 쓰기 요청임을 알 수 있다. 즉, 사용자는 {W1, W2, W4}의 에포크를 구성하고자 하였으며, W4의 배리어 기반 쓰기 요청을 통해 에포크의 구성을 완료하였다.At this time, since W 4 has both the REQ_ORDERED flag and the REQ_BARRIER flag, it can be seen that this is a barrier-based write request. That is, the user wanted to configure the epoch of {W 1 , W 2 , W 4 }, and completed the composition of the epoch through the barrier-based write request of W 4.
이때, 생성된 쓰기 요청들은 W1, W2, W3, W5, W4, W6의 순서로 입출력 스케줄러의 스케줄링 큐에 입력된다. 그러나, W4는 배리어 기반 쓰기 요청이므로, 입출력 스케줄러가 W4를 스케줄링 큐에 입력받는 순간, 스케줄링 큐를 차단하기 때문에, W6는 스케줄링 큐에 입력되지 못하게 된다. 그 후, 입출력 스케줄러는 W4를 배리어 기반 쓰기 요청에서 순서 보장 쓰기 요청으로 변경한다.At this time, the generated write requests are input to the scheduling queue of the I/O scheduler in the order of W 1 , W 2 , W 3 , W 5 , W 4 , and W 6. However, since W 4 is a barrier-based write request, the moment the input/output scheduler receives W 4 into the scheduling queue, it blocks the scheduling queue, so that W 6 cannot be entered into the scheduling queue. After that, the I/O scheduler changes W 4 from a barrier-based write request to an ordered write request.
또한, 입출력 스케줄러가 쓰기 요청의 순서를 재배치한 결과, W2, W3, W4, W5, W1의 순서로 변경하여 디스패치 큐에 전송할 수 있다. 이때, 입출력 스케줄러는 마지막으로 전송되는 순서 보장 쓰기 요청인 W1을 새로운 배리어 기반 쓰기 요청으로 변경한다. 그 결과, 사용자는 {W1, W2, W4}의 에포크에 대하여 IO 스케줄링 이후에도 그 순서를 보장받을 수 있게 된다.In addition, as a result of rearranging the order of write requests by the input/output scheduler, the order of W 2 , W 3 , W 4 , W 5 , and W 1 may be changed and transmitted to the dispatch queue. At this time, the I/O scheduler changes the last transmitted order guaranteed write request W 1 into a new barrier-based write request. As a result, the user can be guaranteed the order of the epochs of {W 1 , W 2 , W 4} even after IO scheduling.
도 6은 본 발명의 일 실시예에 따른 부분 순서 보장 기반 입출력 스케줄러의 블록도이다.6 is a block diagram of an input/output scheduler based on partial order guarantee according to an embodiment of the present invention.
도 6을 참조하면, 본 발명의 일 실시예에 따른 부분 순서 보장 기반 입출력 스케줄러(600)는 입력부(610), 갱신부(620) 및 전송부(630)를 포함할 수 있다. 또한, 선택적으로 차단제어부(미도시) 및 카운터(미도시)를 더 포함할 수 있다. Referring to FIG. 6, the partial order guarantee-based input/
한편, 본 발명의 일 실시예에 따른 부분 순서 보장 기반 입출력 스케줄러(600)는 데스크탑PC, 노트북PC, 스마트폰, 태블릿 및 웨어러블 기기 등과 같이 스토리지에 부분적으로 기록 순서의 보장을 필요로 하는 다양한 종류의 기기에 탑재될 수 있다.On the other hand, the partial order guarantee-based input/
입력부(610)는 입출력 순서 보장의 단위인 에포크(epoch)의 구성을 완료하는 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받는다.The
갱신부(620)는 스케줄링 큐에서 그 입력받은 배리어 기반 쓰기 요청을 순서 보장 쓰기 요청으로 변경한다.The
전송부(630)는 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청을 디스패치 큐에게 전송하되, 마지막으로 전송되는 순서 보장 쓰기 요청을 배리어 기반 쓰기 요청으로 변경하여 전송한다.The
차단제어부(미도시)는 입력부(610)가 스케줄링 큐에 배리어 기반 쓰기 요청을 입력받으면 상기 스케줄링 큐로 입력되는 입출력 요청을 차단한다. 또한, 전송부(630)가 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청의 전송을 완료하면 입출력 요청의 차단을 해제한다.When the
다른 실시예에서는, 입력부(610)는 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받기 이전에, 에포크를 구성하는 적어도 하나의 순서 보장 쓰기 요청 또는 순서 보장이 되지 않는 적어도 하나의 순서 없는 쓰기 요청을 스케줄링 큐에 더 입력받고, 전송부(630)는 스케줄링 큐에 포함된 모든 쓰기 요청을 소정의 기준에 따른 순서로 디스패치 큐에게 전송할 수 있다.In another embodiment, before receiving the barrier-based write request into the scheduling queue, the
카운터(미도시)는 스케줄링 큐에 입력되거나 또는 스케줄링 큐로부터 출력되는 순서 보장 쓰기 요청 및 배리어 기반 쓰기 요청의 개수를 카운트한다.The counter (not shown) counts the number of order-guaranteed write requests and barrier-based write requests that are input to the scheduling queue or output from the scheduling queue.
다른 실시예에서는, 전송부(630)는 카운터를 이용하여, 전송되는 순서 보장 쓰기 요청이 마지막인지 판단할 수 있다.In another embodiment, the
또 다른 실시예에서는, 순서 보장 쓰기 요청은 순서 없는 쓰기 요청에 순서보장에 대응되는 플래그를 설정한 요청이고, 배리어 기반 쓰기 요청은 순서 보장 쓰기 요청에 배리어에 대응되는 플래그를 설정한 요청일 수 있다.In another embodiment, the order-guaranteed write request may be a request in which a flag corresponding to order guarantee is set to an unordered write request, and the barrier-based write request may be a request in which a flag corresponding to the barrier is set in the order-guaranteed write request. .
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.So far, the present invention has been looked at around its preferred embodiments. Those of ordinary skill in the art to which the present invention pertains will be able to understand that the present invention may be implemented in a modified form without departing from the essential characteristics of the present invention. Therefore, the disclosed embodiments should be considered from an illustrative point of view rather than a limiting point of view. The scope of the present invention is shown in the claims rather than the above description, and all differences within the scope equivalent thereto should be construed as being included in the present invention.
Claims (10)
입출력 순서 보장의 단위인 에포크(epoch)의 구성을 완료하는 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받는 단계;
상기 스케줄링 큐로 입력되는 입출력 요청을 차단하는 단계;
상기 스케줄링 큐에서 상기 입력받은 배리어 기반 쓰기 요청을 순서 보장 쓰기 요청으로 변경하는 단계;
상기 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청을 디스패치 큐에게 전송하되, 마지막으로 전송되는 순서 보장 쓰기 요청을 상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 단계; 및
상기 입출력 요청의 차단을 해제하는 단계
를 포함하고,
상기 스케줄링 큐에 입력받는 단계의 이전에
상기 에포크를 구성하는 적어도 하나의 순서 보장 쓰기 요청 또는 순서 보장이 되지 않는 적어도 하나의 순서 없는 쓰기 요청을 상기 스케줄링 큐에 입력받는 단계
를 더 포함하고,
상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 단계는
상기 스케줄링 큐에 포함된 모든 쓰기 요청을 소정의 기준에 따른 순서로 상기 디스패치 큐에게 전송하는 것을 특징으로 하는 부분 순서 보장 기반 입출력 스케줄링 방법.In the method of scheduling I/O requests so that the I/O scheduler partially guarantees the I/O order,
Receiving a barrier-based write request for completing configuration of an epoch, which is a unit of guaranteeing an input/output order, into a scheduling queue;
Blocking input/output requests input to the scheduling queue;
Changing the barrier-based write request received from the scheduling queue into an order guaranteed write request;
Transmitting at least one order guaranteed write request included in the scheduling queue to a dispatch queue, changing the last transmitted order guaranteed write request to the barrier-based write request and transmitting; And
Releasing the blocking of the input/output request
Including,
Before the step of receiving input to the scheduling queue
Receiving at least one order-guaranteed write request constituting the epoch or at least one unordered write request for which no order is guaranteed to be input to the scheduling queue
Including more,
The step of changing and transmitting the barrier-based write request
And transmitting all write requests included in the scheduling queue to the dispatch queue in an order according to a predetermined criterion.
상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 단계는
상기 스케줄링 큐에 입력되거나 또는 상기 스케줄링 큐로부터 출력되는 상기 순서 보장 쓰기 요청 및 상기 배리어 기반 쓰기 요청의 개수를 카운트하는 카운터를 이용하여, 전송되는 순서 보장 쓰기 요청이 마지막인지 판단하는 것을 특징으로 하는 부분 순서 보장 기반 입출력 스케줄링 방법.The method of claim 1,
The step of changing and transmitting the barrier-based write request
Part characterized by determining whether the transmitted order guaranteed write request is the last, using a counter that counts the number of the order guaranteed write request and the barrier-based write request input to the scheduling queue or output from the scheduling queue. An order guarantee-based I/O scheduling method.
상기 순서 보장 쓰기 요청은
상기 순서 없는 쓰기 요청에 순서보장에 대응되는 플래그를 설정한 요청이고,
상기 배리어 기반 쓰기 요청은
상기 순서 보장 쓰기 요청에 배리어에 대응되는 플래그를 설정한 요청인 것을 특징으로 하는 부분 순서 보장 기반 입출력 스케줄링 방법.The method of claim 1,
The above order guarantee write request is
A request in which a flag corresponding to order guarantee is set in the unordered write request,
The barrier-based write request is
A partial order guarantee-based input/output scheduling method, characterized in that the request for setting a flag corresponding to a barrier in the order guarantee write request.
입출력 순서 보장의 단위인 에포크(epoch)의 구성을 완료하는 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받는 입력부;
상기 스케줄링 큐에서 상기 입력받은 배리어 기반 쓰기 요청을 순서 보장 쓰기 요청으로 변경하는 갱신부;
상기 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청을 디스패치 큐에게 전송하되, 마지막으로 전송되는 순서 보장 쓰기 요청을 상기 배리어 기반 쓰기 요청으로 변경하여 전송하는 전송부; 및
상기 입력부가 상기 스케줄링 큐에 상기 배리어 기반 쓰기 요청을 입력받으면 상기 스케줄링 큐로 입력되는 입출력 요청을 차단하고, 상기 전송부가 상기 스케줄링 큐에 포함된 적어도 하나의 순서 보장 쓰기 요청의 전송을 완료하면 상기 입출력 요청의 차단을 해제하는 차단제어부
를 포함하고,
상기 입력부는
상기 배리어 기반 쓰기 요청을 스케줄링 큐에 입력받기 이전에,
상기 에포크를 구성하는 적어도 하나의 순서 보장 쓰기 요청 또는 순서 보장이 되지 않는 적어도 하나의 순서 없는 쓰기 요청을 상기 스케줄링 큐에 더 입력받고,
상기 전송부는
상기 스케줄링 큐에 포함된 모든 쓰기 요청을 소정의 기준에 따른 순서로 상기 디스패치 큐에게 전송하는 것을 특징으로 하는 부분 순서 보장 기반 입출력 스케줄러.In the I/O scheduler that schedules I/O requests so that I/O order is partially guaranteed,
An input unit for receiving a barrier-based write request for completing the configuration of an epoch, which is a unit of ensuring an input/output order, to a scheduling queue;
An update unit for changing the barrier-based write request received from the scheduling queue into an order guaranteed write request;
A transmission unit that transmits at least one order-guaranteed write request included in the scheduling queue to a dispatch queue, and changes the last transmitted order-guaranteed write request to the barrier-based write request; And
When the input unit receives the barrier-based write request into the scheduling queue, it blocks the input/output request input to the scheduling queue, and when the transmission unit completes the transmission of at least one order guaranteed write request included in the scheduling queue, the input/output request Blocking control unit that cancels the blocking of
Including,
The input unit
Before receiving the barrier-based write request into the scheduling queue,
At least one order-guaranteed write request constituting the epoch or at least one unordered write request for which order is not guaranteed is further input to the scheduling queue,
The transmission unit
And transmitting all write requests included in the scheduling queue to the dispatch queue in an order according to a predetermined criterion.
상기 스케줄링 큐에 입력되거나 또는 상기 스케줄링 큐로부터 출력되는 상기 순서 보장 쓰기 요청 및 상기 배리어 기반 쓰기 요청의 개수를 카운트하는 카운터
를 더 포함하고,
상기 전송부는
상기 카운터를 이용하여, 전송되는 순서 보장 쓰기 요청이 마지막인지 판단하는 것을 특징으로 하는 부분 순서 보장 기반 입출력 스케줄러.The method of claim 6,
Counter for counting the number of the order guaranteed write request and the barrier-based write request input to the scheduling queue or output from the scheduling queue
Including more,
The transmission unit
A partial order guarantee-based input/output scheduler, characterized in that it determines whether the transmitted order guarantee write request is the last using the counter.
상기 순서 보장 쓰기 요청은
상기 순서 없는 쓰기 요청에 순서보장에 대응되는 플래그를 설정한 요청이고,
상기 배리어 기반 쓰기 요청은
상기 순서 보장 쓰기 요청에 배리어에 대응되는 플래그를 설정한 요청인 것을 특징으로 하는 부분 순서 보장 기반 입출력 스케줄러.The method of claim 6,
The above order guarantee write request is
A request in which a flag corresponding to order guarantee is set in the unordered write request,
The barrier-based write request is
A partial order guarantee-based input/output scheduler, characterized in that the request for setting a flag corresponding to a barrier to the order guarantee write request.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180125445 | 2018-10-19 | ||
KR20180125445 | 2018-10-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200044645A KR20200044645A (en) | 2020-04-29 |
KR102254501B1 true KR102254501B1 (en) | 2021-05-21 |
Family
ID=70466726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190015744A KR102254501B1 (en) | 2018-10-19 | 2019-02-11 | Partially order preserving i/o scheduler and method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102254501B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024172344A1 (en) * | 2023-02-15 | 2024-08-22 | 한국과학기술원 | Method and device for updating dual-order-guaranteed mapping table |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011525010A (en) | 2008-05-30 | 2011-09-08 | ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー | File I / O scheduler |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785793B2 (en) * | 2001-09-27 | 2004-08-31 | Intel Corporation | Method and apparatus for memory access scheduling to reduce memory access latency |
US10630751B2 (en) * | 2016-12-30 | 2020-04-21 | Google Llc | Sequence dependent data message consolidation in a voice activated computer network environment |
KR101687762B1 (en) * | 2014-09-25 | 2017-01-03 | 충남대학교산학협력단 | Storage device and command scheduling method thereof |
KR102646724B1 (en) * | 2018-01-12 | 2024-03-14 | 삼성전자주식회사 | Storage device storing data in order based on barrier command |
-
2019
- 2019-02-11 KR KR1020190015744A patent/KR102254501B1/en active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011525010A (en) | 2008-05-30 | 2011-09-08 | ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー | File I / O scheduler |
Also Published As
Publication number | Publication date |
---|---|
KR20200044645A (en) | 2020-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110226157B (en) | Dynamic memory remapping for reducing line buffer conflicts | |
JP5909566B2 (en) | Computer system and control method thereof | |
US7490185B2 (en) | Data processing system, access control method, and access control device | |
JP4794194B2 (en) | Storage system and storage control method | |
US11144462B2 (en) | Wait classified cache writes in a data storage system | |
US11005970B2 (en) | Data storage system with processor scheduling using distributed peek-poller threads | |
US20100023532A1 (en) | Remote file system, terminal device, and server device | |
JP2010015610A (en) | Information processing apparatus, control method thereof, and program | |
US7971004B2 (en) | System and article of manufacture for dumping data in processing systems to a shared storage | |
US7451285B2 (en) | Computer systems, management computers and storage system management method | |
US6330625B1 (en) | System for initiating multiple read operation requests to multiple copies of a data item and identifying a first one of the requests as having the fastest response time | |
CN106844417B (en) | Hot migration method and device based on file directory | |
KR102254501B1 (en) | Partially order preserving i/o scheduler and method thereof | |
JP2006059260A (en) | Information processing system, management computer and remote copying method | |
KR102262209B1 (en) | Method and apparatus for sending barrier command using dummy io request | |
US10169157B2 (en) | Efficient state tracking for clusters | |
US7409486B2 (en) | Storage system, and storage control method | |
EP3293625B1 (en) | Method and device for accessing file, and storage system | |
CN109634532B (en) | Method for sharing access storage medium by multiple VxWorks hosts | |
US20120311236A1 (en) | Memory system, data control method, and data controller | |
US8117419B2 (en) | Storage apparatus and method for eliminating redundant data storage using storage apparatus | |
KR102132387B1 (en) | Method and apparatus for logging based on barrier | |
KR20200044646A (en) | Method and apparatus for dual mode journaling | |
US9619286B1 (en) | Using request service time as fairness heuristic in locking techniques | |
JP2012022645A (en) | Data storage system and asynchronous replication method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |