Storage system
The storage system optimizes connections and communication buffers using a controller-based approach with SmartNICs to address memory consumption issues, ensuring efficient resource allocation and performance in high-performance environments.
Patent Information
- Application Number
- JP2024024712
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-02-21
- Publication Date
- 2025-09-02
AI Technical Summary
Conventional storage systems face memory consumption issues when connecting multiple hosts due to increased connections and communication buffers, leading to potential memory shortages and performance degradation, especially in high-performance scenarios.
A storage system that includes a controller determining communication control parameters based on host performance and system configuration to optimize the number of connections and communication buffer sizes, using a SmartNIC to offload protocol processing and allocate resources efficiently.
This approach reduces memory consumption while maintaining performance by optimizing connections and buffers according to host requirements, preventing memory shortages and performance degradation.
Smart Images

Figure 2025127801000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to a storage system. [Background technology]
[0002] In recent storage systems, Storage Area Networks (SANs) have become popular as a way to connect storage and host servers. In a SAN configuration, storage and host servers are connected via a switch using network cables such as optical fiber. SANs enable storage resources to be shared among multiple host servers.
[0003] There are two types of SAN: FC-SAN, which uses FibreChannel (FC), and IP (Internet Protocol)-SAN, which uses Ethernet. FC-SAN uses dedicated interface modules and switches for lossless data transfer, making it highly reliable and suitable for configuring mission-critical IT systems. On the other hand, IP-SAN is based on standard IP protocols and can be easily used without the advanced specialized knowledge required for FC-SAN. Reliability is ensured by controlling retransmission of communication data at the TCP layer of the upper protocol, and it is increasingly being adopted for mission-critical IT systems. Furthermore, with the spread of 100Gb and 200Gb Ethernet, broadband connectivity is increasing, and expectations for IP-SAN are rising.
[0004] NVMe / TCP (Non-Volatile Memory Express over Transmission Control Protocol) is becoming popular as a new high-performance protocol for IP-SANs. NVMe / TCP achieves high bandwidth by connecting the host server and storage system with multiple connections and increasing IO parallelism. Furthermore, Incapsule-data, which transmits write commands and data together, reduces the number of communications between the host server and storage system, preventing performance degradation due to communication delays.
[0005] Patent Document 1 discloses a SmartNIC-based storage system that incorporates a SmartNIC and performs block protocol processing on the SmartNIC. A SmartNIC is a network interface device equipped with a processor and memory. For example, a SmartNIC can run a general-purpose operating system (OS) or an OSS (Open Source Software) protocol server as is. Offloading block protocol processing from the storage system controller to the SmartNIC reduces the load on the controller and improves storage system performance. However, a SmartNIC has limited hardware resources compared to a controller, and the memory capacity it can use is also smaller.
[0006] The block protocol referred to here is a data communication protocol that reads and writes data in fixed-length blocks. Storage that supports block protocols divides the physical storage area into subsystems (logical units) and enables data access in blocks to the host server. Block access is a data access method that uses a block protocol over a network. [Prior art documents] [Patent documents]
[0007] [Patent Document 1] U.S. Patent No. 11700214 Summary of the Invention [Problem to be solved by the invention]
[0008] As described above, a network interface device including a processor and memory can reduce the load on the storage controller. In conventional technology, a storage system prepares a communication buffer for incapsule data in the memory of the network interface device for each connection. When multiple connections are used between a host server and a storage system, as with NVMe / TCP, the number of connections per host increases. As a result, the following problems arise when connecting multiple hosts:
[0009] The first problem is that for host servers with high performance requirements, it is better to increase the number of connections and increase IO parallelism. Connecting with the same number of connections as the number of CPU cores on the host server enables parallel processing by all CPU cores and load balancing between the CPU cores. On the other hand, if an unlimited number of connections are connected to all host servers, the memory consumption of the network interface device will be large, and will become insufficient when connecting a large number of hosts.
[0010] The second problem is that it is better to reduce the number of communications by providing a large communication buffer for storing Incapsule-data in the host server that communicates remotely with the storage system. However, if that communication buffer size is allocated to all connections, the memory consumption of the network interface device will be large when multiple hosts are connected, which could lead to memory shortages. [Means for solving the problem]
[0011] One aspect of the present invention is a storage system including a controller, the controller including a front-end interface that communicates with a host via a network and management information, the management information including information indicating the communication performance of the front-end interface with the host, and the controller determining communication control parameters for a session between the host and the front-end interface based on the communication performance. [Effects of the Invention]
[0012] One aspect of the present invention allows for better control of communications between a storage system and a host. [Brief explanation of the drawings]
[0013] [Figure 1] FIG. 1 is a diagram illustrating an overview of a storage system according to a first embodiment. [Figure 2] 1 is an example of an overall configuration diagram of a storage system according to a first embodiment. [Figure 3] 1 is a diagram illustrating an example of a controller configuration of a storage system according to a first embodiment. [Figure 4] 1 is an example of an FE I / F configuration diagram of a storage system of the first embodiment. [Figure 5] 1 is a diagram illustrating an example of a host server configuration of a storage system according to a first embodiment. [Figure 6] 1 is a diagram illustrating an example of a management server configuration of a storage system according to a first embodiment. [Figure 7] 10 is an example of a port management table of the storage system of the first embodiment. [Figure 8] 10 is an example of an LDEV management table of the storage system of the first embodiment. [Figure 9] 10 is an example of a Subsystem management table of the storage system of the first embodiment. [Figure 10] 10 is an example of an FE I / F management table of the storage system of the first embodiment. [Figure 11] 10 is an example of a session management table of the storage system of the first embodiment. [Figure 12] 10 is an example of a connection management table of the storage system of the first embodiment. [Figure 13] 10 is an example of a session connection process of the storage system of the first embodiment. [Figure 14] 10 is an example of a process for calculating the number of connections in the storage system according to the first embodiment. [Figure 15] 10 is an example of a communication buffer capacity calculation process of the storage system according to the first embodiment. [Figure 16] 10 is an example of a session reconnection process of the storage system of the first embodiment. [Figure 17] 10 is an example of a Subsystem configuration setting interface of the storage system of the first embodiment. [Figure 18] FIG. 10 is a diagram illustrating an overview of a storage system according to a second embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0014] Several embodiments will be described below with reference to the drawings. These embodiments do not limit the scope of the present invention, and not all of the elements described in the embodiments are necessarily required to solve the problems of the present invention. Hereinafter, for convenience, the description will be divided into multiple sections or embodiments, where necessary. However, unless otherwise specified, these sections or embodiments are not unrelated to each other, and one is related to the other as a partial or complete modification, detail, supplementary explanation, etc. Furthermore, when the number of elements (including the number, numerical value, amount, range, etc.) is mentioned below, it is not limited to the specific number, and may be more or less than the specific number, unless otherwise specified or when it is clearly limited to a specific number in principle. [Example]
[0015] In the first embodiment, a SmartNIC-utilizing storage system is assumed, in which a SmartNIC is installed in a storage system and protocol processing is offloaded from the processor of a controller (also called a storage controller) that controls data access in the storage system to the SmartNIC. The SmartNIC is a highly functional network card and a front-end interface device that can be programmed (added) with functions desired by the user using software or hardware. In addition to the communication processing of the physical layer and data link layer that was performed by conventional network cards, the SmartNIC can also perform functions of the network layer, transport layer, and application layer above the transport layer, for example.
[0016] In this embodiment, when a storage system receives a session connection request from a host server, it changes connection control parameters such as the number of connections and communication buffer capacity according to the performance requirements of the host server, the distance from the storage system, and the configuration of the storage system, thereby reducing memory consumption while maintaining performance.
[0017] The following description of SmartNIC can be applied to interface devices whose functions can be programmed by software executed by a processor, as well as to interface devices with programmable logic circuit configurations such as FPGAs (Field Programmable Gate Arrays). FPGAs may include logic circuits that realize each function implemented by a program and cache memory used in operations.
[0018] Hereinafter, the first embodiment will be described with reference to FIGS. <Outline of Example 1>
[0019] 1 is a schematic diagram of a first embodiment. In a storage system 1, an FE I / F 110 is connected to a controller 100. A SmartNIC is used for the FE I / F 110, and the FE I / F 110 processes lock protocols such as NVMe / TCP. The FE I / F 110 provides a Subsystem provided by the controller 100 to a host server 200.
[0020] The term "Subsystem" here refers to the concept of storage resources managed by the controller, and is composed of multiple Namespaces. A Namespace is a logical storage area (logical volume) that provides logical capacity to the host server 200. The host server 200 accesses a Subsystem by specifying the Subsystem's identifier, an NVMe Qualified Name (NQN).
[0021] When storage system 1 receives a session connection request from host server 200 (representing host server 200-A or 200-B), it performs the following steps S1 to S4 to achieve connection control in accordance with the host performance requirements and the storage configuration. A session here refers to a connection between one host server 200 and one Subsystem provided by storage system 1. Host server 200 uses the session to send management commands and data access commands to storage system 1.
[0022] (S1) To establish a session connection, host server 200 sends a connection request for management connection 143 to storage system 1 as the first connection of the session. In FIG. 1, one management connection is indicated by reference numeral 143 as an example. Here, management connection 143 is a connection used by host server 200 to negotiate communication parameters with storage system 1, such as transfer length, on / off of various protocol functions, upper limit of in-capsule data size, and number of IO connections, as well as for alive monitoring. Upon receiving the connection request for management connection 143, storage system 1 permits the connection of management connection 143. Thereafter, host server 200 sends a negotiation request to storage system 1 to set the communication parameters.
[0023] (S2) The FE I / F 110 in the storage system 1 that has received the negotiation request inquires of the controller 100 about the number of IO connections and the communication buffer size for Incapsule-data. The controller 100 calculates the number of connections, communication buffer size, and upper limit of In-capsule data size to be permitted to the host server 200 based on the performance requirements and use of the host server 200 input in advance by the user, the performance information and configuration information of the storage system 1, and the RTT (Round Trip Time) between the host server 200 and the storage system 1, and responds to the FE I / F 110. Note that the RTT here refers to the time from when data is sent to the communication partner until a response is returned (round trip time of communication).
[0024] (S3) The FE I / F 110 responds to the host server 200 with the number of connections and the in-capsule data size upper limit received from the controller 100. The in-capsule data size upper limit indicates the upper limit of the size of data excluding commands (for example, host write data written from the host to a physical storage device). Here, the number of connections is set to N.
[0025] (S4) The host server 200 requests the storage system 1 to connect N IO connections 145. In FIG. 1, one IO connection is indicated by the reference numeral 145 as an example. The FE I / F 110, which has received the IO connection connection request, establishes each IO connection and allocates a communication buffer 141 of the size obtained in S3 to each IO connection 145. In FIG. 1, one communication buffer is indicated by the reference numeral 141 as an example. Thereafter, the host server 200 starts processing command requests to the storage system 1 within the range of the In-capsule data size upper limit notified in S3.
[0026] The method described above makes it possible to realize a number of connections and communication buffer size that are optimized for the requirements of the host server 200 and the configuration of the storage system 1 in a storage system 1 that utilizes a SmartNIC. When this method is used, a necessary and sufficient number of connections and communication buffer capacity are allocated to the connection between the host server 200 and the storage system 1. This makes it possible to reduce memory consumption in the SmartNIC while suppressing performance degradation.
[0027] In the figure, a larger number of communication buffers 141 with fewer IO connections are allocated to host server 200-A, which has low performance requirements and is connected to storage system 1 via a WAN and close to the storage system 1. On the other hand, a smaller number of communication buffers 141 with more IO connections are allocated to host server 200-B, which has high performance requirements and is connected to storage system 1 via a LAN and far from the storage system 1.
[0028] In this embodiment, the number of IO connections and the communication buffer size of In-capsule data are assumed as connection control parameters, but this is merely an example. The present invention can also be applied to other connection control parameters between the host server 200 and the storage system 1. For example, it can be applied to the receive buffer size and send buffer size of the TCP connection of the FE I / F 110.
[0029] Furthermore, in this embodiment, NVMe / TCP is assumed as the communication protocol between the host server 200 and the storage system 1, but this is not limiting. For example, it is also applicable to communication protocols such as iSCSI, NVMe / RDMA (Remote Direct Memory Access), FC-SCSI (FibreChannel Small Computer System Interface), and FC NVMe. <System configuration of Example 1>
[0030] FIG. 2 is a diagram showing the overall configuration of the storage system 1 of the first embodiment.
[0031] The storage system 1 is connected to a host server 200 and a management server 50 via a network 30 .
[0032] The storage system 1 has a storage control device 10 and a storage device unit 20. The storage control device 10 has multiple controllers 100. To improve the availability of the storage system 1, a dedicated power supply may be prepared for each controller 100, and power may be supplied to each controller 100 using that dedicated power supply. Also, there may be multiple storage control devices 10, and the controllers 100 may be connected to each other via an HCA (Host Channel Adaptor) network.
[0033] The controller 100 includes an FE I / F 110 and a BE I / F 120 .
[0034] The storage device unit 20 has a plurality of PDEVs 21. The PDEVs 21 may be HDDs (Hard Disk Drives) or other types of storage devices (non-volatile storage devices), for example, FM (Flash Memory) devices such as SSDs (Solid State Drives). The storage device unit 20 may have different types of PDEVs 21. Furthermore, a RAID group may be configured with a plurality of PDEVs 21 of the same type. Data is stored in the RAID group according to a predetermined RAID level.
[0035] The network 30 is, for example, a local area network (LAN) or a wide area network (WAN).
[0036] The host server 200 is a device that accesses the storage system 1, and sends data input / output requests (data write requests, data read requests) to the storage system 1. The host server 200 sends data input / output requests to the storage system 1 in block units.
[0037] The management server 50 is equipped with a user interface such as a GUI (Graphical User Interface) or a CLI (Command Line Interface), and provides functions that allow a user or operator to control and monitor the storage system 1.
[0038] FIG. 3 is a configuration diagram of the controller 100 of the storage system 1 of the first embodiment.
[0039] The controller 100 includes an FE I / F 110, a BE I / F 120, a CPU 103, a memory 104, and a cache 105. These are interconnected by a communication path such as a bus.
[0040] The FE I / F 110 is a programmable network interface that uses a SmartNIC or the like. In the first embodiment, block protocol processing runs on the FE I / F 110. Details of the FE I / F 110 will be described later using FIG. 4. The BE I / F 120 is an interface device that enables the controller 100 to communicate with the storage device unit 20. The FE I / F 110 stores the data of the Subsystem in the storage device unit 20.
[0041] The CPU 103 controls the operation of the block storage. The memory 104 is, for example, a RAM (Random Access Memory), and temporarily stores programs and data for the operation control of the CPU 103. The memory 104 stores a block storage control program P1, a connection control program P3, an FE I / F integrated control program P5, a port management table T10, an LDEV management table T20, a Subsystem management table T30, an FE I / F management table T40, a session management table T50, and a connection management table T60. The programs and tables stored in the memory 104 may also be stored in the storage device unit 20.
[0042] The block storage control program P1 configures a Namespace and a Subsystem, which is a collection of Namespaces, from logical devices (LDEVs), which are logical storage areas based on the storage device unit 20, and provides these to the FE I / F 110. The FE I / F 110 can access any LDEV by specifying the Subsystem and Namespace. This allows the FE I / F 110 to use the LDEV as the storage destination for the Subsystem and Namespace to be provided to the host server 200.
[0043] The connection control program P3 is a program that controls the connection between the host server 200 and the FE I / F 110. When an inquiry about the connection configuration is received from the FE I / F to the host server 200, the connection control program P3 calculates the number of IO connections, the upper limit of the in-capsule data size, and the communication buffer amount based on the algorithms described later in Figures 13 to 15, and responds.
[0044] The FE I / F integrated control program P5 controls all FE I / Fs 110 of the controller 100. The FE I / F integrated control program P5 turns on the power of the FE I / Fs 110, starts them up, and initializes them via the internal bus, making them ready to accept data access from the host server 200. All controllers 100 of the storage system 1 synchronize tables, allowing access to tables with the same contents.
[0045] The various tables will be described in detail later with reference to Figures 7 to 12. The cache 105 temporarily stores write data from the host server 200 or FE I / F 110 and data read from the storage device unit 20.
[0046] FIG. 4 is a configuration diagram of the FE I / F 110 of the storage system 1 of the first embodiment.
[0047] The FE I / F 110 includes a network I / F 111, an internal I / F 112, a CPU 113, a memory 114, and a storage device 116. These are interconnected by a communication path such as a bus.
[0048] The network I / F 111 is an interface device for communicating with the host server 200. An IP address is set in the network I / F 111 and it is used as a network port (hereinafter referred to as a port) for communication. The IP address is an identifier on the network, and the host server 200 communicates with the FE I / F 110 through the IP address set in the port.
[0049] The internal I / F 112 is an interface device that communicates with the controller 100. The internal I / F 112 is connected to the CPU of the controller 100 via, for example, PCIe (Peripheral Component Interconnect-Express).
[0050] The CPU 113 controls the operation of the FE I / F 110. The memory 114 temporarily stores programs and data used to control the operation of the CPU 113. The memory 114 stores an FE connection control program P11, an FE I / F control program P13, a protocol control program P15, a block access program P17, a session management table T50, and a connection management table T60. The programs and information stored in the memory 114 may also be stored in the storage device 116.
[0051] The FE connection control program P11 is executed by the CPU 113 to control a connection for communication between the host server 200 and the storage system 1 and a session consisting of one or more connections. In this embodiment, a TCP / IP (Transmission Control Protocol / Internet Protocol) connection is assumed as the connection type, and an NVMe / TCP session is assumed as the session. The FE connection control program P11 configures a TCP port for the Listen service that accepts connection connection requests for each port of the FE I / F 110. The FE connection control program P11 establishes a TCP connection when it receives a connection connection request for the Listen service. It then establishes a session to accept the session connection request from the host server.
[0052] The FE I / F control program P13 is an OS (Operating System) of the FE I / F 110, and communicates with the controller 100 to initialize the FE I / F 110, manage resources, manage failures, and schedule tasks.
[0053] The protocol control program P15 receives various requests such as Read / Write from the host server 200 and processes the block protocol included in these requests. The protocol control program P15 processes block access protocols such as NVMe / TCP received from the host server 200 and converts them into block access command requests to the controller 100. The block access program P17 communicates with the controller 100 and processes data reads and writes to the LDEVs that make up the Subsystem Namespace. The FE I / F control program P13 works in conjunction with the FE I / F integrated control program P5 and synchronizes tables on the memory 114 with tables on the controller. The storage device 116 stores programs, tables, etc. of the FE I / F 110.
[0054] 5 is an example of a configuration diagram of the host server 200 according to the first embodiment. The host server 200 includes a network I / F 201, a CPU 202, a memory 203, and a storage device 204. These are interconnected by a communication path such as a bus.
[0055] The network I / F 201 is an interface device for communicating with the storage system 1 and the management server 50. The CPU 202 controls the operation of the host server 200. The memory 203 temporarily stores programs and tables used to control the operation of the CPU 202. The memory 203 stores an application program P41 and a storage connection program P43. The programs and information stored in the memory 43 may also be stored in a storage device 44.
[0056] The storage device 204 stores programs and tables of the host server 200 .
[0057] The application program P41 is executed by the CPU 202 to read and write data to the Namespace of the Subsystem provided by the storage system 1 via the storage connection program P43. The storage connection program P43 receives various requests such as Read / Write from the application program P41, and reads and writes data from and to the storage system 1. The storage device 44 stores the programs and tables of the host server 200.
[0058] 6 is an example of a configuration diagram of the management server 50 according to the first embodiment. The management server 50 includes a network I / F 51, a CPU 52, a memory 53, and a storage device 54. These are interconnected by a communication path such as a PCI Express (Peripheral Component Interconnect Express) bus.
[0059] The network I / F 51 is an interface device for communicating with the storage system 1 and the host server 200 .
[0060] The CPU 52 controls the operation of the management server 50. The memory 53 temporarily stores programs and data used to control the operation of the CPU 52. The memory 53 stores a management server program P50. The programs and information stored in the memory 53 may be stored in a storage device 54. The storage device 54 stores programs and tables of the management server 50.
[0061] The management server program P50 is equipped with a user interface such as a GUI or CLI, and provides functions that enable the user or operator to control and monitor the storage system 1. When the management server program P50 receives a control instruction or a monitoring instruction from the user to the storage system 1, it communicates with the storage system 1 and performs control and monitoring. <Tables in Example 1>
[0062] FIG. 7 is a diagram showing an example of the port management table T10.
[0063] The port management table T10 is a management table used by the controller 100 to manage the ports set in the storage system 1.
[0064] Each row of the port management table T10 indicates the configuration of each port of the storage system 1. The port management table T10 has a port IDC101, a controller IDC102, an FE I / F IDC103, an IP address C104, and a protocol type C105.
[0065] The port ID 101 stores the identifier of the corresponding port in the storage system 1.
[0066] The controller IDC 102 stores the identifier of the controller 100 to which the corresponding port belongs. The FE I / F 110 DC 103 stores the identifier of the FE I / F 110 that has the corresponding port.
[0067] The IP address C104 stores the IP address set for the corresponding port.
[0068] The protocol type C105 stores the protocol type set for the corresponding port. Examples of protocol types include, but are not limited to, "NVMe / TCP," "FC NVMe," "iSCSI," and "FC SCSI."
[0069] FIG. 8 is a diagram showing an example of the LDEV management table T20.
[0070] The LDEV management table T20 is a management table used by the controller 100 to manage LDEVs. Each row of the LDEV management table T20 indicates the configuration of an LDEV managed by the storage system 1. All controllers 100 in the storage system 1 are assigned a controller in charge of each LDEV, and by changing the controller in charge, the controller 100 that processes the LDEV can be changed.
[0071] The LDEV management table T20 has an LDEV IDC 201, a responsible controller C202, a used PDEVC 203, and a capacity C204. The LDEV IDC 201 stores the identifier of the relevant LDEV. The responsible controller C202 stores the identifier of the responsible controller for the relevant LDEV. The used PDEVC 203 stores the identifier of the PDEV that stores the data of the LDEV. The capacity C204 stores the capacity of the relevant LDEV.
[0072] In this embodiment, LDEVs and PDEVs correspond one-to-one, but this is merely an example. For example, like the thin provisioning function, it is also possible to create a large-capacity capacity pool from one or more PDEVs, and virtually carve out just the required capacity to use as an LDEV.
[0073] 9 is a diagram showing an example of a Subsystem management table T30. The Subsystem management table T30 is a management table used by the controller 100 to manage the Subsystems. Each row of the Subsystem management table T30 indicates the configuration of a Subsystem managed by the storage system 1.
[0074] The host server 200 can access the corresponding Subsystem using the communication protocol stored in the protocol type C105 of the port management table T10. The host server 200 uses the Subsystem exclusively, and basically one host server 200 occupies one Subsystem.
[0075] The Subsystem management table T30 has Subsystem IDC301, Subsystem NQNC302, Port IDC303, Host NQNC304, Host performance requirement C305, Host OSC306, Namespace number C307, LDEVC308, IO queue length C309, and Use C310.
[0076] Subsystem IDC301 stores the identifier of the relevant Subsystem within the storage system 1. Subsystem NQNC302 is an NQN (NVMe Qualified Name), which is the identifier of the Subsystem in the NVMe / TCP protocol. The host server 200 specifies the Subsystem to connect to using the Subsystem NQN. Port IDC303 stores the identifier of the port that exposes the relevant Subsystem.
[0077] The host NQNC 304 is an NQN that is an identifier of the host server 200 in the NVMe / TCP protocol. The storage system 1 determines whether or not connection to the Subsystem is possible based on the host NQN. The host NQNC 304 is set by a storage administrator using a management GUI, which will be described later with reference to FIG. 17.
[0078] The host performance requirement C305 is a performance requirement for the host server 200 that uses the Subsystem, and stores values of "highest," "high," "medium," and "low." The host performance requirement C305 is set by the storage administrator using a management GUI (Graphical User Interface) described later in FIG. 17.
[0079] The host OSC 306 is the type of OS (Operating System) of the host server 200 that uses the Subsystem, and stores values such as "Ubuntu Linux 20.04" (Linux is a registered trademark) or "Windows 11" (Windows is a registered trademark). The host OSC 306 is set by the storage administrator using the management GUI described later in FIG. 17.
[0080] Namespace number C307 is the number of the Namespace included in the Subsystem, and integers starting from 0 are stored sequentially for each Subsystem. LDEVC308 stores the identifier of one LDEV that makes up one Namespace of Namespace number C307. In each Subsystem, there is a one-to-one correspondence between a Namespace and an LDEV.
[0081] The IO queue length C309 indicates the length of the IO queue for each IO connection of the host server 200, and is expressed as the number of commands. The host server 200 can simultaneously issue read / write commands to the storage system 1 for each IO connection up to the IO queue length. The IO queue length is determined for each host OS, and is set for each host OS type set by the user. In other words, one IO queue length is set for each Subsystem.
[0082] Use C310 stores the use of the Subsystem. Use C310 specifies "LAN access," "WAN access," "remote backup," etc. Use C310 is set by the storage administrator using the management GUI described later in FIG.
[0083] Note that the host performance requirement C305, host OSC306, and use C310 are set by a storage administrator using a management GUI, but this is merely an example. They may also be set using a CLI (Command Line Interface) or REST I / F. Furthermore, these may not be set by a storage administrator, but may be automatically determined by the storage system 1 from the IO trace of the host server 200.
[0084] FIG. 10 is a diagram showing an example of the FE I / F management table T40.
[0085] The FE I / F management table T 40 is used by the controller 100 to manage the FE I / F 110 installed in the storage system 1 .
[0086] Each row of the FE I / F management table T40 indicates the configuration of the FE I / F 110 installed in the storage system 1. The controller 100 uses the FE I / F management table T40 to manage the configuration of the FE I / F.
[0087] The FE I / F management table T40 has an FE I / F IDC 401, an installed controller C402, the number of ports C403, the number of CPU cores C404, memory capacity C405, an IOP SC 406, and one IO processing time C407.
[0088] The FE I / F IDC 401 stores the identifier of the corresponding FE I / F 110. The on-board controller C402 stores the identifier of the controller 100 on which the corresponding FE I / F 110 is mounted.
[0089] The number of ports C403 stores the number of network I / Fs 111 of the corresponding FE I / F 110. The number of CPU cores C404 stores the number of CPU cores of the CPU 113 of the corresponding FE I / F 110. The number of CPU cores here refers to the number of processors built into the CPU. The more CPU cores there are, the more parallel processing the CPU can perform. The FE I / F 110 allocates a CPU for each IO connection and distributes the load on the CPU cores on a connection-by-connection basis. The memory capacity C405 stores the memory capacity of the memory 114 of the corresponding FE I / F 110.
[0090] IOPSC406 stores the IOPS (Input / Output Per Second) per port of the corresponding FE I / F 110. IOPSC406 stores the IOPS per port that was evaluated in advance by the development vendor. IOPS here is one of the storage performance indicators, and indicates the number of reads and writes that can be performed per second under certain conditions. 1IO processing time C407 stores the processing time per IO (IO processing unit time) of the corresponding FE I / F 110. 1IO processing time C407 stores the time it takes to process 1 IO that was evaluated in advance by the development vendor. IOPSC406 and 1IO processing time C407 are information that indicates the communication performance between the host server 200 and the FE I / F 110.
[0091] 11 is a diagram showing an example of a session management table T50. Each row in the session management table T50 indicates the configuration of a session. The session management table T50 is used by the controller 100 and the FE I / F 110 to manage sessions between the host server 200. Each FE I / F 110 uses a session management table T50 for the number of sessions that it manages. The controller 100 synchronizes with all the FE I / Fs 110 and manages all sessions of the storage system 1 using the session management table T50.
[0092] The session management table T50 stores a host NQNC501, a host IDC502, a port IDC503, a Subsystem NQNC504, a session number C505, an upper limit of the number of IO connections C506, a communication buffer amount C507, an upper limit of the in-capsule data size C508, an IO queue length C509, and an RTTC510.
[0093] The host NQNC 501 is an identifier of the host server 200 in the NVMe / TCP protocol. The host IDC 502 is an identifier on the host side in the NVMe / TCP protocol, and is assigned to an adapter of the host server 200. The host IDC 502 is used when the host server connects to the storage system 1.
[0094] The port ID C503 is the identifier of the port used by the session. The Subsystem NQNC 504 is the identifier of the Subsystem to which the session is connected. The session number C505 is the identifier of the connected session. The controller 100 assigns numbers to sessions connected to each port in ascending order, starting from 0. The IO connection limit C506 is the upper limit of the number of IO connections allowed within the session.
[0095] The communication buffer capacity C507 is the size of the communication buffer that stores in-capsule data. The communication buffer capacity C507 is the product of the in-capsule data size upper limit C508 and the IO queue length C509.
[0096] The In-capsule data size upper limit C508 is the upper limit of the size of In-capsule data. The storage system 1 notifies the host server 200 of the In-capsule data size upper limit C508 in response to a session connection request, and returns an error response if In-capsule data of a size equal to or larger than the upper limit is received.
[0097] The IO queue length C509 is the IO queue length of the host server 200. The storage system 1 sets this value based on the host OS type that has been set in advance. The RTTC 510 is the RTT between the storage system 1 and the host server 200. The method for setting the RTT in the storage system 1 will be described later with reference to FIG. 13.
[0098] 12 is a diagram showing an example of a connection management table T60. The connection management table T60 is used by the controller 100 and the FE I / F 110 to manage connections. The connection here refers to a data communication path of the TCP protocol, and indicates the data communication path between the host server 200 and the storage system 1. Each row of the connection management table T60 corresponds to a connection between a host server and a storage system.
[0099] The connection management table T60 stores a host IP address C601, a host port number C602, a port ID C603, a target IP address C604, a target port number C605, a session number C606, a connection number C607, and a connection type C608.
[0100] The host IP address C601 is the IP address used by the host server 200 of the corresponding connection. The host port number C602 is the port number used by the host server 200 of the corresponding connection. The port ID C603 is the identifier of the port used by the corresponding connection.
[0101] The target IP address C604 is the IP address used by the storage system 1 for the connection. The target port number C605 is the port number used by the storage system 1 for the connection. The session number C606 is the number of the session to which the connection belongs. The session number is the identifier of the session for each port.
[0102] The connection number C607 is an identifier of the relevant connection within the same session. The connection type C608 indicates the type of the relevant connection and stores "management" or "IO". <Flowchart of Example 1>
[0103] 13 is a flowchart showing an example of a session establishment process between the host server 200 and the storage system 1 of the first embodiment. The host server 200 establishes a session with the Subsystem provided by the storage system 1, and starts communication of management commands and IO commands for data access.
[0104] Storage connection program P43 of host server 200, FE connection of FE I / F 110
[0105] The control program P11, protocol control program P15, and connection control program P3 of the controller 100 establish a session between the host server 200 and the Subsystem according to the flow shown in FIG.
[0106] S1000: The storage connection program P43 of the host server 200 sends a TCP connection establishment request to the destination port of the FE I / F 110.
[0107] S1020: The FE connection control program P11 of the FE I / F 110 establishes a TCP connection with the host server 200 upon receiving the TCP connection establishment request of S1000.
[0108] S1030: The FE connection control program P11 of the FE I / F 110 responds to the TCP connection establishment request from the host server 200. At this time, the FE connection control program P11 records the time of sending the response in on-memory.
[0109] S1040: Having received the TCP connection request response, the host server 200 sends a management connection connection request PDU (Protocol Data Unit) to the FE I / F 110. The management connection connection request requests the storage system 1 to use the TCP connection established in S1020 as the NVMe / TCP management connection. The management connection connection request PDU includes the host NQN, host ID, and Subsystem NQN.
[0110] S1050: When the FE connection control program P11 of the FE I / F 110 receives the PDU for the management connection connection request, it interprets the PDU and obtains the host NQN, host ID, and Subsystem NQN. It also calculates the RTT between the host server 200 and the storage system 1 from the difference between the time when the response was sent recorded in S1030 and the current time, and records the calculated RTT in the session management table T50.
[0111] S1060: The FE connection control program P11 of the FE I / F 110 transmits a session establishment request to the controller 100. At this time, the host NQN, host ID, Subsystem NQN, port ID, and RTT are notified.
[0112] S1070: The connection control program P3 of the controller 100 calculates the number of connections for the target session. Details of the IO connection calculation will be described later with reference to FIG.
[0113] S1080: The connection control program P3 of the controller 100 calculates the communication buffer size and the upper limit of the in-capsule data size of the target session. Details of the calculation of the communication buffer size will be described later with reference to FIG.
[0114] S1090: The connection control program P3 of the controller 100 reserves resources for the session within the controller 100, and updates the session management table T50 and the connection management table T60.
[0115] S1100: The connection control program P3 of the controller 100 responds to the FE / IF. At this time, it also notifies the number of IO connections, communication buffer capacity, and upper limit of in-capsule data size calculated in S1070 and S1080.
[0116] S1110: The FE connection control program P11 of the FE I / F 110 instructs the protocol control program P15 to establish a management connection with the host server 200. The FE connection control program P11 then updates the session management table T50 and the connection management table T60. The contents of the session management table T50 and the connection management table T60 become the same as those of the controller 100.
[0117] S1120: The FE connection control program P11 of the FE I / F 110 responds to the management connection connection request from the host server 200. The response to the management connection connection request includes the number of IO connections and the upper limit of the In-capsule data size.
[0118] The processes from S1130 to S1190 are repeated for the number of IO connections calculated in S1070.
[0119] S1140: The host server 200 sends a TCP connection request for an IO connection to the storage system 1, and establishes the TCP connection. Thereafter, the host server 200 sends the IO connection request to the FE I / F 110.
[0120] S1150: The FE connection control program P11 of the FE I / F 110 transmits the IO connection request to the controller 100 after receiving the IO connection request.
[0121] S1160: After the IO connection is established, the controller 100 updates the connection management table T60 and responds to the FE I / F 110.
[0122] S1170: The FE connection control program P11 of the FE I / F 110 reserves the communication buffer capacity calculated in S1100 for the IO connection and establishes the IO connection. After that, the FE connection control program P11 updates the connection table.
[0123] S1180: The FE connection control program P11 of the FE I / F 110 returns a response to the host server 200.
[0124] S1190: Repeat the process from step 1130 onwards until the number of IO connections is completed.
[0125] As described above, in the first embodiment, the FE I / F 110 that performs protocol processing instructs the controller to calculate the number of IO connections and the communication buffer size when a connection request is received from the host server 200. The controller 100 calculates the necessary and sufficient number of IO connections and communication buffer size based on the requirements of the host server registered in advance and the configuration of the storage system 1, thereby realizing memory usage that maintains performance.
[0126] 14 is a flowchart showing an example of the number of IO connections calculation process by the connection control program P3 of the controller 100 of embodiment 1. The connection control program P3 calculates the number of IO connections in the session to be connected in the flow shown in FIG.
[0127] S1070-1: The connection control program P3 obtains the number of subsystems that use the FE I / F 110 that establishes a session from the Subsystem management table T30. The number of subsystems is equivalent to the number of connected hosts. A Subsystem that uses the FE I / F 110 is a Subsystem whose one of its port IDCs 303 is included in the FE I / F 110.
[0128] The connection control program P3 obtains from the Subsystem management table T30 the performance requirements C305 and IO queue length C309 of the Subsystem corresponding to the Subsystem NQN specified by the FE I / F 110. The connection control program P3 also obtains from the FE I / F management table T40 the number of ports C403, number of CPU cores C404, IOPSC 406, and 1 IO processing time C407 of the FE I / F 110 to be used.
[0129] S1070-2: The connection control program P3 calculates the minimum number of IO connections using the following formula. Minimum number of IO connections = Number of CPU cores / Number of ports
[0130] As will be described later, the minimum number of IO connections indicates the lowest upper limit number of connections allowed in a session. In the FE I / F 110 assumed in this embodiment, IO connections are distributed among CPU cores for processing. By setting the number of IO connections to be equal to or greater than the number of CPU cores assigned to each port, the load among the CPU cores can be more evenly distributed.
[0131] S1070-3: The connection control program P3 calculates the host performance requirement using the following formula: The host performance requirement here refers to the IOPS that should be achieved in the session. Host performance requirements = IOPS ÷ number of subsystems × performance coefficient
[0132] The performance coefficient here is a coefficient determined by the host performance requirement C305, and is 0.5 for low, 1 for medium, 4 for high, and 8 for the highest.
[0133] S1070-4: The connection control program P3 calculates the number of required IO connections using the following formula. The product of the number of required IO connections and the queue length of each IO connection is equivalent to the IO parallelism required to achieve the host performance requirements. IO parallelism indicates the number of commands that can be sent simultaneously from the host server 200 to the storage system 1 without waiting for a response to the IO. Required number of IO connections = host performance requirements x 1 IO processing time ÷ IO queue length
[0134] S1070-5: The connection control program P3 sets the upper limit of the number of IO connections to the greater of the minimum number of IO connections or the required number of IO connections. This makes it possible to set the IOPS per session to be equal to or greater than the IOPS of the host performance requirement.
[0135] As described above, in the first embodiment, the necessary and sufficient number of connections can be achieved from the host requirements managed by the controller 100 in the Subsystem management table T30 and the performance values and hardware configuration of the FE I / F 110 managed by the FE I / F management table T40.
[0136] Note that the method for calculating the number of connections shown above is merely an example. For example, the number of connections per host server 200 may be dynamically determined based on statistical values of memory usage of the FE I / F 110. Also, the degree of IO parallelism may be increased by setting a larger number of connections for a host server in a remote location where communication delays are large.
[0137] 15 is a flowchart showing an example of a communication buffer calculation process by the connection control program P3 of the controller 100 of embodiment 1. The connection control program P3 calculates the upper limit of the In-capsule data size and the communication buffer size of the IO connection in the session in accordance with the flow shown in FIG.
[0138] S1080-1: The connection control program P3 obtains the IO queue length C309 and the purpose C310 from the Subsystem management table T30. If the RTT notified by the FE I / F is greater than 1 ms, or if the purpose is remote communication between distant locations (different sites, etc.) such as "WAN access" or "remote backup," the connection control program P3 proceeds to S1080-2. Remote communication has a longer communication delay time than local communication. Otherwise, the program proceeds to S1080-3.
[0139] S1080-2: The connection control program P3 calculates the upper limit of the in-capsule data size using the following formula: In-capsule data size limit =8KB×2^SQRT(RTT / 1ms)
[0140] S1080-3: The connection control program P3 sets the upper limit of the in-capsule data size to 8 KB.
[0141] S1080-4: The connection control program P3 calculates the communication buffer size for in-capsule data using the following formula: Communication buffer size = Incapsule-data size limit x IO queue length
[0142] As described above, in the first embodiment, the communication buffer capacity for the host server 200 that is far from the storage system 1 is increased, making it possible to communicate larger data as in-capsule data. This reduces the number of communications and reduces the performance impact due to communication delays.
[0143] The above-described method for calculating the number of connections is merely an example. For example, the number of connections per host server 200 may be dynamically determined based on the memory usage status of the FE I / F 110.
[0144] FIG. 16 is a flowchart showing an example of a session re-establishment process between the host server 200 of the first embodiment and the Subsystem provided by the storage system 1.
[0145] In the first embodiment, the number of IO connections per host server 200 is determined by the number of Subsystems. If the number of Subsystems in the storage system 1 increases during operation, the number of connected host servers 200 increases, and if the IO connections that are already connected continue to be used, there is a possibility that a memory shortage will occur. Therefore, when the FE I / F 110 detects a memory shortage, it reconnects the session with the host server 200 for which the allocation of the number of IO connections has been changed, and performs processing to reconnect with the number of IO connections that is appropriate for the configuration at that time.
[0146] S2000: The FE I / F control program P13 of the FE I / F 110 detects a memory shortage when the free memory capacity of the FE I / F 110 falls below a threshold.
[0147] S2010: The FE I / F control program P13 notifies the controller 100 of a memory shortage.
[0148] S2020: The FE I / F integrated control program P5 of the controller 100 checks the session management table T50 and the subsystem management table T30 to find the expected number of IO connections per host server 200. The FE I / F integrated control program P5 checks the connection management table T60 to find the number of IO connections currently connected.
[0149] S2030: The FE I / F integrated control program P5 of the controller 100 instructs the FE I / F 110 to reconnect a session for which there is a difference between the number of connected IO connections and the expected number of IO connections.
[0150] S2040: The FE connection control program P11 of the FE I / F 110 performs a session disconnection process for the host server 200 to which the session is connected.
[0151] S2050: The host server 200 whose session was terminated
[0152] S2060: The host server 200 whose session has been disconnected re-performs the session establishment process shown in Fig. 13. This re-establishes a connection with the number of IO connections that matches the host server configuration at that time.
[0153] As described above, in the first embodiment, if the number of subsystems increases during operation, the session is reconnected to optimize the number of IO connections per host server 200. This allows operation with an appropriate number of connections even if the system configuration changes. In addition, the number of hosts that can be connected per FE I / F increases, and the reduction in the number of devices allows for reduced CAPEX / OPEX and power savings.
[0154] Note that only one of the number of IO connections and the buffer size may be determined. The host performance requirements may not be referenced when determining the number of IO connections, and either the information indicating the communication distance such as RTT or the communication purpose may not be referenced when determining the buffer size. <User Interface of Example 1>
[0155] FIG. 17 is an example of a Subsystem setting interface of the storage system of the first embodiment.
[0156] The management server program P50 of the management server 50 provides the user with an operating means for creating a subsystem and changing the configuration through a subsystem setting interface I1.
[0157] The Subsystem setting interface I1 has Subsystem NQN input I10, Namespace input I20, Port input I30, Host NQN input I40, Host performance requirement input I50, Host OS input I60, Host application input I70, Decision button I80, and Cancel button I90.
[0158] Subsystem NQN input I10 is a text box for inputting the Subsystem NQN of the Subsystem to be operated.
[0159] Namespace input I20 is a drop-down list table for specifying the LDEVs that make up the Subsystem Namespace. Port input I30 is a table with check boxes for specifying the ports that expose the Subsystem.
[0160] Host NQN input I40 is a text box for inputting the NQN of the host server 200 that uses the Subsystem.
[0161] Host performance requirement input I50 is a drop-down list for inputting the performance requirements of the host server 200 that uses the Subsystem.
[0162] Host OS input I60 is a drop-down list for inputting the OS of the host server 200 that uses the Subsystem.
[0163] Host use input I70 is a drop-down list for inputting the use of the host server 200 that uses the Subsystem.
[0164] The decision button I80 is an interface for instructing the creation of a subsystem and changing the configuration based on the input contents.
[0165] The cancel button I90 is an interface for canceling the creation of a subsystem and the change of configuration based on the entered content.
[0166] As described above, in the first embodiment, the GUI can be used to set the performance requirements, OS, and usage of the host server 200 that uses the Subsystem. The controller 100 can use these settings to calculate appropriate connection parameter values.
[0167] In this embodiment, at least a part of the processing executed by the controller 100 may be executed by the FE I / F 110. In this case, the FE I / F 110 may acquire from the controller 100 information required for the processing. [Example]
[0168] In the second embodiment, a conventional block storage is assumed. In the second embodiment, when a storage system using a normal NIC receives a session connection request from a host server, the number of connections and communication buffer capacity are changed according to the performance requirements of the host server, the distance from the storage system, and the configuration of the storage system, thereby reducing memory consumption while maintaining performance. In the second embodiment, the storage system 1 does not offload protocol processing to a SmartNIC, and the controller 100 performs protocol processing, which is a difference from the first embodiment.
[0169] Hereinafter, the differences between the second embodiment and the first embodiment will be described with reference to FIG.
[0170] FIG. 18 is a schematic diagram of a second embodiment. The second embodiment differs from the first embodiment in that a normal NIC is used for the FE I / F 110 instead of a SmartNIC. The protocol processing that was performed by the FE I / F 110 in the first embodiment runs in the controller 100. In the second embodiment, when a large number of host servers 200 are connected, an increase in memory consumption by the controller 100 becomes a problem when the number of connections per host server 200 increases. In the second embodiment, when the host server 200 establishes a session connection to the storage system 1, the storage system 1 performs the processes S1 to S4 shown below, thereby realizing connection control according to the performance requirements of the host and the configuration of the storage side.
[0171] (S11) The host server 200 initiates a session connection to the storage system 1 using the same procedure as in the first embodiment.
[0172] (S12) The controller 100 in the storage system 1 that has received the negotiation request calculates the communication buffer size for Incapsule-data. The controller 100 calculates the number of connections permitted to the host server 200, the communication buffer size, and the upper limit of the In-capsule data size, which is the upper limit of buffer usage per command, from the host performance requirements input in advance by the user, the system configuration of the storage system 1, and the RTT (Round Trip Time) between the host server 200 and the storage system 1, and responds to the FE I / F 110. Here, the difference from the first embodiment is that these calculations are performed by the controller 100 instead of the FE I / F 110.
[0173] (S13) Controller 100 notifies host server 200 of the number of connections and the upper limit of the In-capsule data size as a response to the negotiation request from host server 200. Here, the number of connections is set to N.
[0174] (S14) The host server 200 starts command request processing to the storage system 1 using the same procedure as in the first embodiment.
[0175] The method described above enables connection control that is optimized for the performance requirements of the host server, the distance from the storage system, and the configuration of the storage system, even in storage system 1 that performs protocol processing in the controller 100. By using this method, it is possible to reduce memory consumption in the controller 100 while suppressing performance degradation.
[0176] The present invention is not limited to the above-described embodiments and includes various modifications. For example, the above-described embodiments have been described in detail to clearly explain the present invention, and the present invention is not necessarily limited to those including all of the described configurations. Furthermore, it is possible to replace part of the configuration of one embodiment with the configuration of another embodiment, or to add the configuration of another embodiment to the configuration of one embodiment. Furthermore, it is possible to add, delete, or replace part of the configuration of each embodiment with other configurations.
[0177] Furthermore, the above-mentioned components, functions, processing units, etc. may be realized in part or in whole by hardware, for example, by designing them as integrated circuits. Furthermore, the above-mentioned components, functions, etc. may be realized in software by a processor interpreting and executing a program that realizes each function. Information such as the programs, tables, and files that realize each function can be stored in memory, a storage device such as a hard disk or SSD, or a storage medium such as an IC card or SD card.
[0178] In addition, the control lines and information lines shown are those that are considered necessary for the explanation, and do not necessarily show all the control lines and information lines in the product. In reality, it can be assumed that almost all components are interconnected. [Explanation of symbols]
[0179] 1. Storage System 100 Controllers 200 host servers 103 CPU 104 memory 105 Cache 110 Front-end Interface 111 Network Interface 112 Internal Interface 113 CPU 114 memory 116 Storage Devices
Claims
1. 1. A storage system, comprising: Includes a controller, The controller a front-end interface for communicating with the host over a network; management information, the management information includes information indicating communication performance between the front-end interface and the host, the controller determines communication control parameters for a session between the host and the front-end interface based on the communication performance; Storage system.
2. 2. The storage system according to claim 1, the controller includes a processor and a memory that stores the management information; The processor determines the communication control parameters; the front-end interface includes a memory for storing the communication control parameters; the front-end interface executes protocol processing in communication with the host in accordance with the communication control parameters; Storage system.
3. 2. The storage system according to claim 1, the communication control parameters include an upper limit number of connections in a session between the host and the front-end interface; the management information further includes information indicating a performance requirement for access from the host to the storage system; the controller determines the upper limit number of connections based on performance requirements of the host and performance of the front-end interface; Storage system.
4. 4. The storage system according to claim 3, The information indicating the performance of the front-end interface includes information on IOPS and IO processing unit time, the management information further includes information on the IO queue length of the host; the controller determines the upper limit number of connections based on the performance requirements of the host, the IOPS, the IO processing unit time, and the IO queue length; Storage system.
5. 4. The storage system according to claim 3, the controller determines the upper limit number of connections to be a value equal to or greater than a value obtained by dividing the number of ports of the front-end interface by the number of processor cores of the front-end interface; Storage system.
6. 2. The storage system according to claim 1, the communication control parameter indicates a communication buffer size in a session between the host and the front-end interface; the information indicating the communication performance includes information indicating a communication distance between the host and the front-end interface, the controller determines the communication buffer size based on the information indicating the communication distance. Storage system.
7. 7. The storage system according to claim 6, the information indicating the communication distance is a round trip time in communication with the host; Storage system.
8. 2. The storage system according to claim 1, the communication control parameter indicates a communication buffer size in a session between the host and the front-end interface; the information indicating the communication performance includes information indicating whether the communication between the host and the front-end interface is remote communication; the controller determining a communication buffer size for the remote communication that is larger than a non-remote communication. Storage system.
9. 2. The storage system according to claim 1, The communication control parameters include an upper limit on the number of connections in the session and a communication buffer size. Storage system.
10. 2. The storage system according to claim 1, When the free memory capacity of the front-end interface falls below a threshold, the controller disconnects the current session with the host and establishes a new session with new communication control parameters. Storage system.
11. A communication control method executed by a storage system, comprising: The storage system includes: a front-end interface for communicating with the host over a network; management information, the management information includes information indicating communication performance between the front-end interface and the host, the communication control method determines communication control parameters for a session between the host and the front-end interface based on the communication performance. Communication control method.
Citation Information
Patent Citations
Network interface and buffer control method thereof
US11700214B1