KR101915944B1 - 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치 - Google Patents
클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치 Download PDFInfo
- Publication number
- KR101915944B1 KR101915944B1 KR1020170057337A KR20170057337A KR101915944B1 KR 101915944 B1 KR101915944 B1 KR 101915944B1 KR 1020170057337 A KR1020170057337 A KR 1020170057337A KR 20170057337 A KR20170057337 A KR 20170057337A KR 101915944 B1 KR101915944 B1 KR 101915944B1
- Authority
- KR
- South Korea
- Prior art keywords
- input
- output
- output request
- request
- processing
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
포그라운드 태스크의 입출력 처리량 및 응답 속도를 향상시키기 위한 입출력 처리 방법이 제공된다. 본 발명의 실시예에 따른 입출력 처리 방법은, 제1 입출력 요청 및 제2 입출력 요청을 수신하되, 상기 제1 입출력 요청은 크리티컬 입출력(critical I/O)으로 분류되고 상기 제2 입출력 요청은 논-크리티컬 입출력(non-critical I/O)으로 분류된 것인, 단계, 상기 제1 입출력 요청에 상기 제2 입출력 요청보다 더 높은 우선순위를 부여하는 단계 및 상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계를 포함하되, 상기 제1 입출력 요청의 처리 상태가 상기 제2 입출력 요청의 처리에 의해 대기 상태로 변경되는 것을 감지하는 단계, 상기 제1 입출력 요청의 처리 상태의 변경이 감지됨에 응답하여, 상기 제2 입출력 요청의 타입을 크리티컬 입출력으로 재분류하고, 상기 제2 입출력의 우선순위를 상기 제1 입출력 요청의 우선순위로 변경하는 단계 및 상기 제2 입출력 요청을 상기 변경된 제2 입출력 요청의 우선순위에 기반하여 처리하는 단계를 포함할 수 있다.
Description
본 발명은 클러스터 시스템에서의 클라이언트 요청 처리 방법과 클라이언트 요청에 따라 발행되는 입출력 처리 방법 및 장치에 관한 것이다. 보다 자세하게는, 복수의 노드로 구성된 클러스터 시스템에서 응답 시간을 향상시키기 위한 클라이언트 요청 처리 방법과 클라이언트 요청을 처리하는 포그라운드 태스크의 입출력 처리량 및 응답 시간을 향상시키기 위한 입출력 처리 방법 및 장치에 관한 것이다.
DBMS(database management system)와 같은 데이터 집약적인 애플리케이션(data-intensive applications)은 사용자의 데이터를 안전하게 저장하고 효율적으로 제공하는 역할을 한다. 이러한 역할을 효과적으로 수행하기 위해서 데이터 집약적인 애플리케이션은 도 1에 도시된 바와 같이 사용자의 요청을 처리하는 포그라운드 태스크(foreground task, 1)와 백그라운드에서 체크포인트(checkpoint), 데이터 조각 모음 등의 작업을 수행하는 백그라운드 태스크(background task, 2)를 병렬적으로 수행한다. 그러나, 상기 백그라운드 태스크는 클라이언트 요청을 처리하는 과정에서 발생하는 포그라운드 태스크의 입출력 처리를 지연시켜 사용자의 체감 성능을 심각하게 저하시키는 문제를 발생시키는 것으로 알려져 있다.
예를 들어, 도 2에 도시된 바와 같이 CFQ(completely fair queuing) 기반의 입출력 스케줄러를 이용하여 포그라운드 태스크와 체크포인트 태스크를 병렬적으로 처리하는 경우, 체크포인트 태스크가 주기적으로 수행되는 시점마다 포그라운드 태스크의 처리량이 크게 감소하는 것을 볼 수 있다. 이와 같은 현상은, CFQ뿐만 아니라, Split-AFQ, Split-Deadline 등의 최신 입출력 스케줄러에서도 동일하게 나타난다.
상술한 포그라운드 태스크의 성능 저하 현상은 크게 두 가지 문제점으로 인해 발생한다.
첫 번째 문제점은, 입출력 경로 상에 존재하는 모든 레이어에서 포그라운 태스크가 요청한 입출력의 우선순위가 반영되지 않는 문제이다. 이해의 편의를 제공하기 위해 본 문제점에 대하여 도 3a 및 도 3b를 참조하여 설명한다.
도 3a 및 도 3b를 참조하면, 입출력 요청이 처리되는 입출력 경로 상에 존재하는 레이어는 크게 캐싱 레이어(caching layer, 10), 파일 시스템 레이어(file system layer, 20), 블록 레이어(block layer, 30)로 추상화될 수 있다. 이중에서, 캐싱 레이어(10)에서는 백그라운드 태스크의 입출력 요청으로 인해 버퍼 캐시(11)가 임계 비율 이상의 더티 페이지(dirty page)를 포함하게 되는 경우, 포그라운드 태스크의 입출력 요청은 우선순위에 관계 없이 버퍼 페이지의 할당이 지연될 수 있다. 또한, 블록 레이어(30)에서도 백그라운드 태스크의 입출력 요청이 입출력 대기 큐(31)를 가득 채우고 있는 경우, 우선순위에 관계 없이 포그라운드 태스크의 입출력 요청의 처리가 지연될 수 있다. 한편, 저장 장치의 내부 큐(41)에서도 입출력 성능 향상을 위해 우선순위에 관계 없이 입출력 순서가 재배열(reordering)될 수 있기 때문에, 포그라운드 태스크의 입출력 처리가 백그라운드 태스크의 입출력으로 인해 지연될 수 있다. 이와 같이, 전체 입출력 경로 상에서, 포그라운드 태스크의 입출력 요청은 더 높은 우선순위에도 불구하고 백그라운드 태스크의 입출력 요청에 의해 지연될 수 있다.
두 번째 문제점은, 포그라운드 태스크와 백그라운드 태스크 간에 동기화 처리 등으로 인해 발생될 수 있는 입출력 우선순위 역전 현상에 관한 문제이다. 예를 들어, 도 4에 도시된 바와 같이, 뮤텍스(mutex), 조건 변수(condition variable), 세마포어(semaphore) 등의 유저 레벨 또는 커널 레벨의 동기화 프리미티브(synchronization primitive, 51 내지 53)를 이용하여 동기화 처리가 수행되는 경우, 임계 구역(critical section)에 먼저 진입한 백그라운드 태스크로 인해 포그라운드 태스크의 입출력 처리가 지연되는 문제가 발생한다.
따라서, 포그라운드 태스크에 높은 우선순위를 부여하더라도 백그라운드 태스크로 인해 성능 문제가 발생하며, 상술한 문제점들을 해결하기 위한 입출력 처리 방법이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는, 클라이언트의 요청을 처리하는 포그라운드 태스크의 입출력 처리량 및 응답 시간을 향상시킬 수 있는 입출력 처리 방법 및 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는, 입출력 경로 상의 모든 레이어에서 포그라운드 태스크의 입출력 우선순위를 보장하는 입출력 처리 방법 및 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 입출력 우선순위 역전 현상에 따라 포그라운드 태스크의 입출력 요청의 처리가 지연되는 시간을 최소화할 수 있는 입출력 처리 방법 및 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 복수의 노드를 포함하는 클러스터 시스템에서 다수의 클라이언트 요청에 대한 평균 응답 시간을 향상시킬 수 있는 클라이언트 요청 처리 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 일 실시예에 따른 입출력 처리 방법은, 제1 입출력 요청 및 제2 입출력 요청을 수신하되, 상기 제1 입출력 요청은 크리티컬 입출력(critical I/O)으로 분류되고 상기 제2 입출력 요청은 논-크리티컬 입출력(non-critical I/O)으로 분류된 것인, 단계, 상기 제1 입출력 요청에 상기 제2 입출력 요청보다 더 높은 우선순위를 부여하는 단계 및 상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계를 포함하되, 상기 제1 입출력 요청의 처리 상태가 상기 제2 입출력 요청의 처리에 의해 대기 상태로 변경되는 것을 감지하는 단계, 상기 제1 입출력 요청의 처리 상태의 변경이 감지됨에 응답하여, 상기 제2 입출력 요청의 타입을 크리티컬 입출력으로 재분류하고, 상기 제2 입출력의 우선순위를 상기 제1 입출력 요청의 우선순위로 변경하는 단계 및 상기 제2 입출력 요청을 상기 변경된 제2 입출력 요청의 우선순위에 기반하여 처리하는 단계를 포함할 수 있다.
일 실시예에서, 상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계는, 버퍼 캐시 기반의 캐싱을 수행하는 캐싱 레이어에서, 상기 버퍼 캐시의 더티 페이지 비율과 제1 임계 값을 비교하여 상기 제1 입출력 요청에 대한 버퍼 페이지의 할당 여부를 결정하는 단계 및 상기 버퍼 캐시의 더티 페이지 비율과 상기 제1 임계 값보다 작은 제2 임계 값을 비교하여 상기 제2 입출력 요청에 대한 버퍼 페이지의 할당 여부를 결정하는 단계를 포함할 수 있다.
일 실시예에서, 상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계는, 블록 레이어의 제1 입출력 대기 큐에 상기 제1 입출력 요청을 적재하는 단계 및 상기 블록 레이어의 제1 입출력 대기 큐와 다른 제2 입출력 대기 큐에 상기 제2 입출력 요청을 적재하는 단계를 포함하되, 상기 제1 입출력 대기 큐에 적재된 입출력 요청은 상기 제2 입출력 대기 큐에 적재된 입출력 요청보다 우선하여 처리될 수 있다.
일 실시예에서, 상기 제1 입출력 요청을 송신한 태스크는 포그라운드 태스크(foreground task)이고, 상기 제2 입출력 요청을 송신한 태스크는 백그라운드 태스크(background task)이되, 상기 포그라운드 태스크는 클라이언트의 요청에 따라 실행되는 태스크이고, 상기 백그라운드 태스크는 상기 포그라운드 태스크 이외의 태스크일 수 있다.
상술한 기술적 과제를 해결하기 위한 본 발명의 다른 실시예에 따른 입출력 처리 장치는, 하나 이상의 프로세서, 네트워크 인터페이스, 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(Load)하는 메모리 및 상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되, 상기 컴퓨터 프로그램은, 제1 입출력 요청 및 제2 입출력 요청을 수신하되, 상기 제1 입출력 요청은 크리티컬 입출력(critical I/O)으로 분류되고 상기 제2 입출력 요청은 논-크리티컬 입출력(non-critical I/O)으로 분류된 것인, 오퍼레이션, 상기 제1 입출력 요청에 상기 제2 입출력 요청보다 더 높은 우선순위를 부여하는 오퍼레이션 및 상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 오퍼레이션을 포함하되, 상기 제1 입출력 요청의 처리 상태가 상기 제2 입출력 요청의 처리에 의해 대기 상태로 변경되는 것을 감지하는 오퍼레이션, 상기 제1 입출력 요청의 처리 상태의 변경이 감지됨에 응답하여, 상기 제2 입출력 요청의 타입을 크리티컬 입출력으로 재분류하고, 상기 제2 입출력의 우선순위를 상기 제1 입출력 요청의 우선순위로 변경하는 오퍼레이션 및 상기 제2 입출력 요청을 상기 변경된 제2 입출력 요청의 우선순위에 기반하여 처리하는 오퍼레이션을 포함할 수 있다.
상술한 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 입출력 처리 컴퓨터 프로그램은, 컴퓨팅 장치와 결합되어, 제1 입출력 요청 및 제2 입출력 요청을 수신하되, 상기 제1 입출력 요청은 크리티컬 입출력(critical I/O)으로 분류되고 상기 제2 입출력 요청은 논-크리티컬 입출력(non-critical I/O)으로 분류된 것인, 단계, 상기 제1 입출력 요청에 상기 제2 입출력 요청보다 더 높은 우선순위를 부여하는 단계 및 상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계를 포함하되, 상기 제1 입출력 요청의 처리 상태가 상기 제2 입출력 요청의 처리에 의해 대기 상태로 변경되는 것을 감지하는 단계, 상기 제1 입출력 요청의 처리 상태의 변경이 감지됨에 응답하여, 상기 제2 입출력 요청의 타입을 크리티컬 입출력으로 재분류하고, 상기 제2 입출력의 우선순위를 상기 제1 입출력 요청의 우선순위로 변경하는 단계 및 상기 제2 입출력 요청을 상기 변경된 제2 입출력 요청의 우선순위에 기반하여 처리하는 단계를 실행시키기 위하여 기록 매체에 저장될 수 있다.
상술한 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 클라이언트 요청 처리 방법은, 복수의 노드를 포함하는 클러스터 시스템에서 수행되는 클라이언트 요청 처리 방법에 있어서, 클라이언트 요청이 수신됨에 응답하여, 상기 클라이언트 요청의 처리 순서에 따라 상기 클라이언트 요청에 요청 식별자를 태깅(tagging)하는 단계, 상기 클라이언트 요청으로부터 파생된 제1 하위 요청(sub-request)을 상기 복수의 노드 중 제1 노드로 포워딩하고, 상기 클라이언트 요청으로부터 파생된 제2 하위 요청을 상기 복수의 노드 중 제2 노드로 포워딩하되, 및 제2 하위 요청을 상기 복수의 노드에 포함된 제1 노드 및 제2 노드로 각각 포워딩하되, 상기 제1 하위 요청 및 상기 제2 하위 요청 각각에는 상기 요청 식별자가 태깅되는 것인, 단계, 상기 제1 노드에서, 상기 제1 하위 요청에 따라 생성된 입출력 요청을 상기 제1 하위 요청에 태깅된 요청 식별자의 처리 순서에 따라 처리하는 단계 및 상기 제2 노드에서, 상기 제2 하위 요청에 따라 생성된 입출력 요청을 상기 제2 하위 요청에 태깅된 요청 식별자의 처리 순서에 따라 처리하는 단계를 포함할 수 있다.
상술한 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 컴퓨터 프로그램은, 클라이언트 요청이 수신됨에 응답하여, 상기 클라이언트 요청의 처리 순서에 따라 상기 클라이언트 요청에 요청 식별자를 태깅(tagging)하는 단계, 상기 클라이언트 요청으로부터 파생된 제1 하위 요청(sub-request)을 상기 복수의 노드 중 제1 노드로 포워딩하고, 상기 클라이언트 요청으로부터 파생된 제2 하위 요청을 상기 복수의 노드 중 제2 노드로 포워딩하되, 및 제2 하위 요청을 상기 복수의 노드에 포함된 제1 노드 및 제2 노드로 각각 포워딩하되, 상기 제1 하위 요청 및 상기 제2 하위 요청 각각에는 상기 요청 식별자가 태깅되는 것인, 단계, 상기 제1 노드에서, 상기 제1 하위 요청에 따라 생성된 입출력 요청을 상기 제1 하위 요청에 태깅된 요청 식별자의 처리 순서에 따라 처리하는 단계 및 상기 제2 노드에서, 상기 제2 하위 요청에 따라 생성된 입출력 요청을 상기 제2 하위 요청에 태깅된 요청 식별자의 처리 순서에 따라 처리하는 단계를 실행시기기 위하여 기록매체에 저장될 수 있다.
상술한 본 발명에 따르면, 포그라운드 태스크의 입출력 처리량이 크게 향상되고, 백그라운드 태스크로 인한 응답 지연이 개선되는 효과가 있다.
구체적으로, 캐싱 레이어에서 크리티컬 입출력과 논-크리티컬 입출력 타입의 입출력 요청에 대하여 별도의 임계 값을 이용하여 버퍼 캐시가 할당된다. 이에 따라, 캐싱 레이이에서 백그라운드 태스크로 인해 포그라운드 태스크의 입출력 처리가 지연되는 것이 방지되는 효과가 있다.
또한, 블록 레이어에서 크리티컬 입출력과 논-크리티컬 입출력 타입의 입출력 요청에 대하여 별도의 입출력 대기 큐가 할당되며, 크리티컬 입출력 타입의 입출력 요청이 큐잉되는 입출력 대기 큐가 우선적으로 처리된다. 이에 따라, 블록 레이어에서 백그라운드 태스크로 인해 포그라운드 태스크의 입출력 처리가 지연되는 것이 방지되는 효과가 있다.
또한, 태스크 종속성에 의한 우선순위 역전 현상이 발생하는 경우, 우선순위 상속(priority inheritance)을 통해 백그라운드 태스크가 신속하게 임계 구역을 빠져나가도록 함으로써, 포그라운드 태스크의 대기 시간이 최소화될 수 있다. 이에 따라, 백그라운드 태스크와의 동기화 처리로 인해 포그라운드 태스크의 입출력 처리가 지연되는 것이 방지되는 효과가 있다.
또한, 입출력 종속성에 의한 우선순위 역전 현상이 발생하는 경우, 우선순위 상속(priority inheritance)을 통해 논-크리티컬 입출력 타입의 입출력이 신속하게 처리되도록 함으로써, 크리티컬 입출력 타입의 입출력의 대기 시간이 최소화되는 효과가 있다.
상술한 본 발명에 따르면, 복수의 노드를 포함하는 클러스터 시스템에서, 클라이언트 요청 순서대로 글로벌 요청 식별자를 부여함으로써, 모든 해당 노드에서 클라이언트 요청의 처리 순서에 기초하여 입출력 스케줄링이 수행된다. 이에 따라, 복수의 클라이언트 요청에 대한 평균 응답 시간이 개선되는 효과를 기대할 수 있다.
또한, 본 발명이 응답 지연에 민감한 게임 서비스 등에 적용되는 경우 평균 응답 시간의 개선에 따라 최종 사용자에게 향상된 사용 경험을 제공할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1 및 도 2는 백그라운드 태스크로 인해 포그라운드 태스크의 입출력 처리 성능이 저하되는 문제점을 설명하기 위한 도면이다.
도 3a 및 도 3b는 입출력 경로 상에서 포그라운드 태스크의 입출력 우선순위가 반영되지 않는 문제점을 설명하기 위한 도면이다.
도 4는 우선순위 역전 현상에 따라 포그라운드 태스크의 입출력 처리가 지연되는 문제점을 설명하기 위한 도면이다.
도 5a 및 도 5b는 본 발명이 적용될 수 있는 예시적인 시스템을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 입출력 처리 장치의 하드웨어 구성도이다.
도 7 내지 도 8b는 본 발명의 몇몇 실시예에서 참조될 수 있는 입출력 요청의 타입 분류 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 몇몇 실시예에서 참조될 수 있는 캐싱 레이어에서의 입출력 처리 방법을 설명하기 위한 도면이다.
도 10은 본 발명의 몇몇 실시예에서 참조될 수 있는 블록 레이어에서의 입출력 처리 방법을 설명하기 위한 도면이다.
도 11 및 도 12는 본 발명의 몇몇 실시예에서 참조될 수 있는 입출력 종속성에 따른 처리 방법을 설명하기 위한 도면이다.
도 13a 및 도 13b는 본 발명의 몇몇 실시예에서 참조될 수 있는 태스크 종속성에 따른 처리 방법을 설명하기 위한 도면이다.
도 14a 및 도 14b는 본 발명의 몇몇 실시예에서 참조될 수 있는 이행적 종속성에 따른 처리 방법을 설명하기 위한 도면이다.
도 15a 및 도 15b는 본 발명의 다른 실시예에 따른 입출력 처리 방법에 대한 성능 실험 결과를 설명하기 위한 도면이다.
도 16은 본 발명이 적용될 수 있는 예시적인 클러스터 시스템을 설명하기 위한 도면이다
도 17a 및 도 17b는 클러스터 시스템에서 클라이언트 요청의 평균 응답 시간 지연되는 문제점을 설명하기 위한 도면이다.
도 18은 본 발명의 또 다른 실시예에 따른 클러스터 시스템에서의 클라이언트 요청 처리 방법을 설명하기 위한 도면이다.
도 19는 본 발명의 본 발명의 또 다른 실시예에 따른 클러스터 시스템에서의 클라이언트 요청 처리 방법에 대한 성능 실험 결과를 설명하기 위한 도면이다.
도 3a 및 도 3b는 입출력 경로 상에서 포그라운드 태스크의 입출력 우선순위가 반영되지 않는 문제점을 설명하기 위한 도면이다.
도 4는 우선순위 역전 현상에 따라 포그라운드 태스크의 입출력 처리가 지연되는 문제점을 설명하기 위한 도면이다.
도 5a 및 도 5b는 본 발명이 적용될 수 있는 예시적인 시스템을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 입출력 처리 장치의 하드웨어 구성도이다.
도 7 내지 도 8b는 본 발명의 몇몇 실시예에서 참조될 수 있는 입출력 요청의 타입 분류 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 몇몇 실시예에서 참조될 수 있는 캐싱 레이어에서의 입출력 처리 방법을 설명하기 위한 도면이다.
도 10은 본 발명의 몇몇 실시예에서 참조될 수 있는 블록 레이어에서의 입출력 처리 방법을 설명하기 위한 도면이다.
도 11 및 도 12는 본 발명의 몇몇 실시예에서 참조될 수 있는 입출력 종속성에 따른 처리 방법을 설명하기 위한 도면이다.
도 13a 및 도 13b는 본 발명의 몇몇 실시예에서 참조될 수 있는 태스크 종속성에 따른 처리 방법을 설명하기 위한 도면이다.
도 14a 및 도 14b는 본 발명의 몇몇 실시예에서 참조될 수 있는 이행적 종속성에 따른 처리 방법을 설명하기 위한 도면이다.
도 15a 및 도 15b는 본 발명의 다른 실시예에 따른 입출력 처리 방법에 대한 성능 실험 결과를 설명하기 위한 도면이다.
도 16은 본 발명이 적용될 수 있는 예시적인 클러스터 시스템을 설명하기 위한 도면이다
도 17a 및 도 17b는 클러스터 시스템에서 클라이언트 요청의 평균 응답 시간 지연되는 문제점을 설명하기 위한 도면이다.
도 18은 본 발명의 또 다른 실시예에 따른 클러스터 시스템에서의 클라이언트 요청 처리 방법을 설명하기 위한 도면이다.
도 19는 본 발명의 본 발명의 또 다른 실시예에 따른 클러스터 시스템에서의 클라이언트 요청 처리 방법에 대한 성능 실험 결과를 설명하기 위한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 도면들을 참조하여 본 발명의 몇몇 실시예들을 설명한다.
도 5a 및 도 5b는 본 발명이 적용될 수 있는 예시적인 시스템을 설명하기 위한 도면이다.
도 5a를 참조하면, 상기 예시적인 시스템은 입출력 처리 장치(100) 및 복수의 클라이언트 단말(200)을 포함할 수 있다. 단, 이는 본 발명의 목적을 달성하기 위한 바람직한 실시예일뿐이며, 필요에 따라 일부 구성 요소가 추가되거나 삭제될 수 있음은 물론이다.
상기 예시적인 시스템에서, 복수의 클라이언트 단말(200)은 저장 장치(storage device)에 보관되어 있는 각종 데이터를 제공받기 위해 입출력 처리 장치(100)로 특정 데이터에 대한 질의가 포함된 클라이언트 요청을 송신하는 컴퓨팅 장치이다.
상기 예시적인 시스템에서, 입출력 처리 장치(100)는 복수의 클라이언트 단말(200)로부터 수신된 클라이언트 요청에 따라 발생되는 복수의 입출력을 처리하는 컴퓨팅 장치이다. 예를 들어, 입출력 처리 장치(100)는 DBMS와 같은 데이터 집약적인 어플리케이션을 운영하는 컴퓨팅 장치일 수 있다. 여기서, 상기 컴퓨팅 장치는, 노트북, 데스크톱(desktop), 랩탑(laptop) 등이 될 수 있으나, 바람직하게는 고성능의 서버 장치로 구현되는 것이 바람직할 수 있다. 단, 상기 컴퓨팅 장치는 장치의 형태에 국한되지 않으며, 연산 수단 및 통신 수단이 구비된 모든 종류의 장치를 포함할 수 있다.
도 5b에 도시된 바와 같이, 입출력 처리 장치(100)는 클라이언트 요청을 처리하기 위해 복수의 포그라운드 태스크(foreground task, 121 내지 123)를 수행할 수 있다. 포그라운드 태스크(121 내지 123)는 클라이언트 요청을 처리하기 위해 적어도 하나의 입출력 요청을 생성하고, 이는 입출력 처리 모듈(111)에서 처리된다. 참고로, 본 명세서에서 상기 포그라운드 태스크는 클라이언트 요청과 관련된 작업을 처리하는 태스크를 의미하고, 상기 태스크는 하나의 작업 단위를 말하는 것으로 예를 들어 적어도 하나의 스레드(thread) 또는 프로세스(process)로 구현될 수 있으며, 하나의 애플리케이션(application)은 적어도 하나의 태스크를 포함할 수 있다.
상기 예시적인 시스템에서, 입출력 처리 장치(100)는 포그라운드 태스크 외에도 체크포인트, 데이터 조각 모음과 같이 클라이언트 단말의 요청과 관계 없는 작업을 수행하는 백그라운드 태스크(background task)를 병렬적으로 수행할 수 있다. 따라서, 전술한 바와 같이 백그라운드 태스크의 수행에 따라 포그라운드 태스크의 처리가 지연되는 문제가 발생할 수 있다.
본 발명의 실시예에 따르면, 입출력 처리 장치(100) 내부의 입출력 처리 모듈(111)은 백그라운드 태스크의 처리로 인해 포그라운드 태스크의 처리가 지연되는 것을 방지하기 위해 입출력 경로 상에 존재하는 캐싱 레이어, 블록 레이어 등에서 포그라운드 태스크의 입출력 우선 순위가 백그라운드 태스크의 입출력의 우선순위보다 높게 유지되도록 처리한다. 또한, 입출력 처리 모듈(111)은 포그라운드 태스크와 백그라운드 태스크 사이 또는 포그라운드 태스크의 입출력 요청과 백그라운드 태스크의 입출력 요청 사이에 입출력 우선순위 역전 현상이 감지되는 경우, 우선 순위 상속을 통해 백그라운드 태스크 및 백그라운드 태스크의 입출력 요청을 신속하게 처리한다. 이에 따라, 백그라운드 태스크의 입출력 부하가 증가되더라도, 포그라운드 태스크의 입출력 처리량 및 응답 속도가 저하되지 않도록 보장할 수 있다. 입출력 처리 장치(100) 또는 입출력 처리 모듈(111)이 수행하는 입출력 처리 방법에 대한 구체적인 내용은 도 7 내지 도 14b를 참조하여 상세하게 설명하도록 한다.
상기 예시적인 시스템에서, 복수의 클라이언트 단말(200)과 입출력 처리 장치(100)는 네트워크를 통해 통신할 수 있다. 여기서, 상기 네트워크는 근거리 통신망(Local Area Network; LAN), 광역 통신망(Wide Area Network; WAN), 이동 통신망(mobile radio communication network), Wibro(Wireless Broadband Internet) 등과 같은 모든 종류의 유/무선 네트워크로 구현될 수 있다.
지금까지 도 5a 및 도 5b를 참조하여 본 발명이 적용될 수 있는 예시적인 시스템의 구성에 대하여 설명하였다. 다음으로, 본 발명의 일 실시예에 따른 입출력 처리 장치(100)의 구성 및 동작에 대하여 도 6을 참조하여 설명한다.
도 6은 본 발명의 일 실시예에 따른 입출력 처리 장치(100)의 하드웨어 구성도이다.
도 6을 참조하면, 입출력 처리 장치(100)는 하나 이상의 프로세서(101), 버스(105), 네트워크 인터페이스(107), 프로세서(101)에 의하여 수행되는 컴퓨터 프로그램을 로드(load)하는 메모리(103)와, 입출력 처리 소프트웨어(109a)를 저장하는 스토리지(109)를 포함할 수 있다. 다만, 도 6에는 본 발명의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 6에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(101)는 입출력 처리 장치(100)의 각 구성의 전반적인 동작을 제어한다. 프로세서(101)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다. 또한, 프로세서(101)는 본 발명의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 입출력 처리 장치(100)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(103)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(103)는 본 발명의 실시예들에 따른 입출력 처리 방법을 실행하기 위하여 스토리지(109)로부터 하나 이상의 프로그램(109a)을 로드할 수 있다. 도 7에서 메모리(103)의 예시로 RAM이 도시되었다.
버스(105)는 입출력 처리 장치(100)의 구성 요소 간 통신 기능을 제공한다. 버스(105)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
네트워크 인터페이스(107)는 입출력 처리 장치(100)의 유무선 인터넷 통신을 지원한다. 또한, 네트워크 인터페이스(107)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 네트워크 인터페이스(107)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
스토리지(109)는 상기 하나 이상의 프로그램(109a)을 비임시적으로 저장할 수 있다. 도 7에서 상기 하나 이상의 프로그램(109a)의 예시로 입출력 처리 소프트웨어(109a)가 도시되었다.
스토리지(109)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
입출력 처리 소프트웨어(109a)는 본 발명의 실시예에 따라 입출력 경로 전체에 걸쳐서 포그라운드 태스크의 입출력 요청 우선순위가 백그라운드 태스크의 입출력 요청 우선순위보다 높게 유지되도록 처리하고, 우선순위 역전 현상이 감지되는 경우 해당 백그라운드 태스크의 우선순위를 일시적으로 높게 변경되도록 처리할 수 있다.
구체적으로, 입출력 처리 소프트웨어(109a)는 메모리(103)에 로드되어, 하나 이상의 프로세서(101)에 의해, 제1 입출력 요청 및 제2 입출력 요청을 수신하되, 상기 제1 입출력 요청은 크리티컬 입출력(critical I/O)으로 분류되고 상기 제2 입출력 요청은 논-크리티컬 입출력(non-critical I/O)으로 분류된 것인, 오퍼레이션, 상기 제1 입출력 요청에 상기 제2 입출력 요청보다 더 높은 우선순위를 부여하는 오퍼레이션 및 상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 오퍼레이션을 실행하되, 상기 제1 입출력 요청의 처리 상태가 상기 제2 입출력 요청의 처리에 의해 대기 상태로 변경되는 것을 감지하는 오퍼레이션, 상기 제1 입출력 요청의 처리 상태의 변경이 감지됨에 응답하여, 상기 제2 입출력 요청의 타입을 크리티컬 입출력으로 재분류하고, 상기 제2 입출력의 우선순위를 상기 제1 입출력 요청의 우선순위로 변경하는 오퍼레이션 및 상기 제2 입출력 요청을 상기 변경된 제2 입출력 요청의 우선순위에 기반하여 처리하는 오퍼레이션을 포함할 수 있다.
지금까지, 도 6을 참조하여 본 발명의 실시예에 따른 입출력 처리 장치(100)의 구성 및 동작에 대하여 설명하였다. 다음으로, 도 7 내지 도 14b를 참조하여 본 발명의 다른 실시예에 따른 입출력 처리 방법에 대하여 상세하게 설명한다.
본 발명의 실시예에 따른 입출력 처리 방법의 각 단계는, 컴퓨팅 장치에 의해 수행될 수 있다. 예를 들어, 상기 컴퓨팅 장치는 본 발명의 일 실시예에 따른 입출력 처리 장치(100)일 수 있다. 단, 설명의 편의를 위해, 상기 입출력 처리 방법에 포함되는 각 동작의 주체는 생략될 수 있다. 한편, 입출력 처리 방법의 각 단계는 입출력 처리 소프트웨어(109a)가 프로세서(101)에 의해 실행됨으로써, 입출력 처리 장치(100)에서 수행되는 오퍼레이션일 수 있다.
본 발명의 실시예에 따른 입출력 처리 방법에서, 입출력 요청의 타입은 크리티컬 입출력(critical I/O) 및 논-크리티컬 입출력(non-critical I/O) 중 어느 하나로 분류되고, 크리티컬 입출력은 전체 입출력 경로에 걸쳐 논-크리티컬 입출력보다 높은 우선순위로 처리된다. 이하에서는, 이해의 편의를 위해 크리티컬 입출력으로 분류된 입출력 요청 또는 논-크리티컬 입출력으로 분류된 입출력 요청은 모두 동일한 우선순위를 갖는다고 가정한다. 단, 크리티컬 입출력으로 분류된 입출력 요청 또는 논-크리티컬 입출력으로 분류된 입출력 요청 별로 차등적인 우선순위가 부여될 수 있음은 물론이다.
도 7은 본 발명의 몇몇 실시예에서 참조될 수 있는 입출력 요청의 타입 분류 방법의 순서도이다. 단, 이는 본 발명의 목적을 달성하기 위한 바람직한 실시예일뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있음은 물론이다.
도 7을 참조하면, 입출력 처리 장치(100)는 어플리케이션 영역 또는 커널 영역에서 실행 중인 태스크로부터 입출력 요청을 수신한다(S100). 입출력 요청이 수신되면, 입출력 처리 장치(100)는 상기 입출력 요청을 송신한 요청 태스크가 포그라운드 태스크에 해당하는지 여부를 판정한다(S110).
일 실시예에서, 상기 요청 태스크가 포그라운드 태스크에 해당하는지를 가리키는 플래그 정보는 상기 요청 태스크에 의해 명시적으로 설정될 수 있다. 예를 들어, 상기 요청 태스크가 호출하는 API(Application Programming Interface)에 의해 상기 요청 태스크가 포그라운드 태스크임을 가리키는 플래그 정보가 설정될 수 있다. 이와 같은 경우, 입출력 처리 장치(100)는 상기 플래그 정보를 기초로 상기 판정 단계(S110)를 수행할 수 있다.
다른 실시예에서, 입출력 요청 장치(100)는 상기 요청 태스크의 실행 패턴을 분석하여, 상기 요청 태스크가 포그라운드 태스크에 해당하는지 여부를 판정할 수 있다. 예를 들어, 상기 요청 태스크가 일정한 주기로 입출력 요청을 송신하는 경우, 입출력 요청 장치(100)는 상기 요청 태스크는 백그라운드 태스크에 해당한다고 판정할 수 있다. 일반적으로, 백그라운드 태스크는 기 설정된 주기에 따라 입출력 작업을 수행하기 때문이다.
또 다른 실시예에서, 입출력 요청 장치(100)는 상기 요청 태스크의 이름을 기초로, 상기 요청 태스크가 백그라운드 태스크에 해당하는지 여부를 판정할 수 있다. 예를 들어, 입출력 요청 장치(100)는 jbd2 스레드와 같이 널리 알려진 스레드, 널리 알려진 데몬 프로세스(daemon process) 등과 상기 요청 태스크의 이름을 비교하여, 상기 요청 태스크가 백그라운드 태스크에 해당하는지 여부를 판정할 수 있다.
요청 태스크가 백그라운드 태스크로 판정된 경우, 입출력 처리 장치(100)는 수신한 입출력 요청을 논-크리티컬 입출력으로 분류한다(S130). 이와 반대로, 포그라운드 태스크로 판정된 경우, 입출력 처리 장치(100)는 수신한 입출력 요청을 크리티컬 입출력으로 분류한다(S140). 경우에 따라, 입출력 처리 장치(100)는 요청 태스크가 포그라운드 태스크이고, 수신한 입출력 요청이 동기적 입출력인 경우에 한하여, 수신된 입출력 요청의 타입을 크리티컬 입출력으로 분류할 수도 있다(S120, S140). 여기서, 상기 동기적 입출력은 "fsync()"함수와 같이 저장 장치에 해당 데이터가 기록될 때까지 요청 태스크가 대기하게 되는 함수를 말한다. 반대로, 비동기적 입출력은 저장 장치에 해당 데이터가 기록될 때까지 대기하지 않고, 버퍼 캐시 등에 해당 데이터가 기록되면 바로 입출력 함수가 종료되는 입출력(e.g. buffered I/O)을 의미한다.
본 발명의 실시예에 따른 분류 방식과 종래의 입출력 분류 방식과 비교하면, 도 8a에 도시된 바와 같이, 종래에는 입출력 분류는 입출력의 유형을 기준으로 동기적 입출력 또는 비동기적 입출력으로 분류하거나, 태스크를 기준으로 포그라운드 태스크의 입출력 또는 백그라운드 태스크의 입출력으로 분류하였고, 상기와 같은 분류에 따라 할당된 우선순위는 입출력 처리가 종료될 때까지 변동되지 않는 고정된 값이었다.
이에 반해, 도 8b에 도시된 바와 같이, 본 발명의 실시예에 따른 입출력 분류는 크리티컬 입출력과 논-크리티컬 입출력으로 분류되며, 경우에 따라 입출력의 타입 및 우선순위가 변동될 수 있다는 차이점이 있다. 예를 들어, 포그라운드 태스크의 입출력 요청이 초기에는 크리티컬 입출력으로 분류되나, 이후 우선순위 상속 등을 통해 백그라운드 태스크의 입출력 요청도 임시적으로 크리티컬 입출력으로 재분류될 수 있고, 비동기적 입출력 유형도 크리티컬 입출력으로 재분류될 수 있다. 우선순위 상속을 통해, 백그라운드 태스크의 입출력 요청 타입이 크리티컬 입출력으로 변경되는 예에 대해서는 후술하도록 한다.
정리하면, 입출력 처리 장치(100)는 포그라운드 태스크의 입출력 요청을 크리티컬 입출력으로 분류한다. 또한, 입출력 처리 장치(100)는 전체 입출력 경로에 걸쳐서 크리티컬 입출력으로 분류된 입출력 요청을 논-크리티컬 입출력으로 분류된 입출력 요청보다 높은 우선순위로 처리한다. 이렇게 함으로써, 백그라운드 태스크의 입출력 처리에 의해서 포그라운드 태스크의 입출력 처리량 및 응답 속도가 저하되는 문제가 방지될 수 있다. 이하, 설명의 편의를 위해, 별도의 언급이 없는 한 크리티컬 입출력으로 분류된 입출력 요청은 "제1 타입의 입출력 요청"으로 명명하고, 논-크리티컬 입출력으로 분류된 입출력 요청은 "제2 타입의 입출력 요청"으로 명명하도록 한다.
이하에서는, 도 9 내지 도 10을 참조하여, 전체 입출력 경로 상에서 제1 타입의 입출력 요청을 높은 우선순위로 처리하는 방법에 대하여 설명한다.
도 9는 입출력 경로 상의 캐싱 레이어(310)에서 입출력 요청이 처리되는 방법을 설명하기 위한 도면이다.
도 9를 참조하면, 캐싱 레이어에서는 버퍼 캐시 기반으로 입출력 요청과 연관된 데이터에 대한 캐싱이 수행된다. 이때, 더티 페이지의 비율(dirty ratio)이 임계 값 이상인 경우에는 버퍼 페이지의 할당이 불가하므로, 버퍼 페이지의 할당이 가능해질 때까지 입출력 요청의 처리가 지연될 수 있다. 또한, 상기 지연은 입출력 요청의 우선순위에 관계 없이 모든 타입의 입출력 요청에 적용된다. 따라서, 백그라운드 태스크로부터 수신된 다수의 입출력 요청에 의해 버퍼 캐시의 더티 페이지 비율이 임계 값을 초과하는 경우, 백그라운드 태스크에 의해 포그라운드 태스크의 입출력 요청이 지연될 수 있다.
위 문제점을 해결하기 위해서, 본 발명의 실시예에 따르면, 입출력 요청의 타입 별로 별도로 설정된 임계 값이 이용될 수 있다. 구체적으로, 제1 타입의 입출력 요청은 제1 임계 값과 버퍼 캐시(311)의 더티 페이지 비율을 비교하여 버퍼 페이지가 할당될 수 있고(S311, S313), 제2 타입의 입출력 요청은 제2 임계 값과 버퍼 캐시의 더티 페이지 비율을 비교하여 버퍼 페이지가 할당될 수 있다(S312, S313). 여기서, 상기 제2 임계 값은 상기 제1 임계 값보다 작은 값으로 설정될 수 있다. 그렇게 함으로써, 캐싱 레이어(310)에서 제2 타입의 입출력 요청에 따른 데이터가 버퍼 캐시의 대부분을 차지하는 것을 방지할 수 있기 때문이다.
단, 본 발명의 다른 실시예에 따르면, 입출력 요청의 타입 별로 별도의 버퍼 캐시가 이용될 수도 있다. 예를 들어, 제1 타입의 입출력 요청은 제1 버퍼 캐시를 통해 캐싱되고, 제2 타입의 입출력 요청은 제2 버퍼 캐시를 통해 캐싱되도록 구현될 수도 있다. 실시예에 따라, 상기 제1 버퍼 캐시 및 상기 제2 버퍼 캐시는 동일한 버퍼 캐시 내에서 논리적으로 구별되는 버퍼 페이지들을 의미할 수도 있다. 이때 전체 버퍼 페이지에서, 상기 제1 버퍼 캐시에 대한 버퍼 페이지가 차지하는 비율은 기 설정된 고정 값일 수 있고 전체 입출력 요청에서 제1 타입의 입출력 요청이 차지하는 비율에 따라 달라지는 변동 값일 수도 있다.
다음으로, 도 10을 참조하여, 입출력 경로 상의 블록 레이어(340)에서 입출력 요청이 처리되는 방법을 설명한다.
도 10을 참조하면, 블록 레이어에서, 입출력 대기 큐의 적재를 시도하는 진입 제어 단계(admission control stage)를 통해 입출력 요청은 입출력 대기 큐에 적재된다. 또한, 입출력 대기 큐에 적재된 입출력 요청은 지정된 스케줄링 정책에 따라 저장 장치로 디스패치 된다. 이때, 백그라운드 태스크의 입출력 요청이 상기 입출력 대기 큐를 가득 채운 경우, 진입 제어 단계에서 포그라운드 태스크의 입출력 요청이 대기되는 문제가 발생할 수 있다.
위 문제점을 해결하기 위해서, 본 발명의 실시예에 따르면, 블록 레이어(340)에서 제1 타입의 입출력 요청과 제2 타입의 입출력 요청에 대하여 별도의 독립된 입출력 대기 큐(331, 332)가 이용될 수 있다. 구체적으로, 입출력 요청의 타입에 기초하여(S331) 제1 타입의 입출력 요청은 제1 입출력 대기 큐(331)에 적재되고, 제2 타입의 입출력 요청은 제2 입출력 대기 큐(332)에 적재될 수 있다.
또한, 본 실시예에서, 제1 입출력 대기 큐(331)와 제2 입출력 대기 큐(332)는 선입선출(first-in first-out) 방식으로 동작하고, 제1 입출력 대기 큐(331)에 적재된 입출력 요청이 더 높은 우선순위로 처리될 수 있다. 그렇게 함으로써, 블록 레이어(330)에서 제2 타입의 입출력 요청에 의해 제1 타입의 입출력 요청의 스케줄링이 지연되는 것이 방지될 수 있기 때문이다.
한편, 위 실시예에 따르면, 제2 입출력 대기 큐(332)에 적재된 입출력 요청이 계속해서 처리되지 않는 기아 현상(starvation)이 발생할 수 있다. 이를 해결하기 위해, 입출력 처리 장치(100)는 우선순위에 관계 없이 일정 주기 또는 기 설정된 시점마다 제2 입출력 대기 큐(332)에 적재된 제2 타입의 입출력 요청을 처리할 수 있다. 즉, 제1 입출력 대기 큐(331)에 제1 타입의 입출력 요청이 존재하는 경우에도, 기 설정된 시점 또는 주기가 도래하면, 제2 입출력 대기 큐(332)에 적재된 입출력 요청이 저장 장치(340)로 디스패치될 수 있다.
본 발명의 몇몇 실시예에서, 제2 입출력 대기 큐(332)에서 저장 장치(340)로 디스패치되는 제2 타입의 입출력 요청의 개수는 기 설정된 개수 이하로 제한될 수 있다. 이는, 저장 장치(340)의 내부에 존재하는 큐의 스케줄링 정책에 따라 제1 타입의 입출력 요청과 제2 타입의 입출력 요청 간에 경쟁(contention)이 발생할 수 있고, 이에 따라 제1 타입의 입출력 요청의 처리가 지연될 수 있기 때문이다. 즉, 본 실시예에서, 디스패치되는 상기 제2 타입의 입출력 요청의 개수를 제한하는 것은 저장 장치(340)의 내부 큐에서 제2 타입의 입출력 요청에 의해 제1 타입의 입출력 요청이 지연될 확률을 감소시키기 위한 것으로 이해될 수 있다.
지금까지, 도 9 내지 도 10을 참조하여, 전체 입출력 경로 상에서 제1 타입의 입출력 요청을 높은 우선 순위로 처리하는 방법에 대하여 설명하였다. 다음으로, 도 11 내지 도 14b를 참조하여, 우선순위 역전 현상을 고려한 입출력 처리 방법에 대하여 설명하도록 한다.
입출력 우선순위 역전 현상은 입출력 종속성 또는 태스크 종속성에 의해 발생될 수 있다. 상기 입출력 종속성은 제1 타입의 입출력 요청과 제2 타입의 입출력 요청 사이에 발생하는 종속성을 의미한다. 예를 들어, 파일에 대한 제2 타입의 쓰기 입출력이 처리되는 동안 동일한 파일에 대한 쓰기 요청이 수신되는 경우, 상기 쓰기 요청이 우선순위가 높은 제1 타입의 입출력이라고 하더라도 대기될 수 밖에 없다. 따라서, 제1 타입의 입출력 요청이 제2 타입의 입출력 요청에 종속되는 우선순위 역전 현상이 빈번하게 발생할 수 있다.
상기 태스크 종속성은 뮤텍스(mutex), 조건 변수(condition variable), 세마포어(semaphore) 등의 동기화 프리미티브(synchronization primitive)를 이용하여 임계 구역(critical section)에 동시에 접근하는 태스크들 사이에 발생하는 종속성을 의미한다. 예를 들어, 백그라운드 태스크가 동기화 프리미티브를 획득하여 임계 구역에 진입한 경우, 포그라운드 태스크는 상기 백그라운드 태스크가 상기 동기화 프리미티브를 해제할 때까지 대기하여야 한다. 따라서, 포그라운드 태스크가 백그라운드 태스크에 종속되는 우선순위 역전 현상이 빈번하게 발생할 수 있다.
위와 같은 문제를 해결하기 위하여, 본 발명의 몇몇 실시예들에서 우선순위 상속을 통해, 상기 우선순위 역전 현상이 지속되는 시간을 최소화한다. 이하, 도 11 및 도 12를 참조하여, 입출력 종속성에 따른 우선순위 역전 현상을 처리하는 방법에 대하여 설명하도록 한다.
도 11은 본 발명의 몇몇 실시예에서 참조될 수 있는 입출력 종속성에 따른 우선순위 역전 현상 처리 방법의 순서도이다.
도 11을 참조하면, 입출력 처리 장치(100)는 태스크들로부터 수신된 입출력 요청의 타입을 크리티컬 입출력 또는 논-크리티컬 입출력으로 분류한다(S200, S210). 단계(S200, S210)에 대한 설명은 도 7을 참조하여 설명한 부분과 중복되므로 생략한다.
다음으로, 입출력 처리 장치(100)는 입출력 종속성으로 인해 크리티컬 입출력으로 분류된 제1 입출력 요청의 처리 상태가 대기 상태로 변경되는지, 즉 입출력 우선순위 역전 현상이 발생되는지를 감지한다(S220). 입출력 우선순위 역전 현상이 감지된 경우(S230), 입출력 처리 장치(100)는 상기 제1 입출력 요청과 입출력 종속 관계에 있는 논-크리티컬 입출력 타입의 제2 입출력 요청의 우선순위를 변경한다(S240). 자세하게는, 입출력 처리 장치(100)는 상기 제2 입출력 요청의 우선순위를 상기 제1 입출력 요청의 우선순위로 변경한다. 상기 우선순위의 변경에 따라, 상기 제2 입출력 요청의 타입 또한 상기 제1 입출력 요청의 타입인 크리티컬 입출력으로 변경된다.
다음으로, 입출력 처리 장치(100)는 변경된 우선순위로 빠르게 상기 제2 입출력 요청을 처리한다(S250). 본 단계(S250)에서 상기 제2 입출력 요청은 상속 받은 우선순위에 따라 빠른 처리가 수행되기 때문에, 우선순위 역전 현상에 의해 크리티컬 입출력인 제1 입출력 요청의 처리가 지연되는 것이 방지될 수 있다.
제2 입출력 요청의 처리 단계(S250)에 대하여 구체적으로 설명하면, 단계(S250)에서 상기 제2 입출력 요청의 처리 방법은 상기 제2 입출력 요청의 현재 처리 위치에 따라 달라질 수 있다.
예를 들어, 상기 제2 입출력 요청의 현재 처리 위치가 제2 입출력 대기 큐(332)에 대한 적재 가능 여부를 판단하는 진입 제어 단계(admission control stage)인 경우, 상기 제2 입출력 요청의 처리는 제1 입출력 대기 큐(331)에 적재를 다시 시도하는 방식으로 수행될 수 있다. 제1 입출력 대기 큐(331)는 제2 입출력 대기 큐(332)보다 우선적으로 처리되므로, 제1 입출력 대기 큐(331)는 적재 공간이 존재할 가능성이 높다. 따라서, 제1 입출력 대기 큐(331)로 적재를 재시도 하는 경우, 대기 없이 빠르게 제2 입출력 요청이 처리될 수 있다.
또 다른 예를 들어, 상기 제2 입출력 요청의 현재 처리 위치가 제2 입출력 대기 큐(332)에 적재되어 저장 장치로의 디스패치를 대기하는 입출력 스케줄링 단계(I/O scheduling stage)인 경우, 상기 제2 입출력 요청의 처리는 제2 입출력 대기 큐(332)에서 상기 제2 입출력 요청을 삭제하고, 제1 입출력 대기 큐(331)에 상기 제2 입출력 요청을 적재하는 방식으로 수행될 수 있다. 제1 입출력 대기 큐(331)에 적재되는 경우 제2 입출력 대기 큐(332)보다 우선적으로 처리되므로, 상기 제2 입출력 요청이 빠르게 처리될 수 있다.
상술한 예시들에 따르면, 상기 제2 입출력 요청의 현재 처리 위치에 따라, 처리 방법이 달라지므로 상기 제2 입출력 요청의 현재 위치 정보가 관리될 필요가 있다. 또한, 우선순위 역전 현상에 따라, 제2 입출력 요청의 우선순위가 변경되므로, 우선순위에 관한 정보 또한 관리될 필요가 있다.
따라서, 본 발명의 실시예에 따르면, 입출력 처리 장치(100)는 제2 타입의 입출력 요청에 대한 제반 정보가 포함된 메타데이터가 다양한 자료 구조의 형태로 관리될 수 있다. 이에 대하여 도 12를 참조하여 설명한다.
도 12를 참조하면, 입출력 처리 장치(100)는 처리 대상 입출력 요청(333)이 제2 타입의 입출력 요청인 경우, 처리 대상 입출력 요청(333)에 대한 메타 데이터(334)를 생성하여 관리할 수 있다. 도 12에서, 제2 타입의 입출력 요청에 대한 메타 데이터는 NCIO(Non-Critical I/O) 객체로 도시되었고, 빠른 검색을 위해 트리 형태의 자료 구조(e.g. 레드블랙 트리, B 트리, B+ 트리 등)로 관리되는 것이 도시되었다. 단, 상기 메타 데이터를 관리하는 자료 구조는 트리 구조 외에도 해시 테이블 등의 다양한 자료 구조로 관리될 수 있을 것이며, 이는 실시예에 따라 달라질 수 있다.
구체적으로, 블록 레이어(330)로 진입한 처리 대상 입출력(333)의 타입이 논-크리티컬 입출력인 경우, 입출력 처리 장치(100)는 처리 대상 입출력(333)에 대응되는 메타 데이터(334)를 생성한다. 이때, 메타 데이터는 예를 들어 입출력 요청의 디스크립터(descriptor), 현재 처리 위치(location) 등의 정보를 포함할 수 있다. 메타데이터(334) 내의 현재 처리 위치 정보는 처리 대상 입출력(333)의 처리 위치가 변경될 때마다 갱신(update)된다. 예를 들어, 처리 대상 입출력(333)의 처리 위치가 제2 입출력 대기 큐(332)에 적재 가능 여부를 판단하는 진입 제어 단계, 제2 입출력 대기 큐(332)에서 대기하는 입출력 스케줄링 단계 등으로 변경될 때마다, 메타 데이터(334)의 현재 처리 위치 정보는 변경된 위치로 갱신된다. 또한, 처리 대상 입출력 요청(333)이 저장 장치로 디스패치되어 블록 레이어(330)를 벗어나거나, 크리티컬 입출력으로 타입이 변경되는 경우, 입출력 처리 장치(100)는 처리 대상 입출력 요청(333)에 대응되는 메타 데이터(334)를 삭제한다.
지금까지, 입출력 종속성에 따른 우선순위 역전 현상 처리 방법에 대하여 설명하였다. 다음으로, 태스크 종속성에 따른 우선순위 역전 현상 처리 방법에 대하여 도 13a 및 도 13b를 참조하여 설명하도록 한다.
도 13a는 동기화 프리미티브 중 뮤텍스로 인해 발생하는 태스크 종속성을 설명하기 위한 도면이고, 도 13b는 동기화 프리미티브 중 조건 변수로 인해 발생하는 태스크 종속성을 설명하기 위한 도면이다. 이하의 도면에서, 둥근 사각형 모양의 도형은 태스크를 나타내고, 원 모양의 도형은 입출력을 나타낸다.
먼저 도 13a를 참조하면, 백그라운드 태스크(402a)가 입출력 영역(e.g. 파일) 중 특정 임계 구역에 진입하기 위해 뮤텍스(403)를 획득하고, 포그라운드 태스크(401)도 상기 임계 구역에 진입하기 위해 뮤텍스(403)의 획득을 시도하는 경우 발생하는 우선순위 역전 현상이 왼편에 도시되어 있다. 이와 같은 상황에서, 백그라운드 태스크(402a)의 우선순위는 포그라운드 태스크(401)보다 낮기 때문에 백그라운드 태스크의 입출력 요청의 처리는 지연될 가능성이 높다. 또한, 백그라운드 태스크(402a)의 입출력 요청의 처리가 완료되어야 백그라운드 태스크(402a)가 뮤텍스(403)를 해제하므로, 백그라운드 태스크(402a)의 입출력 처리 지연에 따라 포그라운드 태스크(401)의 입출력 처리가 지연되는 문제가 발생한다.
따라서, 본 발명의 실시예에 따르면, 입출력 우선순위 역전 현상이 감지되는 경우, 입출력 처리 장치(100)가 임시로 백그라운드 태스크(402a)의 우선순위를 뮤텍스(403)를 획득하기 위해 대기 중인 포그라운드 태스크(401)의 우선순위로 변경한다(도 14a의 가운데 도시된 도면 참조). 변경된 백그라운드 태스크(402b)의 우선순위는 백그라운드 태스크(402b)가 뮤텍스(403)를 해제할 때까지 유지된다. 즉, 뮤텍스(403)가 해제되면, 백그라운드 태스크(402a)의 우선순위는 다시 본래의 우선순위로 복귀된다. 본 실시예에 따르면, 백그라운드 태스크(402b)가 요청한 입출력은 변경된 우선순위에 따라 빠르게 처리될 수 있다. 또한, 빠르게 입출력 처리가 완료되면 백그라운드 태스크(402b)가 기 획득된 뮤텍스(403)를 빠르게 해제하게 되므로, 뮤텍스(403) 획득을 대기하는 포그라운드 태스크(401)의 대기 시간이 최소화될 수 있다.
다음으로 도 13b를 참조하여, 조건 변수로 인해 발생하는 태스크 종속성 처리 방법에 대하여 설명한다.
도 13b를 참조하면, 뮤텍스와 동일하게, 포그라운드 태스크(411)가 웨이크 신호(wake signal)를 받을 때까지 조건 변수(413)를 통해 대기하고 있고, 상기 웨이크 신호를 보내는 태스크가 백그라운드 태스크(412a)인 경우 태스크 종속성에 따른 입출력 우선순위 역전 현상이 발생한다.
본 발명의 실시예에 따르면, 상기 입출력 우선순위 역전 현상이 감지되는 경우, 입출력 처리 장치(100)는 웨이크 신호를 보낼 예정인 백그라운드 태스크(412a)의 우선순위를 대기 중인 포그라운드 태스크(411)의 우선순위로 변경하고, 백그라운드 태스크(412b)의 입출력 처리를 변경된 우선순위에 따라 빠르게 처리한다. 또한, 백그라운드 태스크(412b)가 웨이크 신호를 전송하면, 입출력 처리 장치(100)는 백그라운드 태스크(412b)의 우선순위가 다시 본래의 우선순위로 복귀되도록 처리한다. 이에 따라, 포그라운드 태스크(411)의 처리가 백그라운드 태스크(412a)로 인해 지연되는 시간이 최소화될 수 있다.
참고로, 조건 변수는 소유주가 확실한 뮤텍스와는 달리 어떤 백그라운드 태스크가 웨이크 신호를 보낼지 알 수 없기 때문에, 우선순위 변경 대상이 되는 백그라운드 태스크를 정확하게 결정하기 어렵다는 문제가 있다. 따라서, 본 발명의 실시예에 따르면, 해당 포그라운드 태스크에게 웨이크 신호를 보낸 이력이 있는 백그라운드 태스크를 우선순위 변경 대상 태스크로 결정할 수 있다. 이는, 일반적으로 포그라운드 태스크와 임계 구역을 공유하는 백그라운드 태스크가 한정되고, 웨이크 신호를 보낸 경험이 있는 백그라운드 태스크가 다시 웨이크 신호를 보낼 가능성이 매우 높다는 발견에 기초한 것이다. 본 실시예에서, 웨이크 신호를 보낸 경험이 있는 백그라운드 태스크가 다수 존재하는 경우에는, 각 백그라운드 태스크의 웨이크 신호에 대한 누적 송신 횟수, 최근 송신 횟수 등을 고려하여, 우선순위 변경 대상이 되는 백그라운드 태스크가 결정될 수 있다.
지금까지, 태스크 종속성에 따른 우선순위 역전 현상 처리 방법에 대하여 설명하였다. 다음으로, 상술한 태스크 종속성 또는 입출력 종속성이 연속적으로 발생한 경우를 가리키는 이행적 종속성(transitive dependency)에 따른 우선순위 역전 현상 처리 방법에 대하여 도 14a 및 도 14b를 참조하여 설명하도록 한다.
상술한 태스크 종속성 및 입출력 종속성은 복수의 태스크 또는 복수의 입출력 요청에 걸쳐 연속적으로 발생될 수 있다. 예를 들어, 포그라운드 태스크와 제1 백그라운드 태스크 사이에 태스크 종속성이 발생하고, 제1 백그라운드 태스크는 제2 백그라운드 태스크 사이에 또 다른 태스크 종속성이 발생될 수 있다.
도 14a를 참조하면, 이행적 종속성은 크게 세 가지 케이스(case)로 추상화될 수 있다. 제1 케이스는 태스크 종속성이 연속적으로 발생하는 경우이다. 제2 케이스는 태스크 종속성과 입출력 연속성이 연속적으로 발생하는 경우이다. 예를 들어, 포그라운드 태스크와 백그라운드 태스크 사이에 태스크 종속성이 발생하고, 상기 백그라운드 태스크의 입출력 요청이 다른 제2 타입의 입출력 요청에 의해 블락되어 대기하는 경우가 발생될 수 있다. 제3 케이스는 포그라운드 태스크와 종속 관계에 있는 백그라운드 태스크의 입출력 요청이 입출력 경로 상에 존재하는 진입 제어 단계 중 어느 하나의 진입 제어 단계에서 대기하고 있는 경우이다. 예를 들어, 백그라운드 태스크의 입출력 요청이 버퍼 페이지를 할당 받기 위해 캐싱 레이어의 진입 제어 단계에서 대기 중이거나, 입출력 대기 큐에 적재되기 위해 블록 레이어의 진입 제어 단계에 대기 중인 경우 등을 의미한다.
도 14b를 참조하면, 제1 케이스 및 제2 케이스가 발생되면, 입출력 처리 장치(100)는 우선순위 상속을 연속적으로 수행하여 이행적 종속성을 해결할 수 있다. 예를 들어, 입출력 처리 장치(100)는 제1 케이스 또는 제2 케이스에서 포그라운드 태스크의 우선순위를 마지막 백그라운드 태스크까지 또는 마지막 입출력 요청까지 상속되도록 처리하여 이행적 종속성을 해결할 수 있다.
제3 케이스의 경우, 입출력 처리 장치(100)는 변경된 우선순위에 따라 백그라운드 태스크의 입출력 요청을 재시도하는 방식으로 이행적 종속성을 해결할 수 있다. 예를 들어, 전술한 살시예에 따르면 캐싱 레이어의 진입 제어 단계에서 입출력 요청의 타입에 따라 서로 다른 임계 값이 적용된다. 따라서, 우선순위 상속에 따라 변경된 타입으로 다시 진입 요청을 시도하는 것으로 진입 제어 단계에서의 대기 문제가 해결될 수 있다.
지금까지, 도 7 내지 도 14b를 참조하여 본 발명의 실시예에 따른 입출력 처리 방법에 대하여 설명하였다. 이하에서는 도 15a 내지 도 15b를 참조하여, 처리량 및 응답 시간 측면에서 상술한 입출력 처리 방법과 종래의 기술을 비교 실험한 결과에 대하여 간략하게 설명하도록 한다.
도 15a는 본 발명의 실시예에 따른 입출력 처리 방법과 종래 입출력 스케줄러의 처리량을 비교 실험한 그래프를 도시한다. 도 15a에 도시된 그래프에서 x축은 데이터셋의 규모를 가리키고, y축은 초당 처리된 클라이언트 요청의 개수를 가리킨다.
도 15a에서 RCP는 상기 입출력 처리 방법에 따른 실험 결과를 가리키고, CFQ-IDLE은 체크포인터 태스크를 낮은 우선순위로 실행시키며 CFQ(Completely Fair Queuing)를 동작시킨 경우를 가리키며, SPLIT-A와 SPLIT-D는 각각 Split-AFQ와 Split-Deadline을 가리킨다.
도 15a에 도시된 실험 결과에 따르면, 본 발명의 실시예에 따른 입출력 처리 방법에 따라 포그라운드 태스크의 입출력 요청을 처리한 경우, 리눅스의 기본 입출력 스케줄러인 CFQ에 비해 대략 30% 이상의 처리량 향상 효과가 나타났다. 또한, CFQ 외의 다른 어떤 입출력 스케줄러와 비교하더라도 처리량이 향상되는 것으로 나타났다.
다음으로 도 15b는 본 발명의 실시예에 따른 입출력 처리 방법과 종래 입출력 스케줄러의 응답 시간을 비교 실험한 그래프를 도시한다. 도 15b에 도시된 그래프에서 x축은 응답 지연 시간을 가리키고 y축은 CCDF(complementary cumulative distribution function)을 가리킨다.
도 15b에 도시된 실험 결과에 따르면, 본 발명의 실시예에 따른 입출력 처리 방법에 따라 포그라운드 태스크의 입출력 요청을 처리한 경우, 대부분의 클라이언트 요청이 300ms 이내로 처리되는 것으로 나타났다. 이는 종래 기술에 따른 입출력 스케줄러의 응답 지연 시간이 2초인 것과 비교할 때, 응답 지연이 크게 개선되었음을 나타낸다.
정리하면, 도 15a 내지 도 15b에 도시된 그래프에 따르면, 본 발명의 실시예에 따른 입출력 처리 방법을 이용하여 클라이언트 요청을 처리하는 경우, 처리량뿐만 아니라 응답 지연 또한 종래 기술 대비 크게 개선되는 것으로 나타났다.
도 7 내지 도 15b를 참조하여 설명한 본 발명의 실시예에 따른 입출력 처리 방법은 복수의 클라이언트 단말로부터의 수신된 클라이언트 요청이 하나의 입출력 처리 장치(100) 또는 입출력 처리 모듈(111)에서 처리된다는 가정 하에 설명되었다. 이하에서는, 복수의 입출력 처리 장치 또는 복수의 입출력 처리 모듈을 포함하는 클러스터 시스템에서 클라이언트 요청을 처리하는 본 발명의 또 다른 실시예에 따른 클라이언트 요청 처리 방법에 대하여 설명하도록 한다.
도 16은 본 발명의 또 다른 실시예에 따른 클라이언트 요청 처리 방법이 수행될 수 있는 예시적인 클러스터 시스템을 도시한다.
도 16을 참조하면, 상기 예시적인 클러스터 시스템은 프록시(510)와 복수의 노드(520, 530, 540)를 포함할 수 있다. 상기 예시적인 클러스터 시스템은 예를 들어 복수의 DB 서버에 데이터가 복제 또는 분산되어 있는 DB 클러스터 시스템일 수 있다.
상기 예시적인 클러스터 시스템에서, 프록시(510)는 클라이언트 단말(미도시)로부터 소정의 데이터에 관한 질의를 포함하는 클라이언트 요청(client request)을 수신하고, 상기 클라이언트 요청을 해당되는 노드로 전달한다. 이때, 상기 클라이언트 요청은 응답 속도 향상을 위해 적어도 하나의 하위 요청(sub-request)로 분할되어 처리될 수 있다. 예를 들어, DB 클러스터 시스템에서 고가용성(high availability)을 보장하기 위해 데이터를 두 개의 DB 서버에 복제하여 DB 클러스터를 구축한 경우, 하나의 클라이언트 요청은 두 개의 하위 요청으로 분할되고, 각각의 DB 서버로 전달된다.
상기 예시적인 클러스터 시스템에서, 복수의 노드(520, 530, 540)는 다양한 방식의 스케일 아웃(scale-out) 구조로 구성될 수 있다. 예를 들어, 도 16에 도시된 바와 같이 수평 분할 구조(e.g. sharding)로 구성될 수도 있고, 수직 분할 구조로 구성될 수도 있으며, 이는 실시예에 따라 달라질 수 있다.
상기 예시적인 클러스터 시스템에서, 각각의 노드(520, 530, 540)는 예를 들어 상술한 입출력 처리 장치 또는 입출력 처리 모듈일 수 있다. 따라서, 각각의 노드(520, 530, 540)는 프록시(510)로부터 전달받은 하위 요청을 높은 우선순위를 갖는 포그라운드 태스크로 처리하고, 상기 포그라운드 태스크가 발행하는 입출력 요청은 전체 입출력 경로 상에 높은 우선순위로 처리되도록 유지될 수 있다.
참고로, 각각의 노드(520, 530, 540) 및 프록시(510)는 실시예에 따라 독립된 서버 장치와 같은 물리적인 노드의 형태로 구현될 수 있고, 가상 머신(virtual machine)과 같은 논리적인 노드의 형태로 구현될 수도 있다.
이하에서는, 도 17a 및 도 17b를 참조하여, 클러스터 시스템에서 클라이언트 요청을 처리할 때 발생하는 응답 지연 문제에 관하여 간략하게 설명한다.
클러스터 시스템에서, 각각의 노드는 클라이언트 요청의 처리 순서에 대한 정보 없이 하위 요청을 처리하기 때문에 클라이언트 요청의 처리 순서가 보장될 수 없다. 더욱이, 프록시에서 각각의 노드로 하위 요청이 전송되는 과정에서 도착 순서가 변경되거나, 하위 요청에서 파생된 입출력 요청 처리 과정에서 입출력 요청의 처리 순서가 변경되는 경우도 빈번하게 발생될 수 있다. 이에 따라, 클러스터 시스템에서 전체 클라이언트 요청에 대한 평균 응답 시간이 보장될 수 없고, 일부 클라이언트 요청의 처리는 상당히 지연될 수도 있다. 특히, 클러스터 시스템에서 각 노드로 파생된 하위 요청의 처리가 완료되어야 클라이언트 요청의 처리가 완료되므로, 일부 클라이언트 요청의 처리가 지연될 가능성은 매우 높다고 볼 수 있다.
보다 이해의 편의를 제공하기 위해, 도 17a 및 도 17b에 도시된 예를 들어 클러스터 시스템에서의 평균 응답 지연 문제를 설명하도록 한다. 도 17a 및 도 17b에서, 프록시(510)는 3개의 클라이언트 요청을 수신하고, 각각의 클라이언트 요청은 2개의 하위 요청으로 분할되어 2개의 노드(520, 530)로만 전달된다고 가정한다. 또한, 하위 요청을 처리하기 위해 각 하위 요청 별로 1개의 입출력 요청이 발행되었다고 가정하고, 클라이언트 요청의 처리 순서는 수신된 순서와 동일하다고 가정한다.
도 17a는 평균 응답 지연이 최소화되는 이상적인 경우를 도시한다. 즉, 도 17a와 같이, 클라이언트 요청(601 내지 603)의 순서대로 각각의 노드(520, 530)에서 처리가 완료되는 경우에는 평균 응답 지연이 최소화 될 수 있다. 그러나, 전술한 바와 같이, 각 노드는 클라이언트 요청의 처리 순서를 알지 못하기 때문에, 도 17a에 도시된 경우가 보장될 수 없다.
예를 들어, 경우에 따라 도 17b에 도시된 바와 같이 입출력 요청의 처리 순서가 변경될 수 있다. 이는 상술한 바와 같이 하의 요청의 도착 순서 변경, 입출력 요청의 처리 순서 변경 등 다양한 원인으로 발생될 수 있다. 도 17b에 도시된 경우에서는, 첫 번째 순서인 제1 클라이언트 요청(604)은 제1 노드(520)에서는 먼저 처리되지만, 제2 노드(530)에서는 마지막 순서인 제3 클라이언트 요청(606)보다 늦게 처리된다. 이와 같은 경우, 제1 클라이언트 요청(604)에 대한 응답은 제2 노드(530)에서 입출력 요청(604b)의 처리가 완료된 후에 수행되므로, 제1 클라이언트 요청(604)에 대한 응답은 지연된다. 또한, 두 번째 순서인 제2 클라이언트 요청(605)은 제1 노드(520) 및 제2 노드(530)에서 모두 마지막으로 처리되므로, 제2 클라이언트 요청(605)에 대한 응답 또한 지연된다. 결과적으로, 도 17b에 도시된 경우에서는 전체 클라이언트 요청에 대한 평균 응답 시간이 지연된다.
이하에서는, 상술한 응답 지연 문제를 해결하기 위한 본 발명의 실시예에 따른 클라이언트 요청 처리 방법에 대하여 도 18을 참조하여 설명하도록 한다.
상술한 문제점은 하위 요청들이 혼재된 상태에서 각 노드가 각각의 하위 요청이 어떤 클라이언트 요청으로부터 파생된 것인지를 알지 못하고 처리하기 때문에 발생하는 것으로 이해될 수 있다. 따라서, 본 발명의 실시예에 따르면, 도 18에 도시된 바와 같이 프록시(510)에서 클라이언트 요청(611, 612, 613)의 처리 순서에 따라 요청 식별자가 할당된다. 예를 들어, 첫 번째 처리 순서인 제1 클라이언트 요청(611)의 경우 '1'에 해당하는 요청 식별자가 할당되고, 두 번째 처리 순서인 제2 클라이언트 요청(612)의 경우 '2'에 해당하는 요청 식별자가 할당된다.
일 실시예에서, 상기 요청 식별자는 프록시(510)에 클라이언트 요청이 수신되는 순서에 따라 할당될 수 있다. 즉, 클라이언트 요청이 수시된 프록시(510)의 타임스탬프를 이용하여 각 클라이언트 요청의 처리 순서가 결정될 수 있다.
다른 실시예에서, 상기 요청 식별자는 클라이언트 단말이 클라이언트 요청을 송신한 순서에 따라 할당될 수 있다. 예를 들어, 클라이언트 단말의 송신 시점의 타임스탬프에 따라 상기 요청 식별자가 할당될 수 있다. 본 실시예에 따르면, 전송 경로 상에서 클라이언트 요청의 순서가 변경되는 경우에도 송신 시점을 기준으로 정확하게 처리 순서가 결정될 수 있다는 장점이 있다.
상술한 실시예들에 따라 할당된 요청 식별자는 하위 요청 및 입출력 요청에게 상속된다. 즉, 도 18에 도시된 바와 같이, 각각의 입출력 요청은 클라이언트 요청의 요청 식별자와 동일한 식별자를 갖게 된다. 또한, 각각의 입출력 처리 장치는 입출력 요청에 부여된 식별자를 기초로 입출력 스케줄링을 수행하게 된다. 따라서, 각각의 노드의 입출력 경로 상에서 클라이언트 요청의 처리 순서가 보장될 수 있고, 파생된 복수의 하위 요청이 각각의 노드에서 해당 클라이언트 요청의 처리 순서에 따라 처리됨으로써 평균 응답 속도가 향상될 수 있다.
구체적으로, 하위 요청을 전달받은 각 노드는 클라이언트 요청의 요청 식별자에 따라 부여된 입출력 요청의 식별자를 기반으로 입출력 스케줄링을 수행한다. 예를 들어, 도 18에 도시된 바와 같이, 제1 클라이언트 요청(611)에 대한 입출력 요청(611a)을 우선적으로 처리하기 위해, 제1 노드(520)는 입출력 대기 큐(511)에서 제2 클라이언트 요청(612)에 대한 입출력 요청(612a) 앞에 입출력 요청(611a)을 적재하는 리오더링을 수행된다. 또 다른 예를 들어, 제2 클라이언트 요청(612)에 대한 입출력 요청(612b)을 제3 클라이언트 요청(613)보다 먼저 처리하기 위해, 제2 노드(530)는 입출력 대기 큐(521)에서 제3 클라이언트 요청(613)에 대한 입출력 요청(613a) 앞에 입출력 요청(612b)을 적재하는 리오더링을 수행한다. 이와 같이 입출력 스케줄링을 수행함으로써, 하위 요청에 따라 생성된 입출력 요청이 각 노드에서 클라이언트 요청에 부여된 처리 순서에 따라 처리될 수 있다.
한편, 하위 요청에 따라 발행되는 입출력 요청 중에는 실제 클라이언트 요청과 관련된 입출력 요청 외에도 운영 체제가 자체적으로 발행하는 미리 읽기(read ahead) 요청이 포함될 수 있다. 상기 미리 읽기 요청은 연속된 입출력 영역에 대하여 읽기 입출력 요청이 처리되는 경우에 미래를 예측하여 미리 읽어오도록 요청을 보내는 것으로, 성능 향상을 목적으로 보조적으로 수행되는 입출력 요청이다.
그러나, 상기 미리 읽기 요청이 클라이언트 요청에 따른 입출력 요청과 동일한 요청 식별자를 상속 받는 경우, 경우에 따라 미리 읽기 요청의 처리로 인해 상기 클라이언트 요청에 따른 입출력 요청의 처리가 지연될 수 있다. 따라서, 본 발명의 실시예에 따르면, 미리 읽기 요청은 클라이언트 요청에 따른 입출력 요청보다 후 순위에 해당하는 식별자가 부여되도록 처리될 수 있다. 본 실시예에 따르면, 클라이언트 요청에 따른 입출력 요청이 우선적으로 처리되고, 유휴 시간에 상기 미리 읽기 요청이 처리됨으로써 클라이언트 요청의 응답 지연이 최소화될 수 있다.
또한, 상술한 본 발명의 실시예에 따르면, 프록시(510)에서 지정된 처리 순서에 따라 복수의 클라이언트 요청이 순차적으로 처리됨으로써 평균 응답 시간을 향상시킬 수 있으나, 대량의 입출력을 발생시키는 클라이언트 요청이 존재하는 경우 오히려 평균 응답 시간이 지연되는 문제가 발생할 수 있다. 예를 들어, 대량의 입출력을 발생시키는 제1 클라이언트 요청이 1 순위로 처리되고, 제2 클라이언트 요청 및 제3 클라이언트 요청이 2 순위 및 3 순위로 처리될 때, 상기 제1 클라이언트 요청에 따른 입출력 요청 처리로 인해, 상기 제2 및 제3 클라이언트 요청의 처리가 매우 지연될 수 있고, 이와 같은 경우 평균 응답 시간은 지연되게 된다.
상술한 문제를 해결하기 위해, 본 발명의 다른 실시예에 따르면, 클라이언트 요청에 따라 발생되는 입출력 양을 기초로 선별적인 입출력 스케줄링이 수행될 수 있다. 예를 들어, 제1 클라이언트 요청에 따라 발생되는 입출력 양이 임계 값 미만인 경우, 상기 제1 클라이언트 요청에 따라 발생되는 입출력 요청은 처리 순서에 따라 입출력 대기 큐에서 리오더링이 수행될 수 있다. 그러나, 제2 클라이언트 요청에 따라 발생되는 입출력 양이 임계 값 이상인 경우, 상기 제2 클라이언트 요청에 따라 발생되는 입출력 요청은 리오더링이 수행되지 않고 입출력 대기 큐의 마지막에 적재되도록 처리될 수 있다. 또는, 실시예에 따라, 상기 제2 클라이언트 요청의 처리 순서가 후 순위가 되도록 요청 식별자가 부여될 수도 있다.
본 실시예에서, 상기 임계 값은 클라이언트 요청 별 입출력 양에 대한 모니터링 결과에 따라 동적으로 변경되는 변동 값일 수 있다. 예를 들어, 각 클라이언트 요청 별 입출력 양을 모니터링하고, 입출력 양에 따른 정규 분포를 구한 뒤, 상기 정규 분포에서 기 지정된 상위 n 퍼센트에 해당하는 입출력 양을 상기 임계 값으로 결정할 수 있다.
지금까지, 상술한 본 발명의 몇몇 실시예들은 입출력 요청을 저장 장치로 디스패치하는 입출력 대기 큐의 스케줄링을 중심으로 설명되었다. 그러나, 저장 장치로 디스패치된 입출력 요청은 저장 장치 내부에 존재하는 장치 내부 큐에서 다시 스케줄링되기 때문에, 경우에 따라 상술한 실시예들에 따른 입출력 스케줄링 효과가 저하될 수 있다. 예를 들어, 저장 장치 내부의 펌웨어(firmware)가 장치 입출력의 효율성을 위해 입출력 요청의 순서를 바꿔서 처리하는 경우, 상술한 실시예들에 따른 입출력 스케줄링 효과가 저하될 수 있다.
상술한 문제를 해결하기 위해, 본 발명의 일 실시예에서, 저장장치 내부 큐의 크기를 1로 설정할 수 있다. 저장 장치 내부 큐의 크기가 1인 경우, 입출력 스케줄링에 의해 디스패치되는 입출력 요청의 순서가 저장 장치에서도 그대로 유지될 수 있다. 본 실시예에 따르면, 간이한 방법으로 입출력 요청의 처리 순서가 유지될 수 있으나, 저장 장치 내부의 병렬성을 활용하지 못하기 때문에 저장 장치의 처리량이 저하되는 문제가 발생될 수 있다.
본 발명의 다른 실시예서, 저장 장치의 처리량을 제한하지 않기 위해, 저장 장치의 내부 큐의 크기를 제한하지 않고, 저장 장치로 디스패치하는 입출력 요청의 개수를 제한할 수 있다. 예를 들어, 상기 입출력 요청의 개수는 저장 장치의 타입(e.g. HDD, SSD, NVMe SSD), 입출력 요청의 타입(e.g. 읽기, 쓰기) 및 입출력 데이터의 크기 중 적어도 하나를 기준으로 동적으로 제한될 수 있다. 보다 구체적인 예를 들어, 저장 장치의 타입이 HDD인 경우 SDD보다 더 적은 개수의 입출력 요청이 디스패치되도록 제한될 수 있고, 쓰기 타입의 입출력 요청이 많거나 입출력 데이터의 크기가 큰 입출력 요청이 많은 경우, 더 적은 개수의 입출력 요청이 디스패치되도록 제한될 수 있다. 본 실시예에 따르면, 저장 장치의 최대 처리량을 보장하면서도 저장 장치의 내부 큐잉으로 인한 입출력 스케줄링 효과 저하 문제가 완화될 수 있다.
지금까지, 도 16 내지 도 18을 참조하여 클러스터 시스템에서 다수의 클라이언트 요청에 대한 평균 응답 지연을 개선시키기 위한 클라이언트 요청 처리 방법에 대하여 설명하였다. 이하에서는, 도 19를 참조하여, 응답 시간 측면에서 상기 클라이언트 요청 처리 방법과 종래 기술을 비교 실험한 결과에 대하여 간략하게 소개하도록 한다.
다음으로 도 19는 본 발명의 실시예에 따른 클라이언트 요청 처리 방법과 종래 입출력 스케줄러의 응답 시간을 비교 실험한 그래프를 도시한다. 도 19에 도시된 그래프에서 "average"는 평균 응답 지연을 나타내고, 나머지 부분은 꼬지 응답 지연(tail latency)을 나타낸다. 또한, 클러스터 시스템을 구축하기 위해 MongoDB가 이용되었고, 클러스터 내의 각 노드는 가상 머신으로 구축되었으며, noop, deadline, CFQ 는 각각 리눅스에서 제공되는 입출력 스케줄러를 가리키고, coop는 상기 클라이언트 요청 처리 방법을 가리킨다.
도 19에 도시된 실험 결과에 따르면, 클러스터 시스템에서 발명의 실시예에 따른 클라이언트 요청 처리에 따라 클라이언트 요청을 처리한 경우, 평균 응답 지연이 약간 개선되는 것으로 나타났고, 특히 사용자의 체감 성능에 큰 영향을 미치는 꼬리 응답 지연이 종래의 입출력 스케줄러에 비해 크게 개선되는 것으로 나타났다. 따라서, 본 발명의 실시예에 따른 클라이언트 요청 처리 방법이 응답 지연에 민감한 게임 서비스 등에 적용되는 경우, 최종 사용자에게 향상된 사용 경험을 제공할 수 있으리라 예상된다.
지금까지 도 5a 내지 도 19를 참조하여 설명된 본 발명의 개념은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다.
Claims (20)
- 입출력 처리 장치에 의해 수행되는 입출력 처리 방법에 있어서,
제1 입출력 요청 및 제2 입출력 요청을 수신하되, 상기 제1 입출력 요청은 크리티컬 입출력(critical I/O)으로 분류되고 상기 제2 입출력 요청은 논-크리티컬 입출력(non-critical I/O)으로 분류된 것인, 단계;
상기 제1 입출력 요청에 상기 제2 입출력 요청보다 더 높은 우선순위를 부여하는 단계; 및
상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계를 포함하되,
상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계는,
상기 제1 입출력 요청의 처리 상태가 상기 제2 입출력 요청의 처리에 의해 대기 상태로 변경되는 것을 감지하는 단계;
상기 제1 입출력 요청의 처리 상태의 변경이 감지됨에 응답하여, 상기 제2 입출력 요청의 타입을 크리티컬 입출력으로 재분류하고, 상기 제2 입출력 요청의 우선순위를 상기 제1 입출력 요청의 우선순위로 변경하는 단계; 및
상기 제2 입출력 요청을 상기 변경된 제2 입출력 요청의 우선순위에 기반하여 처리하는 단계를 포함하고,
상기 제1 입출력 요청을 송신한 태스크는 포그라운드 태스크(foreground task)이고, 상기 제2 입출력 요청을 송신한 태스크는 백그라운드 태스크(background task)이며,
상기 포그라운드 태스크는 클라이언트의 요청에 따라 실행되는 태스크이고, 상기 백그라운드 태스크는 상기 포그라운드 태스크 이외의 태스크인 것을 특징으로 하는,
입출력 처리 방법. - 제1 항에 있어서,
상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계는,
상기 감지하는 단계 이전에, 상기 제2 입출력 요청이 블록 레이어에 진입하는 경우, 상기 제2 입출력 요청에 대응되는 메타데이터를 생성하되, 상기 메타데이터는 상기 제2 입출력 요청의 현재 처리 위치를 포함하는 것인, 단계; 및
상기 제2 입출력 요청의 처리 위치가 변경됨에 따라, 상기 메타데이터에 포함된 현재 처리 위치를 갱신하는 단계를 더 포함하고,
상기 제2 입출력 요청을 상기 변경된 제2 입출력 요청의 우선순위에 기반하여 처리하는 단계는,
상기 메타데이터에 포함된 상기 제2 입출력 요청의 현재 처리 위치에 기초하여, 상기 제2 입출력 요청을 처리하는 단계를 포함하는 것을 특징으로 하는,
입출력 처리 방법. - 제2 항에 있어서,
상기 블록 레이어는 크리티컬 입출력으로 분류된 입출력 요청을 스케줄링하는 제1 입출력 대기 큐 및 논-크리티컬 입출력으로 분류된 입출력 요청을 스케줄링하는 제2 입출력 대기 큐를 포함하고,
상기 제2 입출력 요청의 현재 처리 위치에 기초하여, 상기 제2 입출력 요청을 처리하는 단계는,
상기 제2 입출력 요청이 상기 제2 입출력 대기 큐에 대한 적재를 대기하는 진입 제어(admission control) 단계에 위치한 경우, 상기 제1 입출력 대기 큐에 상기 제2 입출력 요청의 적재를 시도하는 단계를 포함하는 것을 특징으로 하는,
입출력 처리 방법. - 제2 항에 있어서,
상기 블록 레이어는 크리티컬 입출력으로 분류된 입출력 요청을 처리하는 제1 입출력 대기 큐 및 논-크리티컬 입출력으로 분류된 입출력 요청을 처리하는 제2 입출력 대기 큐를 포함하고,
상기 제2 입출력 요청의 현재 처리 위치에 기초하여, 상기 제2 입출력 요청을 처리하는 단계는,
상기 제2 입출력 요청이 상기 제2 입출력 대기 큐에 적재된 경우, 상기 제2 입출력 대기 큐에서 상기 제2 입출력 요청을 삭제하고, 상기 제1 입출력 대기 큐에 상기 제2 입출력 요청의 적재를 시도하는 단계를 포함하는 것을 특징으로 하는,
입출력 처리 방법. - 제2 항에 있어서,
상기 메타데이터는,
상기 제2 입출력 요청이 크리티컬 입출력으로 재분류되는 경우 또는 상기 블록 레이어에서 저장 장치로 디스패치(dispatch) 되는 경우 중 어느 하나의 경우에 삭제되는 것을 특징으로 하는,
입출력 처리 방법. - 제1 항에 있어서,
상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계는,
버퍼 캐시 기반의 캐싱을 수행하는 캐싱 레이어에서, 상기 버퍼 캐시의 더티 페이지 비율과 제1 임계 값을 비교하여 상기 제1 입출력 요청에 대한 버퍼 페이지의 할당 여부를 결정하는 단계; 및
상기 버퍼 캐시의 더티 페이지 비율과 상기 제1 임계 값보다 작은 제2 임계 값을 비교하여 상기 제2 입출력 요청에 대한 버퍼 페이지의 할당 여부를 결정하는 단계를 포함하는 것을 특징으로 하는,
입출력 처리 방법. - 제1 항에 있어서,
상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계는,
블록 레이어의 제1 입출력 대기 큐에 상기 제1 입출력 요청을 적재하는 단계; 및
상기 블록 레이어의 제1 입출력 대기 큐와 다른 제2 입출력 대기 큐에 상기 제2 입출력 요청을 적재하는 단계를 포함하되,
상기 제1 입출력 대기 큐에 적재된 입출력 요청은 상기 제2 입출력 대기 큐에 적재된 입출력 요청보다 우선하여 처리되는 것을 특징으로 하는,
입출력 처리 방법. - 제7 항에 있어서,
상기 제1 입출력 대기 큐에 다른 입출력 요청이 적재된 경우에도, 기 설정된 주기마다 상기 제2 입출력 대기 큐에 적재된 입출력 요청을 처리하는 것을 특징으로 하는,
입출력 처리 방법. - 제7 항에 있어서,
기 설정된 시간 동안 상기 제2 입출력 대기 큐에서 저장 장치로 디스패치(dispatch)되는 입출력 요청의 개수는 기 설정된 개수 이하로 제한되는 것을 특징으로 하는,
입출력 처리 방법. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 하나 이상의 프로세서;
상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드(Load)하는 메모리; 및
상기 컴퓨터 프로그램을 저장하는 스토리지를 포함하되,
상기 컴퓨터 프로그램은,
제1 입출력 요청 및 제2 입출력 요청을 수신하되, 상기 제1 입출력 요청은 크리티컬 입출력(critical I/O)으로 분류되고 상기 제2 입출력 요청은 논-크리티컬 입출력(non-critical I/O)으로 분류된 것인, 오퍼레이션;
상기 제1 입출력 요청에 상기 제2 입출력 요청보다 더 높은 우선순위를 부여하는 오퍼레이션; 및
상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 오퍼레이션을 포함하고,
상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 오퍼레이션은,
상기 제1 입출력 요청의 처리 상태가 상기 제2 입출력 요청의 처리에 의해 대기 상태로 변경되는 것을 감지하는 오퍼레이션;
상기 제1 입출력 요청의 처리 상태의 변경이 감지됨에 응답하여, 상기 제2 입출력 요청의 타입을 크리티컬 입출력으로 재분류하고, 상기 제2 입출력 요청의 우선순위를 상기 제1 입출력 요청의 우선순위로 변경하는 오퍼레이션; 및
상기 제2 입출력 요청을 상기 변경된 제2 입출력 요청의 우선순위에 기반하여 처리하는 오퍼레이션을 포함하며,
상기 제1 입출력 요청을 송신한 태스크는 포그라운드 태스크(foreground task)이고, 상기 제2 입출력 요청을 송신한 태스크는 백그라운드 태스크(background task)이고,
상기 포그라운드 태스크는 클라이언트의 요청에 따라 실행되는 태스크이고, 상기 백그라운드 태스크는 상기 포그라운드 태스크 이외의 태스크인 것을 특징으로 하는,
입출력 처리 장치. - 컴퓨팅 장치와 결합되어,
제1 입출력 요청 및 제2 입출력 요청을 수신하되, 상기 제1 입출력 요청은 크리티컬 입출력(critical I/O)으로 분류되고 상기 제2 입출력 요청은 논-크리티컬 입출력(non-critical I/O)으로 분류된 것인, 단계;
상기 제1 입출력 요청에 상기 제2 입출력 요청보다 더 높은 우선순위를 부여하는 단계; 및
상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계를 실행시키되,
상기 우선순위에 기반하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청을 처리하는 단계는,
상기 제1 입출력 요청의 처리 상태가 상기 제2 입출력 요청의 처리에 의해 대기 상태로 변경되는 것을 감지하는 단계;
상기 제1 입출력 요청의 처리 상태의 변경이 감지됨에 응답하여, 상기 제2 입출력 요청의 타입을 크리티컬 입출력으로 재분류하고, 상기 제2 입출력 요청의 우선순위를 상기 제1 입출력 요청의 우선순위로 변경하는 단계; 및
상기 제2 입출력 요청을 상기 변경된 제2 입출력 요청의 우선순위에 기반하여 처리하는 단계를 포함하고,
상기 제1 입출력 요청을 송신한 태스크는 포그라운드 태스크(foreground task)이고, 상기 제2 입출력 요청을 송신한 태스크는 백그라운드 태스크(background task)이며,
상기 포그라운드 태스크는 클라이언트의 요청에 따라 실행되는 태스크이고, 상기 백그라운드 태스크는 상기 포그라운드 태스크 이외의 태스크인, 컴퓨터로 판독가능한 기록 매체에 저장된,
컴퓨터 프로그램.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170057337A KR101915944B1 (ko) | 2017-05-08 | 2017-05-08 | 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치 |
US15/922,442 US20180322075A1 (en) | 2017-05-08 | 2018-03-15 | Method for processing client requests in a cluster system, a method and an apparatus for processing i/o according to the client requests |
US16/427,799 US20190286582A1 (en) | 2017-05-08 | 2019-05-31 | Method for processing client requests in a cluster system, a method and an apparatus for processing i/o according to the client requests |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170057337A KR101915944B1 (ko) | 2017-05-08 | 2017-05-08 | 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180073798A Division KR101915945B1 (ko) | 2018-06-27 | 2018-06-27 | 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101915944B1 true KR101915944B1 (ko) | 2018-11-08 |
Family
ID=64014759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170057337A KR101915944B1 (ko) | 2017-05-08 | 2017-05-08 | 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (2) | US20180322075A1 (ko) |
KR (1) | KR101915944B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210045760A (ko) * | 2019-10-17 | 2021-04-27 | 성균관대학교산학협력단 | 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111444012B (zh) * | 2020-03-03 | 2023-05-30 | 中国科学院计算技术研究所 | 一种保证延迟敏感应用延迟slo的动态调控资源方法及系统 |
KR102552728B1 (ko) * | 2021-05-12 | 2023-07-07 | 성균관대학교산학협력단 | 파일 단편화를 고려한 시스템 콜 순서 기반의 i/o 스케줄링 방법 및 이를 수행하는 시스템 |
US20220374149A1 (en) * | 2021-05-21 | 2022-11-24 | Samsung Electronics Co., Ltd. | Low latency multiple storage device system |
US12067254B2 (en) | 2021-05-21 | 2024-08-20 | Samsung Electronics Co., Ltd. | Low latency SSD read architecture with multi-level error correction codes (ECC) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471618A (en) | 1992-11-30 | 1995-11-28 | 3Com Corporation | System for classifying input/output events for processes servicing the events |
JP2000081986A (ja) * | 1998-09-07 | 2000-03-21 | Hitachi Information Systems Ltd | クライアント・サーバ型業務処理システムのジョブ管理方法およびそのプログラムを格納した記録媒体 |
JP2004094407A (ja) * | 2002-08-29 | 2004-03-25 | Sharp Corp | 複数のジョブキューの管理方法、複数のジョブキューの管理装置、キュー管理システム |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5058044A (en) * | 1989-03-30 | 1991-10-15 | Auto I.D. Inc. | Automated maintenance checking system |
US5006983A (en) * | 1989-09-12 | 1991-04-09 | Addax, Inc. | Service allocation system |
US5220653A (en) * | 1990-10-26 | 1993-06-15 | International Business Machines Corporation | Scheduling input/output operations in multitasking systems |
US5574944A (en) * | 1993-12-15 | 1996-11-12 | Convex Computer Corporation | System for accessing distributed memory by breaking each accepted access request into series of instructions by using sets of parameters defined as logical channel context |
US6327625B1 (en) * | 1999-11-30 | 2001-12-04 | 3Com Corporation | FIFO-based network interface supporting out-of-order processing |
US7281046B1 (en) * | 2000-06-30 | 2007-10-09 | Covad Communications Company | Application program interface for automating high speed network access ordering and provisioning processes |
GB0031763D0 (en) * | 2000-12-29 | 2001-02-07 | Mitel Semiconductor Ltd | Arbiter for a queue management system |
US6757768B1 (en) * | 2001-05-17 | 2004-06-29 | Cisco Technology, Inc. | Apparatus and technique for maintaining order among requests issued over an external bus of an intermediate network node |
EP1341093B1 (fr) * | 2002-02-26 | 2012-04-25 | Nxp B.V. | Accès à une ressource collective |
JP4396639B2 (ja) * | 2003-10-15 | 2010-01-13 | 三菱電機株式会社 | 路車間通信システム、基地局装置、及び移動局装置 |
US8539493B1 (en) * | 2006-03-23 | 2013-09-17 | Emc Corporation | Configurable prioritization and aging of queued tasks |
EP2023673A1 (en) * | 2007-08-09 | 2009-02-11 | Nokia Siemens Networks Oy | Method for ensuring data continuity in a radio communications system and access node thereof |
US7895380B2 (en) * | 2009-01-21 | 2011-02-22 | Ati Technologies Ulc | Communication protocol for sharing memory resources between components of a device |
JP2011053995A (ja) * | 2009-09-03 | 2011-03-17 | Hitachi Ltd | データ処理制御方法および計算機システム |
US9430342B1 (en) * | 2009-12-01 | 2016-08-30 | Netapp, Inc. | Storage system providing hierarchical levels of storage functions using virtual machines |
US20110213949A1 (en) * | 2010-03-01 | 2011-09-01 | Sonics, Inc. | Methods and apparatus for optimizing concurrency in multiple core systems |
US10291490B1 (en) * | 2014-02-11 | 2019-05-14 | Quest Software Inc. | System and method for collecting data from low-availability devices |
US20160021196A1 (en) * | 2014-07-17 | 2016-01-21 | Microsoft Corporation | Processing changes in a multi-tenant system |
US10360267B2 (en) * | 2015-06-10 | 2019-07-23 | Futurewei Technologies, Inc. | Query plan and operation-aware communication buffer management |
-
2017
- 2017-05-08 KR KR1020170057337A patent/KR101915944B1/ko active IP Right Grant
-
2018
- 2018-03-15 US US15/922,442 patent/US20180322075A1/en not_active Abandoned
-
2019
- 2019-05-31 US US16/427,799 patent/US20190286582A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471618A (en) | 1992-11-30 | 1995-11-28 | 3Com Corporation | System for classifying input/output events for processes servicing the events |
JP2000081986A (ja) * | 1998-09-07 | 2000-03-21 | Hitachi Information Systems Ltd | クライアント・サーバ型業務処理システムのジョブ管理方法およびそのプログラムを格納した記録媒体 |
JP2004094407A (ja) * | 2002-08-29 | 2004-03-25 | Sharp Corp | 複数のジョブキューの管理方法、複数のジョブキューの管理装置、キュー管理システム |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210045760A (ko) * | 2019-10-17 | 2021-04-27 | 성균관대학교산학협력단 | 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치 |
KR102334237B1 (ko) * | 2019-10-17 | 2021-12-03 | 성균관대학교산학협력단 | 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치 |
US11360901B2 (en) | 2019-10-17 | 2022-06-14 | Research & Business Foundation Sungkyunkwan University | Method and apparatus for managing page cache for multiple foreground applications |
Also Published As
Publication number | Publication date |
---|---|
US20190286582A1 (en) | 2019-09-19 |
US20180322075A1 (en) | 2018-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101915944B1 (ko) | 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치 | |
US9430388B2 (en) | Scheduler, multi-core processor system, and scheduling method | |
US10248175B2 (en) | Off-line affinity-aware parallel zeroing of memory in non-uniform memory access (NUMA) servers | |
US11093352B2 (en) | Fault management in NVMe systems | |
CN108334396B (zh) | 一种数据处理方法和装置、资源组的创建方法和装置 | |
US10365980B1 (en) | Storage system with selectable cached and cacheless modes of operation for distributed storage virtualization | |
US11914894B2 (en) | Using scheduling tags in host compute commands to manage host compute task execution by a storage device in a storage system | |
US9842008B2 (en) | Cache affinity and processor utilization technique | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
CN111897637B (zh) | 作业调度方法、装置、主机及存储介质 | |
US11875198B2 (en) | Synchronization object issue detection using object type queues and associated monitor threads in a storage system | |
CN110196770A (zh) | 云系统内存数据处理方法、装置、设备及存储介质 | |
US9934147B1 (en) | Content-aware storage tiering techniques within a job scheduling system | |
CN116450328A (zh) | 内存分配方法、装置、计算机设备和存储介质 | |
KR101915945B1 (ko) | 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치 | |
US10430233B1 (en) | Scheduling computational tasks among multiple classes of storage resources based on job classification | |
WO2016187831A1 (zh) | 存取文件的方法、装置和存储系统 | |
EP3696674A1 (en) | Triggered operations for collective communication | |
US11327812B1 (en) | Distributed storage system with per-core rebalancing of thread queues | |
JP6364827B2 (ja) | 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム | |
US11886911B2 (en) | End-to-end quality of service mechanism for storage system using prioritized thread queues | |
Liu | Rethinking Storage System Design in Distributed NVRAM+ RDMA Clusters | |
CN115412515A (zh) | 一种基于fpga的存储空间分配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant |