KR102478395B1 - 통지와 함께 백그라운드 활동을 효율적으로 관리하는 ssd를 위한 메카니즘 - Google Patents

통지와 함께 백그라운드 활동을 효율적으로 관리하는 ssd를 위한 메카니즘 Download PDF

Info

Publication number
KR102478395B1
KR102478395B1 KR1020170013948A KR20170013948A KR102478395B1 KR 102478395 B1 KR102478395 B1 KR 102478395B1 KR 1020170013948 A KR1020170013948 A KR 1020170013948A KR 20170013948 A KR20170013948 A KR 20170013948A KR 102478395 B1 KR102478395 B1 KR 102478395B1
Authority
KR
South Korea
Prior art keywords
host
background
data storage
storage device
ssd
Prior art date
Application number
KR1020170013948A
Other languages
English (en)
Other versions
KR20170120489A (ko
Inventor
오스카 핀토
비슈와나트 마람
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170120489A publication Critical patent/KR20170120489A/ko
Application granted granted Critical
Publication of KR102478395B1 publication Critical patent/KR102478395B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터 저장 장치에서 백그라운드 활동들을 관리하도록 호스트에 통지하는 방법이 개시된다. 방법은 호스트 OS로부터 쿼리를 수신하는 단계; 쿼리에 응답하여 호스트 OS에 데이터 저장 장치에서 수행된 백그라운드 작업들의 리스트를 전송하는 단계; 호스트 OS로부터의 하나 이상의 백그라운드 작업들 동안 임계값을 수신하는 단계; 임계 값에 관련된 타임아웃 값을 세팅하는 단계; 타임아웃 값을 호스트 OS에 결정하고 통지하는 단계; 백그라운드 작업 동안 임계값에 도달하였는지를 결정하는 단계; 및 호스트 OS에 타임아웃 값이 완료된 후 SSD가 데이터 저장 장치에서 백그라운드 작업을 수행할 수 있다는 것을 통지하는 단계를 포함한다.

Description

통지와 함께 백그라운드 활동을 효율적으로 관리하는 SSD를 위한 메카니즘{MECHANISM FOR SSDS TO EFFICIENTLY MANAGE BACKGROUND ACTIVITY WITH NOTIFY}
본 발명은 일반적으로 저장장치들에 관련되고, 좀 더 상세하게는 통지 메시지들과 함께 SSD의 백그라운드 활동들을 관리하기 위한 시스템 및 방법에 관련된 것이다.
SSDs(Solid state drives)는 일반적인 하드 드라이브와 비교하여 높은 입/출력(I/O) 성능을 제공하고, 낮은 대기 시간들(latencies)을 제공한다. 데이터 센터들 및 기업들은 대기 시간들에 대한 그들의 증가되는 과민성으로 인해 SSD를 사용한다. SSD는 낮은 쓰기 및 읽기(또는 입/출력(I/O)) 대기 시간들을 제공함에도 불구하고, 숨겨진 대기 시간들을 추가할 수 있는 미디어 소거 및 관련된 GC(garbage collection) 요구들과 같은 피할 수 없는 백그라운드 활동들을 가진다. 이러한 숨겨진 대기 시간들은 I/O 동작들 동안에 나타날 수 있으며, I/O 트랜잭션들(transactions)에 대한 서비스 품질(quality of service, QoS)의 일관성이 없게 한다. 서로 다른 SSD 공급업체들은 다양한 메커니즘들에 적응해 오면서, 상기 숨겨진 대기 시간 문제들을 고심해왔다. SSD의 I/O 동작들을 위한 일관적인 대기 시간들을 얻기 위한 일반적인 접근법은 소프트웨어 제어 솔루션을 공급하여, 호스트 소프트웨어 레이어(계층)에서 백그라운드 활동들을 제어하고 관리하는 것이다.
전형적인 소프트웨어 제어 솔루션은 SSD에서 백그라운드 관리 동작들을 비활성화 시키고, 그것 들을 호스트 소프트웨어 레이어(즉, 글로벌 FTL(flash translation layer))에서 구현하도록 함으로써, 숨겨진 대기시간 문제들을 다룬다. SSD는 제어 메커니즘들을 가지고, 선택적으로 백그라운드 관리 동작들을 활성/비활성 시킬 수 있다. 상기 소프트웨어 제어 솔루션들은 백그라운드 동작들을 관리하기 위한 이른바 “지능(intelligence)”을 호스트 운영 체제(operating system, OS)의 I/O 스택 레이어에 강요함으로써, SSD를 범용화해왔다.
소프트웨어 제어 접근법들은 숨겨진 대기 시간 문제들을 완화하는 데에 효과적인 솔루션들인 반면에, 이러한 범용화는 현재의 SSD가 누리고 있는 탁월함, 통제력, 및 차별성을 저하시키고 충분히 활용하지 못하게 한다. 소프트웨어 제어 접근법들은 일부 저장 드라이브 공급 업체들과 호환되는 솔루션들을 제공할 수 있으나, 그들은 SSD의 제어 가능성 및 관리 가능성을 제한하면서 호스트 소프트웨어 레이어에 더 많은 중요성을 부가할 수 있다. 이러한 문제를 해결하기 위해서, OS(operating system) 공급 업체들은 표준화를 통해서 서로 다른 장치 유형 상에 높은 레벨의 제어를 제공하는 시도를 해오고 있다.
그러나, 일반적으로 적용되는 기능을 제공하는 소프트웨어 제어 접근법들은 모든 드라이브 유형들 및 모든 백그라운드 관리 동작들에 적합하지 않을 수 있다. 소프트웨어 제어 솔루션들의 일부는 단지 SSD의 가비지 컬렉션(garbage collection) 동작만으로 제한된다. 게다가 소프트웨어 제어 솔루션들은 컨트롤러 아키텍쳐(architecture)의 미디어 레이아웃 및 복잡성들에 영향을 줄 수 있는 기술에서의 향후 변경 사항들 및 개선 사항들을 필수적으로 고려하지 않는다. 예를 들어, 새로운 SSD 기술은 새로운 블록/영역을 소거하기 위한 부기(bookkeeping) 체계, 새로운 블록 계산, 새로운 블록 크기 L2P(logical-to-physical) 매핑 등을 채택할 수 있다.
장치 제조자들은 보통 그들 고유의 하드웨어를 위한 동작 구조 및 데이터 레이아웃에 관한 지식을 호스트 OS의 일반 소프트웨어 레이어에 대한 지식보다 더 많이 가지고 있다. 3D 수직 NAND와 같은 새로운 기술에 대해서는, SSD 백그라운드 동작들을 제어하고 관리하는 일반화된 소프트웨어 제어 접근법은 적합하지 않을 수 있다. 예를 들어, SSD의 숨겨진 대기 시간 문제들을 완화하기 위해 의도된 글로벌(포괄적인) FTL(flash-translation layer)과 같은 호스트 OS 레이어는 SSD의 레이아웃 및 컨트롤러 아키텍쳐 복잡성들을 고려하지 못할 수 있다. 스태킹(stacking) 기술이 더 밀도가 높아짐에 따라, 실제의 I/O 데이터 배분이 더 많이 복잡해 질 수 있는데, 이는 SSD 공급 업체가 RAID(Redundant Array of Independent Disk) /stripe를 채택하거나 또는 하드웨어 용량들 및 제품 특화된 설계들에 기초하여 특화된 배치들을 적용하기 때문이다. SSD 공급 업체가 최상의 I/O 경로, 대기 시간 관리, 및 내구성을 위한 제어를 유지하는 것을 선택하는 것이 더 중요하다. 게다가 호스트에 의해 관리되는 알고리즘들은 비싼 CPU 싸이클들을 소비하는 경향이 있고, 추가적인 전력을 소비하면서도 시스템의 성능을 제한하는 경향이 있다.
본 발명은 일반적으로 저장장치에 관련되고, 좀 더 상세하게는 통지 메시지와 함께 SSD의 백그라운드 활동을 관리하기 위한 시스템 및 방법에 관련된 것이다.
본 발명의 일 실시예에 따르면, 방법은 호스트 OS로부터 쿼리를 수신하는 단계; 쿼리에 응답하여 호스트 OS에 데이터 저장 장치에서 수행된 백그라운드 작업들의 리스트를 전송하는 단계; 호스트 OS로부터의 하나 이상의 백그라운드 작업들 동안 임계값을 수신하는 단계; 임계값에 관련된 타임아웃 값을 세팅하는 단계; 타임아웃 값을 호스트 OS에 결정하고 통지하는 단계; 백그라운드 작업 동안 임계값에 도달하였는지를 결정하는 단계; 및 호스트 OS에 타임아웃 값이 완료된 후 SSD가 데이터 저장 장치에서 백그라운드 작업을 수행할 수 있다는 것을 통지하는 단계를 포함한다.
또 다른 실시예에 따르면, 데이터 저장 시스템은 데이터를 저장하는 데이터 저장 장치; 호스트 OS를 동작시켜 I/O 동작을 수행하여 데이터 저장 장치에 저장된 데이터에 액세스하는 호스트 컴퓨터; 및 데이터 저장 장치 및 호스트 컴퓨터 사이의 인테페이스를 포함한다. 데이터 저장 장치 및 호스트 OS는 비동기 메시지를 교환하고, 비동기 메시지는 호스트 OS로부터의 쿼리; 데이터 저장 장치에서 수행되는 백그라운드 작업의 리스트를 포함하는 쿼리에 응답하여 제1 응답; 하나 이상의 백그라운드 작업에서의 임계값; 임계값에 연관된 타임아웃 값; 임계값에 연관된 타임아웃 값을 포함하는 제2 응답; 및 백그라운드 작업 동안의 임계값이 도달하였고, 백그라운드 작업이 타임아웃 값이 완료된 후에 수행되었다는 것을 호스트 OS에 통지하는 비동기 통지를 포함한다.
구현 및 이벤트들의 조합의 다양한 신규한 세부 사항을 포함하는 전술한 내용 및 다른 바람직한 특징은 첨부된 도면을 참조하여 보다 구체적으로 설명될 것이며 청구 범위에서 지시될 것이다. 본 명세서에서 기술된 특정 시스템 및 방법은 단지 예시로서 도시되는 것이고, 도시에 의해서 제한되는 않는 것은 자명할 것이다. 당업자가 이해할 수 있는 바와 같이, 본원 발명에 기재된 원리 및 특징은 본 개시 본 명세서에 개시된 범위를 벗어나지 않고 다양하고 많은 실시예에서 사용될 수 있다.
본 발명의 일 실시예에 따르면, 본 발명의 비동기 통지 특징은 쓰기 및 읽기 집중(intensive) 어플리케이션에서 사용될 수 있다. 쓰기 및 읽기 집중 어플리케이션은 예를 들어, 맵/감소 프로그래밍 모델일 수 있다. 맵 감소 프로그래밍 모델은 빅 데이터 프로세싱 모델을 구현하는 데에 유용할 수 있고, 빅 데이터 프로세싱 모델에서, 데이터 저장 용량은 크고, 작업들은 수 많은 노드들에 분산될 수 있다.
본 발명의 상세한 설명에 포함된 첨부된 도면들은 현재 바람직한 실시예 및 상기 주어진 일반적인 설명 및 본 명세서에서 설명된 원리를 설명하고 교시하는 아래에 주어진 바람직한 실시예의 세부 설명의 조합을 설명한다.
도 1은 본 발명의 일 실시예에 따른 SSD 및 호스트 OS 사이의 비동기 통지 특징을 구현하기 위한 예시적인 프로세스를 설명하고 있다.
도 2는 본 발명의 일 실시예에 따른 백그라운드 작업에 대한 허용 범위 힌트(tolerance hint)를 통지하기 위한 예시적인 프로세스를 설명하고 있다.
도 3은 본 발명의 일 실시예에 따른 쓰기 및 읽기 집중 어플리케이션의 예시를 설명하고 있다.
도 4는 본 발명의 일 실시예에 따른 비동기 통지를 이용하여 SSD의 백그라운드 작업을 수행하기 위한 예시적 흐름도이다.
도면은 반드시 축척대로 그려진 것은 아니며, 유사한 구조 또는 기능의 요소는 도면 전체에 걸쳐 예시적 목적을 위해서 동일한 참조 번호로 일반적으로 표시된다. 도면들은 본 명세서에 기재된 다양한 실시 예들의 설명을 용이하게 하기 위한 것이다. 도면은 본원에 개시된 교시의 모든 양상을 기술하지 않으며 청구항의 범위를 제한하지 않는다.
본 명세서에서 논의되는 특징들 및 도출예들 각각은 분리되어 이용될 수
있거나 다른 특징들 및 도출예들과 결합되어 SSD가 효과적으로 통지 메시지와 함께 백그라운드 활동들을 관리하도록 메커니즘을 제공할 수 있다. 단독적 혹은 조합으로써 많은 상기 특징들 및 도출예들을 이용하는 대표적인 예시들은 첨부된 도면들을 참조하여 후술된다. 상세한 설명은 본 발명의 실시예를 실행하기 위한 상세한 내용을 당업자에게 교시하기 위한 것이고, 청구항의 범위를 제한하려는 것은 아니다. 그러므로, 상세한 설명에서 상기 개시된 특징들의 조합은 가장 넓은 의미에서 교시를 수행하는데 필수적이지 않을 수 있고, 대신에 단지, 본 발명의 특별한 실시예들을 설명하기 위해서 교시된다.
이하의 설명에서는 단지 설명의 목적으로, 특정 명칭이 본 명세서의 완전한 이해를 제공하기 위해 제시된다. 그러나, 당업자에게는 이러한 특정 세부 사항이 본 명세서의 교시를 실행하는데 요구되지 않는다는 것은 자명할 것이다.
본 명세서의 상세한 설명의 일부분은 컴퓨터 메모리 내의 데이터 비트에 대한 연산의 알고리즘 및 심볼 표현으로 제공된다. 이러한 알고리즘 설명 및 표현은 데이터 처리 기술 분야의 당업자가 그들의 작업 내용을 당업자에게 효과적으로 전달하기 위해 사용된다. 알고리즘은 일반적으로 원하는 결과를 유도하는 단계의 일관성있는 순서로 간주된다. 상기 단계는 물리적 양을 물리적으로 조작해야 하는 단계이다. 반드시 그런 것은 아니지만, 일반적은 상기 양은 저장, 전송, 결합 비교, 및 기타 조작이 가능한 전기 또는 자기 신호의 형태를 가진다. 원칙적으로 일반적인 사용을 이유로, 상기 신호들을 비트, 값, 요소, 기호, 문자, 용어, 숫자 등으로 참조하는 것이 때때로 편리하다고 증명되어 왔다.
그러나, 이러한 모든 용어 및 유사한 용어는 적절한 물리적 양과 관련되어야 하며, 단지 이러한 양에 적용되는 편의로 사용되는 지시어라는 것을 염두해 두어야 한다. 이하의 설명으로부터 명백하게 달리 구체적으로 언급되지 않는 한 “처리”, “연산”, “계산”, “결정”, “디스플레이” 등과 같은 용어를 사용하는 논의는 컴퓨터 시스템의 동작 및 프로세스 또는 이와 유사한 연산 장치의 동작 및 프로세스를 지칭하는 것으로 이해되고, 상기 연산 장치는 컴퓨터 시스템의 레지스터 및 메모리 내의 물리(전자) 양으로 표현된 데이터를 컴퓨터 시스템 메모리, 레지스터, 다른 정보 저장 장치, 전송 또는 디스플레이 장치 내에서 물리적 양으로 유사하게 표현되는 다른 데이터로 조작 및 변환한다.
본 명세서에서 제시되는 알고리즘은 본질적으로 특정 컴퓨터나 다른 장치와 관련이 없다. 다양한 범용 시스템, 컴퓨터 서버, 또는 개인용 컴퓨터가 본 명세서의 교시에 따라 프로그램과 함께 사용될 수 있거나, 더 특수화된 장치를 구성하여 요구되는 방법 단계들을 수행하는 것이 더 편리할 수 있다. 다양한 시스템에서 필요한 구조는 후술될 것이다. 여기서 설명된 바와 같이 본 발명의 개시 내용을 구현하기 위해서 다양한 프로그래밍 언어가 사용되리 수 있다는 것은 자명할 것이다.
게다가 대표 예 및 종속항의 다양한 특징은 추가적인 본 발명의 유용한 실시예를 제공하기 위해서 구체적 및 명시적으로 열거되지 않은 방식으로 결합될 수 있다. 또한 기업 집단들의 모든 가치 범위 및 지시들은 원래 공개 목적을 위한 것뿐만 아니라, 청구된 클레임의 특징을 제한하기 위해서 모든 가능한 중간 가치, 중간 실체를 공개하는 것은 또한 명시적으로 언급되어 있다. 또한 도면에 도시된 구성 요소의 치수 및 형상은 본 발명의 교시가 어떻게 수행되는지를 이해하도록 돕기위한 것이지만, 실시예에 도시된 치수 및 형상을 제한하고자 하는 것이 아닌 것은 명시적으로 또한 언급되어 있다.
본 명세서는 호스트 운영 체제(OS)에서 SSD에 의해서 개시되는 백그라운드 활동 통지들을 조정하기 위한 시스템 및 방법을 제공한다. 전통적인 호스트 관리 알고리즘들은 시스템의 성능을 제한하고 추가 전력을 소비하면서도 고비용의 CPU 사이클들을 소비하는 경향이 있다. 백그라운드 활동 통지들을 조정하기 위한 본 시스템 및 방법은 개선된 성능 및 연산 자원들과 전력에 대한 시스템 레벨 세이빙들(savings)을 제공한다. 본 비동기 통지 체계는 보다 밀집된 구성(set up)을 구비한 데이터 저장 시스템에 적절하게 적용될 수 있다. SSD 및 호스트 OS 사이의 조정은 일반적으로 전경(foreground) 소프트웨어 응답에 영향을 주는 백그라운드 활동들을 SSD가 개시하는 경우에 발생하는 대기 시간들을 피할 수 있다.
일 실시예에 따라, 본 명세서는 SSD가 미디어 소거 및 가비지 컬렉션(garbage collection)과 같은 백그라운드 업무들을 호스트 소프트웨어/제어기에 통지하도록 하는 비동기 통지 메커니즘을 제공한다. SSD는 비동기 통지들을 호스트 OS에 제공하기 위한 하나 이상의 비동기 통지 정의들을 통해서 제공될 수 있다. 게다가, 본 명세서에 개시된 기술은 호스트 소프트웨어/제어기가 표준 인터페이스(즉, NVM(non-volatile memory) Express(NVME), SATA(Serial AT Attachment), SAS(Serial Attached SCSI(Small Computer System Interface))를 통해 이러한 비동기 통지들에 동의하고, 그리고 SSD로부터 수신되는 비동기 통지들에 대한 처리를 하기 위한 방법을 제공하는 것이다. 호스트 OS에 의해서 수행되는 처리들의 예는 SSD에 의해서 통지된 데이터 저장 블록 또는 영역에 대한 I/O 동작들을 연기 또는 지연시키고, SSD가 상세한 설명들을 지원하는 경우, 영향 받은 블록들 또는 영역들의 서브 집합의 우선 순위를 해제시키고, 선행 통지가 계획된 시작 시간을 제공하는 경우, 즉시 백그라운드 동작들을 시작하도록 SSD를 지시하고, 및 SSD에 통지된 동작을 지연하도록 지시하는 것을 포함하는 몇몇 예를 들 수 있지만 이에 한정되지 않는다.
도 1은 본 발명의 일 실시예에 따른 SSD와 호스트 OS 사이에 비동기 통지 특징을 구현하는 예시적인 프로세스를 설명하고 있다. 본 비동기 통지 특징은 디스커버리 상태(101), 프로그램 상태(102), 및 하나 이상의 통지 상태들, 예를 들어 통지 상태(103, 104, 105)를 포함하는 복수의 상태들에서 구현될 수 있다. 디스커버리 상태(101) 및 프로그램 상태(102)에서 호스트 OS(151) 및 SSD(152)는 백그라운드 작업들을 위한 통지를 제공하기 위한 조건들에 동의한다. 상기 상태들에서 SSD(152)는 프로그래밍되어 호스트 OS(151)와 동의되는 계획에 따라 백그라운드 활동들을 수행할 수 있다. 일단 SSD(152)가 성공적으로 프로그래밍되면, SSD(152) 및 호스트 OS(151)는 현재 비동기 통지에 따른 백그라운드 작업들을 수행할 준비가 된다. 통지 상태들(103, 104, 및 105)에서 SSD(152)는 통지를 호스트 OS(151)에 보내서, 특정 백그라운드 작업이 기 설정된 타임 윈도우에서 수행될 예정이고, 후에 계획된 백그라운드 작업이 완료될 것이라는 정보를 호스트 OS(151)에게 알린다. 호스트 OS(151) 및 SSD(152) 사이의 통신은 특별히 달리 지시되지 않는 한 비동기되는 것에 유의하여야 한다.
디스커버리 상태(101)에서, 호스트 OS(151)는 SSD(152)에 백그라운드 통지 특징을 문의(쿼리)할 수 있다. 쿼리에 응답하여, SSD(152)는 SSD(152)가 호스트 OS(151)에 노출시키길 원하는 백그라운드 작업들의 리스트를 전송한다. 상기 백그라운드 작업들의 예시는 미디어 소거 및 가비지 컬렉션과 같은 백그라운드 작업들을 포함하지만 이에 한정되지 않는다. SSD(152)는 백그라운드 작업들 중 하나 이상의 유형들 및 호스트 OS(151)에 노출시킬 그들의 레벨을 선택할 수 있다. 호스트 OS(151)가 SSD(152)에 쿼리를 전송하는 경우, 호스트 OS(151)는 예를 들어, 호스트 유형, 호스트에 이용 가능한 리소스들, 호스트 OS(152)의 버전과 같은 호스트 정보를 SSD(152)에 제공할 수 있다. 호스트 OS(151)로부터 수신된 호스트 정보에 의존하여, SSD(152)는 백그라운드 작업들 중 서로 다른 유형들을 호스트 OS(151)에 노출시킬 수 있다.
프로그램 상태(102)에서, 호스트 OS(151)는 SSD(152)를 프로그래밍하여, 노출된 백그라운드 작업들을 위한 조건들을 구현할 수 있다. 일 실시예에 따라, 호스트 OS(151)는 SSD(152)의 임계값을 프로그래밍하여 호스트 OS(151)에 백그라운드 작업이 수행되는 것이 필요하다는 것을 알릴 수 있다. 대안적으로, SSD(152)는 디스커버리 상태(101)에서 호스트 OS(151)로부터 수신된 정보와 결합하여 자기 자신의 유형, 제조업체, 저장 용량을 포함하는 다양한 변수들에 근거하는 임계값을 프로그래밍할 수 있다. 임계값에 도달한 경우, SSD(152)는 임박한 백그라운드 작업에 대응하는 타임아웃 값을 세팅할 수 있다. 타임아웃은 계획된 백그라운드 작업이 시작하기 전에 카운트다운 시간으로써 정의될 수 있다. 백그라운드 작업들의 유형에 의존하여, 호스트 OS(151)는 임계값 및 타임아웃을 다르게 프로그래밍 할 수 있다. 타임아웃은 백그라운드 활동의 유형에 관련된 것에 더 더 구체적 이도록 서술적으로 정의될 수 있다.
일부 실시예들에서, 호스트 OS(151)는 임계값을 프로그래밍할 수 있고, SSD(152)는 타임아웃 값을 결정할 수 있고, 호스트 OS(151)에 통지할 수 있다. 다른 실시예들에서, SSD(152) 및 호스트 OS(151)는 협상을 통해서 타임아웃 값을 세팅할 수 있다. SSD(152)가 타임아웃 값과 관련하여 일단 호스트 OS(151)와 동의하면, SSD(152)는 타임아웃 값에 동의한다는 것을 승인하면서 성공 메시지를 호스트 OS(151)에 전송할 수 있다. 프로그램 상태(102)는 호스트 OS(151) 및 SSD(152)가 모든 노출된 백그라운드 작업들을 위한 임계값들 및 타임아웃 값들에 동의한 후에 완료될 수 있다.
호스트 OS(151) 및 SSD(152) 사이에서의 동의가 이루어지면, SSD(152)는 임의의 노출된 백그라운드 작업들을 곧 수행할 것이라는 것을 통지하기 위해 호스트 OS(151)에 비동기 통지들을 전송할 준비가 된다. 통지 상태(103)에서 SSD(152)는 비동기 통지를 호스트 OS(151)에 제공하여, 백그라운드 작업에 관련된 프로그래밍된 임계값이 도달한 경우, 특정 백그라운드 작업을 곧 수행할 것이라는 통지를 한다. 예를 들어, 백그라운드 작업이 가비지 컬렉션인 상황에서, SSD(152)는 SSD(152)의 가상 블록이 가득차거나, 또는 SSD(152)에서 프리 페이지들의 개수가 프로그래밍된 임계값보다 작은 경우에 가비지 컬렉션을 수행하는 것으로 계획될 수 있다. 이에 응답하여, 호스트 OS(151)는 승인 메시지를 SSD(152)에게 전송할 수 있다. SSD(152)는 통지를 호스트 OS(151)에 전송한 후에 백그라운드 작업에 연관된 타임아웃 카운터를 시작할 수 있다.
SSD(152)는 추가적인 세부사항들을 백그라운드 작업의 비동기 통지의 일부로써, 호스트 OS(151)에 제공할 수 있다. 일 실시예에 따라, 통지 상태(104)에서, SSD(152)는 후속 통지를 호스트 OS(151)에 전송하여, 통지 상태(103)에서 통지된 계획된 백그라운드 작업들에 관해서 추가적인 세부사항들을 제공할 수 있다. 통지 상태(104)에서의 통지는 옵션일 수 있다.
통지 상태(104)에서 SSD(152) 및 호스트 OS(151)는 통지 상태(103)에서 계획된 백그라운드 작업의 유형 및/또는 SSD(152)의 유형을 위한 특정된 구현에 의존하여 추가적인 쿼리(query)들 및 응답들을 통해 더 협상할 수 있다. 일 실시예에서, 호스트 OS(151)는 펜딩(pending) 백그라운드 작업이 시작하기 전에 타임아웃을 할당 해제하거나 트림(trim)하는 요청을 발행할 수 있다. 또 다른 실시예에서, 호스트 OS(151)는 재 계획 요청을 SSD(152) 전송하여, 추가적인 시간에 의해서 펜딩 백그라운드 작업을 위한 타임아웃을 더 지연시킨다. 자체적인 내부 조건들에 근거하여, SSD(152)는 호스트 OS(151)로부터 재 계획 요청을 받아들이거나, 거절할 수 있다.
통지 상태(104)에서의 후속 통지에서, SSD(152)는 통지 상태(103)에서 계획된 백그라운드 작업에 관하여 추가적인 정보를 호스트 OS(151)에 전송할 수 있다. 일 실시예에서, SSD(152)는 백그라운드 작업이 SSD(152)에서 수행되는 경우, 이용 가능하지 못하게 될 수 있는 SSD(152) 내의 영향을 받은 데이터 저장 블록들 및 영역들을 지시할 수 있다. 또 다른 실시예에서, SSD(152)는 또한 호스트 OS(151)에 백그라운드 작업을 완료하기 위한 추정된 시간을 제공할 수 있다. 예를 들어, 백그라운드 작업에 의해서 영향을 받은 영역들은 SSD(152)의 물리적 영역인 블록들, 또는 일부 경우들에서는, 네임 스페이스 또는 호스트 OS(151)에 알려진 다른 표기법들(notations)과 같은 더 큰 영역들 일 수 있다. 일부 실시예들에서, SSD(152)는 소거 블록들 및 소거 구역들(zones)과 같은 내부 영역들을 노출시키지 않도록 선택 할 수 있다. 기능이 적은 SSD에 대해서는, SSD(152)는 전체 어드레스 스페이스의 일부분인 사용될 수 없는 영역을 단지 지시하는 대신에 그것의 전체 어드레스 스페이스를 사용할 수 없는 것으로 표시할 수 있다. 이에 응답하여, 호스트 OS(151)는 승인 메시지를 SSD(152)에 전송한다.
통지 상태(105)에서, SSD(152)는 계획된 백그라운드 작업이 완료된 것을 호스트 OS(151)에 통지 할 수 있다. 이에 응답하여, 호스트 OS(151)는 승인 메시지를 SSD(152)에 전송한다.
일부 실시예들에 따라서, 호스트 OS(151)는 백그라운드 작업 허용 범위 힌트들을 제공할 수 있다. 도 2는 본 발명의 일 실시예에 따른 백그라운드 작업 동안 허용 범위 힌트를 통지하기 위한 예시적인 프로세스를 설명한다. 이 특징과 함께, 호스트 OS(151)는 사용할 수 없는 영역이 그것의 유효 데이터 세트의 일부분이거나, 펜딩중인 요청의 일부인 것인지 여부를 결정하고, 그리고 I/O 요청을 동일한 데이터를 저장하는 대체 SSD로 라우팅(route)한다. 일부 실시예들에서, 호스트 OS(151)는 읽기 요청들을 다른 SSD에 라우팅하는 것을 선택할 수 있지만, 단지 현재 SSD(152)에 국한하여 쓰기들을 발행하는 것을 선택할 수 있다.
본 비동기 통지 특징은 새로운 산업 표준 정의를 위한 규격(specification)의 일부가 되거나, 공급 업체가 특정하는 정의를 사용할 수 있다. 일 실시예에서, 본 비동기 통지 특징은 NVMe 규격 내에서 사용될 수 있다. 또 다른 실시예에서, 본 비동기 통지는 SATA 규격의 일부로써 정의되고 구현될 수 있다. 또 다른 실시예에서, 본 비동기 통지 특징은 SAS 규격의 AEN(asynchronous event notification) 메커니즘의 일부로써 정의되고 구현될 수 있다. 본 비동기 통지 특징을 적용하는 예시적인 환경들 및 사용들은 클러스터 및 분산 환경들, 데이터의 용량 및 워크로드들(workloads)의 특정 유형들에 대한 요구가 기하 급수적으로 늘어날 수 있는 하이퍼 스케일(hyperscale) 환경들, 및 HA(high availability) 사용들을 포함하지만 이에 한정되지 않는다. 본 비동기 통지 특징은 호스트 OS에 SSD들의 상태들에 대한 유용한 정보를 공급할 수 있고, 호스트 OS가 적절하게 SSD들로부터 수신된 비동기 통지들에 대해서 동작하도록 한다.
본 비동기 통지 특징은 SSD의 특정 유형(예를 들어, NVMe SSDs)에 한정되지 않고, 호스트 OS와 SSD 사이에서 구현되는 비동기 이벤트 통지 특징을 구비한 다양한 저장 장치들 및 환경들에 적용될 수 있다. 일부 실시예들에서, 본 비동기 통지 특징은 공급 업체의 규격일 수 있다. 또한, 본 비동기 통지 특징은 메모리 장치의 특정 유형(예를 들어, NAND Flash)에 한정되지 않는다. 다른 비휘발성 메모리 솔루션들은 QoS 및/또는 예측 가능한 IOPS(Input/Output Operations Per Second)에 영향을 주는 백그라운드 관리 프로세싱을 위한 유사한 요구 사항들을 가질 수 있고, 본 명세서에서 개시되는 개념은 상기 기술들에 동일하게 적용될 수 있다. 또한 본 비동기 통지 특징은 가비지 컬렉션과 같은 백그라운드 작업들의 특정 유형에 한정되지 않음은 자명하다. 가비지 컬렉션은 SSD에 의해서 수행되도록 계획되는 경우, 호스트 OS에 통지될 수 있는 백그라운드 작업들의 단지 일 예인 것은 자명할 것이다. 본 명세서의 발명 개념은 QoS 및/또는 IOPS에 영향을 주는 임의의 백그라운드 작업에 적용할 수 있다.
본 비동기 통지 특징은 다양한 방법들로 및 다양한 어플리케이션들에 구현될 수 있다. 후술하는 예시들은 어떻게 본 비동기 통지 특징이 일부 타겟 어플리케이션들을 위해서 특별히 구현될 수 있는지를 설명할 것이다. 상기 예시들은 본 비동기 통지 특징과 함께 구현되는 어플리케이션들을 예시적으로 설명하는 것이고, 본 명세서에 개시되어 있는 예시들은 제한적으로 해석되어서는 안될 것이다.
일 실시예에 따르면, 본 비동기 통지 특징은 쓰기 및 읽기 집중 어플리케이션에서 사용될 수 있다. 쓰기 및 읽기 집중 어플리케이션은 예를 들어, 맵/감소(map/reduce) 프로그래밍 모델일 수 있다. 맵 감소 프로그래밍 모델은 빅 데이터 프로세싱 모델을 구현하는 데에 유용할 수 있고, 빅 데이터 프로세싱 모델에서, 데이터 저장 용량은 크고, 작업들은 수 많은 노드들에 분산될 수 있다. 예를 들어, 맵 감소 프로그래밍 모델은 클러스터(cluster)에서 병렬적이고 분산된 알고리즘을 포함하는 큰 데이터 세트들을 발생시키고 처리하기 위해서 사용될 수 있다. 맵 감소 프로그래밍 모델은 큰 데이터 세트를 처리하기 위한 연산 리소스들(즉 CPU), 메모리, 네트워크, 및 저장 장치에 의존한다. 그것의 실행 모델은 하나의 활성 마스터 노드 및 복수의 워커(worker) 노드들을 포함한다. 큰 데이터 세트가 구비되는 고객(client) 프로그램은 하나 이상의 일련의 맵 워커들(workers)을 거치고, 워커들을 감소시켜 최종 솔루션에 도달한다. 프로그래핑 관점으로부터, 맵 감소 프로그래밍 모델은 두 가지 방법들로 구현될 수 있고, 입력 파일들을 분류하고 필터링하는 것을 수행하는 맵 방법 및 요약 동작을 수행하는 감소 방법이 그것이다.
도 3은 본 발명의 일 실시예에 따른 쓰기 및 읽기 집중 어플리케이션의 예시를 설명하고 있다. 쓰기 및 읽기 집중 어플리케이션은 Y 맵 작업들(M1-My) 및 Z 감소 작업들(R1-Rz)을 포함한다. Y 맵 작업들 및 Z 감소 작업들은 N 워커 노드들에서 실행된다. 본 실시예에서, N 워커 노드들은 M 워커 노드들(330) 및 R 워커 노드들(340)을 포함한다.(N=Y+Z) 각각의 워커 노드들(330 및 340)은 하나 이상의 SSD들을 포함할 수 있다.(즉 도 1의 SSD(152)) 단지 하나의 작업만이 주어진 워커 노드에서 임의의 시간에서 동작할 수 있다.
고객 프로그램(301)은 사용자의 입력 파일들(310)을 맵감소(MapReduce) 라이브러리를 사용하여 X 조각들(D1-Dx)로 분할할 수 있다. 다양한 맵감소 라이브러리들은 오픈 소스 및 다른 구현들에서 이용 가능하다. 맵감소 라이브러리는 프로그래밍 패러다임을 공급하고, 여기서 사용자 어플리케이션이 맵감소로써 구상화되는(formulated) 경우, 임의의 병렬 코드 쓰기 없이 병렬 동작들을 수행할 수 있다. 사용자 어플리케이션은 직렬 맵을 쓰고, 독립적으로 그리고 병렬적으로 데이터 세트의 일부분들 상에서 동작될 수 있는 기능들을 감소시킨다.
사용자의 입력 파일들(310)의 각각의 분할된 조각의 크기는 16 내지 64 메가바이트들일 수 있다. 그러나, 입력 파일(310)의 분할된 조각들은 서로 다른 크기들을 가지고, 임의의 사이즈를 가질 수 있음을 유의하여야 한다. 맵 작업에 할당된 워커 노드(330)은 입력 데이터 파일들(310)의 컨텐츠들을 파싱(분석, parsing)할 수 있다. 워커 노드(330)는 입력 데이터 파일들(310)의 분석된 컨텐츠들을 사용자 정의된 맵 기능(350)으로 전달할 수 있다. 맵 기능(350)으로부터 생성되는 중간 데이터는 맵 작업들(M1-My)의 메모리에서 버퍼(buffer)된다. 주기적으로, 버퍼된 중간 데이터는 파티셔닝(partitioning) 기능에 의해서 R개의 영역들로 파티션된 각각의 워커 노드의 로컬 SSD에 쓰여진다. 파티셔닝은 마스터 노드(305)에 의해서 관리되고, 맵 실행과 유사항 방식으로 맵 작업들(M1-My)에서 실행될 수 있다. 로컬 SSD 상에 버퍼된 데이터의 위치들은 마스터 노드(305)로 다시 전달된다. 마스터 노드(305)는 상기 위치들을 감소 워커들(340)에 포워딩 하는 것에 대해서 책임이 있다. 감소 워커(340)는 원격 절차 호출들(remote procedure calls, RPCs)을 이용하여 맵 워커들(330)의 로컬 드라이브들로부터 버퍼된 데이터를 읽고, 읽은 데이터의 분류 및 그룹핑을 진행한다. 중간 데이터의 크기가 매우 큰 경우(하나 이상의 맵 감소 레벨) 외부 분류가 적용될 수 있다. 분류된 데이터는 감소 기능을 통과하여 출력 파일(320)을 생성한다. 출력 파일(320)은 고객 프로그램(301)에 다시 전달된다.
맵감소 라이브러리는 수백 또는 수천개의 워커 노드들을 사용하여 데이터의 매우 큰 양을 처리하도록 설계된다. 일 실시예에 따르면, 맵 감소 라이브러리는 적절하게 기계 오작동을 용인한다. 마스터 노드(305)는 모든 워커 노드(330 및 340)를 주기적으로 테스트 한다. 특정 시간 내에 워커 노드로부터 아무런 응답이 수신되지 않는 경우, 마스터 노드(305)는 워커 노드를 실패라고 표시한다. 마스터 노드(305)는 실패된 워커 노드에 의해서 완료된 임의의 맵 작업을 그것의 초기 유휴(idle) 상태로 되돌리는 리셋을 할 수 있고, 다른 워커 노드들 상에서 계획하는 것이 적합한 상태가 될 수 있다. 유사하게, 마스터 노드(305)는 실패된 워커 노드에서 진행중인 임의의 맵 작업 또는 감소 작업을 유휴 상태로 리셋할 수 있고, 다시 계획하는 것이 적합한 상태가 될 수 있다. 실패된 맵 작업들은 출력 데이터가 각각의 로컬 드라이브들에 저장되어 있기 때문에 재실행되어야 한다. 감소 작업 실패들을 위해서, 데이터는 이미 글로벌 파일 시스템에 채워질 것이다. 게다가 데이터는 실패들의 경우에 용인될 수 있도록 인자 3 또는 더 높은 인자로 복제될 수 있다. 따라서, 맵 갑소 라이브러리는 큰 스케일의 워커 실패들에 대해서 탄력적인 해결책을 제공한다.
본 비동기 통지 특징 없으면, 호스트 OS는 맵/감소 작업 흐름들에 영향을 줄 수 있는 로컬 SSD 상에서 동작하는 임의의 SSD의 특정 백그라운드 작업들을 인지하지 않을 수 있다. 이러한 백그라운드 작업들은 타임아웃들 및 최종적으로 작업 재 할당들로 이어지는 성능 저하를 야기할 수 있다. 이는 전체적인 분산 시스템 및 클러스터 성능 효율에 영향을 준다. 예를 들어, 마스터(305)는 백그라운드 활동 때문에 감소된 성능을 갖는 비록 기능적인 문제일지라도, 호스트를 실패로 잘못 표시할 수 있다. 본 비동기 통지 특징은 호스트 OS가 SSD-특정 백그라운드 작업들을 알도록 하고, 맵/감소 작업 흐름들에서의 이용 불가한 워커 노드들(SSD들)을 위한 타임아웃을 추정하도록 한다.
일 실시예에 따르면, 본 비동기 통지 특징은 맵/감소 고장 허용 범위(fault tolerance)까지 확장될 수 있다. 맵 작업은 로컬 SSD들에 대한 현재 백그라운드 작업 통지에 응할 수 있다. 통지된 경우, 맵 작업은 계획된 백그라운드 작업에 의해서 영향을 받은 데이터를 검토할 수 있고, 마스터 노드(305)에 알릴 수 있다. 통지 특징의 구현에 의존하여, 워커 노드는 영향을 받은 데이터에 대한 추가적인 힌트들 및 상황표(타임라인, timeline)를 마스터 노드(305)에 제공할 수 있다. 유사하게, 드라이브 어레이에 위치할 수 있는 글로벌 파일 시스템 데이터는 통지들을 마스터 노드(305)에 또한 제공할 수 있다. 마스터 노드(305)는 영향을 받은 노드/어레이를 돌아서 I/O 동작들을 다시 라우팅하거나, 또는 I/O 동작들을 계속하는 것을 결정할 수 있다. 본 비동기 통지 특징은 글로벌 FTL(flash translation layer) 체계와 상이하다는 것이 강조되는데, 상기 글로벌 FTL 체계에서 전용 호스트 소프트웨어 개체는 I/O를 모니터링하거나 관리하는 것이 요구되지 않고, 이는 큰 스케일의 맵/감소 시스템에 대해서는 커다란 오버헤드를 포함하는 상당한 작업일 수 있다.
일 실시예에 따르면, 본 비동기 통지 특징은 오라클(Oracle) SQL(Structured Query Language) 데이터 베이스 또는 MySQL 데이터 베이스를 위해서 사용될 수 있다. SQL/MySQL 분산 데이터 베이스들의 대부분은 또한 고장 허용 범위 및 복제 팩터(replication factor)와 함께 설계될 수 있다. 고장 허용 한계 및 복제 팩터는 SSD들에 의해서 개시되고 생성된 이벤트들과 함께 전술한 바와 같이 동일한 방식으로 확장될 수 있어서, 탄력적 클라우드 연산 서비스(즉, 클러스터 워커로 전용되는 가상 기계) 또는 마스터 노드에 의한 워커 작업의 시스템 활용 결정들이 되게 한다.
도 4는 본 발명의 일 실시예에 따른 비동기 통지를 구비한 SSD의 백그라운드 업무를 수행하기 위한 예시적인 흐름도이다. SSD는 호스트 OS로부터 쿼리를 수신한다.(단계 401) 쿼리에 응답하여, SSD는 비동기 통지를 통해서 수행될 백그라운드 작업들의 리스트를 전송한다.(단계 402) SSD는 쿼리에서 호스트 OS가 요청한 수행될 수 있는 백그라운드 작업들의 서브 세트를 호스트 OS에 단지 전송할 수 있다. SSD는 그리고 나서 호스트 OS로부터 각각의 백그라운드 작업들의 임계값을 수신할 수 있다.(단계 403) SSD는 특정 백그라운드 작업에 대한 임계값을 자체적으로 또는 호스트 OS와의 협상 후에 결정할 수 있다. SSD는 각각의 임계값에 대해서 타임아웃 값을 세팅한다.(단계 404) SSD는 또한 호스트 OS와 협상을 하거나, 호스트 OS로부터 수신된 정보를 근거로 하여 타임아웃 값을 결정할 수 있다. 타임아웃 값이 결정된 후, SSD는 타임아웃 값을 호스트 OS에 통지한다.(단계 405). I/O 동작들을 수행하는 동안, SSD는 특정 백그라운드 작업에 대한 임계값을 모니터링하고, 백그라운드 작업이 곧 시작할 것이라는 것을 나타내는, 즉 임계값이 도달하였는지를 결정한다.(단계 406) SSD는 백그라운드 작업에 대응하는 타임아웃 값이 만료된 후, 백그라운드 작업이 곧 바로 수행될 것이라는 것을 호스트 OS에 통지한다.(단계 407)
일 실시예에 따르면, 방법은 호스트 OS로부터 쿼리를 수신하는 단계; 쿼리에 응답하여 호스트 OS에 데이터 저장 장치에서 수행된 백그라운드 작업들의 리스트를 전송하는 단계; 호스트 OS로부터의 하나 이상의 백그라운드 작업들 동안 임계값을 수신하는 단계; 임계 값에 관련된 타임아웃 값을 세팅하는 단계; 타임아웃 값을 호스트 OS에 결정하고 통지하는 단계; 백그라운드 작업 동안 임계값에 도달하였는지를 결정하는 단계; 및 호스트 OS에 타임아웃 값이 완료된 후 SSD가 데이터 저장 장치에서 백그라운드 작업을 수행할 수 있다는 것을 통지하는 단계를 포함한다.
백그라운드 작업들의 리스트는 데이터 저장 장치에서 하나 이상의 미디어 삭제 동작 및 가비지 컬렉션 동작을 포함할 수 있다.
데이터 저장 장치는 NAND 플래쉬 메모리들을 포함하는 SSD(solid-state drive)일 수 있다.
방법은 쿼리의 호스트 OS로부터 호스트 정보를 수신하는 단계를 더 포함한다. 호스트 정보는 호스트, 호스트 상에서 이용가능한 리소스들, 및 호스트 OS의 버전 유형 중 하나 이상을 포함할 수 있다.
백그라운드 작업들의 리스트는 호스트 정보를 근거하여 결정될 수 있다.
방법은 백그라운드 작업의 유형에 근거하여 타임아웃 값을 결정하도록 호스트 OS와 협상하는 단계를 더 포함할 수 있다.
방법은 호스트 OS로부터 백그라운드 작업의 타임아웃 값을 재할당 또는 트림하는 것에 대한 요청을 수신하는 단계; 및 호스트 OS로부터의 요청에 따라 백그라운드 작업의 타임아웃 값을 재할당 또는 트림하는 단계를 더 포함할 수 있다.
방법은 추가적인 값에 의해서 타임아웃 값을 지연하는 요청을 호스트 OS로부터 수신하는 단계; 및 호스트 OS로부터 요청에 따라 백그라운드 작업을 지연하는 단계를 더 포함할 수 있다.
방법은 데이터 저장 장치에서 영향을 받은 데이터 저장 블록들 또는 영역들을 포함하는 호스트 OS에 정보를 전송하는 단계를 더 포함할 수 있다.
방법은 백그라운드 작업이 데이터 저장 장치에서 완료되었다는 것에 대한 통지를 전송하는 단계; 호스트 OS로부터의 인식을 수신하는 단계를 더 포함할 수 있다.
호스트 OS 및 데이터 저장 장치는 NVM(non-volatile memory), NVMe(non-volatile memory Express), SATA(Serial AT Attachment), 및 SAS(Serial Attached SCSI) 중 하나를 통해서 통신할 수 있다.
또 다른 실시예에서, 데이터 저장 시스템은 데이터를 저장하는 데이터 저장 장치; 호스트 OS를 동작시켜 I/O 동작을 수행하여 데이터 저장 장치에 저장된 데이터에 액세스하는 호스트 컴퓨터; 및 데이터 저장 장치 및 호스트 컴퓨터 사이의 인테페이스를 포함한다. 데이터 저장 장치 및 호스트 OS는 비동기 메시지를 교환하고, 비동기 메시지는 호스트 OS로부터의 쿼리; 데이터 저장 장치에서 수행되는 백그라운드 작업의 리스트를 포함하는 쿼리에 응답하여 제1 응답; 하나 이상의 백그라운드 작업에서의 임계값; 임계값에 연관된 타임아웃 값; 임계값에 연관된 타임아웃 값을 포함하는 제2 응답; 및 백그라운드 작업 동안의 임계값이 도달하였고, 백그라운드 작업이 타임아웃 값이 완료된 후에 수행되었다는 것을 호스트 OS에 통지하는 비동기 통지를 포함한다.
백그라운드 작업들의 리스트는 데이터 저장 장치에서 하나 이상의 미디어 삭제 동작 및 가비지 컬렉션 동작을 포함할 수 있다.
데이터 저장 장치는 NAND 플래쉬 메모리들을 포함하는 SSD(solid-state drive)일 수 있다.
데이터 저장 장치는 쿼리에서 호스트 OSfhqnxj 호스트 정보를 수신할 수 있다. 호스트 정보는 호스트, 호스트 상에 이용가능한 리소스들 및 호스트 OS의 버전의 유형 중 어느 하나를 포함할 수 있다.
백그라운드 작업들의 리스트는 호스트 정보에 근거하여 결정될 수 있다.
데이터 저장 장치는 호스트 OS와 협상하여 백그라운드 작업의 유형에 근거하여 타임아웃 값을 결정할 수 있다.
데이터 저장 장치는 타임아웃 값을 재할당 또는 트림에 대한 요청을 호스트 OS로부터 수신할 수 있고, 호스트 OS로부터의 요청에 따라 백그라운드 작업의 타임아웃 값을 재할당 또는 트림할 수 있다.
데이터 저장 장치는 호스트 OS로부터 추가적인 값에 의해서 타임아웃 값을 지연하는 요청을 수신하고, 호스트 OS로부터 요청에 따라 백그라운드 작업을 지연할 수 있다.
데이터 저장 장치는 데이터 저장 장치의 영향을 받은 데이터 저장 블록들 또는 영역들을 포함하는 호스트 OS에 정보를 전송할 수 있다.
인터페이스는 NVM(non-volatile memory), NVMe(non-volatile memory Express), SATA(Serial AT Attachment), 및 SAS(Serial Attached SCSI) 중 하나이다.
통지 메시지들을 구비하는 백그라운드 활동들을 효과적으로 관리하도록, SSD에서의 메커니즘을 제공하기 위해서 구현하는 시스템 및 방법의 다양한 실시예를 설명하기 위해서 전술한 본 발명의 예시적인 실시예가 개시되어 있다. 개시된 실시예로부터 다양한 수정들 및 변형들은 당업자에 의해서 일어날 수 있다. 본 발명의 범위 내에 속하는 주제는 다음의 청구 범위에 의해서 설명된다.

Claims (10)

  1. 호스트 OS(Operation System)로부터 쿼리(문의)를 수신하는 단계;
    상기 쿼리에 응답하여 상기 호스트 OS에 데이터 저장 장치에서 수행될 백그라운드 작업들의 리스트를 전송하는 단계;
    임계값은 하나 이상의 백그라운드 작업들이 상기 임계값을 초과할 때 수행될 필요가 있다고 알리고, 상기 호스트 OS로부터의 상기 백그라운드 작업들 중 하나 이상에 대한 상기 임계값을 수신하는 단계;
    타임아웃 값은 상기 하나 이상의 백그라운드 작업들이 시작되기 전의 카운트다운 시간이고, 상기 임계값에 관련된 상기 타임아웃 값을 세팅하는 단계;
    상기 타임아웃 값을 상기 호스트 OS에 결정하고 통지하는 단계;
    상기 하나 이상의 백그라운드 작업들 중 백그라운드 작업에 대해 상기 임계값에 도달하였는지를 결정하는 단계;
    상기 타임아웃 값이 만료된 후 상기 데이터 저장 장치가 상기 데이터 저장 장치에서 상기 백그라운드 작업을 수행할 수 있다는 것을 상기 호스트 OS에 통지하는 단계;
    상기 백그라운드 작업의 상기 타임아웃 값에 대한 재할당 또는 트림하는 요청을 상기 호스트 OS로부터 수신하는 단계; 그리고
    상기 호스트 OS로부터의 상기 요청에 따라 상기 백그라운드 작업의 상기 타임아웃 값을 재할당 또는 트림하는 단계를 포함하는 방법.
  2. 제1 항에 있어서,
    상기 백그라운드 작업들의 리스트는 상기 데이터 저장 장치에서 하나 이상의 미디어 삭제 동작 및 가비지 컬렉션(garbage collection) 동작을 포함하는 방법.
  3. 제1 항에 있어서,
    상기 데이터 저장 장치는 NAND 플래쉬 메모리들을 포함하는 SSD(solid-statd drive)인 방법
  4. 제1 항에 있어서,
    상기 쿼리의 상기 호스트 OS로부터 호스트 정보를 수신하는 단계를 더 포함하고, 상기 호스트 정보는 호스트, 상기 호스트 상에서 이용 가능한 리소스들, 및 상기 호스트 OS의 버전의 유형 중 하나 이상을 포함하는 방법.
  5. 제4 항에 있어서,
    상기 백그라운드 작업들의 리스트는 상기 호스트 정보를 근거하여 결정되는 방법.
  6. 제1 항에 있어서,
    상기 백그라운드 작업의 유형에 근거하여 상기 타임아웃 값을 결정하도록 상기 호스트 OS와 협상하는 단계를 더 포함하는 방법.
  7. 데이터를 저장하는 데이터 저장 장치;
    상기 데이터 저장 장치에 저장된 데이터에 액세스하기 위해 입출력 동작들을 수행하는 호스트 OS(Operation System)를 실행하는 호스트 컴퓨터; 그리고
    상기 데이터 저장 장치 및 상기 호스트 컴퓨터 사이의 인터페이스를 포함하되,
    상기 데이터 저장 장치 및 상기 호스트 OS는 비동기 메시지들을 교환하도록 구성되고,
    상기 비동기 메시지들은:
    상기 호스트 OS로부터의 쿼리;
    상기 데이터 저장 장치에서 수행되는 백그라운드 작업들의 리스트를 포함하는 상기 쿼리에 대한 제1 응답;
    임계값은 상기 임계값을 초과할 때 하나 이상의 상기 백그라운드 작업들이 수행될 필요가 있다고 알리는, 상기 하나 이상의 상기 백그라운드 작업들에 대한 상기 임계값;
    상기 하나 이상의 백그라운드 작업들이 시작되기 전의 카운트다운 시간이고, 상기 임계값에 관련된 타임아웃 값;
    상기 임계값과 관련된 상기 타임아웃 값을 포함하는 제2 응답; 그리고
    상기 하나 이상의 백그라운들 작업들 중 백그라운드 작업에 대한 상기 임계값에 도달하였고, 그리고 상기 백그라운드 작업은 상기 타임아웃 값이 완료된 이후에 수행되었다는 것을 상기 호스트 OS에 통지하는 비동기 통지를 포함하되,
    상기 데이터 저장 장치는 상기 백그라운드 작업의 상기 타임아웃 값에 대한 재할당 또는 트림하는 요청을 상기 호스트 OS로부터 수신하고, 그리고
    상기 호스트 OS로부터의 상기 요청에 따라 상기 백그라운드 작업의 상기 타임아웃 값을 재할당 또는 트림하도록 더 구성되는 데이터 저장 시스템.
  8. 제7 항에 있어서,
    상기 백그라운드 작업들의 리스트는 상기 데이터 저장 장치에서 하나 이상의 미디어 삭제 동작 및 가비지 컬렉션(garbage collection) 동작을 포함하는 시스템.
  9. 제7 항에 있어서,
    상기 데이터 저장 장치는 NAND 플래쉬 메모리들을 포함하는 SSD(solid-statd drive)인 시스템.
  10. 제7 항에 있어서,
    상기 쿼리의 상기 호스트 OS로부터 호스트 정보를 수신하고, 그리고
    상기 호스트 정보는 호스트, 상기 호스트 상에서 이용 가능한 리소스들, 및 상기 호스트 OS의 버전의 유형 중 하나 이상을 포함하는 시스템.
KR1020170013948A 2016-04-21 2017-01-31 통지와 함께 백그라운드 활동을 효율적으로 관리하는 ssd를 위한 메카니즘 KR102478395B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662325909P 2016-04-21 2016-04-21
US62/325,909 2016-04-21
US15/186,250 US10108450B2 (en) 2016-04-21 2016-06-17 Mechanism for SSDs to efficiently manage background activity with notify
US15/186,250 2016-06-17

Publications (2)

Publication Number Publication Date
KR20170120489A KR20170120489A (ko) 2017-10-31
KR102478395B1 true KR102478395B1 (ko) 2022-12-19

Family

ID=60089011

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170013948A KR102478395B1 (ko) 2016-04-21 2017-01-31 통지와 함께 백그라운드 활동을 효율적으로 관리하는 ssd를 위한 메카니즘

Country Status (2)

Country Link
US (1) US10108450B2 (ko)
KR (1) KR102478395B1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11983138B2 (en) 2015-07-26 2024-05-14 Samsung Electronics Co., Ltd. Self-configuring SSD multi-protocol support in host-less environment
US10346041B2 (en) 2016-09-14 2019-07-09 Samsung Electronics Co., Ltd. Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host
US11461258B2 (en) 2016-09-14 2022-10-04 Samsung Electronics Co., Ltd. Self-configuring baseboard management controller (BMC)
US10372659B2 (en) 2016-07-26 2019-08-06 Samsung Electronics Co., Ltd. Multi-mode NMVE over fabrics devices
US20190109720A1 (en) 2016-07-26 2019-04-11 Samsung Electronics Co., Ltd. Modular system (switch boards and mid-plane) for supporting 50g or 100g ethernet speeds of fpga+ssd
US11144496B2 (en) 2016-07-26 2021-10-12 Samsung Electronics Co., Ltd. Self-configuring SSD multi-protocol support in host-less environment
US10210123B2 (en) 2016-07-26 2019-02-19 Samsung Electronics Co., Ltd. System and method for supporting multi-path and/or multi-mode NMVe over fabrics devices
JP2018041154A (ja) * 2016-09-05 2018-03-15 東芝メモリ株式会社 ストレージシステムおよび処理方法
EP3483738A1 (en) 2017-05-12 2019-05-15 QlikTech International AB Index machine
JP2019159802A (ja) * 2018-03-13 2019-09-19 東芝メモリ株式会社 記憶装置の電力制御方法および記憶装置
US10884659B2 (en) * 2018-06-29 2021-01-05 Micron Technology, Inc. Host timeout avoidance in a memory device
US11442635B2 (en) * 2019-01-10 2022-09-13 Western Digital Technologies, Inc. Data storage systems and methods for optimized scheduling of background management operations
CN110928652A (zh) * 2019-10-18 2020-03-27 蓝箭航天空间科技股份有限公司 操作系统任务延时实时管理方法、存储介质和服务器
US11307805B2 (en) * 2020-05-29 2022-04-19 Seagate Technology Llc Disk drive controller incorporating task manager for reducing performance spikes
US11354188B2 (en) 2020-09-23 2022-06-07 SK Hynix Inc. Data processing system including host with reliability management of memory systems and method for the same
KR20220165980A (ko) * 2021-06-09 2022-12-16 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작 방법
US11907564B2 (en) 2021-08-03 2024-02-20 Yadro International Ltd. Method of and system for initiating garbage collection requests
KR20230112362A (ko) 2022-01-20 2023-07-27 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그 동작 방법과, 이를 위한 스토리지 장치

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6834386B1 (en) * 1999-07-16 2004-12-21 Microsoft Corporation Method and system for regulating background tasks using performance measurements
US8417871B1 (en) 2009-04-17 2013-04-09 Violin Memory Inc. System for increasing storage media performance
US20110041039A1 (en) 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8819328B2 (en) * 2010-12-30 2014-08-26 Sandisk Technologies Inc. Controller and method for performing background operations
US20140129765A1 (en) 2012-11-07 2014-05-08 Taejin Info Tech Co., Ltd. Method to improve data reliability in dram ssd using asynchronous logging and incremental backup
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9122588B1 (en) 2013-03-15 2015-09-01 Virident Systems Inc. Managing asymmetric memory system as a cache device
US9383926B2 (en) 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
US9600337B2 (en) * 2014-09-30 2017-03-21 Nimble Storage, Inc. Congestion avoidance in network storage device using dynamic weights
KR101658659B1 (ko) * 2015-01-27 2016-09-30 소진호 입형 원심펌프
US20170109101A1 (en) * 2015-10-16 2017-04-20 Samsung Electronics Co., Ltd. System and method for initiating storage device tasks based upon information from the memory channel interconnect

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
미국공개특허 제2016-0092272호(2016.03.31.) 1부.*
미국등록특허 제6834386호(2004.12.21.) 1부.*
한국공개특허 제10-2014-0001924호(2014.01.07.) 1부.*

Also Published As

Publication number Publication date
KR20170120489A (ko) 2017-10-31
US20170308398A1 (en) 2017-10-26
US10108450B2 (en) 2018-10-23

Similar Documents

Publication Publication Date Title
KR102478395B1 (ko) 통지와 함께 백그라운드 활동을 효율적으로 관리하는 ssd를 위한 메카니즘
EP3230868B1 (en) Multiple transaction logs in a distributed storage system
US10108460B2 (en) Method and system for integrated deployment planning for virtual appliances
US20100235597A1 (en) Method and apparatus for conversion between conventional volumes and thin provisioning with automated tier management
JP2017021805A (ja) 不揮発性メモリ装置内でデータ属性基盤データ配置を利用可能にするインターフェイス提供方法及びコンピュータ装置
CN111488241A (zh) 在容器编排平台实现无代理备份与恢复操作的方法和系统
US20170177225A1 (en) Mid-level controllers for performing flash management on solid state drives
US10061781B2 (en) Shared data storage leveraging dispersed storage devices
US11226870B2 (en) Systems and methods for marking application-consistent points-in-time
US10747620B2 (en) Network storage management at scale using service level objectives
JP2013509658A (ja) 将来の使用推量に基づく記憶メモリの割り当て
US10996993B2 (en) Adaptive work distribution in distributed systems
US20130254500A1 (en) Storage apparatus, computer system, and control method for storage apparatus
US20130238867A1 (en) Method and apparatus to deploy and backup volumes
CN103365603A (zh) 存储系统的存储器管理的方法和装置
US20070294476A1 (en) Method For Representing Foreign RAID Configurations
JPWO2008126202A1 (ja) ストレージシステムの負荷分散プログラム、ストレージシステムの負荷分散方法、及びストレージ管理装置
US20160117125A1 (en) Authoritative power management
US10963182B2 (en) System and method for on-demand recovery points
US11740823B2 (en) Storage system and storage control method
US8214621B2 (en) Storage optimization across media with differing capabilities
CN113110918A (zh) 读写速率管控方法、装置、节点设备及存储介质
US10235089B2 (en) Storage control device, method and storage system to backup data using allocation information
US20210019276A1 (en) Link selection protocol in a replication setup
US20170123657A1 (en) Systems and methods for back up in scale-out storage area network

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