# US 10,372,374 B2 · System and method for providing input/output determinism for servers hosting remotely accessible storages

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,372,374 B2
- Document ID: US10372374B2
- Status: Granted
- Kind: B2
- Application number: 15/797,815
- Filed: 2017-10-30
- Published: 2018-05-10
- Granted: 2019-08-06
- Earliest claimed: 2016-11-08
- Assignees: Excelero Storage Ltd.
- Applicants: Excelero Storage Ltd.
- Inventors: Yaniv Romem; Omri Mann; Ofer Oshri
- Web page: https://patentgrep.com/patent/US10372374B2

## CPC

- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0611: {in relation to response time}
- G06F 3/0629: {Configuration or reconfiguration of storage systems}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 13/102: {where the program performs an interfacing function, e.g. device driver (G06F13/105 takes precedence; contention policies within device drivers G06F9/4881; scheduling within device drivers G06F9/52)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods for providing input/output (I/O) determinism. An I/O instruction and at least one service level indicator are received, wherein the at least one service level indicator includes a required time for executing the I/O instruction. It is determined whether the I/O instruction can be executed on the storage within the required time. When it is not determined that the I/O instruction can be executed on the storage within the required time, a notification is sent.

## Claims

### Claim 1

A method for providing input/output (I/O) determinism for a server hosting at least a remotely accessible storage, comprising:
receiving an I/O instruction and at least one service level indicator from a client device, wherein the at least one service level indicator includes a required time for executing the I/O instruction;
determining whether the I/O instruction can be executed on the storage within the required time, wherein determining whether the I/O instruction can be executed on the storage within the required time further comprises:
determining a first latency of communication between the server and the client device; and
determining a first execution time for executing the I/O instruction on the storage, wherein it is determined that the I/O instruction can be executed on the storage within the required time when a sum of the first latency and the first execution time is less than the required time; and
sending, to the client device, a notification, when it is not determined that the I/O instruction can be executed on the storage within the required time.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
executing the I/O instruction on the storage, when it is determined that the I/O instruction can be executed on the storage within the required time.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
determining a second latency, wherein the second latency is a minimal latency between the client device and another server;
determining a second execution time, wherein the second execution time is a minimal execution time by a storage of the other server, wherein it is determined that the I/O instruction can be executed on the storage of the other server within the required time when a sum of the first latency, the first execution time, the second latency, and the second execution time is less than the required time; and
sending, to the storage of the other server, the I/O instruction for execution, when it is determined the I/O instruction can be executed on the storage of the other server within the required time.

### Claim 4 (depends on 1)

A non-transitory computer readable medium having stored thereon instructions for causing a processing circuitry to execute the method according to claim 1.

### Claim 5

A system for providing input/output (I/O) determinism, comprising:
a storage;
a processing circuitry; and
a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to:
receive an I/O instruction and at least one service level indicator from a client device, wherein the at least one service level indicator includes a required time for executing the I/O instruction;
determine a first latency of communication between the system and the client device;
determine a first execution time for executing the I/O instruction on the storage;
determine whether the I/O instruction can be executed on the storage within the required time, wherein it is determined that the I/O instruction can be executed on the storage within the required time when a sum of the first latency and the first execution time is less than the required time; and
send, to the client device, a notification, when it is not determined that the I/O instruction can be executed on the storage within the required time.

### Claim 6 (depends on 5)

The system of claim 5, wherein the system is further configured to:
execute the I/O instruction on the storage, when it is determined that the I/O instruction can be executed on the storage within the required time.

### Claim 7 (depends on 5)

The system of claim 5, wherein the system is further configured to:
determine a second latency, wherein the second latency is a minimal latency between the client device and another server;
determine a second execution time, wherein the second execution time is a minimal execution time by a storage of the other server, wherein it is determined that the I/O instruction can be executed on the storage of the other server within the required time when a sum of the first latency, the first execution time, the second latency, and the second execution time is less than the required time; and
send, to the storage of the other server, the I/O instruction for execution, when it is determined the I/O instruction can be executed on the storage of the other server within the required time.

### Claim 8

A method for providing input/output (I/O) determinism for a server hosting at least a storage, the server including a processing circuitry, comprising:
sending, by the processing circuitry to the storage, an I/O instruction and at least one service level indicator, wherein the at least one service level indicator includes a required time for executing the I/O instruction;
determining, by the storage, whether the I/O instruction can be executed on the storage within the required time; and
sending, to the processing circuitry by the storage, a notification, when it is not determined that the I/O instruction can be executed on the storage within the required time;
sending the I/O instruction to another server including at least one other storage, wherein the I/O instruction is sent to the other server when the I/O instruction can be executed on the at least one other storage within the required time;
determining a latency of communication between the server and the other server;
determining an execution time for executing the I/O instruction on the at least one other storage, wherein the I/O instruction can be executed on the at least one other storage within the required time when a sum of the determined latency and the determined execution time is less than the required time; and
sending, to the at least one other storage, the I/O instruction for execution, when it is determined that the I/O instruction can be executed on the at least one other storage within the required time.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
executing the I/O instruction on the storage, when it is determined that the I/O instruction can be executed on the storage within the required time.

### Claim 10 (depends on 8)

The method of claim 8, further comprising:
determining a first execution time for executing the I/O instruction on the storage;
determining a second execution time for executing the I/O instruction on another storage hosted by the server; and
executing the I/O instruction on the storage having the lowest execution time among the first execution time and the second execution time.

### Claim 11 (depends on 8)

A non-transitory computer readable medium having stored thereon instructions for causing a processing circuitry to execute the method according to claim 8.

### Claim 12

A system for providing input/output (I/O) determinism, comprising:
a storage;
a processing circuitry; and
a memory, the memory containing instructions that, when executed by the processing circuitry, configure the system to:
sending, by the processing circuitry to the storage, an I/O instruction and at least one service level indicator, wherein the at least one service level indicator includes a required time for executing the I/O instruction;
determining, by the storage, whether the I/O instruction can be executed on the storage within the required time; and
sending, to the processing circuitry by the storage, a notification, when it is not determined that the I/O instruction can be executed on the storage within the required time;
send the I/O instruction to another server including at least one other storage;
determine a latency of communication between the server and the other server;
determine an execution time for executing the I/O instruction on the at least one other storage, wherein the I/O instruction can be executed on the at least one other storage within the required time when a sum of the determined latency and the determined execution time is less than the required time; and
send, to the at least one other storage, the I/O instruction for execution, when it is determined that the I/O instruction can be executed on the at least one other storage within the required time.

### Claim 13 (depends on 12)

The system of claim 12, wherein the system is further configured to:
execute the I/O instruction on the storage, when it is determined that the I/O instruction can be executed on the storage within the required time.

### Claim 14 (depends on 12)

The system of claim 12, wherein the system is further configured to:
determine a first execution time for executing the I/O instruction on the storage;
determine a second execution time for executing the I/O instruction on another storage hosted by the server; and
execute the I/O instruction on the storage having the lowest execution time among the first execution time and the second execution time.
