Storage controller and IO request processing method
AssigneeHuawei Technologies Co., Ltd.
InventorsSi Yu, Junhui Gong, Cong Zhao, Cheng Wang, Yue Lu
Life of this patent
Estimating the term…
Abstract
This application relates to the field of storage technologies, and discloses a storage controller. The storage controller includes a distribution core, a plurality of ranking cores, and a request processing core. The three types of cores are respectively configured to: distribute IO requests to different ranking cores, generate a processing ranking index for each IO request, and process the IO request based on a value of the processing ranking index of the IO request, to flexibly schedule an IO request received by the storage controller.
Claims20
A storage controller applicable to a storage system having a plurality of storage units, and comprising:
- a memory device configured to store a plurality of input/output (IO) requests and a shared processing ranking index for each storage unit of the plurality of storage units, wherein each IO request of the plurality of IO requests points to one storage unit of the plurality of storage units;
- a plurality of ranking cores coupled to the memory device;
- a distribution core coupled to the memory device and configured to:
- receive an IO request of the plurality of IO requests;
- and
- distribute the IO request to one of the plurality of ranking cores,
- wherein the one of the plurality of ranking cores is configured to:
- determine a target storage unit of the plurality of storage units to which the IO request points;
- obtain an IO per second parameter of the target storage unit;
- generate the processing ranking index for the IO request based on the IO per second parameter of the target storage unit and the shared processing ranking index corresponding to the target storage unit;
- update the shared processing ranking index corresponding to the target storage unit using the processing ranking index of the IO request;
- maintain an index queue corresponding to the one of the plurality of ranking cores comprising a plurality of processing ranking indexes generated by the one of the plurality of ranking cores for a subset of the plurality of IO requests distributed to the one of the plurality of ranking cores, wherein each of the plurality of ranking cores maintains a different index queue;
- and
- store the processing ranking index of the IO request in the index queue corresponding to the one of the plurality of ranking cores;
- and
- a request processing core coupled to the memory device and configured to periodically process an IO request corresponding to a smallest processing ranking index in the index queue corresponding to the one of the plurality of ranking cores.
An input/output (IO) request processing method performed by a storage controller of a storage system comprising a plurality of storage units, comprising:
- storing, by a memory device of the storage controller, a plurality of I/O requests and a shared processing ranking index for each storage unit of the plurality of storage units, wherein each IO request of the plurality of IO requests point to one storage unit of a plurality of storage units;
- receiving, by a distribution core of the storage controller, an IO request of the plurality of IO requests;
- distributing, by the distribution core, the IO request to a plurality of ranking cores of the storage controller;
- determining, by one of the plurality of ranking cores, a target storage unit of the plurality of storage units corresponding to the IO request;
- obtaining, by the one of the plurality of ranking cores, an IO per second parameter of the target storage unit;
- generating, by the one of the plurality of ranking cores, the processing ranking index for the IO request based on the IO per second parameter of the target storage unit and a value of a shared processing ranking index corresponding to the target storage unit;
- updating, by the one of the plurality of ranking cores, the shared processing ranking index corresponding to the target storage unit using the processing ranking index of the IO request;
- maintaining, by the one of the plurality of ranking cores, an index queue corresponding to the one of the plurality of ranking cores comprising a plurality of processing ranking indexes generated by the one of the plurality of ranking cores for a subset of the plurality of IO requests distributed to the one of the plurality of ranking cores, wherein each of the plurality of ranking cores maintains a different index queue;
- storing, by the one of the plurality of ranking cores, the processing ranking index of the IO request in the index queue corresponding to the one of the plurality of ranking cores;
- and
- periodically processing, by a request processing core, an IO request corresponding to a smallest processing ranking index in the index queue corresponding to the one of the plurality of ranking cores.
A non-transitory computer readable storage medium storing instructions, which, when executed by a storage controller, causes the storage controller to be configured to:
- store, by a memory device of the storage controller, a plurality of input/output (IO) requests and a shared processing ranking index, wherein each IO request of the plurality of IO requests point to one storage unit of a plurality of storage units, and wherein the shared processing ranking index is associated with each storage unit of a plurality of storage units in a storage system controlled by the storage controller;
- receive, by a distribution core of the storage controller, an IO request;
- distribute, by the distribution core, the IO request to a plurality of ranking cores of the storage controller;
- determine, by one of the plurality of ranking cores, a target storage unit of the plurality of storage units corresponding to the IO request;
- generate, by the one of the plurality of ranking cores, the processing ranking index for the IO request;
- update, by the one of the plurality of ranking cores, the shared processing ranking index corresponding to the target storage unit using the processing ranking index of the IO request;
- maintain, by the one of the plurality of ranking cores, an index queue corresponding to the one of the plurality of ranking cores comprising a plurality of processing ranking indexes generated by the one of the plurality of ranking cores for a subset of the plurality of IO requests distributed to the one of the plurality of ranking cores, wherein each of the plurality of ranking cores maintains a different index queue;
- store, by the one of the plurality of ranking cores, the processing ranking index of the IO request in the index queue corresponding to the one of the plurality of ranking cores;
- and
- periodically process, by each request processing core of the storage controller, an IO request corresponding to a smallest processing ranking index in the index queue.
Dependencies are inferred from the claim text.