Abstract:
A storage system has a single processor that operates in a multitasking operating system environment. An operation time manager adjusts the balance between processing time proportions for interrupt processing and task processing requested of the storage system internally and externally so that those processing time proportions become within respective predetermined ranges.

Description:
CROSS-REFERENCES TO RELATED APPLICATIONS  
       [0001]     This application relates to and claims priority from Japanese Patent Application No. 2006-56520, filed on Mar. 2, 2006, the entire disclosure of which is incorporated herein by reference.  
       BACKGROUND  
       [0002]     The present invention relates to a storage system and scheduling method that adjusts the balance between processing time for task processing, and interrupt processing requested internally or externally.  
         [0003]     In a database system such as a data center, that manages a large volume of data, data is managed by using a storage system such as a disk array system. A disk array system has a number of storage devices arranged in arrays, and provides storage resources in RAID (Redundant Arrays of Independent Inexpensive Disks) form to a host computer. The host computer and storage system are mutually connected via a device-sharing network such as a SAN (Storage Area Network).  
         [0004]     The network-connected storage system executes not only processing requested internally, including recovery processing for recovering any failure occurring in the disk drives, self-diagnosis processing for checking whether or not a failure is present in any disk drives, and backup processing for backing up data, but also processing requested externally, including access from a host computer and various network servers.  
         [0005]     Of the processing requested internally and externally, processing that needs a real-time response (readiness) has to be performed promptly, and efficient scheduling is necessary. For example, Japanese Patent No. 2918297 proposes an interruption control method for temporarily stopping non-interrupt-level processing and executing interrupt-level processing when that interrupt-level processing is requested.  
       SUMMARY  
       [0006]     In network-connected storage systems, one that has only one processor and aims at low cost and high performance is being developed. In a storage system that processes both I/O requests from a host computer and access from various network servers in a multitasking operating system environment that operates on a single processor, when there are many high priority requests (hereinafter referred to as “specific commands”), most of the processor resources are assigned to those specific commands. As a result, barely any processor resources can be assigned to normal commands. The above problem occurs because, although a task scheduler schedules task processing, it does not schedule all processing including both interrupt processing and task processing. Improvement on that problem has been desired to prevent deterioration in the storage system performance.  
         [0007]     Accordingly, an object of the present invention is to solve the above problem by scheduling not only task processing, but all processing, including high priority processing, in a multitasking operating system environment that operates on a single processor.  
         [0008]     To achieve the above object, a storage system according to the present invention has a single processor that operates in a multitasking operating system environment. The storage system includes an operation time manager that adjusts the balance of the ratio between interrupt processing time and task processing time to keep the processing time ratio between interrupt processing and task processing requested internally or externally within a predetermined range.  
         [0009]     When the proportion of interrupt processing time in a certain monitoring time period exceeds a predetermined range, the operation time manager restricts interrupt processing in the subsequent monitoring time period. Meanwhile, when the proportion of interrupt processing time to certain monitoring time period is within a predetermined range, the restriction on interrupt processing is cancelled in the subsequent monitoring time period. In other words, the operation time manager restricts interrupt processing or cancels that restriction every monitoring time period according to the storage system workload.  
         [0010]     When the proportion of task processing time in a certain monitoring time period exceeds a predetermined range, the operation time manager restricts task processing in the subsequent monitoring time period. Meanwhile, when the proportion of task processing time in a certain monitoring time period is within a predetermined range, the restriction to task processing is cancelled in the subsequent monitoring time period. In other words, the operation time manager restricts task processing or cancels that restrictation every monitoring time period according to the burden state in the storage system.  
         [0011]     According to the present invention, interrupt processing and task processing requested internally or externally can be scheduled in a balanced manner, and accordingly, storage system performance can be improved.  
     
    
     DESCRIPTION OF THE DRAWINGS  
       [0012]      FIG. 1  is a diagram showing the hardware configuration in the storage system according to an embodiment of the present invention.  
         [0013]      FIG. 2  is a diagram illustrating factors in interrupt processing and task processing requested by a storage system.  
         [0014]      FIG. 3  is a diagram illustrating the relationship between task processing and interrupt processing relating to control processing in the storage system.  
         [0015]      FIG. 4  is a block diagram showing various functions that operate on a processor.  
         [0016]      FIG. 5  is a diagram illustrating an operation time allocation range table.  
         [0017]      FIG. 6  is a diagram illustrating a normal state operation time allocation table.  
         [0018]      FIG. 7  is a diagram illustrating a restricted state operation time allocation table.  
         [0019]      FIG. 8  is a time chart for each kind of processing during the process of shifting state from the normal state to the restricted state.  
         [0020]      FIG. 9  is a time chart for each kind of processing during the process of shifting state from the restricted state to the normal state.  
         [0021]      FIG. 10  is a chart showing control processing priorities in the restricted states.  
         [0022]      FIG. 11  is a flowchart illustrating interrupt processing time measurement processing.  
         [0023]      FIG. 12  is a flowchart illustrating task processing time measurement processing.  
         [0024]      FIG. 13  is a flowchart illustrating the scheduling processing.  
         [0025]      FIG. 14  is a flowchart illustrating balance adjustment processing.  
     
    
     DETAILED DESCRIPTION  
       [0026]     An embodiment of the present invention will be described with reference to the drawings.  
         [0027]      FIG. 1  shows the main configuration of a storage system  10  according to the present embodiment. The storage system  10  is connected, via a communication network  40 , to one or more host computers  50  and one or more network servers  60 .  
         [0028]     The host computer  50  is a personal computer, workstation, or main frame. Application programs (e.g. web application software, streaming application software, e-business application software) are installed on the host computer  50 .  
         [0029]     The network server  60  is an SNMP (Simple Network Management Protocol) server for managing a network, an SNTP (Simple Network Time Protocol) server for managing a network time protocol, a backup server for managing backup and restoring, or a scan server for performing virus checks.  
         [0030]     The communication network server  40  may be a SAN (Storage Area Network), a LAN (Local Area Network), a WAN (Wide Area Network), the Internet, a dedicated line, or a public line. If the host computer  50  is connected to the storage system  10  via a SAN, the host computer  50  requests data input/output in blocks, which are data management units in storage resources in the storage system  10 , according to Fibre Channel Protocol or iSCSI (Internet Small Computer System Interface) Protocol. If the host computer  50  is connected to the storage system  10  via a LAN, the host computer  50  requests data input/output by file by designating a file name according to NFS (Network File System) or CIFS (Common Interface File System) protocol. To receive file access requests from the host computer  50 , the storage system  10  has to have a NAS (Network Attached Storage) function.  
         [0031]     The storage system  10  is mainly made up with includes a controller  20  and storage device  30 .  
         [0032]     The storage device  30  includes a plurality of disk drives  31 . The disk drives  31  may be various disk drives, such as FC (Fibre Channel) disk drives, SATA (Serial Advanced Technology Attachment) disk drives, PATA (Parallel Advanced Technology Attachment) disk drives, FATA (Fibre Attached Technology Adapted) disk drives, and SCSI (Small Computer System Interface) disk drives.  
         [0033]     The controller  20  can control the storage device  30  at a certain RAID level (e.g., 0, 1, or 5) defined in the RAID system. In a RAID group, one or more logical units, being access units for the host computer  50 , are defined. An LUN (Logical Unit Number) is allocated to each logical unit.  
         [0034]     The controller  20  is mainly made up with a processor  21 , local memory  22 , data controller  23 , host interface  24 , drive interface  25 , and cache memory  26 . The controller  20  is a single processor having one processor  21 .  
         [0035]     The processor  21  controls I/O processing to/from the storage device  30  in response to data input/output requests from the host computer  50 . The local memory  20  stores a microprogram and various tables (operation time allocation range table  800 , normal state operation time allocation table  810 , and restricted stated operation time allocation table  820  described later) for the processor  21 . The cache memory  26  is buffer memory for temporarily storing write data that is to be written to the storage device  30 , or read data that has been read from the storage device  30 . The cache memory  26  is non-volatile memory that prevents cache data to from being lost even when a power failure occurs in the storage system  10 .  
         [0036]     The data controller  23  mutually connects a host interface  24 , drive interface  25 , and cache memory  26 , and controls data transfer between the host computer  50  and storage device  30 . More specifically, when write access is requested from the host computer  50 , the data controller  23  writes write data received via the host interface  24  from the host computer  50 , to the cache memory  26 . The drive interface  25  writes the write data that has been written to the cache memory  26  to the storage device  30 . Meanwhile, when read access is requested from the host computer  50 , the data controller  23  writes read data that has been read via the drive interface  25  from the storage device  30 , to the cache memory  26 , and also transfers the read data to the host interface  24 . If the storage device  30  is managed at RAID level “5,” the data controller  23  calculates parity data.  
         [0037]     The host interface  24  is an interface controller for controlling the interfaces between the host computer  50  and controller  20  and receives a block access request from the host computer  50  according to Fibre Channel Protocol, or a file access request from the host computer  50  according to a protocol of file transfer. The drive interface  25  controls the interface between the controller  20  and storage device  30 , and controls data input/output to/from the storage device  30  according to a protocol that controls the storage device  30 .  
         [0038]      FIG. 2  shows factors in interrupt processing  500  and task processing  600  requested from the storage system  10 . Processing externally requested of the storage system  10  includes main I/O task processing, main I/O interrupt processing, network task processing, and network interrupt processing. Processing internally requested of the storage system  10  includes monitoring task processing, monitoring interrupt processing, failure task processing, failure interrupt processing, and OS processing.  
         [0039]     More specific examples of processing for the storage system  10  requested internally include self-diagnosis processing for checking whether or not a failure is present in the disk drives  31 , backup processing for backing up data stored in a disk drive  31  to another disk drive  31 , and data recovery processing for recovering data by correcting errors using redundant data, operating the storage system in a degraded mode, and performing correction copy to a spare disk  33 .  
         [0040]     More specific examples of the processing for the storage system  10  requested externally include an I/O request from the host computer  50  and various processing requests from the network server  60  (e.g. SNMP processing, SNTP processing, backup request processing, and virus check processing).  
         [0041]      FIG. 3  shows the relationship between task processing and interrupt processing relating to control processing for the storage system  10 . That relationship shows to which processing system (main I/O, monitoring, failure, and OS) each interrupt processing belongs, and to which processing system each task processing belongs. For example, the interruption name “Inter-CTL communication interruption” belongs to the main I/O interrupt processing. The task name “tDFCTL” belongs to the main I/O task processing. Because the details of the task processing and interrupt processing shown in  FIG. 3  do not relate to the main feature of the present invention, their descriptions are omitted.  
         [0042]      FIG. 4  shows function blocks in various processing executed on the processor  21 . On the processor  21 , interrupt processing  500 , task processing  600 , and scheduling processing  700  that are time-divided are executed in a multitasking operating system environment. The interrupt processing  500  is performed at interruption level and is not managed by the task scheduler  230 . The task processing  600  is performed at task level and managed by the task scheduler  230 . The scheduling processing  700  is performed at timer interruption level and is not managed by the task scheduler  230 .  
         [0043]     Interrupt write-processing  310  and interrupt read-processing  320  from the host computer  50  of high priority are received as specific commands  330  and have priority. Interrupt write-processing  310  and interrupt read-processing of low priority are registered for a command queue  340  and performed as main I/O processing tasks  350  under the management of the task scheduler  230 .  
         [0044]     Meanwhile, the network interrupt processing  410  requested from the network server  60  is registered for a network queue  420  and executed as network processing tasks  430  under the management of the task scheduler  230 .  
         [0045]     The interrupt processing operation time monitor  210  measures the time period (interrupt processing time) for which the processor resources are allocated to the interrupt processing  500 . The task processing operation time monitor  22  measures the time period (task processing time) for which the processor resources are allocated to the task processing  600 . The operation time manager  240  measures the interrupt processing time and task processing time at the point in time of interruption by timer processing  250 . If either processing takes too much time, the balance of the ratio between the interrupt processing time and task processing time is adjusted based on the operation time allocation range table  800 , normal state processing time allocation table  810 , and restricted state operation time allocation table  820 . The timer processing  250  is a process for updating the timer.  
         [0046]     The above-described interrupt processing operation time monitor  210 , task processing operation time monitor  220 , and operation time manager  240  are function modules realized in a multitasking operating system environment.  
         [0047]     Next, processing for scheduling various processing (main I/O task processing, main I/O interrupt processing, monitoring task processing, monitoring interrupt processing, network task processing, network interrupt processing, OS processing) while adjusting the balance between the interrupt processing time and task processing time will be described in detail with reference to FIGS.  5  to  14 .  
         [0048]      FIG. 5  shows the operation time allocation range table  800 . In the operation time allocation range table  800 , an operation time proportion (percentage) range for each kind of processing (main I/O task processing, main I/O interrupt processing, monitoring task processing, monitoring interrupt processing, network task processing, network interrupt processing, and OS processing) for a certain monitoring time period is set. The operation time proportion range for each kind of processing can be set to an optimum value according to the management form and network environment in the storage system  10 . As shown in  FIG. 5 , each operation time proportion range set in the operation time allocation range table  800  has a certain scope. The “−” mark in the table means no restrictation set for the operation time proportion.  
         [0049]      FIG. 6  shows the normal state operation time allocation table  810 . In the normal state operation time allocation table  810 , a ceiling value for the operation time proportion for each kind of processing in the normal state is set. The ceiling value for the operation time proportion for each kind of processing in the normal state is set within the range set in the operation time allocation range table  800 . The “normal state” indicates the state where the operation time is balanced between the interrupt processing  500  and task processing  600 .  
         [0050]      FIG. 7  shows the restricted state operation time allocation table  820 . In the restricted state operation time allocation table  820 , a ceiling value for the operation time proportion for each kind of processing in each restricted state is set. The ceiling value for the operation time proportion for each kind of processing in each restricted state is set within the proportion range set in the operation time allocation range table  800 . The “restricted state” means the state where the operation time is not balanced between the interrupt processing  500  and task processing  600 , and the processing time is restricted. There may be a plurality of restricted states.  
         [0051]      FIG. 8  shows a time chart for each kind of processing in the process of shifting state from the normal state to the restricted state. For ease of explanation, a time period from a time T 0  to a time T 1  is set to “stage  1 ,”, a time period from a time T 1  to a time T 2  is set to “stage  2 ,” . . . and a time period from a time T 5  to a time T 6  is set to “stage  6 .” The time length in each stage is equivalent to that of the above described monitoring time period. The monitoring time consists of a plurality of units of time. The operation time manger  240  regularly checks the proportion of each interrupt processing and task processing in each of stages  1  to  6  at the times T 0 , T 1 , . . . and T 6  (the end of each stage).  
         [0052]     If the proportion of interrupt processing time or task processing time at stage N (N is an integer greater than 0) exceeds the proportion range set in the normal state operation time allocation table  810 , the operation time manager  240  restricts the proportion of that interrupt processing time or task processing time at the stage (N+1) based on the proportion set in the “restricted state M” in the restricted state operation time allocation table  820 . Only one restricted state applies to the restricted state M based on a combination of processing, the operation time proportion of which exceeds the ceiling value at the end of stage N.  
         [0053]     For example, at stage  1  in the normal state, the operation time proportions for the main I/O task processing and main I/O interrupt processing are 80% and 20% respectively. Because those operation time proportions are within the operation proportions set in the normal state operation time allocation table  810 , the operation time manager  240  then adjusts the operation time proportion for each kind of processing at stage  2  based on the operation proportions set in the normal state operation time allocation table  810 .  
         [0054]     At stage  2  in the normal state, the operation time proportions for the main I/O task processing and main I/O interrupt processing are 20% and 80% respectively. Because the operation time for the main I/O interrupt processing exceeds its 40% ceiling value, the operation time manager  240  adjusts the operation time proportion for each kind of processing at the stage  3  based on the “restricted state  8 ” set in the restricted state operation time allocation table  820 .  
         [0055]     At stage  3  in the restricted state  8 , the operation time manager  240  restricts the operation time proportion for the main I/O interrupt processing to 40%. However, the operation time proportion for the network interrupt processing time at stage  3  is 30%, which exceeds the proportion (10%) set in the normal state operation time allocation table  810 . Accordingly, the operation time manager  240  adjusts the operation time proportion for each kind of processing at stage  4  based on the operation time proportions set for the “restricted state  9 ” in the restricted state operation time allocation table  820 .  
         [0056]     After that, the operation time manager  240  adjusts the operation time proportion for each kind of processing at stages  4 ,  5 , and  6  in the same manner.  
         [0057]      FIG. 9  shows a time chart for each kind of processing in the process of shifting state from restricted state to normal state. For ease of explanation, a time period from time T 7  to time T 8  is set to “stage  8 ,” a time period from time T 8  to time T 9  is set to “stage  9 ,” . . . and a time period from time T 12  to time T 13  is set to “stage  13 .” The time length in each of stages  8  to  13  is equivalent to the above described monitoring time period. The operation time manager  240  regularly checks the proportions for the interrupt processing time and task processing time during each stage at the times T 7 , T 8 , . . . and T 13  (at the end of each stage).  
         [0058]     At stage  8  in the restricted state  9 , the operation time manager  240  restricts the operation time proportion for the main I/O interrupt processing to 40% and that for the network interrupt processing to 10%. Because the operation time proportions for both the main I/O interrupt processing and network interrupt processing are at their ceiling values, the operation time manager  240  adjusts the operation time proportion for each kind of processing at stage  9  based on the operation time proportions set in the restricted state operation time allocation table  820 .  
         [0059]     At stage  9  in the restricted state  9 , the operation time proportion for the network interrupt processing is still at its 10% ceiling value, but the operation time proportion for the main I/O interrupt processing is reduced to 30%, which is lower than its 40% ceiling value. Accordingly, the operation time manager  240  adjusts the operation time proportion for each kind of processing at stage  10  based on the operation time proportion set for the “restricted state  1 ” in the restricted state operation time proportion table  820 .  
         [0060]     At stage  10  in the restricted state  1 , the operation time proportion for the network processing is reduced to 0%, which is lower than its 10% ceiling value, and the operation time proportion for the main I/O interrupt processing is reduced to 20%, which is lower than its 40% ceiling value. Accordingly, the operation time manager  240  cancels the restricted state and adjusts the operation time proportion for each kind of processing at stage  11  based on the operation time proportions set in the normal state operation time allocation table  810 .  
         [0061]     After that, the operation time manager  240  adjusts the operation time proportion for each kind of processing at stages  11 ,  12 , and  13  in the same manner.  
         [0062]     In the above described restricted states, not only is the operation time proportion for each kind of processing adjusted, but the control processing of high priority in main I/O, monitoring, failure, network, and OS processing may also take priority as shown in  FIG. 10 . In  FIG. 10 , the “o” mark indicates high priority, and the “x” mark indicates low priority.  
         [0063]      FIG. 11  is a flowchart illustrating interrupt processing time measurement processing. The interrupt processing time measurement processing is processing for calculating the total value of interrupt processing time at each stage, and is executed in an event-driven manner when an interrupt processing request to the storage system  10  is received. Sometimes the interrupt processing time measurement processing is performed several times during one stage.  
         [0064]     When receiving an interrupt request, the interrupt processing operation time monitor  210  starts the interrupt processing time measurement (step  1101 ).  
         [0065]     If that interrupt request has been made for a specific command (step  1102 ; YES), the processor  21  promptly executes the specific command (step  1104 ).  
         [0066]     If that interrupt request has not been made for a specific command (step  1102 ; NO), the processor  21  temporarily registers that interrupt request for the command queue  340  (step  1103 ).  
         [0067]     Next, the interrupt processing operation monitor  210  ends the interrupt processing time measurement (step  1105 ), and adds the interrupt processing time measured in the steps  1101  to  1105  to the measurement result for the previous interrupt processing time measurement processing (step  1106 ).  
         [0068]      FIG. 12  is a flowchart illustrating task processing time measurement processing. The task processing time measurement processing is processing for calculating the total value of task processing time at each stage, and is performed in an event driven manner when the task processing is performed. Sometimes the task processing time measurement processing is performed several times during one stage.  
         [0069]     When task processing is called by the task scheduler  230 , the task processing operation time monitor  220  starts the task processing time measurement (step  1201 ).  
         [0070]     After the task processing is executed by the processor  21  (step  1202 ), the task processing operation time monitor  220  ends the task processing time measurement (step  1203 ) and adds the task processing time measured in the steps  1201  to  1203  to the measurement result for the previous task processing time measurement processing (step  1106 ).  
         [0071]      FIG. 13  is a flowchart illustrating scheduling processing. The scheduling processing is processing for adjusting the balance between the interrupt processing time and task processing time at each stage based on the above described normal state operation time allocation table  810  and restricted state operation time allocation table  820 . Though details for the scheduling processing have been described referring to the time charts ( FIGS. 8 and 9 ), they are described here again with reference to the flowchart. The scheduling processing is performed when timer interruption of the timer processing  250  is received. Timer interruption occurs once per unit time. For example, if the monitoring time period consists of  100  time units, the timer interruption occurs  100  times per stage.  
         [0072]     Steps  1301  to  1306  described later are executed once per unit time (for example, those steps are executed  100  times per stage). A step  1307  described later is executed once per monitoring time period (i.e., at the end of each stage).  
         [0073]     When receiving timer interruption (step  1301 ), the operation time manager unit  240  checks whether or not a monitoring time period has passed (i.e., whether or not it is at the end of each stage) (step  1302 ). If a monitoring time period has passed (step  1302 ; YES), the operation time manager  240  executes balance adjustment processing (step  1307 ). The balance adjustment processing will be described later in detail.  
         [0074]     If a monitoring time period has not passed (step  1302 ; NO), the operation time manager  240  obtains the total value of the interrupt processing time in the monitoring time period from the interrupt processing operation time monitor  210  (step  1303 ), and obtains the total value of the task processing time in the monitoring time period from the task processing operation time monitor  220  (step  1304 ).  
         [0075]     When the interrupt processing time or task processing time reaches its ceiling value (the ceiling value set in the restricted state operation time allocation table  820 ) (step  1305 ; YES), the operation time manager  240  stops the task processing or masks the interrupt processing (step  1306 ). If neither the interrupt processing time nor task processing time reaches its ceiling value (step  1305 ; NO), the scheduling processing ends.  
         [0076]      FIG. 14  is a flowchart illustrating balance adjustment processing. Balance adjustment processing is a subroutine that is called and executed when a monitoring time period has passed (at the end of each stage).  
         [0077]     The operation time manager  240  calculates the proportions for the interrupt processing time and task processing time that occupy the monitoring time period (step  1401 ), and checks whether or not the proportion for the interrupt processing time or task processing time exceeds its ceiling value (step  1402 ).  
         [0078]     If the proportion for the interrupt processing time or the task processing time exceeds its ceiling value (step  1402 ; YES), the operation time manager  240  sets the ceiling value of the proportion for the interrupt processing time or task processing time to the value set in the corresponding restricted state (step  1403 ).  
         [0079]     If neither the proportion for the interrupt processing time nor the task processing time exceeds its ceiling value (step  1402 ; NO), or after the balance adjustment processing (step  1403 ) is executed, the operation time manager  240  clears the total interrupt processing time value and the total task processing time value in the monitoring time period to zero (step  1404 ).  
         [0080]     According to the present embodiment, the interrupt processing  500  and task processing  600  requested of the storage system  10  internally and externally are scheduled in a balanced manner. Accordingly, even if high priority interrupt processing frequently occurs, the processor resources are not unequally allocated only to the interrupt processing. In other words, the processor resources are allocated to both the interrupt processing  500  and task processing  600  in a balanced manner according to the state of the burden on the storage system  10  and its usage.