KR20090007084A - 디스크 어레이 매스 프리페칭 방법 - Google Patents
디스크 어레이 매스 프리페칭 방법 Download PDFInfo
- Publication number
- KR20090007084A KR20090007084A KR1020070070719A KR20070070719A KR20090007084A KR 20090007084 A KR20090007084 A KR 20090007084A KR 1020070070719 A KR1020070070719 A KR 1020070070719A KR 20070070719 A KR20070070719 A KR 20070070719A KR 20090007084 A KR20090007084 A KR 20090007084A
- Authority
- KR
- South Korea
- Prior art keywords
- prefetching
- strip
- disk
- block
- cache
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
Abstract
순차적 읽기뿐만 아니라 공간 지역성을 가지는 비순차적 읽기에 대해서 디스크 읽기 성능 향상을 위해서, 호스트가 블록 읽기 요청을 하면, 그 블록이 속한 스트립을 모두 읽는다. 이것을 스트립 프리페칭(Strip Prefetching : SP)이라고 하겠다. 본 발명이 제안하는 조절 스트립 프리페칭(Throttled Strip Prefetching : TSP) 방법은 디스크 시뮬레이션으로 SP가 이득이 있는지 없는지 판단하여, 이득이 없는 것으로 판단되면 SP를 하지 않는다. 이렇게 TSP에 의해서 모든 프리페칭이 디스크어레이의 스트립에 정렬되므로 디스크 독립성이 향상되어 다수의 프로세스에 의한 동시 읽기에서 디스크어레이의 성능이 극대화된다. 하지만 TSP는 하나의 프로세스에 의한 단일 순차 읽기는 SP의 디스크 독립성으로 인하여 디스크 병렬성이 저하되는데, 이 문제를 해결하기 매시브 스트라이프 프리페칭(Massive Stripe Prefetching: MSP)을 제안한다. MSP는 블록 수준에서 단일 순차 읽기를 감지하는 알고리즘을 포함한다. 단일 순차 읽기가 감지되면 프리페칭은 스트라이프에 정렬되어 한개 이상의 스트라이프를 프리페칭한다. 그러므로써 디스크 병렬화를 극대화 한다.
프리페칭, 디스크어레이
Description
본 발명은 디스크 어레이 매스 프리페칭 방법에 관한 것으로서, 특히 공간 지역성을 가지는 순차적 또는 비순차적 디스크 읽기 성능이 향상되고 호스트의 블럭 읽기 요구에 따라 스트립 또는 스트라이프 단위로 블럭의 데이터를 프리페칭하는 디스크 어레이 매스 프리페칭 방법에 관한 것이다.
프리페칭 기술은 1960년대를 거슬러 올라가 프로세서가 캐쉬 라인 단위로 다수의 워드들을 미리 읽는 것으로 시작되었다. 그리고 현재 프로세서에서의 프리페칭 기술이 많이 개발되었으며, 이러한 프리페칭 기술은 디스크에서 메모리로 미리 읽는 디스크 프리페칭에도 다소 적용되었다. 프로세서에서의 프리페칭과 디스크 저장장치의 다른 특징으로 디스크만을 위한 프리페칭 기술이 많이 연구되었다. 디스크 프리페칭은 디스크의 읽기 비용을 낮추어 디스크 성능을 높이거나 연산동작과 디스크 입출력을 서로 겹치게 하여 시스템의 전체적인 성능을 높인다. 기존의 프리페칭 기술로써는 오프라인 프리페칭, 히스토리기반 온라인 프리페칭, 응용프로그램의 힌트를 사용하는 프리페칭, 그리고 순차적 프리페칭이 있다. 현재 순차적 프리 페칭 외에는 큰 오버헤드와 비일반성으로 인하여 실제적인 시스템에 사용되고 있지 않고, 순차적 프리페칭이 널리 사용된다.
이러한 종래의 디스크를 위한 프리페칭은 순차적인 디스크 읽기에만 적용될 수 있고, 디스크 어레이의 특징을 고려하지 않은 단점이 있다. 디스크 어레이를 고려하지 않아서 다수개의 프로세스가 다수개의 동시 순차적 읽기를 수행하면 프리페칭된 하나의 디스크요구가 두 개 이상의 디스크들에 걸치면 디스크 독립성 손실 문제를 야기한다. 하나의 디스크 요구가 여러 개의 디스크 자원을 소모함으로써 디스크어레이의 다수개의 디스크로 인한 이득이 감소되는 문제점이 있다.
또한 단일 프로세스가 단일 순차적 읽기를 수행하면, 기존 프리페칭 알고리즘은 디스크어레이의 구조를 모르기 때문에 디스크 병렬성을 극대화하지 못하는 문제점이 있다. 이 경우에 프리페칭의 크기가 작으면 디스크들이 순차적으로 동작하여 디스크 병렬화에 극심한 손실을 야기하고, 프리페칭의 크기가 크면 다수개의 동시 순차 읽기에 대해서 디스크 독립성 손실 문제를 야기한다.
상기와 같은 문제점을 해결하기 위한 본 발명에 따른 디스크 어레이 매스 프리페칭 방법은 비순차적 디스크 읽기에 대해 실용적인 프리페칭 알고리즘의 부재와 디스크어레이에 대한 고려가 없어서 발생하는 디스크 독립성 손실 문제 및 디스크 병렬성 손실 문제를 해결하는 새로운 프리페칭 알고리즘이 적용된 디스크 어레이 매스 프리페칭 방법을 제공하는 것을 목적으로 한다.
상기한 과제를 해결하기 위한 본 발명에 따른 디스크 어레이 매스 프리페칭 방법은 호스트가 디스크 어레이에게 소정의 블록을 읽을 것을 요청하는 제 1 단계, 스트립 프리페칭을 계속하지 않았다면 발생되는 디스크 비용과 스트립 프리페칭을 계속해왔다면 발생되는 디스크 비용을 현재의 캐쉬를 기반으로 디스크 시뮬레이션으로 계산하여 스트립 프리페칭이 현재 디스크 입출력에 이득인지를 판단하는 제 2 단계, 상기 판단결과 이득인 경우에 디스크어레이를 제어하는 구동기가 그 요청된 블록이 속한 스트립의 모든 블록들을 프리페칭하는 제 3 단계를 포함하여 이루어진다.
또한, 상기한 과제를 해결하기 위한 본 발명에 따른 디스크 어레이 매스 프리페칭 방법의 또 다른 특징은 호스트가 디스크 어레이에게 소정의 블록을 읽을 것을 요청하는 제 1 단계, 블록 수준에서 단일 순차 읽기인지 판단하는 제 2 단계, 상기 2 단계에서 단일 순차 읽기인 경우 스트라이프 프리페칭 크기를 두배씩 증가 시키는 제3 단계, 디스크어레이를 제어하는 구동기가 상기 스트라이프 프리페칭 크기만큼 그 요청된 블록이 속한 스트라이프의 블록들을 프리페칭하는 제 4 단계를 포함하여 이루어진다.
상기와 같이 구성되는 본 발명에 따른 디스크 어레이 매스 프리페칭 방법은 성능 향상을 보장하면서 순차적 읽기 뿐만 아니라 공간 지역성을 가지는 비순차적 읽기에 대한 디스크 어레이의 성능향상을 유발하고 디스크 독립성 손실문제를 해결하고 디스크의 병렬성을 극대화시켜 디스크 어레이를 사용하는 하드웨어 기반 RAID장치나 운영체제에 포함된 소프트웨어 기반 RAID의 읽기 성능을 혁신적으로 개선한다.
도 1은 4개의 디스크로 구성된 디스크 어레이에서 스트립 및 스트라이프의 구조의 일례가 도시된 도이다.
도 1 을 참조하면, 디스크 어레이는 네 개의 디스크(1~4)로 구성되고, 각 디스크는 데이터의 읽고 쓰는 단위인 블록(10)이 다수개 형성되어 있다.
디스크 어레이는 스트립(strip)과 스트라이프(stripe) 단위로 데이터가 디스크들에 분배되어 있다. 하나의 디스크에 속해 있고 블록 번호가 연속한 블록들의 집합을 스트립(20)이라고 하고, 디스크마다 동일 오프셋에 있는 스트립(20)들의 집합을 스트라이프(30)라고 한다.
본 발명에 따른 디스크 어레이 매스 프리페칭 방법은 공간 지역성을 가지는 순차적 또는 비순차적 디스크 읽기 성능을 향상시키고 디스크 독립성 손실 문제를 해결하기 위한 조절 스트립 프리페칭 (Throttled Strip Prefetching: 이하 TSP라 한다)과 디스크 병렬성 손실 문제를 해결하는 매시브 스트라이프 프리페칭 (Massive Stripe Prefetching : 이하 MSP라 한다)로 구성되어 있다.
상기 TSP와 MSP는 서로 공존이 가능하며, 각각 독립적으로 사용이 가능하며, 특히 TSP와 MSP를 동시에 사용할 때에 성능 향상이 극대화된다.
TSP는 온라인 디스크 시뮬레이션을 이용하여 스트립 프리페칭(Strip Prefetching: 이하 SP라 한다)을 가동하거나 중단시키는 알고리즘이다.
SP란 호스트가 디스크로 어떤 블록을 요청하면 프리페처는 그 블록이 속한 스트립의 모든 블록들을 읽는 프리페칭 방식이다. 작업부하에 따라서 SP가 이득일 수도 있고 아닐 수도 있다.
따라서, TSP는 현재 캐쉬에 있는 데이터가 SP를 사용하였을 때에 이득이 있었는지 아니었는지를 디스크 시뮬레이션을 통하여 판단한다.
도 2 내지 도 4는 디스크 어레이가 논리적인 하나의 블록장치로 표현되었을때의 저장공간이 도시된 도이다.
도 2 내지 도 4를 참조하면 SP가 어떻게 공간지역성을 가지는 비순차적 읽기에 대해서 효과적인지를 알 수 있다. 블록(101)은 저장장치의 입출력 기본 단위이고 저장장치가 디스크 어레이라면 블록(101)들은 스트립(100)들로 구분지어진다.
도 2는 비순차적 읽기의 첫째 단계에서 블록 및 스트립이 도시된 도이며, 도 3은 비순차적 읽기의 둘째 단계에서 블록 및 스트립이 도시된 도이다. 도 2 및 도 3을 참조하면, 첫째 단계에서 블록들이 비순차적으로 요구되어졌고, 둘째 단계에서도 비순차적이었지만 하나의 블록은 SP에 의해서 프리페치된 블록으로 첫번째 스트립(110)에서 캐쉬히트가 발생하였다.
도 3은 비순차적 읽기의 셋째 단계에서 블록 및 스트립이 도시된 도이다. 도 3을 참조하면, 셋째 단계에서는 추가로 두개의 스트립(120,130)에 속한 두 블록이 더 캐쉬히트 되었다. 디스크는 요구되는 블록으로 접근하는 시간은 오래 걸리지만 전송속도는 매우 빠르므로, 일단 한번 접근하면 요구된 블록 주위의 여러 블록들을 더 읽는 것은 낮은 오버헤드를 갖는다. 그러므로 SP에 의해서 불필요하게 읽게 되는 오버헤드 보다 캐쉬히트로 절략되는 량이 더 클 수도 있다. 하지만 어떤 경우에 그렇지 않은 경우도 있다. 그래서 본 발명에 따른 TSP는 현재 캐쉬의 데이터를 기반으로, SP수행이 현재 이익일지 아닐지 판단한다.
TSP에 있어서, 이 판단을 위하여 중요한 변수는 Ca와 Cn이다. Ca가 Cn보다 작으면 TSP는 SP를 가동하고, 그렇지 않으면 SP를 중지한다.
참고적 개념으로 SP를 계속 수행하는 것을 ASP라고 하고 SP를 계속 수행하지 않는 것을 NSP라고 설정한다. 그러면 Ca는 ASP로 동작되었을 경우에 캐쉬에 있는 모든 요구된 블록들을 읽기 위해 필요한 시간이다. Cn는 NSP로 동작되었을 경우에 캐쉬에 있는 모든 요구된 블록들을 읽기 위해 필요한 시간이다.
TSP는 실시간으로 SP를 가동 또는 중단하므로 Cn과 Ca는 실제로 디스크에 소 모된 시간이 아니다. 그래서 이 Cn과 Ca을 알아내기 위해 디스크 시뮬레이션을 해야 한다. 본 발명의 일실시예는 상기와 같이 Cn과 Ca을 이용하여 SP수행이 이득일지 아닐지를 계산하나, 보다 계산을 간단하게 하기 위해 또 다른 실시예를 다음과 같이 제시한다.
먼저 Cn과 Ca의 복잡성을 줄이기 위해서 와 를 정의한다. 는 Cn에서 스트립으로의 첫 번째 디스크 접근 시간들을 제거한 것이고, 마찬가지로 는 Ca에서 스트립으로의 첫 번째 디스크 접근시간들을 제거한 것이다. 그러면 과 는 다음 수식으로 정의된다.
단, Ns는 스트립 캐쉬들의 개수이고, Si는 i번째 스트립 캐쉬이고, 는 Cn의 Si 할당 부분에서 Si로의 첫 번째 접근 시간을 뺀 값이다. 접근시간이란 디스크의 회전 지연 및 헤드의 찾기 지연 및 고정 지연시간 등이고 디스크의 전송시간을 포함하지 않는다. 첫 번째 디스크 접근시간을 제거한다는 것은, 캐쉬되지 않은 스트립으로의 첫 번째 접근에서 디스크 접근시간을 계산하지 않는 것을 의미하고, 이는 전체적인 계산량을 줄이기 위함이다. 따라서 첫 번째 접근 시간을 빼지 않고 계산할 수도 있다.
스트립 캐쉬는 NSP와 ASP의 디스크 비용을 시뮬레이션하기 위해서 블록마다 요구비트를 가진다. 요구비트는 호스트가 그 블록을 요구했을 때에만 1이 되고, 그렇지 않은 경우에 0이 된다. 또한 스트립 캐쉬는 변수 와 를 포함하고 있다.
호스트가 요구한 블록이 현재 캐쉬에 있는 어느 스트립 캐쉬에도 속하지 않은 경우에는 새로운 스트립 캐쉬 Si를 할당해야 한다. 그리고 요구된 Si의 블록에 대해서 Si의 해당 요구비트를 1로 설정한다. 그리고 Si에 대해서 다음과 같은 수식으로 ,,, 변수들을 갱신한다.
새로운 스트립 캐쉬를 할당할 때에 메모리가 부족하다면 어떤 스트립 캐쉬를 메모리에서 퇴출(Eviction)해야 한다. 이때에 퇴출 되는 스트립 캐쉬 Si에 대해서 다음과 같은 연산을 수행한다.
SP에 의해서 프리페칭 되었지만 호스트로부터 요구되지 않았던 블록을 호스트가 요구하면 해당 요구비트를 1로 설정하고 다음과 같은 수식으로 관련 변수들을 설정한다.
이 경우 스트립 캐쉬 Si로의 첫 번째 접근이 아니므로 디스크 비용에 전송시간뿐만 아니라 접근 지연 시간을 디스크 시뮬레이터로 계산해야 한다. 간단한 디스크 시뮬레이터는 프로세서에 부담을 주지 않는 장점이 있고 복잡한 디스크 시뮬레이터는 보다 정확한 값을 제공할 수 있다. 본 발명은 디스크 시뮬레이터에 관점을 갖고 있지 않으므로, 어떤 디스크 시뮬레이터를 사용하든 상관이 없다.
다음으로, 본 발명에 따른 디스크 어레이 매스 프리페칭 방법의 또 다른 실시예로 캐쉬 오염 문제를 고려한 프리페칭 방법을 설명한다.
SP는 캐쉬 오염의 문제를 가지고 있다. SP로 인하여 디스크 읽기 성능은 향상되어도 미래에 전혀 사용되지 않는 블록들을 읽음으로써 캐쉬의 사용 효율을 떨어뜨리고 캐쉬의 히트율을 감소시킨다.
그래서 최종적으로 TSP는 Ca와 Cn만을 비교하여 SP를 제어하는 것이 아니라. 캐쉬오염의 정도를 디스크 시뮬레이션으로 파악하여 Ca와 Cn비교에 변경을 가한다.
Ss와 Sb는 고정값으로서 각각 캐쉬가 보유할 수 있는 최대 스트립의 개수와 최대 블록의 수로 정의된다. Ns와 Nb와 는 실시간으로 변경되는 변수이다. Ns는 현재 메모리가 보유하고 있는 스트립 캐쉬의 개수이고, Nb는 현재 캐쉬되어 있고 호 스트가 요구한 블록의 개수이다. 는 디스크 시뮬레이터로 구해지는 값으로서 현재 캐쉬가 캐쉬히트에 의해 절약된 시간단위의 디스크 비용이다. 는 다음과 같은 원리로 계산된다.
호스트가 요구한 블록이 캐쉬에 있고 그 블록의 요구비트가 1인 경우에 캐쉬히트로 간주된다. 이때에 그 블록에 대한 디스크 비용을 디스크 시뮬레이터로 계산한다. 그 디스크 비용을 Si의 변수 와 전역변수 에 더한다. 어떤 스트립 캐쉬 Si가 캐쉬에서 퇴출 될 때에 값을 에서 뺀다.
RAID(Redundant Arrays of Independent Disk)와 같은 저장장치는 호스트의 캐쉬 메모리의 RAID의 캐쉬 메모리가 물리적으로 분리되어 있고 전자가 후자보다 크다. 이때에 호스트와 RAID가 동일 캐쉬 치환 알고리즘을 적용한 경우에 캐쉬의 인클루젼 프라퍼티(Inclusion Property)가 성립하여 저장장치로 캐쉬된 메모리는 반드시 호스트의 캐쉬가 포함하기 때문에 저장장치에서 캐쉬히트가 발생하지 않는다. 그러면 는 항상 0이므로 연산량을 절감하기 위하여 캐쉬오염과 관련된 처리를 생략할 수 있다.
이상으로 조절 스트립 프리페칭(TSP)의 알고리즘을 설명하였다. TSP는 성능 향상을 보장하면서 순차적 읽기 뿐만 아니라 공간 지역성을 가지는 비순차적 읽기에 대한 디스크 어레이의 성능향상을 유발하고, 모든 디스크 요구가 하나의 디스크에 정렬되므로 디스크 독립성 손실 문제가 없다. 하지만 TSP는 단일 프로세서가 단일 순차적 읽기를 수행하면 디스크 병렬성 손실 문제를 가진다. 이 문제를 해결하 기 위해서 TSP와 함께 새로운 매시브 스트라이프 프리페칭(MSP)이라는 알고리즘이 사용되어야 한다.
매시브 스트라이프 프리페칭 방법(이하 MSP)은 블록 수준에서 단일 순차적 읽기를 감지해낸다.
여기서 단일 순차적 읽기란 단 하나의 프로세스 또는 쓰레드가 순차적 읽기를 수행하는 것을 의미하며, 단일 순차적 읽기가 발생할 때에, 프리페칭 크기가 스트라이프 크기보다 작아 모든 디스크를 동작시키지 못하기 때문에 디스크 어레이를 구성하는 디스크들의 병렬성의 손실을 야기할 수 있다.
단일 순차적 읽기가 감지되면 모든 프리페칭이 스트라이프에 정렬되고 프리페칭의 크기는 스트라이프의 정수배이다. 그리하여 최적의 디스크 병렬성을 보장한다.
여기서 프리페칭이 스트라이프에 정렬된다는 의미는 프리페칭에 의한 디스크 읽기 요구의 시작블록주소가 스트라이프를 구성하는 블록의 수로 나누어 나머지가 없고, 그 디스크 읽기 요구의 블록의 수가 스트라이프를 구성하는 블록의 수로 나누어 나머지가 없음을 의미한다.
여기서의 문제는 블록 수준에서 단일 순차적 읽기를 감지하는 것이다. 비록 하나의 파일에 대해서 순차적 읽기를 수행하더라도, 메타데이터와 데이터를 번갈아 읽어야 하므로, 블록 수준에서는 순차적이지 않다. MSP는 블록 수준에서 메타데이터와 데이터의 접근을 구분해내는 도5의 알고리즘을 포함한다.
도 5 는 본 발명에 따른 디스크 어레이 매스 프리페칭 방법 중 하나인 매스 스트라이프 프리페칭 방법이 도시된 순서도이다.
도 5를 참조하면, 본 발명에 따른 매스 스트라이프 프리페칭 방법에 적용되는 prev_pos, curr_pos, prev_prev_pos, seq_cnt, SPS 변수들이 사용된다. 또한, 미리 설정된 thresh_seq_cnt와 max_seq_cnt 상수도 사용된다. 상기 모든 변수들은 초기에 0으로 설정된다.
여기서, curr_pos는 현재 호스트가 요구한 블록의 스트라이프 번호를 말하며, prev_pos는 curr_pos의 바뀌기 전의 스트라이프 번호를 말한다.
다음으로, prev_prev_pos는 prev_pos의 바뀌기 전 스트라이프 번호를 말하며, 순차성 카운트(seq_cnt)는 순차적 읽기가 진행됨에 따라 0부터 시작하여 최대 카운트값(max_seq_cnt)까지 증가하는 변수이다. 반대로 순차성이 검출되지 않으면 감소한다. 변수 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 크면 스트라이프 프리페칭(stripe prefetching)이 수행된다.
또한, 상기 SPS는 스트라이프 프리페칭 크기를 말한다.
개념적으로는 seq_cnt가 주어진 알고리즘에 의해서 증가하거나 감소하는데 thresh_seq_cnt < seq_cnt를 만족하면 스트라이프 단위로 프리페칭을 하고 스트라이프 프리페칭 크기를 두배씩 증가시킨다. 보다 자세한 설명은 다음과 같다.
먼저, 호스트가 디스크어레이 제어기에 블록읽기를 요구한다(S200).
그러면, curr_pos 변수는 요구한 블록이 속한 스트라이프의 번호를 가지게 된다(S201).
다음으로, 현재 요구한 블록의 스트라이프 번호(curr_pos)와 그 이전에 요구 한 블록의 스트라이프 번호(prev_pos)가 같은지 비교하고(S202), 같으면 단일 순차성 검사를 종료한다(S210)
그렇지 않고, 상기 현재 요구한 블록의 스트라이프 번호(curr_pos)와 그 이전에 요구한 블록의 스트라이프 번호(prev_pos)가 다르면 ((prev_pos+1 = curr_pos) or (prev_prev_pos = curr_pos))가 참인지 검사한다. 즉, 현재 요구한 블록의 스트라이프 번호(curr_pos)가 그 바뀌기 전의 스트라이프 번호(prev_pos)+1과 같거나 바뀌기 전전의 스트라이프 번호(prev_prev_pos)와 같은지 검사한다(S203).
만약, 같다면 순차성 카운트(seq_cnt)를 1만큼 증가시키되 기 설정된 최대 카운트값(max_seq_cnt)을 넘기지 않는다(S204).
만약 거짓이면, 순차성 카운트(seq_cnt)가 0보다 크면 1만큼 감소시킨다(S209).
그리고 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 큰지 검사한다(S205).
여기서, 상기 소정의 기준값(thresh_seq_cnt)은 0보다 크고 최대 카운트값(max_seq_cnt)보다 작은 상수이다. 순차성 카운트(seq_cnt)가 상기 소정의 기준값(thresh_seq_cnt)보다 클 때에 순차성이 검출된 것으로 판단한다. 예를 들어 최대 카운트값(max_seq_cnt)는 8 로 설정될 수 있고, 소정의 기준값(thresh_seq_cnt)은 5로 설정될 수 있다.
순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 크다면 순차 성이 인정되어 스트라이프 프리페칭 크기(SPS)를 2배 증가시키되 기 설정된 스트라이프 프리페칭 크기(SPS)의 최대크기를 넘지 않는다(S206).
상기 스트라이프 프리페칭 크기를 증가시키는 이유는 단일 순차 읽기에서 프리페칭의 크기는 스트라이프 크기의 2배 이상일 때에 성능이 최대화 되는데, 만약 미래에 단일 순차 읽기를 더 이상 수행하지 않는 경우에 매우 큰 프리페칭 크기는 프리페칭의 낭비를 야기한다. 그러므로 처음 단일 순차 읽기가 검출되면 프리페칭의 크기를 소극적으로 1에서 시작하고, 계속해서 순차읽기가 진행됨에 따라서 프리페칭의 크기를 증가시키는 것이 효율적이다. 최대 스트라이프 프리페칭 크기는 2 또는 4 인 경우가 효율적이나 이에 한정되지 않는다.
그리고 현재 요구한 블록의 스트라이프 번호(curr_pos)에 해당하는 스트라이프에서 스트라이프 프리페칭 크기(SPS)에 해당하는 만큼의 스트라이프들을 프리페치한다(S207).
만약 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 적거나 같은 경우에는 스트라이프 프리페칭 크기(SPS)를 1개로 한다(S211).
그리고 prev_prev_pos는 prev_pos값으로 갱신되고, prev_pos는 curr_pos로 갱신(S208)된 후에 종료된다(S210).
이상과 같이 본 발명에 의한 디스크 어레이 매스 프리페칭 방법을 예시된 도면을 참조로 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 한정되지 않고, 기술사상이 보호되는 범위 이내에서 응용될 수 있다.
도 1은 4개의 디스크로 구성된 디스크 어레이에서 스트립 및 스트라이프의 구조의 일례가 도시된 도,
도 2는 비순차적 읽기의 첫째 단계에서 블록 및 스트립이 도시된 도,
도 3은 비순차적 읽기의 둘째 단계에서 블록 및 스트립이 도시된 도,
도 4는 비순차적 읽기의 둘째 단계에서 블록 및 스트립이 도시된 도,
도 5 는 본 발명에 따른 디스크 어레이 매스 프리페칭 방법 중 하나인 매스 스트라이프 프리페칭 방법이 도시된 순서도이다.
<도면의 주요 부분에 관한 부호의 설명>
1~4 : 디스크 10 : 블록
20 : 스트립 30 : 스트라이프
100 : 캐쉬된 스트립 110~130 : 캐쉬히트된 스트립
Claims (16)
- 호스트가 디스크 어레이에게 소정의 블록을 읽을 것을 요청하는 제 1 단계;스트립 프리페칭을 계속하지 않았다면 발생되는 디스크 비용과 스트립 프리페칭을 계속해왔다면 발생되는 디스크 비용을 현재의 캐쉬를 기반으로 디스크 시뮬레이션으로 계산하여 스트립 프리페칭이 현재 디스크 입출력에 이득인지를 판단하는 제 2 단계;상기 판단결과 이득인 경우에 디스크어레이를 제어하는 구동기가 그 요청된 블록이 속한 스트립의 모든 블록들을 프리페칭하는 제 3 단계를 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
- 청구항 1에 있어서,상기 제 2 단계는 스트립 프리페칭을 계속 수행하는 것을 ASP라 하고, 스트립 프리페칭을 계속 수행하지 않는 것을 NSP라고 할때 ASP로 동작되었을 경우에 캐쉬에 있는 모든 요구된 블록들을 읽기 위해 필요한 시간인 Ca 가 NSP로 동작되었을 경우에 캐쉬에 있는 모든 요구된 블록들을 읽기 위해 필요한 시간인 Cn보다 작은 경우에 스트립 프리페칭이 이득이라고 판단하는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
- 청구항 2에 있어서,상기 제 2 단계는 스트립 프리페칭으로 인한 프리페칭 오염에 의한 성능 감소를 고려하여, 상기 Ca에서 첫번째 디스크 접근 시간을 제거한 와 Cn에서 스트립으로의 첫 번째 디스크 접근 시간을 제거한 이 만족하는 경우에 스트립 프리페칭이 이득이라고 판단하고, 는 다음과 같은 수식으로 정의되는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
- 호스트가 디스크 어레이에게 소정의 블록을 읽을 것을 요청하는 제 1 단계;블록 수준에서 단일 순차 읽기인지 판단하는 제 2 단계;상기 2 단계에서 단일 순차 읽기인 경우 스트라이프 프리페칭 크기를 두배씩 증가시키는 제3 단계;디스크어레이를 제어하는 구동기가 상기 스트라이프 프리페칭 크기만큼 그 요청된 블록이 속한 스트라이프의 블록들을 프리페칭하는 제 4 단계를 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
- 청구항 11에 있어서,상기 제 2 단계는현재 요구한 블록의 스트라이프 번호(curr_pos)와 변경되기 전 스트라이프 번호(prev_pos)가 같은지 비교하는 제 1 과정;상기 제 1 과정의 비교결과 거짓이면, 현재 요구한 블록의 스트라이프 번호(curr_pos)가 변경되기 전 스트라이프 번호(prev_pos)+1 과 같거나 prev_pos의 변경되기 전 스트라이프 번호(prev_prev_pos)와 같은지 검사하는 제 2 과정;상기 제 2 과정의 비교결과가 참인 경우에는 최대 카운트값(max_seq_cnt)을 넘지 않는 범위내에서 순차성 카운트(seq_cnt)를 1만큼 증가시키고, 거짓인 경우에는 순차성 카운트(seq_cnt)가 0 보다 큰 경우에는 1만큼 감소시키는 제 3 과정;상기 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 큰 경우에는 단일 순차 읽기라고 판단하는 제 4 과정을 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
- 청구항 12에 있어서,상기 제 1 과정의 비교 결과 참이면, 단일 순차 읽기가 아니라고 판단하는 제 5 과정을 더 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
- 청구항 12에 있어서,상기 제 3 단계에서 상기 증가시킨 스트라이프 프리페칭 크기(SPS)는 기 설정된 최대 스트라이프 프리페칭 크기를 넘지 않는 것을 특징으로 하는 디스크 어레 이 매스 프리페칭 방법.
- 청구항 12에 있어서,상기 제 4 단계 이후에,상기 prev_pos의 변경되기 전 스트라이프 번호(prev_prev_pos)는 변경되기 전 스트라이프 번호(prev_pos)값으로 갱신되고, 상기 변경되기 전 스트라이프 번호(prev_pos)는 현재 요구한 블록의 스트라이프 번호(curr_pos)값으로 갱신되는 제 5 단계를 더 포함하여 이루어지는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
- 청구항 15에 있어서,상기 제 4 과정에서, 상기 순차성 카운트(seq_cnt)가 소정의 기준값(thresh_seq_cnt)보다 작거나 같은 경우에는 상기 스트라이프 프리페칭 크기(SPS)를 1개로 하고 상기 제 5 단계를 수행하는 것을 특징으로 하는 디스크 어레이 매스 프리페칭 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070070719A KR100900489B1 (ko) | 2007-07-13 | 2007-07-13 | 디스크 어레이 매스 프리페칭 방법 |
US11/968,370 US7822920B2 (en) | 2007-07-13 | 2008-01-02 | Mass prefetching method for disk array |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070070719A KR100900489B1 (ko) | 2007-07-13 | 2007-07-13 | 디스크 어레이 매스 프리페칭 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090007084A true KR20090007084A (ko) | 2009-01-16 |
KR100900489B1 KR100900489B1 (ko) | 2009-06-03 |
Family
ID=40254103
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070070719A KR100900489B1 (ko) | 2007-07-13 | 2007-07-13 | 디스크 어레이 매스 프리페칭 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7822920B2 (ko) |
KR (1) | KR100900489B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2732374A1 (en) * | 2011-07-11 | 2014-05-21 | Memory Technologies LLC | Mobile memory cache read optimization |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9141525B2 (en) * | 2011-01-31 | 2015-09-22 | International Business Machines Corporation | Adaptive prestaging in a storage controller |
US9395920B2 (en) | 2011-11-17 | 2016-07-19 | Mirosoft Technology Licensing, LLC | Throttle disk I/O using disk drive simulation model |
KR102074329B1 (ko) | 2013-09-06 | 2020-02-06 | 삼성전자주식회사 | 데이터 저장 장치 및 그것의 데이터 처리 방법 |
DE102016119620A1 (de) * | 2016-10-14 | 2018-04-19 | Fehling Instruments Gmbh & Co. Kg | Lehre für die Rekonstruktion eines Segels einer Aortenklappe |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223276B1 (en) * | 1998-03-31 | 2001-04-24 | Intel Corporation | Pipelined processing of short data streams using data prefetching |
US6954752B2 (en) | 2001-07-19 | 2005-10-11 | International Business Machines Corporation | Methods and apparatus for clustering and prefetching data objects |
US6877070B2 (en) * | 2002-07-23 | 2005-04-05 | Hitachi Global Storage Technologies Netherlands, B.V. | Method and apparatus for implementing command queue ordering with benefit determination of prefetch operations |
US7058767B2 (en) * | 2003-04-28 | 2006-06-06 | International Business Machines Corporation | Adaptive memory access speculation |
US7206795B2 (en) | 2003-12-22 | 2007-04-17 | Jean-Pierre Bono | Prefetching and multithreading for improved file read performance |
JP4151977B2 (ja) * | 2005-03-16 | 2008-09-17 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 先読み装置、先読み方法、および先読みプログラム |
US7529891B2 (en) * | 2005-09-19 | 2009-05-05 | Microsoft Corporation | Balanced prefetching exploiting structured data |
US7386675B2 (en) * | 2005-10-21 | 2008-06-10 | Isilon Systems, Inc. | Systems and methods for using excitement values to predict future access to resources |
US20070106849A1 (en) | 2005-11-04 | 2007-05-10 | Sun Microsystems, Inc. | Method and system for adaptive intelligent prefetch |
-
2007
- 2007-07-13 KR KR1020070070719A patent/KR100900489B1/ko not_active IP Right Cessation
-
2008
- 2008-01-02 US US11/968,370 patent/US7822920B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2732374A1 (en) * | 2011-07-11 | 2014-05-21 | Memory Technologies LLC | Mobile memory cache read optimization |
CN103907095A (zh) * | 2011-07-11 | 2014-07-02 | 内存技术有限责任公司 | 移动存储器高速缓存读取优化 |
EP2732374A4 (en) * | 2011-07-11 | 2015-04-15 | Memory Technologies Llc | OPTIMIZING THE READING OF THE CACHE OF MOBILE MEMORY DEVICES |
US9223707B2 (en) | 2011-07-11 | 2015-12-29 | Memory Technologies Llc | Mobile memory cache read optimization |
Also Published As
Publication number | Publication date |
---|---|
US7822920B2 (en) | 2010-10-26 |
KR100900489B1 (ko) | 2009-06-03 |
US20090019260A1 (en) | 2009-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9483404B2 (en) | Write admittance policy for a memory cache | |
KR100263524B1 (ko) | 알에이아이디 제어기 및 데이터 기록 방법 | |
JP3697149B2 (ja) | キャッシュ・メモリを管理する方法 | |
US20170185512A1 (en) | Specializing i/o access patterns for flash storage | |
EP0080875B1 (en) | Data storage system for a host computer | |
TWI393004B (zh) | 用於動態改變快取記憶體順序清單大小之系統以及方法 | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
US20100318744A1 (en) | Differential caching mechanism based on media i/o speed | |
US20080040553A1 (en) | Method and system for grouping tracks for destaging on raid arrays | |
US20130111160A1 (en) | Selective space reclamation of data storage memory employing heat and relocation metrics | |
US9996476B2 (en) | Management of cache lists via dynamic sizing of the cache lists | |
JP6711121B2 (ja) | 情報処理装置、キャッシュメモリ制御方法、およびキャッシュメモリ制御プログラム | |
KR100900489B1 (ko) | 디스크 어레이 매스 프리페칭 방법 | |
US6052822A (en) | Fast destaging method using parity engine | |
JP2014115851A (ja) | データ処理装置及びその制御方法 | |
CN115708075A (zh) | 用于在互连设备之间传输数据的系统、方法和装置 | |
EP2988222B1 (en) | Method and apparatus for efficiently destaging sequential i/o streams | |
KR101456370B1 (ko) | 스토리지 관리 방법 및 장치 | |
JP2001188658A (ja) | ディスク制御システムおよびデータ再配置方法 | |
US10949359B2 (en) | Optimizing cache performance with probabilistic model | |
US20040078544A1 (en) | Memory address remapping method | |
KR100981884B1 (ko) | 컴퓨터 저장장치에서의 프리페칭 데이터 관리 방법 | |
US11462266B1 (en) | Mitigating write disturbance errors of phase-change memory module | |
US20150039832A1 (en) | System and Method of Caching Hinted Data | |
TW201435579A (zh) | 用於從作業系統安裝映像檔的快照啓動多個伺服器之系統與方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120508 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20130429 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |