Performance profiling for improved data throughput
Summary by NHIP
Dynamic Buffer Reallocation
The system opens a high-performance connection with a first host and a low-performance connection with a second host. It reallocates memory buffers reserved for solicited write data from the first host to store unsolicited write data from the second host during oversubscription.
Claim Score by NHIP
Abstract
A computer-implemented system and method for performance profiling on a target device. The computer-implemented method includes configuring the target device to operate in a first mode or a second mode, and receiving a write command from a host device. When the target device is configured to operate in the first mode, the method includes sending an authorization to send write data to the host device, and receiving write data from the host device. When the target device is configured to operate in the second mode, the method includes allocating a reserved write buffer on the target device, and receiving write data from the host device using the write buffer.

Term
Term ended
Expired 3 March 2024, 2.6 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
19 claims: 4 independent, 15 dependent
- 1A computer-implemented method for oversubscribing write data on a target device, the method comprising:opening, at the target device, a first connection with a first host device in a high-performance mode, wherein opening a first connection includes allocating a number of memory buffers for solicited write data received from the first host device within the target device and additionally reserving a number of other memory buffers for unsolicited write data received from the first host device within the target device;opening a second connection with a second host device in a low-performance mode, wherein opening a second connection includes allocating a number of memory buffers for solicited write data received from the second host device within the target device;and initiating an oversubscription process on the target device for the second connection, wherein initiating an oversubscription process includes reallocating a portion of the memory buffers reserved for the first host device as memory to store unsolicited write data received from the second host device, wherein reallocating includes analyzing use of the memory allocated for solicited write data and using a portion of the memory allocated for solicited write data as memory for unsolicited write data from the second host device, wherein, when the oversubscription process is initiated for one of the connections, the target device receives write data from its corresponding host device in a high-performance mode.
- 8A target device for managing network-storage, comprising:a network interface used to couple the device to a network;a memory used to hold write data;a processor, wherein the processor is capable of: opening a first connection with a first host device in a high-performance mode, wherein opening a first connection includes allocating a number of memory buffers for solicited write data received from the first host device within the target device and additionally reserving a number of other memory buffers for unsolicited write data received from the first host device within the target device;opening a second connection with a second host device in a low-performance mode, wherein opening a second connection includes allocating a number of memory buffers for solicited write data received from the second host device within the target device;and initiating an oversubscription process, wherein initiating includes reallocating memory allocated for one of the connections to be used by the other connection, wherein initiating an oversubscription process includes reallocating, for the second connection, a portion of the memory buffers reserved for the first host device as memory to store unsolicited write data received from the second host device, wherein reallocating includes analyzing use of the memory allocated for solicited write data and using a portion of the memory allocated for solicited write data as memory for unsolicited write data received from the second host device;wherein, when the oversubscription process is initiated for one of the connections, the target device receives write data from its corresponding host device in a high-performance mode.
- 12A system for transferring data, comprising:a plurality of host devices including a first host device and a second host device;and a target device, wherein the target device includes: a network interface used to couple the device to a network;a memory used to hold write data;a processor, wherein the processor is capable of: opening a first connection with the first host device in a high-performance mode, wherein opening a first connection includes allocating a number of memory buffers for solicited write data received from the first host device within the target device and additionally reserving a number of other memory buffers for unsolicited write data received from the first host device within the target device;opening a second connection with the second host device in a low-performance mode, wherein opening a second connection includes allocating a number of memory buffers for solicited write data received from the second host device within the target device;and initiating an oversubscription process, wherein initiating includes reallocating memory allocated for one of the connections to be used by the other connection, wherein initiating an oversubscription process includes reallocating, for the second connection, a portion of the memory buffers reserved for the first host device as memory to store unsolicited write data received from the second host device, wherein reallocating includes analyzing use of the memory allocated for solicited write data and using a portion of the memory allocated for solicited write data as memory for unsolicited write data from the second host device;wherein each host device sends write data via its respective connection to the target device;and wherein, when the oversubscription process is initiated for one of the connections, the target device receives write data from its corresponding host device in a high-performance mode.
- 16Broadest claimClaim Score 28, narrow(NHIP)A non-transitory computer-readable medium storing instructions that, when executed by a computer, cause the computer to perform:opening, at a target device, a first connection with a first host device in a high-performance mode, wherein opening a first connection includes allocating a number of memory buffers for solicited write data received from the first host device within the target device and additionally reserving a number of other memory buffers for unsolicited write data received from the first host device within the target device;opening a second connection with the second host device in a low-performance mode, wherein opening a second connection includes allocating a number of memory buffers for solicited write data received from the second host device within the target device;and initiating an oversubscription process on the target device, wherein initiating includes reallocating memory allocated for one of the connections to be used by the other connection, wherein initiating an oversubscription process includes reallocating, for the second connection, a portion of the memory buffers reserved for the first host device as memory to store unsolicited write data received from the second host device, wherein reallocating includes analyzing use of the memory allocated for solicited write data and using a portion of the memory allocated for solicited write data as memory for unsolicited write data received from the second host device;wherein, when the oversubscription process is initiated for one of the connections, the target device receives write data from its corresponding host device in a high-performance mode.
Independent claims4
45 paragraphs in 5 sections, as filed
FIELD OF THE INVENTION
This application is a divisional of U.S. application Ser. No. 10/371,389, filed on Feb. 21, 2003, now U.S. Pat. No. 7,269,644, issued on Sep. 11, 2007, the entire disclosure of which is incorporated herein by reference.
BACKGROUND OF THE INVENTION
In data-processing systems, there is often high data throughput. Such systems typically contain devices that need to transfer, store, or manage large quantities of data. Storage devices, for example, have the capability to store mass quantities of data that is made available to other devices in the system.
In these data-processing systems, large amounts of memory space are needed for the various transfer, storage, and management operations. Because there is such a high volume of data, it may often be difficult to mange this memory space efficiently to achieve optimal system performance. Therefore, the intelligence of such systems will often need to implement various methods of data or flow control.
In a first method, these data-processing systems will perform some form of flow control. For example, in systems that use the Small Computer System Interface (SCSI) protocol and that implement flow control, host devices are not permitted to send unsolicited data. Instead, these host devices must receive authorization (or solicitation) to send data to a target device. Such authorizations that are sent from the target devices are coined “ready-to-transfer,” or “R2T,” commands. Once a host device has received an R2T from the target, it may then (and only then) send data to the target. The systems implementing this method, or other similar methods, of flow control achieve better memory management, because memory space is not allocated for host devices until it is available for use. These systems, however, are not able to achieve as high of a performance for data throughput.
In a second method, these data-processing systems will simply allow certain devices to send commands and data to other devices without much limitation. In this method, there is no real flow control to manage data throughput. While these systems may have good performance, they may encounter memory problems. In order to allow such unconditional and unsolicited data transfer, large amounts of memory space are needed. When this memory space is not managed effectively, there will be insufficient space to hold the high volume of unsolicited data transferred in the system. When memory runs short, error recovery mechanisms will need to be put into effect.
Therefore, for the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need for the present invention.
SUMMARY OF THE INVENTION
Various embodiments of the present invention are provided herein. One embodiment provides a computer-implemented method for performance profiling on a target device. In this embodiment, the computer-implemented method includes configuring the target device to operate in a first mode or a second mode, and receiving a write command from a host device. When the target device is configured to operate in the first mode, the method includes sending an authorization to send write data to the host device, and receiving write data from the host device. When the target device is configured to operate in the second mode, the method includes allocating a reserved write buffer on the target device, and receiving write data from the host device using the write buffer. In one embodiment, configuring the target device to operate in a first mode or a second mode includes configuring the target device to operate in a high-performance mode or a low-performance mode.
This embodiment, as well as other embodiments, will be described in the detailed description below.
BRIEF DESCRIPTION OF THE DRAWINGS
<figref idref="DRAWINGS">FIG. 1A</figref> shows a block diagram of a system having a number of network entities to implement various embodiments of the present invention.
<figref idref="DRAWINGS">FIG. 1B</figref> shows a flow diagram of the operation of one embodiment of the system shown in <figref idref="DRAWINGS">FIG. 1A</figref>.
<figref idref="DRAWINGS">FIG. 2A</figref> shows a block diagram of a system having a number of hosts and a target device for implementing various embodiments of the present invention, the target device having one or more rules and one or more configuration profiles.
<figref idref="DRAWINGS">FIG. 2B</figref> shows a block diagram of one or more performance rules and one or more quality of service rules, according to one embodiment of the rules shown in <figref idref="DRAWINGS">FIG. 2A</figref>.
<figref idref="DRAWINGS">FIG. 2C</figref> shows a block diagram of a performance profile and a quality of service profile, according to one embodiment of the configuration profiles shown in <figref idref="DRAWINGS">FIG. 2A</figref>.
<figref idref="DRAWINGS">FIG. 2D</figref> shows a block diagram of a performance profile, according to one embodiment of the performance profile shown in <figref idref="DRAWINGS">FIG. 2C</figref>.
<figref idref="DRAWINGS">FIG. 2E</figref> shows a block diagram of a performance profile, according to one embodiment of the performance profile shown in <figref idref="DRAWINGS">FIG. 2C</figref>.
<figref idref="DRAWINGS">FIG. 3</figref> shows a block diagram of a system having a number of hosts and a high-performance target, according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 4</figref> shows a block diagram of a high-performance target, according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 5</figref> shows a block diagram of an oversubscribed high-performance target, according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 6</figref> shows a use-case diagram of data flow between a host and a low-performance target, according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 7</figref> shows a use-case diagram of data flow between a host and a high-performance target, according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 8</figref> shows a block diagram of a network entity having an input/output component, memory, a local storage device, and a processor, according to one embodiment of the present invention.
<figref idref="DRAWINGS">FIG. 9</figref> shows a block diagram of a network-based storage system for implementing various embodiments of the present invention.
<figref idref="DRAWINGS">FIG. 10</figref> shows an example screen display for configuring performance profiling, according to one embodiment of the present invention.
DETAILED DESCRIPTION
In the following detailed description of the embodiments, reference is made to the accompanying drawings which form a part hereof, and in which are shown by way of illustration of specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that structural, logical and electrical changes may be made without departing from the spirit and scope of the present inventions. It is also to be understood that the various embodiments of the invention, although different, are not necessarily mutually exclusive. For example, a particular feature, structure or characteristic described in one embodiment may be included within other embodiments. The following description is, therefore, not to be taken in a limiting sense.
<figref idref="DRAWINGS">FIG. 1A</figref> shows a block diagram of a system having a number of network entities to implement various embodiments of the present invention. In <figref idref="DRAWINGS">FIG. 1</figref>, system <b>100</b> includes network entity <b>102</b>, network <b>106</b>, and network entity <b>108</b>. Network entity <b>102</b> is coupled to network <b>106</b> via its network interface <b>104</b>. Network entity <b>108</b> is coupled to network <b>106</b> via its network interface <b>110</b>. In one embodiment, network <b>106</b> includes a local area network. In one embodiment, network <b>106</b> includes a wide area network, such as the Internet. In one embodiment, network entity <b>102</b> includes a host computing environment, while network entity <b>108</b> includes a target storage environment. In various embodiments, network entities <b>102</b> and <b>106</b> use various protocols to communicate with network <b>106</b>. In one embodiment, the Small Computer System Interface (SCSI) protocol is used. In this embodiment, network interfaces <b>104</b> and <b>110</b> include SCSI network interfaces to interface with network <b>106</b>. In one embodiment, the Internet SCSI (iSCSI) protocol is used. In this embodiment, network interfaces <b>104</b> and <b>110</b> include iSCSI network interfaces to interface with network <b>106</b>.
<figref idref="DRAWINGS">FIG. 1B</figref> shows a flow diagram of the operation of one embodiment of the system shown in <figref idref="DRAWINGS">FIG. 1A</figref>. In this embodiment, network entity <b>102</b> includes a host device, and network entity <b>108</b> includes a target device. Flow diagram <b>112</b> shows a computer-implemented method for performance profiling on the target device. At <b>114</b>, the target device is configured to operate in a first or second mode. At <b>116</b>, the target device receives a write command from the host device. At <b>118</b>, the target device is checked to determine if it is configured in the first or second mode. If configured in the first mode, the target device sends an authorization to send write data to the host device at <b>120</b>, and then the target device receives write data from the host device at <b>122</b>. If configured in the second mode, the target device allocates a reserved write buffer at <b>124</b>, and then receives write data from the host device using the write buffer at <b>126</b>.
<figref idref="DRAWINGS">FIG. 2A</figref> shows a block diagram of a system having a number of hosts and a target device for implementing various embodiments of the present invention, the target device having one or more rules and one or more configuration profiles. System <b>200</b> includes host <b>202</b> (“host <b>1</b>”), host <b>204</b> (“host <b>2</b>”), network <b>206</b>, and target device <b>208</b>. Host <b>202</b>, host <b>204</b>, and target device <b>208</b> are each coupled to network <b>206</b>. In one embodiment, network <b>206</b> includes a local area network. In one embodiment, network <b>206</b> includes a wide area network, such as the Internet. In one embodiment, target device <b>208</b> includes an additional interface to a storage area network. In one embodiment, target device <b>208</b> further includes a routing subsystem. Host <b>202</b>, host <b>204</b>, and target device <b>208</b> communicate via network <b>206</b> using the iSCSI protocol, in one embodiment. Target device <b>208</b> contains one or more rules <b>210</b>, and one or more configuration profiles <b>212</b>. Configuration profiles <b>212</b> contain information regarding the configuration of target device <b>208</b>. Rules <b>210</b> contain operating rules governing the run-time functionality of target device <b>208</b>.
<figref idref="DRAWINGS">FIG. 2B</figref> shows a block diagram of one or more performance rules and one or more quality of service rules, according to one embodiment of the rules shown in <figref idref="DRAWINGS">FIG. 2A</figref>. <figref idref="DRAWINGS">FIG. 2B</figref> shows only one specific embodiment for rules <b>210</b>; many other variations may exist in other embodiments. In <figref idref="DRAWINGS">FIG. 2B</figref>, rules <b>210</b> includes one or more performance rules <b>214</b>, and one or more quality of service rules <b>216</b>. Quality of service rules <b>216</b> contain rules that govern the quality of service for data transfer to and from target device <b>208</b>. Performance rules <b>214</b> contain rules that govern the performance for data transfer between target device <b>208</b> and other hosts, such as host <b>202</b> and host <b>204</b>.
<figref idref="DRAWINGS">FIG. 2C</figref> shows a block diagram of a performance profile and a quality of service profile, according to one embodiment of the configuration profiles shown in <figref idref="DRAWINGS">FIG. 2A</figref>. <figref idref="DRAWINGS">FIG. 2C</figref> shows only one specific embodiment for configuration profiles <b>212</b>; many other variations may exist in other embodiments. In <figref idref="DRAWINGS">FIG. 2C</figref>, configuration profiles <b>212</b> includes performance profile <b>218</b>, and quality of service profile <b>220</b>. Performance profile <b>218</b> contains configuration information for the performance characteristics of target device <b>208</b>. Quality of service profile <b>220</b> contains configuration information for the quality of service characteristics of target device <b>208</b>.
<figref idref="DRAWINGS">FIG. 2D</figref> shows a block diagram of a performance profile, according to one embodiment of the performance profile shown in <figref idref="DRAWINGS">FIG. 2C</figref>. <figref idref="DRAWINGS">FIG. 2D</figref> shows one particular embodiment of performance profile <b>218</b>. In this embodiment, performance profile <b>218</b> includes a performance mode indicator <b>222</b>. Performance mode indicator <b>222</b> can be configured according to one of two modes (in this embodiment): HI or LO. In <figref idref="DRAWINGS">FIG. 2D</figref>, performance mode indicator <b>222</b> is configured in the HI mode. Other embodiments may use different variations of entries for performance mode indicator <b>222</b>. For example, in one embodiment, performance mode indicator <b>222</b> may be configured according to a HI, MED, or LO mode.
Target device <b>208</b> uses performance profile <b>218</b>, as shown in <figref idref="DRAWINGS">FIG. 2D</figref>, as follows. Target device <b>208</b> includes a network interface that couples the device to network <b>206</b>. Target device <b>208</b> also includes a number of memory buffers that are used to hold write data. Such write data may be obtained from various hosts, such as host <b>202</b> or host <b>204</b>. Performance profile <b>218</b> is configured to either a first or second performance mode (such as HI or LO). Rules <b>210</b> (and, more particularly, performance rules <b>214</b>, in one embodiment) are operable on performance profile <b>218</b>. Performance rules <b>214</b> cause target device <b>208</b> to reserve a predetermined number of the memory buffers for unsolicited write data sent to target device <b>208</b> when performance profile <b>218</b> is configured to the first performance mode (such as the HI mode, in one embodiment). The number of memory buffers is, in one embodiment, predetermined from a configuration setting. Alternatively, when performance profile <b>218</b> is configured to the second performance mode (such as the LO mode, in one embodiment), performance rules <b>214</b> cause target device <b>208</b> to use the memory buffers only for solicited write data sent to target device <b>208</b>. In the second performance mode, hosts must receive authorization, or solicitation from, target device <b>208</b> before sending write data to target device <b>208</b>.
<figref idref="DRAWINGS">FIG. 2E</figref> shows a block diagram of a performance profile, according to one embodiment of the performance profile shown in <figref idref="DRAWINGS">FIG. 2C</figref>. <figref idref="DRAWINGS">FIG. 2E</figref> shows another embodiment for performance profile <b>218</b>. In this embodiment, performance profile <b>218</b> includes a plurality of host entries <b>224</b>. As shown, “host <b>1</b>” and “host <b>2</b>” are included, and each has a corresponding performance mode indicator. “Host <b>1</b>” has a HI performance mode setting, and “host <b>2</b>” has a LO performance setting. In this fashion, performance profile <b>218</b> is capable of including customized performance settings on a per host basis.
Target device <b>208</b> uses performance profile <b>218</b>, as shown in <figref idref="DRAWINGS">FIG. 2E</figref>, as follows. Target device <b>208</b> includes a network interface that couples the device to network <b>206</b>. Target device <b>208</b> also includes a number of memory buffers that are used to hold write data. Such write data may be obtained from various hosts, such as host <b>202</b> or host <b>204</b>. Performance profile <b>218</b> has one or more host entries <b>224</b> for those hosts configured to send data in a high-performance mode. As shown in <figref idref="DRAWINGS">FIG. 2E</figref>, only “host <b>1</b>” is configured to send data in a high-performance mode. Rules <b>210</b> (and, more particularly, performance rules <b>214</b>, in one embodiment) are operable on performance profile <b>218</b>. Performance rules <b>214</b> cause target device <b>208</b> to reserve a predetermined number of the memory buffers for unsolicited write data sent to target device <b>208</b> from those hosts having host entries configured to send data in the high-performance mode. In this embodiment shown in <figref idref="DRAWINGS">FIG. 2E</figref>, target device <b>208</b> will reserve a predetermined number of the buffers for unsolicited write data for “host <b>1</b>,” because “host <b>1</b>” has an entry configured as “HI.” Performance rules <b>214</b> cause target device <b>208</b> to use the memory buffers only for solicited write data sent to target device <b>208</b> from those hosts not having host entries configured to send data in the high-performance mode (such as “host <b>2</b>”).
<figref idref="DRAWINGS">FIG. 3</figref> shows a block diagram of a system having a number of hosts and a high-performance target, according to one embodiment of the present invention. <figref idref="DRAWINGS">FIG. 3</figref> shows more of the details of the memory used in certain embodiments of the invention. System <b>300</b> includes a number of hosts, such as host <b>310</b>, host <b>312</b>, and host <b>314</b>. Each host is coupled to high-performance target <b>302</b>. High-performance target <b>302</b> is a target device that has been configured to operate in a high-performance mode. High-performance target <b>302</b> includes a number of reserved memory regions <b>304</b>, <b>306</b>, and <b>308</b>. In one embodiment, reserved memory regions <b>304</b>, <b>306</b>, and <b>308</b> include memory buffers. The memory space for these regions is reserved to hold unsolicited write data that is sent from a given host. In the embodiment shown in <figref idref="DRAWINGS">FIG. 3</figref>, a predetermined amount of memory is reserved for each host coupled to target <b>302</b>. Each host is allocated this amount of reserved memory for sending unsolicited write data to target <b>302</b>. As shown, memory region <b>304</b> is reserved to hold unsolicited write data sent from host <b>310</b>. Memory region <b>306</b> is reserved to hold unsolicited write data sent from host <b>312</b>. And, memory region <b>308</b> is reserved to hold unsolicited write data sent from host <b>314</b>. In one embodiment, the amount of memory space reserved for each region <b>304</b>, <b>306</b>, and <b>308</b> is predetermined by configuration. In one embodiment, the amount of memory space is dynamically configurable, and the amount of reserved space may vary from region to region. In one embodiment, the reserved memory regions <b>304</b>, <b>306</b>, and <b>308</b> are allocated to hosts based on a first-come, first-serve (availability) basis. In this embodiment, if all of the reserved memory regions are already allocated and in use, subsequent hosts will only be able to initiate lower-performance connections with high-performance target <b>302</b> (implementing solicited data transfer). Because high-performance target <b>302</b> only has a certain amount of reserved memory space for high-performance throughput (in this embodiment), and if all such space is in use (i.e., allocated for existing host connections), subsequent connections can only be configured for the lower-performance mode.
<figref idref="DRAWINGS">FIG. 4</figref> shows a block diagram of a high-performance target, according to one embodiment of the present invention. In this embodiment, high-performance target <b>400</b> includes a number of write buffers for holding write data sent to target <b>400</b> from various host devices. These write buffers include both normal and reserved buffers. Reserved write buffer <b>402</b> is reserved for unsolicited write data, while normal write buffers <b>404</b>, <b>406</b>, and <b>408</b> are used for solicited write data. Target <b>400</b> operates in a high-performance mode, because at least one of its buffers is reserved for unsolicited write data.
<figref idref="DRAWINGS">FIG. 5</figref> shows a block diagram of an oversubscribed high-performance target, according to one embodiment of the present invention. In <figref idref="DRAWINGS">FIG. 5</figref>, high-performance target <b>400</b> (from <figref idref="DRAWINGS">FIG. 4</figref>) has been configured as an oversubscribed high-performance target. This oversubscription is configured manually (such as by an administrator), in one embodiment. The oversubscription is automatically configured (such as by the system), in one embodiment. In one embodiment of automatic oversubscription, the system monitors the interaction between target <b>400</b> and one or more hosts having connections with target <b>400</b> over a period of time, and determines the amount of oversubscription that will be implemented. For example, if one host is only sending read commands to target <b>400</b>, its allocated buffers could be oversubscribed for high-performance use and allocated to another host connection. Oversubsription uses the memory that has already been reserved for high-performance throughput. Oversubscription, therefore, may increase the number of hosts that can send unsolicited write data to target <b>400</b>. Oversubscribed target <b>400</b> still has reserved write buffer <b>402</b> and normal write buffers <b>404</b>, <b>406</b>, and <b>408</b>, but uses reserved write buffer <b>402</b> for one or more host connections. Each of these host connections may use reserved write buffer <b>402</b> for high-performance throughput. In one embodiment, one or more connections initially configured as low-performance connections may use reserved write buffer <b>402</b> for unsolicited data flow when target <b>400</b> operates in an oversubscription mode. In one embodiment, oversubscription for target <b>400</b> is terminated, or “turned off,” due to certain conditions in the system. Such conditions could include increased write data flow for one or more host connections over a period of time. In such instances, target <b>400</b> may no longer be capable of operating in an oversubscribed mode. In this embodiment, reserved write buffer <b>402</b> is reverted to reserved use for only a given host connection (e.g., a connection initially configured for high-performance mode).
A general process for implementing oversubscription, such as the oversubscription shown in <figref idref="DRAWINGS">FIG. 4</figref> and <figref idref="DRAWINGS">FIG. 5</figref>, is therefore described as follows, according to one embodiment of the present invention. In this embodiment, a computer-implemented method for oversubscribing write data on a target device includes opening a first connection with a first host device in a high-performance mode, reserving an amount of memory for unsolicited write data received from the first host device, opening a second connection with a second host device in a low-performance mode, and initiating an oversubscription process on the target device for the second connection, wherein such initiating includes using the amount of reserved memory for unsolicited write data received from the second host device. In one embodiment, reserving an amount of memory for unsolicited write data received from the first host device includes reserving a predetermined amount of memory for unsolicited write data received from the first host device. In one embodiment, initiating an oversubscription process on the target device for the second connection includes automatically initiating an oversubscription process on the target device based on an interaction history between the target device and the first host device over a period of time. In one embodiment, the method further comprises terminating the oversubscription process on the target device for the second connection to disallow use of the amount of reserved memory for unsolicited write data received from the second host device.
<figref idref="DRAWINGS">FIG. 6</figref> shows a use-case diagram of data flow between a host and a low-performance target, according to one embodiment of the present invention. <figref idref="DRAWINGS">FIG. 6</figref> illustrates one embodiment of data negotiation between a host and a target. In <figref idref="DRAWINGS">FIG. 6</figref>, use-case diagram <b>600</b> begins with the host sending the low-performance target a request for a high-performance connection. Because the target is only configured to operate in a low-performance mode, the target rejects the high-performance connection request, and rather instantiates (or provides acceptance for) a low-performance connection with the host. After the connection is established, the host may then send the low-performance target a write command. Before the host can send any write data, however, it must receive authorization (or solicitation) from the target to send such data. After the target sends such authorization (such as a SCSI “ready-to-transfer” command), the host may send write data. The host must then wait to receive additional authorizations before sending further write data to the target.
<figref idref="DRAWINGS">FIG. 7</figref> shows a use-case diagram of data flow between a host and a high-performance target, according to one embodiment of the present invention. <figref idref="DRAWINGS">FIG. 7</figref> illustrates one embodiment of data negotiation between a host and a target. In <figref idref="DRAWINGS">FIG. 7</figref>, use-case diagram <b>700</b> begins with the host sending the high-performance target a request for a high-performance connection. Because the target is configured to operate in a high-performance mode, the high-performance target accepts the high-performance connection request. In one embodiment, the high-performance target only accepts the high-performance connection request if it has available (or unallocated) reserved buffers for high-performance write operations. After the connection is established, the host is able to send a write command to the high-performance target. Because the connection is configured in a high-performance mode, the host is able to send unsolicited write data to the target, without requiring authorization from the target.
A general process for data negotiation, such as shown in the use-case diagrams of <figref idref="DRAWINGS">FIG. 6</figref> and <figref idref="DRAWINGS">FIG. 7</figref>, is therefore described as follows, according to one embodiment of the present invention. In this embodiment, a computer-implemented method for negotiating data transfer between a first network entity and a second network entity begins by initiating a session between the first and second network entities. The first network entity sends a high-performance request for the session to the second network entity. When the second network entity is configured as a high-performance network entity, the second network entity sends an acceptance to the first network entity in response to the high-performance request for the session. The first network entity then sends a write command to the second network entity, and subsequently sends write data. When the second network entity is not configured as a high-performance network entity, the second network entity sends a rejection to the first network entity in response to the high-performance request for the session. In one embodiment, the session is configured as a low-performance session. After the session is established, the first network entity sends a write command to the second network entity. Before the first network entity sends data, the second network entity must first send it an authorization for sending write data. Upon receipt of such authorization, the first network entity is able to send write data to the second network entity.
<figref idref="DRAWINGS">FIG. 8</figref> shows a block diagram of a network entity having an input/output component, memory, a local storage device, and a processor, according to one embodiment of the present invention. In this embodiment, network entity <b>800</b> includes processor <b>802</b>, input/output device <b>804</b>, memory <b>806</b>, and local storage device <b>808</b>. In one embodiment, processor <b>802</b>, input/output device <b>804</b>, memory <b>806</b>, and local storage device <b>808</b> are coupled by a network link. In one embodiment, input/output device <b>804</b> includes a keyboard and pointing device. In one embodiment, input/output device <b>804</b> includes a display. In one embodiment, memory <b>806</b> includes both volatile and non-volatile memory. In one embodiment, local storage device <b>808</b> includes a mass-storage disk device. Thus, network entity <b>800</b> includes various computer-readable media. In one embodiment, network entity <b>800</b> includes a host device. In one embodiment, network entity <b>800</b> includes a target device.
<figref idref="DRAWINGS">FIG. 9</figref> shows a block diagram of a network-based storage system for implementing various embodiments of the present invention. System <b>900</b> includes network entities <b>902</b> and <b>904</b>. In one embodiments, network entities <b>902</b> and <b>904</b> are host computing devices. Network entities <b>902</b> and <b>904</b> send data to routing device <b>908</b> via network <b>906</b>. In one embodiment, routing device <b>908</b> is a target device. In one embodiment, network <b>906</b> is an Internet Protocol (IP) network that is capable of transporting SCSI requests and responses. In one embodiment, iSCSI data is also communicated across network <b>906</b>. In one embodiment, routing device <b>908</b> includes iSCSI interfaces, to route iSCSI requests and responses. In one embodiment, routing device <b>908</b> is configured as either a high-performance or a low-performance target device. In one embodiment, one of the network entities <b>902</b> or <b>904</b> issues a SCSI request and encapsulates the SCSI request in one or more IP packets. The encapsulated SCSI request is routed across IP network <b>906</b> to routing device <b>908</b>, where the SCSI request is extracted from the one or more IP packets. In one embodiment, these IP packets comprise unsolicited write data sent to routing device <b>908</b>. The extracted SCSI request is then routed through storage network <b>910</b> to a storage device (e.g., <b>912</b>, <b>914</b>, or <b>916</b>) In one embodiment, the storage device is a SCSI device. In one embodiment, storage network <b>910</b> includes a fibre channel network.
As is shown in <figref idref="DRAWINGS">FIG. 9</figref>, system <b>900</b> can be viewed as performing three distinct actions for each request. First, SCSI requests are transported over an IP network. Second, SCSI requests are routed through routing device <b>908</b> to storage network <b>910</b>. Finally, the SCSI request is transported across storage network <b>910</b> to a SCSI device (e.g., <b>912</b>, <b>914</b>, or <b>916</b>). In one embodiment, the requests are transmitted in unsolicited fashion, wherein routing device <b>908</b> is configured in a high-performance mode. System <b>900</b> can also be viewed as performing three distinct actions for each response. First, SCSI responses are transported from a SCSI device (such as <b>912</b>, <b>914</b>, or <b>916</b>) across storage network <b>910</b> Second, SCSI responses are routed through routing device <b>908</b> to IP network <b>906</b>. Finally, the SCSI response is transported across IP network <b>906</b> to one of the network entities <b>902</b> or <b>904</b>.
<figref idref="DRAWINGS">FIG. 10</figref> shows an example screen display for configuring performance profiling, according to one embodiment of the present invention. In <figref idref="DRAWINGS">FIG. 10</figref>, screen display <b>1000</b> shows various configuration parameters for a target device. In one embodiment, the target device is a SCSI target. Particularly, parameter <b>1002</b> can be used for configuring performance profiling. Profile parameter <b>1002</b> can be set to “Low” or “High.” When set to “Low,” the target operates in a low-performance mode, and memory is utilized for solicited data flow. In one embodiment, a full set of memory buffers are used for solicited data, because none are used (or reserved) for unsolicited data. When set to “High,” the target operates in a high-performance mode. In this mode, a specified amount of memory is reserved for high-performance throughput (in an unsolicited fashion).
Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement that is calculated to achieve the same purpose may be substituted for the specific embodiment shown. This application is intended to cover any adaptations or variations of the described embodiments of the present invention.
Contents5
13 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13
Every citation, both waysCites: the store holds 14 of 15
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2002078213A1 | Cites | United States of America | Search report |
| US2002174227A1 | Cites | United States of America | Search report |
| US2003084209A1 | Cites | United States of America | Search report |
| US2003120676A1 | Cites | United States of America | Applicant |
| US2004125806A1 | Cites | United States of America | Applicant |
| US6845403B2 | Cites | United States of America | Applicant |
| US6865617B2 | Cites | United States of America | Applicant |
| US7571209B2 | Cites | United States of America | Applicant |
| US7774449B2 | Cites | United States of America | Applicant |
| US20020078213A1 | Cites | United States of America | Search report |
| US20020174227A1 | Cites | United States of America | Search report |
| US20030084209A1 | Cites | United States of America | Search report |
| US20030120676A1 | Cites | United States of America | Third party observation |
| US20040125806A1 | Cites | United States of America | Third party observation |
| "U.S. Appl. No. 10/371,389, Advisory Action mailed Mar. 12, 2007", 4 pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 10/371,389, Final Office Action mailed Nov. 29, 2006", 10 pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 10/371,389, Non Final Office Action mailed Jun. 28, 2006", 10 pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 10/371,389, Notice of Allowance mailed May 2, 2007", 10 pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 10/371,389, Response filed Jan. 26, 2007 to Final Office Action mailed Nov. 29, 2006", 16 pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 10/371,389, Response filed Sep. 8, 2006 to Non Final Office Action mailed Jun. 28, 2006", 13 pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 11/771,287, Non-Final Office Action mailed Apr. 1, 2008", 7 pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 11/771,287, Preliminary Amendment filed Nov. 5, 2007", 7 pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 11/771,287, Response filed Jun. 20, 2008 to Non Final Office Action mailed Apr. 1, 2008", 8 pages. | Non-patent | – | Applicant |
| "U.S. Appl. No. 11/771,287, Supplemental Preliminary Amendment mailed Nov. 5, 2007", 7 pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 11/771,287 Final Office Action Mailed on Nov. 7, 2008", 10 Pgs. | Non-patent | – | Applicant |
| "U.S. Appl. No. 11/852,849, Preliminary Amendment filed Nov. 5, 2007", 10 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/771,287, Notice of Allowance mailed Apr. 1, 2009, 15 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/852,849, Non-Final Office Action mailed Mar. 23, 2009, 22 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 10/371,389, Examiner Interview Summary mailed Apr. 12, 2007, 2 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 10/371,389, Examiner Interview Summary mailed Jul. 26, 2007, 1 pg. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/771,287, Advisory Action mailed Feb. 9, 2009, 4 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/771,287, Preliminary Amendment filed Jul. 2, 2007, 7 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/771,287, Response filed Jan. 23, 2009 to Final Office Action mailed Nov. 7, 2008, 14 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/852,849, Advisory Action mailed Jan. 22, 2010, 3 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/852,849, Examiner Interview Summary mailed Mar. 18, 2010, 2 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/852,849, Final Office Action mailed Oct. 29, 2009, 22 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/852,849, Notice of Allowance mailed Apr. 5, 2010, 4 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/852,849, Response filed Jun. 25, 2009 to Non Final Office Action mailed Mar. 23, 2009, 12 pgs. | Non-patent | – | Applicant |
| U.S. Appl. No. 11/852,849, Response filed Dec. 30, 2009 to Final Office Action mailed Oct. 29, 2009, 14 pgs. | Non-patent | – | Applicant |
| “U.S. Appl. No. 10/371,389, Advisory Action mailed Mar. 12, 2007”, 4 pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 10/371,389, Final Office Action mailed Nov. 29, 2006”, 10 pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 10/371,389, Non Final Office Action mailed Jun. 28, 2006”, 10 pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 10/371,389, Notice of Allowance mailed May 2, 2007”, 10 pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 10/371,389, Response filed Jan. 26, 2007 to Final Office Action mailed Nov. 29, 2006”, 16 pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 10/371,389, Response filed Sep. 8, 2006 to Non Final Office Action mailed Jun. 28, 2006”, 13 pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 11/771,287, Non-Final Office Action mailed Apr. 1, 2008”, 7 pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 11/771,287, Preliminary Amendment filed Nov. 5, 2007”, 7 pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 11/771,287, Response filed Jun. 20, 2008 to Non Final Office Action mailed Apr. 1, 2008”, 8 pages. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 11/771,287, Supplemental Preliminary Amendment mailed Nov. 5, 2007”, 7 pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 11/771,287 Final Office Action Mailed on Nov. 7, 2008”, 10 Pgs. | Non-patent | – | Third party observation |
| “U.S. Appl. No. 11/852,849, Preliminary Amendment filed Nov. 5, 2007”, 10 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/771,287, Notice of Allowance mailed Apr. 1, 2009, 15 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/852,849, Non-Final Office Action mailed Mar. 23, 2009, 22 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 10/371,389, Examiner Interview Summary mailed Apr. 12, 2007, 2 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 10/371,389, Examiner Interview Summary mailed Jul. 26, 2007, 1 pg. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/771,287, Advisory Action mailed Feb. 9, 2009, 4 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/771,287, Preliminary Amendment filed Jul. 2, 2007, 7 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/771,287, Response filed Jan. 23, 2009 to Final Office Action mailed Nov. 7, 2008, 14 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/852,849, Advisory Action mailed Jan. 22, 2010, 3 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/852,849, Examiner Interview Summary mailed Mar. 18, 2010, 2 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/852,849, Final Office Action mailed Oct. 29, 2009, 22 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/852,849, Notice of Allowance mailed Apr. 5, 2010, 4 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/852,849, Response filed Jun. 25, 2009 to Non Final Office Action mailed Mar. 23, 2009, 12 pgs. | Non-patent | – | Third party observation |
| U.S. Appl. No. 11/852,849, Response filed Dec. 30, 2009 to Final Office Action mailed Oct. 29, 2009, 14 pgs. | Non-patent | – | Third party observation |
7 members in 1 office
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 37138903 | United States of America | A | |
| 37138903 | United States of America | A | |
| 85286207 | United States of America | A | |
| 10371389 | – | – | – |
| US20030371389 | – | – | – |
| US20070852862 | – | – | – |
Members7
| Document | Office | Kind | |
|---|---|---|---|
| US7269644B1 | United States of America | B1 | |
| US2007299960A1 | United States of America | A1 | |
| US2008005289A1 | United States of America | A1 | |
| US2008005436A1 | United States of America | A1 | |
| US7571209B2 | United States of America | B2 | |
| US7774449B2 | United States of America | B2 | |
| US7966403B2This record | United States of America | B2 |
68 transactions on the USPTO file
Allowed after 1 non-final rejection, 1 final rejection and 1 RCE.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Expire PatentEXP. | EXP. | |
| Maintenance Fee Reminder MailedREM. | REM. | |
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTR | EML_NTR | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Mail Notice of Informal or Non-Responsive AmendmentNINA | NINA | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Response after Non-Final ActionA... | A... | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Informal or Non-Responsive Amendment after Examiner ActionA.I. | A.I. | |
| Response after Non-Final ActionA... | A... | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Preliminary AmendmentA.PE | A.PE | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| Application Is Now CompleteCOMP | COMP | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Initial Exam Team nnIEXX | IEXX |
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Lapse for failure to pay maintenance feesLapsedPATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYLAPS | LAPS | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Fee payment procedureMAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP |
Numbers
- Publication
- 07966403
- Publication, DOCDB
- 7966403
- Publication, EPODOC
- US7966403
- Application
- 11852862
- Application, DOCDB
- 85286207
- Application, EPODOC
- US20070852862
Titles
- English
- Performance profiling for improved data throughput
Patent term adjustment
- A delay
- +370 daysthe office missed an examination deadline
- B delay
- +45 dayspendency past three years
- Applicant delay
- −39 days
- Net adjustment
- 376 days
Classification
- CPC, 3
- G06F3/0635
- G06F3/0613
- G06F3/067
- IPC, 1
- G06F15 173
- USPC, 3
- 709226000
- 709223000
- 710008000