System and method of application aware efficient IO scheduler
AssigneeSamsung Electronics Co., Ltd.
InventorsFei Liu, Yang Seok Ki, Aakanksha Pudipeddi
Life of this patent
Estimating the term…
Abstract
An input output scheduler. The scheduler runs in user space and is associated with one core of a multi-core central processing unit. Applications submit input output commands to the scheduler, which queues the input output commands and submits them in batches to a mass storage device. The input output scheduler may include a plurality of command queues with different batching strategies configured to provide, e.g., different performance characteristics as measured, for example, by latency or input output throughput.
Claims10
A non-transitory computer-readable medium, having stored in it instructions that when executed by a computing device, cause the computing device to instantiate an input output (IO) scheduler for scheduling input from, and output to, a mass storage device, the scheduler comprising:
- a first command queue;
- a second command queue;
- and
- an IO sequencer,
- the first command queue being configured to accumulate IO commands,
- the IO sequencer being configured to dispatch the accumulated IO commands of the first command queue to the mass storage device, when a number of IO commands in the first command queue reaches a first threshold,
- the scheduler being configured to run in user space on a core of a computer comprising a multi-core central processing unit,
- the second command queue being configured to accumulate IO commands,
- the IO sequencer being configured to dispatch the accumulated IO commands of the second command queue to the mass storage device, when a number of IO commands in the second command queue reaches a second threshold,
- wherein the scheduler is further configured:
- to receive, from a first application, a first IO command and first storage performance priorities,
- to place the first IO command in the first command queue when the first storage performance priorities prioritize low latency, and
- to place the first IO command in the second command queue when the first storage performance priorities prioritize high throughput.
A computer system, comprising:
- a central processing unit comprising a first core;
- and
- a first mass storage device associated with the first core,
- the first core being configured to instantiate, in user space, a first input output (IO) scheduler for scheduling input from, and output to, the first mass storage device,
- the first IO scheduler comprising:
- a first command queue;
- a second command queue;
- and
- an IO sequencer,
- the first command queue being configured to accumulate IO commands,
- the IO sequencer being configured to dispatch the accumulated IO commands of the first command queue to the first mass storage device, when a number of IO commands in the first command queue reaches a first threshold,
- the second command queue being configured to accumulate IO commands,
- the IO sequencer being configured to dispatch the accumulated IO commands of the second command queue to the first mass storage device, when a number of IO commands in the second command queue reaches a second threshold,
- wherein the scheduler is further configured:
- to receive, from a first application, a first IO command and first storage performance priorities,
- to place the first IO command in the first command queue when the first storage performance priorities prioritize low latency, and
- to place the first IO command in the second command queue when the first storage performance priorities prioritize high throughput.
A method for scheduling input and output, the method comprising:
- storing IO commands in a first command queue;
- dispatching the IO commands stored in the first command queue to a mass storage device, when a number of IO commands in the first command queue reaches a first threshold;
- storing IO commands in a second command queue;
- dispatching the IO commands stored in the second command queue to the mass storage device, when a number of IO commands in the second command queue reaches a second threshold;
- receiving:
- from a first application having a first service level agreement, IO commands and first storage performance priorities associated with the first service level agreement, and
- from a second application having a second service level agreement, IO commands and second storage performance priorities associated with the second service level agreement;
- and
- storing a first received IO command of the IO commands
- in the first command queue when storage performance priorities received with the first received IO command prioritize low latency, and
- in the second command queue when storage performance priorities received with the first received IO command prioritize high throughput.
Dependencies are inferred from the claim text.