WO2015111148A1 - ストレージ装置およびストレージ装置制御方法 - Google Patents

ストレージ装置およびストレージ装置制御方法 Download PDF

Info

Publication number
WO2015111148A1
WO2015111148A1 PCT/JP2014/051216 JP2014051216W WO2015111148A1 WO 2015111148 A1 WO2015111148 A1 WO 2015111148A1 JP 2014051216 W JP2014051216 W JP 2014051216W WO 2015111148 A1 WO2015111148 A1 WO 2015111148A1
Authority
WO
WIPO (PCT)
Prior art keywords
queue
job
restart
command
identifier
Prior art date
Application number
PCT/JP2014/051216
Other languages
English (en)
French (fr)
Inventor
匠 佐野
健一 澤
友哉 後藤
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/051216 priority Critical patent/WO2015111148A1/ja
Publication of WO2015111148A1 publication Critical patent/WO2015111148A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

Definitions

  • the present invention relates to a storage apparatus.
  • Patent Document 1 A storage apparatus that preferentially executes a specific type of command based on the type of command transmitted from the host computer is known (for example, Patent Document 1).
  • commands are placed in a queue to wait for the order of execution (initial startup) before execution.
  • commands placed in the queue are executed in the order in which they are placed in the queue, but specific types of commands are executed with priority regardless of the order in which they are placed in the queue.
  • a storage apparatus includes a storage device and a controller that executes a job for the storage device based on a command transmitted from a host computer.
  • the controller is connected to a host computer and receives one or more channel adapters, connected to a storage device, receives commands from the channel adapter and executes commands based jobs, and a channel.
  • a memory connected to the adapter and the processor and storing a queue for scheduling execution of jobs.
  • the queue indicates the initial start queue that indicates the execution order of jobs that are started for the first time, the wait queue that indicates the execution order of jobs that are in a wait state during execution, and the execution order of jobs that are restarted after a wait state Includes restart queue.
  • the processor When the channel adapter receives the first command, the processor enqueues the first identifier indicating the first job based on the first command into the initial activation queue, and when the first job is in a waiting state during execution The first identifier is dequeued from the initial activation queue and enqueued in the wait queue. When the first job wait state ends, the first identifier is dequeued from the wait queue and enqueued in the restart queue. The job corresponding to the identifier stored in the restart queue is executed before the job corresponding to the identifier stored in the initial startup queue.
  • a job after waiting can be executed with priority over a job before execution.
  • FIG. 1 shows the configuration of the computer system of this embodiment.
  • FIG. 2 is a configuration diagram of the host I / F 11.
  • FIG. 3 is a configuration diagram of the MPPK 12.
  • FIG. 4 is a diagram showing a logical area in the LM 122.
  • FIG. 5 is a diagram for explaining the initial activation event area 52.
  • FIG. 6 is a diagram for explaining the job control block area 51.
  • FIG. 7 is a diagram for explaining the types of queues managed in the dedicated area.
  • FIG. 8 is a flowchart of the initial activation event detection process.
  • FIG. 9 is a flowchart of job scheduling processing.
  • FIG. 10 is a flowchart of the restart event detection process.
  • FIG. 11 is a flowchart of job activation processing.
  • FIG. 1 shows the configuration of the computer system of this embodiment.
  • FIG. 2 is a configuration diagram of the host I / F 11.
  • FIG. 3 is a configuration diagram of the MPPK 12.
  • FIG. 4 is
  • FIG. 12 is a flowchart of job execution processing.
  • FIG. 13 is a flowchart of the sinking prevention process.
  • FIG. 14 is a diagram illustrating the arrangement of queues stored in the memory.
  • FIG. 15 is a reference diagram for explaining the arrangement of other queues.
  • FIG. 16 is a reference diagram for explaining the arrangement of other queues.
  • aaa table and “aaa queue”.
  • these information may be expressed in a form other than a data structure such as a table or a queue. Therefore, “aaa table”, “aaa queue”, etc. may be referred to as “aaa information” in order to show that they do not depend on the data structure.
  • program may be used as the subject. However, since the program performs processing defined by being executed by the microprocessor using the memory and the communication interface, the processing of the program as the subject is performed. The description may be made with a microprocessor as the subject. Moreover, it is good also as a process which the apparatus containing the microprocessor performs. Further, part or all of the processing performed by the program may be realized by dedicated hardware.
  • the program may be installed in the computer by a program distribution server or a computer-readable storage medium.
  • a storage apparatus connected to a mainframe host computer will be described as an embodiment of the storage apparatus of the present invention, but the present invention is not limited to this.
  • the storage apparatus may be connected to an open system host computer.
  • the interface connected to the host computer is an open system interface.
  • the storage apparatus includes a physical storage device and a controller that executes a job for the physical storage device based on a command transmitted from the host computer.
  • the controller is connected to the host computer, connected to the physical storage device, receives a command via the channel adapter, and executes a job based on the command.
  • the controller is connected to the processor and schedules the execution of the job. And a memory for storing a queue for performing the processing.
  • Priority information indicating the priority is attached to the command.
  • the channel adapter receives the command, the channel adapter stores the command in the memory.
  • FIG. 14 is a diagram illustrating queues stored in the memory.
  • one of binary values (high and low) is set as the priority for each command.
  • the queues stored in the memory are high priority jobs that are dedicated to pre-execution jobs, high priority initial startup queues, and low priority jobs that are not yet executed.
  • a job-dedicated queue, a low-priority initial startup queue, a high-priority job, a queue dedicated to jobs after waiting, a high-priority restart queue, and a low-priority job A low-priority restart queue that is a queue dedicated to a job after waiting, and a wait queue that is a queue dedicated to a job waiting.
  • no job identifier is input to the high priority initial activation queue, and three low priority job identifiers are input to the low priority initial activation queue.
  • one identifier of a job having a high priority is input to the wait queue.
  • one high priority job identifier is input to the high priority restart queue, and two low priority job identifiers are input to the low priority restart queue. Note that any one of three or more values may be set as the priority.
  • the processor When receiving a command from the host computer, the processor inputs the job before execution to the high priority initial startup queue or the low priority initial startup queue according to the priority of the job based on the command. If a job stored in the high priority initial startup queue or low priority initial startup queue is executed and a wait state is generated by another process during the execution of the job, the processor sets the job to the high priority initial queue. Take out from the startup queue or the low priority initial startup queue and input to the wait queue. When the job wait state ends, the processor removes the job from the wait queue and inputs it to the high priority restart queue or low priority restart queue according to the job priority based on the command.
  • the processor executes at least one of the jobs stored in the restart queue before the job stored in the initial startup queue. Specifically, for example, at least one of the jobs stored in the high priority restart queue is executed before the job stored in the high priority initial startup queue.
  • the initial activation queue that is a queue for storing jobs before execution but also the restart queue that is a queue for storing jobs after waiting is stored in the memory.
  • the job after the state can be executed before the job before execution.
  • the job can be executed before the job with high priority before the execution.
  • the processor executes the job with high priority first. Even if a job with high priority after waiting can be stored in this queue, the job after waiting is input at the end of the queue. For this reason, the restart of the job after waiting is delayed, and the end of this job is delayed. Compared to such a job scheduling method using a queue, in this embodiment, the job after waiting can be executed before the job before execution, and the end of the job after waiting is prevented from being delayed. it can.
  • a restart queue that is a queue for storing jobs after waiting and that does not consider priority is stored in the memory, as shown in FIG. Because the job with high priority stored in the wait queue is placed at the end of the restart queue after completion of the wait state, regardless of the priority, the restart of this job is delayed, and this job ends. Is delayed.
  • a job with a high priority after the waiting state can be executed before a job with a low priority after the waiting state. Job execution priority can be taken into account.
  • FIG. 1 shows the configuration of the computer system of this embodiment.
  • the computer system includes a mainframe host computer (hereinafter referred to as a host) 2 and a storage device 1.
  • the host 2 and the storage device 1 are connected to a communication network 3 such as a SAN (Storage Area Network) or a LAN (Local Area Network).
  • the computer system may have a plurality of hosts 2.
  • the storage apparatus 1 is connected to a plurality of hosts 2 via the communication network 3.
  • the storage device 1 has a storage controller 10 and a disk unit 20.
  • the storage controller 10 is connected to the disk unit 20 and the host 2.
  • the disk unit 20 has a plurality of drives.
  • the drive is a physical storage device, for example, SAS (Serial Attached Small Computer System Interface) -HDD (Hard Disk Drive) 21, SATA (Serial Advanced Technology Attachment) -HDD 22, SSD (Solid State Drive) 23, It is not limited to this.
  • a RAID (Redundant Arrays of Inexpensive Disks) group may be configured by a plurality of drives.
  • One or a plurality of volumes (LU: Logical Unit) may be provided to the host 2 based on one drive or a plurality of drives constituting one RAID group.
  • the number of the disk units 20 is one, but they may be made redundant by a plurality of disk units 20.
  • the storage controller 10 includes a host interface (host I / F) 11, an MPPK (Micro Processor Package) 12, a switch (SW) 13, and a plurality of disk interfaces (disk I / F) 14.
  • the switch 13 has a cache memory (CM) 131 therein.
  • CM cache memory
  • Each unit of the storage controller 10 is connected by a bus via the switch 13.
  • the storage controller 10 has one MPPK 12, one switch 13, and one disk I / F 14, but a plurality of them may be provided.
  • the host I / F 11 performs communication with the host 2.
  • the communication is FICON (Fibre Connection: registered trademark), ESCON (Enterprise System Connection: registered trademark), ACONARC (Advanced Connection Architecture: registered trademark), FIBARC (Fibre Connection Architecture: registered trademark), and other protocols can be used.
  • the plurality of disk I / Fs 14 are connected to different types of drives (SAS-HDD 21, SATA-HDD 22, SSD 23), and communicate with the disk unit 20.
  • the cache memory 131 temporarily stores commands and data that pass through the SW 13.
  • the MPPK 12 stores a program and data for controlling the storage apparatus 1 and controls the storage apparatus 1 according to the control program.
  • FIG. 2 is a configuration diagram of the host I / F 11.
  • the host I / F 11 is a DMA (Direct Memory Access) 111, a buffer (BF) 112, and a plurality of channel processors (Hyper Transfer Processor: HTP) 113.
  • DMA Direct Memory Access
  • BF buffer
  • HTP Hex Transfer Processor
  • the HTP 113 is connected to the host 2 and controls communication of commands and data with the host 2.
  • the buffer 112 temporarily stores commands and data transmitted from the host 2.
  • the DMA 111 is connected to the HTP 113 and transfers commands and data stored in the buffer 112 to the MPPK 12 via the switch 13.
  • FIG. 3 is a block diagram of the MPPK12.
  • the MPPK 12 includes a CPU 121 and an LM (Local Memory) 122.
  • the CPU 121 includes a plurality of cores (Micro Processor: MP) 1211. In the illustrated example, the CPU 121 is configured with eight MPs 1211, but is not limited thereto. Each MP 1211 is operable independently and processes commands and data transferred via the switch 13.
  • the LM 122 is connected to the CPU 121 and can be accessed from each MP 1211.
  • FIG. 4 is a diagram showing a logical area in the LM 122.
  • a plurality of logical areas are formed in the LM 122. These logical areas are roughly divided into a shared area 5 that is accessed from all the MPs 1211 constituting the CPU 121 and all the HTPs 113 in the host I / F 11 and a dedicated area 6 that is accessed by one MP 1211.
  • the dedicated area 6 is divided into the same number as the MP 1211 included in the MPPK 12.
  • Each dedicated area 6 stores job information indicating a job handled by the corresponding MP 1211. Note that the dedicated area 6 can also be accessed by other MPs 1211.
  • the shared area 5 is a job control block (JCB) area 51, an initial activation event area 52, and an area for storing a program and information for controlling the storage device 1 (illustrated). None).
  • JJCB job control block
  • FIG. 5 is a diagram for explaining the initial activation event area 52.
  • the initial activation event area 52 is divided into a plurality of HTP areas 52a.
  • the initial activation event area 52 is divided into the number of the plurality of HTPs 113 that the host I / F 11 has, and the HTP areas # 0 to #xx and the HTP 113 are associated one-to-one.
  • the HTP area 52a is indicated by the corresponding HTP 113 number (HTP # 0 to xx).
  • Each HTP region 52 a is further divided into a plurality of blocks 521.
  • the HTP 113 that has received the command from the host 2 stores the command information indicating the contents of the command as the event information, the command reception flag indicating that the event is valid, and the command in the predetermined block 521 of the HTP area 52a. And a priority flag indicating that the priority included in is high. Here, the priority is included in a command issued by the host 2.
  • the HTP 11 that has received the command from the host 2 transmits these flags to the MPPK 12 so as to set a command reception flag and a priority flag in one block 521 in the HTP area 52a corresponding to itself.
  • Each MP 1211 monitors the command reception flag and priority flag set in the block 521 by polling or the like, and when event information for which the command reception flag is valid is found, based on the event information, a job control block area described later
  • the job information is stored in 51. Note that which type of job is accepted by which MP 1211 may be determined in advance. After saving the job information in the job control block area 51, the MP 1211 cancels the command reception flag of the event information corresponding to the job information.
  • FIG. 6 is a diagram for explaining the job control block area 51.
  • the job control block area 51 is divided into MP areas 51a that are memory areas for each MP 1211.
  • the job control block may be referred to as a JCB area.
  • the JCB area 51 is divided into eight, and MP areas # 0 to # 7 are associated with MP # 0 to # 7 on a one-to-one basis.
  • Each MP area 51a has a plurality of job control blocks (JCB) 51b.
  • Each JCB 51b is assigned a JCB number (JCB # x).
  • JCB # 0 to # 8191 are configured with an MP area for MP # 0.
  • the MP 1211 secures a free JCB 51b from its own MP area 51a in response to a command corresponding to the event found from the HTP area 52a.
  • the MP 1211 stores job information based on the command in the secured JCB 51b.
  • the MP 1211 generates one job for at least one command, and secures one JCB 51b for one job.
  • the same JCB 51b is continuously secured until the job is completed.
  • the MP 1211 sets the JCB 51b to an empty state again.
  • job information when the corresponding command is an I / O (Input / Output) command is stored in JCB # 8191.
  • the job information includes, for example, an HTP number (#) 511 indicating the identifier of the HTP that has received the I / O command, I / O command information 512 indicating the type of the I / O command (read command or write command), , I / O control information 513 indicating information such as an I / O destination address and cylinder specified by the I / O command, and I / O priority information 514 based on the priority of the I / O command. Have.
  • HTP number (#) 511 indicating the identifier of the HTP that has received the I / O command
  • I / O command information 512 indicating the type of the I / O command (read command or write command)
  • I / O control information 513 indicating information such as an I / O destination address and cylinder specified by the I / O command
  • I / O priority information 514 based on the priority of the I / O command.
  • FIG. 7 is a diagram for explaining the types of queues managed in the dedicated area.
  • the MP # 0 dedicated area 6 which is an area for MP # 0 is shown, but the other MP dedicated areas 6 have the same configuration.
  • the MP # 0 dedicated area 6 stores a plurality of types of queues based on job types.
  • a queue is generated for each job type.
  • the queue is a first-in first-out structure that is executed in the order of input.
  • the job type is based on the priority (high / low) of the job, whether the job is in a waiting state, whether the job is after a waiting state, or the like.
  • a job with a high priority and a queue dedicated to the job before execution a high priority initial startup queue 61, and a job with a low priority and before execution.
  • Low-priority initial activation queue 62, a high-priority job, and a high-priority restart queue 63 which is a queue dedicated to jobs after waiting, and a low-priority job
  • a low-priority restart queue 64 that is dedicated to a job after waiting and a wait queue 65 that is dedicated to a waiting job are stored.
  • a JCB number is input to these queues.
  • the initial activation is to activate a job for which the MP 1211 has not yet been activated.
  • the MP 1211 inputs (enqueues) the JCB number of the job that has not yet been activated into the initial activation queue.
  • the MP 1211 inputs the JCB number of the job to the wait queue 65.
  • the MP 1211 is not the initial activation queue but the restart queue. input.
  • the queue may be a unidirectional queue or a bidirectional queue.
  • the job when waiting for transmission of write data based on a write command from the host 2, the job enters a wait state when attempting to read read data on the cache memory 131 based on a read command from the host 2.
  • a wait state is generated due to multiple processing.
  • the host 2 is a mainframe as in the present embodiment, a case where a plurality of continuous commands are chained (command chain) or a case where a plurality of continuous data is chained for one command (data chain). ) Is more likely to wait than open systems.
  • FIG. 8 is a flowchart of the initial activation event detection process.
  • the initial activation event detection process is a process performed by each MP 1211 of the CPU 121 executing an initial activation event detection program. This process may always be repeated while the storage apparatus 1 is activated.
  • the program refers to the HTP areas 52a of the initial activation event area 52 one by one in order, and repeats the process of S81.
  • the acquired HTP region 52a is referred to as a target HTP region.
  • the program determines whether or not a command reception flag is set in any block 521 in the target HTP area. If the command reception flag is set as a result of the determination (Yes in S81), the program secures an empty JCB 51b from its own MP area 51a in S81, and the command reception flag is set in S82. The job information 511 to 514 based on the existing event information is set in the secured JCB 51b, and the process proceeds to S83. At this time, the program cancels the command reception flag set in the block. Then, the program acquires the next HTP area 52a and proceeds to S131 as the target HTP area.
  • the program acquires the next HTP region 52a and advances the process to S81 as the target HTP 52a.
  • each MP monitors the HTP area 52a of the initial activation event area 52, so that the command reception flag can be detected for the command of the job undertaken by itself.
  • FIG. 9 is a flowchart of the job scheduling process.
  • the job scheduling process is executed by each MP 1211 executing the scheduling program stored in the LM 122.
  • the program executes a restart event detection process for inputting a job to be restarted to the queue.
  • the restart event detection process will be described in detail with reference to FIG.
  • the program executes job start processing for starting the job managed by the queue.
  • the job activation process will be described in detail with reference to FIG.
  • the program executes a sinking prevention process that prevents the job from being restarted for a long period of time.
  • the sinking prevention process will be described in detail with reference to FIG.
  • FIG. 10 is a flowchart of the restart event detection process.
  • the restart event detection process is the process of S81 of the job scheduling process described in FIG.
  • the program acquires the JCB numbers stored in the wait queue 65 one by one in the order of input, and repeats the processing of S101 to S105 (or S106). For example, the program sets the position A in the input order in the wait queue 65 to 0, sets the number of JCB numbers stored in the wait queue 65 as the number of wait queue connections, performs the process, adds 1 to A, Repeat until the number of wait queue connections is reached.
  • the acquired JCB number is referred to as a target JCB number.
  • the program determines whether or not the job having the target JCB number (target job) can be restarted, that is, whether or not the job wait state has ended. As a result of the determination, if the target job can be restarted (Yes in S101), the program proceeds to S102. On the other hand, if the target job cannot be restarted (No in S101), the program acquires the next JCB number from the wait queue 65, and returns the process to this step (S101).
  • the program dequeues the target JCB number from the wait queue 65.
  • the program determines whether the priority of the target job is high based on the job information corresponding to the target JCB number. Specifically, for example, the program refers to the I / O priority information 514 of the target JCB number of its own MP area 51a and determines the priority of the target job. If the priority is high as a result of the determination (Yes in S103), the program proceeds to S106, enqueues the target JCB number into the high priority restart queue 63, and obtains the next JCB number from the wait queue 65. Then, the process proceeds to S101.
  • the program determines whether or not a certain time has elapsed from the initial activation of the target job. If it is determined that a predetermined time has elapsed since the initial activation (Yes in S104), the program proceeds to S106, enqueues the target JCB number into the high priority restart queue 63, and waits from the wait queue 65 to the next JCB number. And the process returns to S101.
  • the program enqueues the target JCB number into the low priority restart queue 64, and the next JCB number from the wait queue 65 is obtained. Acquire and proceed to S71.
  • each MP 1211 is a job with a high priority and a queue dedicated to the job at the time of initial startup, and a high priority initial startup queue 61, and a job with a low priority and a job at the time of initial startup.
  • the low priority initial startup queue 62 which is a dedicated queue
  • the high priority restart queue 63 which is a high priority job dedicated queued job, and the low priority job.
  • jobs after waiting can be placed in an appropriate queue based on priority, and job scheduling can be performed appropriately.
  • a high-priority job that has finished waiting can be placed in the priority-restart queue 63, so that scheduling can be performed appropriately.
  • a restarted and low priority job is placed in the high priority restart queue 63 when a certain time has elapsed since the initial startup time. As a result, it is possible to prevent a low priority job from being executed.
  • FIG. 11 is a flowchart of job activation processing.
  • the job activation process is the process of S92 of the job scheduling process described with reference to FIG.
  • the program refers to its own MP # x dedicated area 6 and determines whether or not the JCB number is stored in the high priority restart queue 63. If the JCB number is stored in this queue 63 as a result of the determination (Yes in S111), the program sets the job corresponding to this JCB number as the target job, performs job execution processing in S115, and ends the processing. . On the other hand, when the JCB number is not stored in this queue 63 (No in S111), the program advances the process to S112.
  • the program refers to its own MP # x dedicated area 6 and determines whether or not the JCB number is stored in the high priority initial activation queue 61. As a result of the determination, when the JCB number is stored in this queue 61 (Yes in S112), the program sets the job corresponding to this JCB number as the target job, performs job execution processing in S115, and ends the processing. . On the other hand, when the JCB number is not stored in this queue 61 (No in S112), the program proceeds to S113.
  • the program refers to its own MP # x dedicated area 6 and determines whether or not the JCB number is stored in the low priority restart queue 64. If the JCB number is stored in this queue 64 as a result of the determination (Yes in S113), the program sets the job corresponding to this JCB number as the target job, performs job execution processing in S115, and ends the processing. . On the other hand, when the JCB number is not stored in this queue 62 (No in S113), the program advances the process to S114.
  • the program refers to its own MP # x dedicated area 6 and determines whether or not the JCB number is stored in the low priority initial activation queue 62. If the JCB number is stored in the queue 62 as a result of the determination (Yes in S114), the program sets the job corresponding to the JCB number as the target job, performs job execution processing in S115, and ends the processing. . On the other hand, when the JCB number is not stored in this queue 62 (No in S114), the program ends the process.
  • the job execution order can be determined according to the queue. Specifically, a job with a higher priority can be executed before a job with a lower priority, and for a job with the same priority, a restart job can be executed in preference to an initial startup job. it can. It is possible to prioritize and execute an initial startup job with a higher priority than a restart job with a lower priority.
  • FIG. 12 is a flowchart of job execution processing.
  • the job execution process is the process of S115 described with reference to FIG. This process is executed when a job is set in any one of the queues 61 to 64 in any one of steps S111 to S114. In this process, one or a plurality of jobs are executed among the jobs set in any one of the queues 61 to 64. At this time, the number of jobs executed may be a predetermined number or an unspecified number. In the following, for simplicity, it is assumed that one job is executed, this job is a target job, and a queue that stores the JCB number of the target job is a target queue.
  • the program executes the target job. For example, if the target job is a write process job, write data is written to the disks 21 to 23 based on the address specified by the command.
  • the program determines whether or not the target job has ended. As a result of the determination, when the target job is completed (Yes in S123), the program dequeues the JCB number of the target job from the target queue and ends the process.
  • the program dequeues the JCB number of the target job from the target queue, enqueues the JCB number of the target job in the wait queue 65, and ends the process.
  • the processing for which the job has been completed can be dequeued from the queue that has been input, and the job that has waited during execution can be enqueued in the wait queue 65.
  • the corresponding JCB can be secured before the job is executed, and priority information and the like can be stored.
  • FIG. 13 is a flowchart of the sinking prevention process.
  • the sinking prevention process is the process of S93 of the job scheduling process described with reference to FIG.
  • the program acquires the JCB numbers stored in the low priority restart queue 64 one by one in the order of input, and repeats the processing of S121 to S123. For example, the program sets the position B in the input order in the low priority restart queue 64 to 0, sets the number of JCB numbers stored in the low priority restart queue 64 as the restart queue connection number, and performs the processing. Go and add 1 to B and repeat until B reaches the number of restart queue connections.
  • the acquired JCB number is referred to as a target JCB number.
  • the program determines whether or not the job having the target JCB number (target job) has elapsed for a predetermined time since the initial activation. As a result of the determination, if the target job has passed for a fixed time (Yes in S131), the program dequeues the target job from the low priority restart queue 64 in S132, and restarts the target job in S133 with high priority. The queue is enqueued and the processing is terminated.
  • the program acquires the next JCB number from the low priority restart queue 64, and the target JCB number is S121. Proceed with the process.
  • the priority of a job that has passed a predetermined time from the initial start can be increased and executed preferentially.
  • jobs with high priority occur one after another, even jobs with low priority can be executed preferentially after a certain period of time.
  • the first initial startup queue corresponds to the high priority initial startup queue 61 and the like
  • the second initial startup queue corresponds to the low priority initial startup queue 62 and the like
  • the first restart queue Corresponds to the high priority restart queue 63 and the like
  • the second restart queue corresponds to the low priority restart queue 64 and the like
  • the wait queue corresponds to the wait queue 65 and the like.
  • the channel adapter corresponds to the channel processor (HTP) 113 and the like
  • the processor corresponds to the core (MP) 1211 and the like.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

 コントローラは、コマンドに基づくジョブを実行するプロセッサと、そのスケジューリングするためのキューを記憶するメモリを備える。キューは、初めて起動されるジョブの実行順序を示す初期起動キューと、実行中に待ち状態になったジョブの実行順序を示す待ちキューと、待ち状態の後に再起動されるジョブの実行順序を示す再起動キューを含む。プロセッサは、チャネルアダプタが第一コマンドを受信した場合に、第一コマンドに基づく第一ジョブを示す第一識別子を初期起動キューにエンキューし、第一ジョブが実行中に待ち状態になった場合に、第一識別子を初期起動キューからデキューして、待ちキューにエンキューし、第一ジョブの待ち状態が終了した場合に、第一識別子を前記待ちキューからデキューして、再起動キューにエンキューし、再起動キューに格納された識別子に対応するジョブを、初期起動キューに格納された識別子に対応するジョブよりも先に実行する。

Description

ストレージ装置およびストレージ装置制御方法
 本発明は、ストレージ装置に関する。
 ホスト計算機から送信されたコマンドの種類に基づき、特定の種類のコマンドを優先して実行するストレージ装置が知られている(例えば、特許文献1)。
 このストレージ装置では、コマンドは、その実行前において実行(初期起動)の順番を待つためキューに配置される。キューに配置されたコマンドは、原則としてキューに配置された順番に実行されるが、特定の種類のコマンドについては、キューに配置された順番に関わらず優先して実行される。
特開2010-26946号公報
 上記のストレージ装置では、実行前のコマンドがすべて1つのキューに配置されており、他の種類のコマンドより後にキューに配置された特定の種類のコマンドが、他の種類のコマンドよりも先に実行される。しかし、コマンドにより実行されるジョブは、その実行中に他の処理により待ち状態(wait)が発生する場合がある。待ち状態が発生したジョブを再度実行(再起動)させるためには、再起動のジョブをキューの最後尾に配置しなければならず、特定の種類のコマンドによるジョブであっても他の種類のコマンドの実行が完了するまで再起動させることができない場合がある。
 上記課題を解決するために、本発明の一態様であるストレージ装置は、記憶デバイスと、ホスト計算機から送信されるコマンドに基づき、記憶デバイスに対するジョブを実行するコントローラとを備える。コントローラは、ホスト計算機に接続され、コマンドを受信する1つ以上のチャネルアダプタと、記憶デバイスに接続され、チャネルアダプタからコマンドを受信し、コマンドに基づくジョブを実行する1つ以上のプロセッサと、チャネルアダプタおよびプロセッサに接続され、ジョブの実行をスケジューリングするためのキューを記憶するメモリと、を備える。キューは、初めて起動されるジョブの実行順序を示す初期起動キューと、実行中に待ち状態になったジョブの実行順序を示す待ちキューと、待ち状態の後に再起動されるジョブの実行順序を示す再起動キューを含む。プロセッサは、チャネルアダプタが第一コマンドを受信した場合に、第一コマンドに基づく第一ジョブを示す第一識別子を初期起動キューにエンキューし、第一ジョブが実行中に待ち状態になった場合に、第一識別子を初期起動キューからデキューして、待ちキューにエンキューし、第一ジョブの待ち状態が終了した場合に、第一識別子を前記待ちキューからデキューして、前記再起動キューにエンキューし、再起動キューに格納された識別子に対応するジョブを、前記初期起動キューに格納された識別子に対応するジョブよりも先に実行する。
 本発明の一態様によれば、待ち状態後のジョブを、実行前のジョブよりも優先して実行することができる。
図1は、本実施例の計算機システムの構成を示す。 図2は、ホストI/F11の構成図である。 図3は、MPPK12の構成図である。 図4は、LM122内の論理領域を示す図である。 図5は、初期起動イベント領域52を説明する図である。 図6は、ジョブ制御ブロック領域51を説明する図である。 図7は、専用領域で管理されているキューの種類を説明する図である。 図8は、初期起動イベント検出処理のフローチャートである。 図9は、ジョブスケジューリング処理のフローチャートである。 図10は、再起動イベント検出処理のフローチャートである。 図11は、ジョブ起動処理のフローチャートである。 図12は、ジョブ実行処理のフローチャートである。 図13は、沈み込み防止処理のフローチャートである。 図14は、メモリに記憶されるキューの配置を説明する図である。 図15は、他のキューの配置を説明する参考図である。 図16は、他のキューの配置を説明する参考図である。
 なお、以後の説明では「aaaテーブル」、「aaaキュー」等の表現にて情報を説明するが、これら情報はテーブル、キュー等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaaキュー」等について「aaa情報」と呼ぶことがある。
 さらに、各情報の内容を説明する際に、「情報」、「識別子」という表現を用いるが、これらについてはお互いに置換が可能である。
 以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはマイクロプロセッサによって実行されることで定められた処理をメモリ及び通信インタフェースを用いながら行うため、プログラムを主語とした処理の説明はマイクロプロセッサを主語とした説明としてもよい。また、そのマイクロプロセッサを含む装置が行う処理としてもよい。また、プログラムが行う処理の一部または全ては専用ハードウェアによって実現されてもよい。また、プログラムは、プログラム配布サーバや、計算機が読み取り可能な記憶メディアによって計算機にインストールされてもよい。
 各図において共通の要素については、同一の参照番号を付して説明する。また、共通の要素に関し、各要素を識別する場合には、数字の最後に10#1、10#2等の個別の番号等を付して説明する。ただし、必要に応じて番号等を省略して説明する場合がある。
 以下、図面等を用いて、本発明の実施例について説明する。以下の実施例は本発明の内容の具体例を示すものであり、本発明がこれらの実施例に限定されるものではなく、本明細書に開示される技術的思想の範囲内において当業者による様々な変更および修正が可能である。以下では、本発明のストレージ装置の実施例として、メインフレームのホスト計算機に接続されたストレージ装置について説明するが、これに限られない。例えば、ストレージ装置は、オープンシステムのホスト計算機に接続されてもよい。この場合、ホスト計算機に接続されるインタフェースは、オープンシステムのインタフェースとなる。
 以下、本実施例に係るストレージ装置におけるジョブのスケジューリング方法の概要について説明する。
 本実施例に係るストレージ装置の構成は、後に図を用いて詳細に説明するが、以下簡単に説明する。
 本実施例に係るストレージ装置は、物理記憶デバイスと、ホスト計算機から送信されるコマンドに基づき、物理記憶デバイスに対するジョブを実行するコントローラとを備える。
 コントローラは、ホスト計算機に接続されるチャネルアダプタと、物理記憶デバイスに接続され、チャネルアダプタを介してコマンドを受信し、コマンドに基づくジョブを実行するプロセッサと、プロセッサに接続され、ジョブの実行をスケジューリングするためのキューを記憶するメモリと、を備える。
 コマンドには、優先度を示す優先度情報が付される。チャネルアダプタは、コマンドを受信した場合に、コマンドをメモリに記憶する。
 図14は、メモリに記憶されるキューを説明する図である。
 本実施例においては、各コマンドに対し、優先度として二値(高、低)の何れかが設定される。メモリに記憶されるキューは、具体的には、優先度が高いジョブであって実行前のジョブ専用のキューである、優先度高初期起動キューと、優先度が低いジョブであって実行前のジョブ専用のキューである、優先度低初期起動キューと、優先度が高いジョブであって待ち状態後のジョブ専用のキューである、優先度高再起動キューと、優先度が低いジョブであって待ち状態後のジョブ専用のキューである、優先度低再起動キューと、待ち状態のジョブ専用のキューである、waitキューである。図においては、優先度高初期起動キューには、ジョブの識別子が入力されておらず、優先度低初期起動キューに、優先度の低いジョブの識別子が3つ入力されている。また、waitキューには、優先度の高いジョブの識別子が1つ入力されている。さらに、優先度高再起動キューには、優先度の高いジョブの識別子が1つ入力され、優先度低再起動キューには、優先度の低いジョブの識別子が2つ入力されている。なお、優先度として三値以上の何れかが設定されても良い。
 プロセッサは、ホスト計算機からコマンドを受信した場合、コマンドに基づくジョブの優先度に応じて、実行前のジョブを優先度高初期起動キュー又は優先度低初期起動キューに入力する。優先度高初期起動キュー又は優先度低初期起動キューに格納されているジョブが実行され、そのジョブの実行中に他の処理により待ち状態が発生した場合、プロセッサは、そのジョブを優先度高初期起動キュー又は優先度低初期起動キューから取り出し、waitキューに入力する。ジョブの待ち状態が終了した場合、プロセッサは、そのジョブを待ちキューから取り出し、コマンドに基づくジョブの優先度に応じて、優先度高再起動キュー又は優先度低再起動キューに入力する。
 プロセッサは、再起動キューに格納されたジョブのうちの少なくとも1つのジョブを、初期起動キューに格納されたジョブよりも先に実行する。具体的には、例えば、優先度高再起動キューに格納されたジョブのうちの少なくとも1つのジョブを、優先度高初期起動キューに格納されたジョブよりも先に実行する。
 本実施例においては、実行前のジョブを格納するためのキューである初期起動キューのみならず、待ち状態後のジョブを格納するためのキューである再起動キューをメモリに記憶することで、待ち状態後のジョブを、実行前のジョブよりも先に実行させることができる。特に、優先度高再起動キューに格納されたジョブのうちの少なくとも1つのジョブを、優先度高初期起動キューに格納されたジョブよりも先に実行することにより、優先度の高い待ち状態後のジョブを、優先度の高い実行前のジョブよりも先に実行させうることができる。
 もし、本実施例の構成を用いず、図15に示すように、実行前のジョブを格納するキューのみがメモリに記憶され、かつ、プロセッサが優先度の高いジョブを先に実行する場合で、このキューに待ち状態後の優先度の高いジョブを格納できるとしても、待ち状態後のジョブは、キューの最後尾に入力される。このため、待ち状態後のジョブの再起動が遅れ、このジョブの終了が遅れる。このようなキューによるジョブのスケジューリング方法に比べて、本実施例では、待ち状態後のジョブを、実行前のジョブよりも先に実行でき、待ち状態後のジョブの終了が遅れてしまうことを防止できる。
 もし、本実施例の構成を用いず、図16に示すように、待ち状態後のジョブを格納するためのキューであって優先度を考慮しないキューである再起動キューがメモリに記憶される場合、waitキューに格納された優先度の高いジョブは、待ち状態終了後、優先度に関係なく、再起動キューの最後尾に配置されてしまうため、このジョブの再起動が遅れ、このジョブの終了が遅れる。このようなキューによるジョブのスケジューリング方法に比べて、本実施例では、待ち状態後の優先度の高いジョブを、待ち状態後の優先度の低いジョブよりも先に実行でき、待ち状態後にも、ジョブの実行の優先度を考慮することができる。
 以下、本実施例の計算機システムの構成について詳細に説明する。
 図1は、本実施例の計算機システムの構成を示す。
 本実施例の計算機システムは、メインフレームのホスト計算機(以下、ホスト)2と、ストレージ装置1とを有する。ホスト2とストレージ装置1とは、例えば、SAN(Storage Area Network)又はLAN(Local Area Network)等の通信ネットワーク3に接続される。なお、計算機システムは、複数のホスト2を有していてもよい。この場合、ストレージ装置1は、通信ネットワーク3を介して複数のホスト2に接続される。
 ストレージ装置1は、ストレージコントローラ10と、ディスクユニット20とを有する。ストレージコントローラ10が、ディスクユニット20及びホスト2に接続される。
 ディスクユニット20は、複数のドライブを有する。ドライブは、物理記憶デバイスであり、例えば、SAS(Serial Attached Small Computer System Interface)-HDD(Hard Disk Drive)21、SATA(Serial Advanced Technology Attachment)-HDD22、SSD(Solid State Drive)23であるが、これに限られない。複数のドライブにより、RAID(Redundant Arrays of Inexpensive Disks)グループが構成されてよい。1つのドライブ又は1つのRAIDグループを構成する複数のドライブに基づき、1つ又は複数のボリューム(LU:Logical Unit)がホスト2に提供されてよい。なお、図示例では、ディスクユニット20は1つであるが、複数のディスクユニット20により冗長化されてよい。
 ストレージコントローラ10は、ホストインタフェース(ホストI/F)11と、MPPK(Micro Processor Package)12と、スイッチ(SW)13と、複数のディスクインタフェース(ディスクI/F)14とを有する。スイッチ13は、その内部にキャッシュメモリ(CM)131を有する。ストレージコントローラ10の各部は、スイッチ13を介してバスで接続される。なお、図示例では、ストレージコントローラ10は、MPPK12、スイッチ13及びディスクI/F14をそれぞれ1つずつ有するが、複数であってもよい。
 ホストI/F11は、ホスト2との間の通信を行う。本実施例では、メインフレーム用のホストI/F11を用いているため、通信は、FICON(Fibre
Connection:登録商標)、ESCON(Enterprise System Connection:登録商標)、ACONARC(Advanced
Connection Architecture:登録商標)、FIBARC(Fibre Connection Architecture:登録商標)等のプロトコルに従って行うことができる。複数のディスクI/F14は、それぞれ種類の異なるドライブ(SAS-HDD21、SATA-HDD22、SSD23)に接続され、ディスクユニット20との間の通信を行う。
 キャッシュメモリ131は、SW13を経由するコマンド及びデータを一時的に記憶する。MPPK12は、ストレージ装置1を制御するためのプログラム及びデータを格納し、制御用のプログラムに従ってストレージ装置1を制御する。
 図2は、ホストI/F11の構成図である。
 ホストI/F11は、DMA(Direct
Memory Access)111と、バッファ(BF:Buffer)112と、複数のチャネルプロセッサ(Hyper Transfer Processor:HTP)113とを有する。
 HTP113は、ホスト2に接続され、ホスト2との間でコマンド及びデータの通信を制御する。バッファ112は、ホスト2から送信されるコマンド及びデータを一時的に記憶する。DMA111は、HTP113に接続され、バッファ112に記憶されたコマンド及びデータを、スイッチ13を介してMPPK12に転送する。
 図3は、MPPK12の構成図である。
 MPPK12は、CPU121と、LM(Local Memory)122とを有する。CPU121は、複数のコア(Micro Processor:MP)1211で構成される。図示例では、CPU121が8つのMP1211で構成されているが、これに限られない。各MP1211は、独立に動作可能であり、スイッチ13を介して転送されるコマンド及びデータを処理する。LM122は、CPU121に接続され、各MP1211よりアクセス可能である。
 図4は、LM122内の論理領域を示す図である。
 LM122には、複数の論理領域が形成される。これら論理領域は、CPU121を構成するすべてのMP1211とホストI/F11内のすべてのHTP113とからアクセスされる共有領域5と、一つのMP1211によりアクセスされる専用領域6とに大別される。本実施例では、専用領域6は、MPPK12が有するMP1211と同じ数に分割されている。各専用領域6には、対応するMP1211が担当するジョブを示すジョブ情報が記憶される。なお、専用領域6は、他のMP1211によってもアクセス可能である。また、本実施例では、共有領域5は、ジョブ制御ブロック(Job Control Block:JCB)領域51と、初期起動イベント領域52と、ストレージ装置1を制御するためのプログラム及び情報を格納する領域(図示なし)とを有する。
 図5は、初期起動イベント領域52を説明する図である。
 初期起動イベント領域52は、複数のHTP領域52aに分割される。本実施例では、初期起動イベント領域52は、ホストI/F11が有する複数のHTP113の数に分割されており、HTP領域#0~#xxとHTP113とが1対1で対応づけられている。本図においては、HTP領域52aを対応するHTP113の番号(HTP#0~#xx)により示す。各HTP領域52aは、さらに複数のブロック521に分割される。ホスト2からコマンドを受信したHTP113は、HTP領域52aの所定のブロック521に、イベント情報として、そのコマンドの内容を示すコマンド情報と、そのイベントが有効であることを示すコマンド受信フラグと、そのコマンドに含まれている優先度が高いことを示す優先度フラグとを設定する。ここで、優先度は、ホスト2が発行するコマンドに含まれる。
 ホスト2からコマンドを受信したHTP11は、自身に対応するHTP領域52a内の一つのブロック521にコマンド受信フラグ及び優先度フラグを設定するよう、これらフラグをMPPK12に送信する。各MP1211は、ブロック521に設定されたコマンド受信フラグ及び優先度フラグをポーリングなどにより監視し、コマンド受信フラグが有効であるイベント情報を見つけた場合そのイベント情報に基づいて、後述のジョブ制御ブロック領域51にジョブ情報を保存する。なお、どの種類のジョブをどのMP1211が請け負うかは、予め定められていてもよい。MP1211は、ジョブ制御ブロック領域51にジョブ情報を保存した後そのジョブ情報に対応するイベント情報のコマンド受信フラグを解除する。
 図6は、ジョブ制御ブロック領域51を説明する図である。
 ジョブ制御ブロック領域51は、MP1211毎のメモリ領域であるMP領域51aに分割される。なお、以下の説明及び図では、ジョブ制御ブロックをJCB領域という場合がある。本実施例では、JCB領域51は8つに分割されており、MP領域#0~#7にMP#0~#7が1対1で対応づけられている。各MP領域51aは、複数のジョブ制御ブロック(JCB)51bを有する。各JCB51bには、JCB番号(JCB#x)が付される。本実施例では、JCB#0~#8191でMP#0用のMP領域で構成される。
 MP1211は、HTP領域52aから見つけたイベントに対応するコマンドに対して、自身のMP領域51aの中から空きのJCB51bを確保する。MP1211は、確保したJCB51bに、そのコマンドに基づくジョブ情報を格納する。MP1211は、少なくとも1つのコマンドに対して1つのジョブを生成し、1つのジョブに対して1つのJCB51bを確保する。そのジョブが終了するまで同じJCB51bを確保し続ける。ジョブが終了した後、MP1211は、JCB51bを再び空きの状態にする。この図では、JCB#8191に、対応するコマンドがI/O(Input or Output)コマンドの場合の、ジョブ情報が記憶されている。ジョブ情報は、例えば、当該I/Oコマンドを受信したHTPの識別子を示すHTP番号(#)511と、当該I/Oコマンドの種別(リードコマンド又はライトコマンド)を示すI/Oコマンド情報512と、当該I/Oコマンドが指定するI/O先のアドレスやシリンダ等の情報を示すI/O制御情報513と、当該I/Oコマンドの優先度を示す基づくI/O優先度情報514とを有する。
 図7は、専用領域で管理されているキューの種類を説明する図である。
 図では、説明のため、MP#0用の領域であるMP#0専用領域6を示すが、他のMPの専用領域6も同様の構成である。MP#0専用領域6は、ジョブの種類に基づく複数種のキューを格納する。本実施例では、ジョブの種類毎にキューが生成される。キューは、入力順に実行される先入れ先出しの構造である。ここで、ジョブの種類は、ジョブの優先度(高・低)と、ジョブが待ち状態であるか否かと、ジョブが待ち状態の後か否か等に基づく。具体的には、MP#0専用領域6では、優先度が高いジョブであって実行前のジョブ専用のキューである、優先度高初期起動キュー61と、優先度が低いジョブであって実行前のジョブ専用のキューである、優先度低初期起動キュー62と、優先度が高いジョブであって待ち状態後のジョブ専用のキューである、優先度高再起動キュー63と、優先度が低いジョブであって待ち状態後のジョブ専用のキューである、優先度低再起動キュー64と、待ち状態のジョブ専用のキューである、waitキュー65とが格納される。これらのキューには、JCB番号が入力される。なおここで、初期起動とは、MP1211がまだ起動されていないジョブを起動することである。MP1211は、まだ起動されていないジョブのJCB番号を、初期起動のキューに入力(エンキュー)する。ジョブが他の処理により待ち状態になるとき、MP1211はそのジョブのJCB番号をwaitキュー65に入力する。MP1211は、ジョブの待ち状態が終わり、そのJCB番号がwaitキュー65から出力(デキュー)された後、そのJCB番号を再度キューに入力する際は、初期起動のキューではなく、再起動のキューに入力する。なお、キューは、単方向のキューを用いても双方向キューを用いても良い。また、ジョブが待ち状態になるのは、例えば、ホスト2からのライトコマンドに基づくライトデータの送信を待つ場合、ホスト2からのリードコマンドに基づくキャッシュメモリ131上のリードデータをリードしようとする際、キャッシュメモリ131上にリードデータが存在せず(キャッシュミス)、ディスクユニット20からデータを取得する(ステージング)のを待つ場合、スループットを向上させる目的で一つのジョブがMPを占有することを避けるための多重処理による待ち状態の発生等である。また、本実施例のようにホスト2がメインフレームであると、連続する複数のコマンドをチェインさせる場合(コマンドチェイン)や、1つのコマンドに対して連続する複数のデータをチェインさせる場合(データチェイン)も、オープンシステムに比べて待ち状態が発生しやすい。
 図8は、初期起動イベント検出処理のフローチャートである。
 初期起動イベント検出処理は、CPU121の各MP1211が初期起動イベント検出プログラムを実行することにより行われる処理である。この処理は、ストレージ装置1が起動している間は、常に繰り返し行われてよい。
 プログラムは、初期起動イベント領域52のHTP領域52aを順に1つずつ参照し、S81の処理を繰り返す。以下のこの図の説明においては、取得したHTP領域52aを対象HTP領域という。
 S81で、プログラムは、対象HTP領域のいずれかのブロック521にコマンド受信フラグが設定されているか否かを判定する。判定の結果、コマンド受信フラグが設定されている場合(S81で、Yes)、プログラムは、S81で自身のMP領域51aの中から空きのJCB51bを確保し、S82で、コマンド受信フラグが設定されているイベント情報に基づくジョブ情報511~514を、確保されたJCB51bに設定し、S83に処理を進める。なお、このとき、プログラムは、当該ブロックに設定されたコマンド受信フラグを解除する。そして、プログラムは、次のHTP領域52aを取得し、対象HTP領域としてS131に処理を進める。
 一方、判定の結果、コマンド受信フラグが設定されていない場合(S81で、No)、プログラムは、次のHTP領域52aを取得し、対象HTP52aとしてS81に処理を進める。
 すべてのHTP領域52aの参照を終了したとき、プログラムは、処理を終了する。
 上記処理により、初期起動イベント領域52のHTP領域52aを各MPが監視することで、自身の請け負うジョブのコマンドについて、コマンド受信フラグを検出できる。
 図9は、ジョブスケジューリング処理のフローチャートである。
 ジョブスケジューリング処理は、LM122に記憶されたスケジューリングプログラムを各MP1211が実行することにより実行される。
 この処理は、ストレージ装置1が稼働している間は、常に繰り返し起動する。以下では、ステップを単に「S」と省略して説明する。
 S91で、プログラムは、再起動すべきジョブをキューに入力する再起動イベント検出処理を実行する。再起動イベント検出処理は、図10において詳細に説明する。
 S92で、プログラムは、キューにより管理されているジョブを起動するジョブ起動処理を実行する。ジョブ起動処理は、図11において詳細に説明する。
 S93で、プログラムは、ジョブが長期間にわたって再起動されない状態を防ぐ沈み込み防止処理を実行する。沈み込み防止処理は、図12において詳細に説明する。
 図10は、再起動イベント検出処理のフローチャートである。
 再起動イベント検出処理は、図9で説明したジョブスケジューリング処理のS81の処理である。
 プログラムは、waitキュー65に格納されたJCB番号を、入力順に1つずつ取得し、S101~S105(またはS106)の処理を繰り返す。例えば、プログラムは、waitキュー65内で入力順の位置Aを0とし、waitキュー65に格納されているJCB番号の数をwaitキュー接続数とし、その処理を行ってAに1を加え、Aがwaitキュー接続数に達するまで繰り返す。以下のこの図の説明においては、取得したJCB番号を対象JCB番号という。
 S101で、プログラムは、対象JCB番号のジョブ(対象ジョブ)が、再起動できる状態か否か、つまり、ジョブの待ち状態が終了したか否かを判定する。判定の結果、対象ジョブが再起動できる場合(S101で、Yes)、プログラムは、S102に処理を進める。一方、対象ジョブが再起動できない場合(S101で、No)、プログラムは、waitキュー65から次のJCB番号を取得し、このステップ(S101)に処理を戻す。
 S102で、プログラムは、waitキュー65から、対象JCB番号をデキューする。
 S103で、プログラムは、対象JCB番号に対応するジョブ情報に基づいて、対象ジョブの優先度が高いか否かを判定する。具体的には、例えば、プログラムは、自身のMP領域51aの対象JCB番号のI/O優先度情報514を参照し、対象ジョブの優先度を判定する。判定の結果、優先度が高い場合(S103で、Yes)、プログラムは、S106に処理を進め、対象JCB番号を優先度高再起動キュー63にエンキューし、waitキュー65から次のJCB番号を取得してS101に処理を進める。
 一方、判定の結果、優先度が低い場合(S103で、No)、プログラムは、S104に処理を進める。
 S104で、プログラムは、対象ジョブが初期起動から一定時間経過したか否かを判定する。初期起動から一定時間経過したと判定された場合(S104でYes)、プログラムは、S106に処理を進め、対象JCB番号を優先度高再起動キュー63にエンキューし、waitキュー65から次のJCB番号を取得してS101に処理を戻す。
 一方、初期起動から一定時間経過していないと判定された場合(S104で、No)、プログラムは、対象JCB番号を優先度低再起動キュー64にエンキューし、waitキュー65から次のJCB番号を取得してS71に処理を進める。
 waitキュー65に格納されたすべてのJCB番号が上記の処理を終了したとき、すなわちwaitキュー65が空になったとき、プログラムは、再起動イベント検出処理を終了する。
 上記処理により、waitキュー65に格納されたすべてのJCB番号について、ジョブの優先度に従ってキューに配置できる。本実施例では、各MP1211が、優先度が高いジョブであって初期起動時のジョブ専用のキューである、優先度高初期起動キュー61と、優先度が低いジョブであって初期起動時のジョブ専用のキューである、優先度低初期起動キュー62と、優先度が高いジョブであって待ち状態後のジョブ専用のキューである、優先度高再起動キュー63と、優先度が低いジョブであって待ち状態後のジョブ専用のキューである、優先度低再起動キュー64と、待ち状態のジョブ専用のキューである、waitキュー65との5つのキューを管理しているため、初期起動のジョブのみならず、待ち状態後のジョブについても、優先度に基づいて適切なキューに配置することができ、ジョブのスケジューリングを適切に行うことができる。特に、待ち状態の終了した優先度の高いジョブについては、優先度甲再起動キュー63に配置できるため、そのスケジューリングを適切に行うことができる。
 また、本実施例では、再起動かつ優先度の低いジョブについては、初期起動の時間から一定時間経過している場合に、優先度高再起動キュー63に配置する。これにより、優先度の低いジョブが実行されなくなるのを防止することができる。
 図11は、ジョブ起動処理のフローチャートである。
 ジョブ起動処理は、図9で説明したジョブスケジューリング処理のS92の処理である。
 S111で、プログラムは、自身のMP#x専用領域6を参照し、優先度高再起動キュー63にJCB番号が格納されているか否かを判定する。判定の結果、このキュー63にJCB番号が格納されている場合(S111で、Yes)、プログラムは、このJCB番号に対応するジョブを対象ジョブとして、S115においてジョブ実行処理を行い、処理を終了する。一方、このキュー63にJCB番号が格納されていない場合(S111で、No)、プログラムは、S112に処理を進める。
 S112で、プログラムは、自身のMP#x専用領域6を参照し、優先度高初期起動キュー61にJCB番号が格納されているか否かを判定する。判定の結果、このキュー61にJCB番号が格納されている場合(S112で、Yes)、プログラムは、このJCB番号に対応するジョブを対象ジョブとして、S115においてジョブ実行処理を行い、処理を終了する。一方、このキュー61にJCB番号が格納されていない場合(S112で、No)、プログラムは、S113に処理を進める。
 S113で、プログラムは、自身のMP#x専用領域6を参照し、優先度低再起動キュー64にJCB番号が格納されているか否かを判定する。判定の結果、このキュー64にJCB番号が格納されている場合(S113で、Yes)、プログラムは、このJCB番号に対応するジョブを対象ジョブとして、S115においてジョブ実行処理を行い、処理を終了する。一方、このキュー62にJCB番号が格納されていない場合(S113で、No)、プログラムは、S114に処理を進める。
 S114で、プログラムは、自身のMP#x専用領域6を参照し、優先度低初期起動キュー62にJCB番号が格納されているか否かを判定する。判定の結果、このキュー62にJCB番号が格納されている場合(S114で、Yes)、プログラムは、このJCB番号に対応するジョブを対象ジョブとして、S115においてジョブ実行処理を行い、処理を終了する。一方、このキュー62にJCB番号が格納されていない場合(S114で、No)、プログラムは、処理を終了する。
 上記処理により、キューに応じてジョブの実行の順番を決定できる。具体的には、優先度の高いジョブを優先度の低いジョブよりも先に実行でき、かつ、優先度の同じジョブについては初期起動のジョブよりも再起動のジョブを優先して実行することができる。優先度の低い再起動のジョブよりも優先度の高い初期起動ジョブを優先して実行することができる。
 図12は、ジョブ実行処理のフローチャートである。
 ジョブ実行処理は、図11で説明したS115の処理である。S111~114のいずれかのステップにおいて、キュー61~64のいずれかのキューにジョブが設定されている場合にこの処理が実行される。この処理では、キュー61~64のいずれかのキューに設定されたジョブのうち、1つ又は複数のジョブを実行する。この際、ジョブの実行は、予め決められた数でもよいし、不特定の数であってもよい。以下では、簡単のため、実行されるジョブを1つとし、このジョブを対象ジョブとし、対象ジョブのJCB番号を格納するキューを対象キューとして説明する。
 S122で、プログラムは、対象ジョブを実行する。例えば、対象ジョブがライト処理のジョブであれば、コマンドで指定されたアドレスに基づき、ディスク21~23にライトデータを書き込む。
 S123で、プログラムは、対象ジョブが終了したか否かを判定する。判定の結果、対象ジョブが終了した場合(S123で、Yes)、プログラムは、対象ジョブのJCB番号を対象キューからデキューし、処理を終了する。
 一方、対象ジョブが終了していない場合(S123で、No)は、対象ジョブが待ち状態となっていることを意味している。この場合、プログラムは、対象ジョブのJCB番号を対象キューからデキューし、対象ジョブのJCB番号をwaitキュー65にエンキューし、処理を終了する。
 上記処理では、対象ジョブの実行状態に合わせて、ジョブの終了した処理については、入力されていたキューからデキューでき、実行中に待ちが発生したジョブについては、waitキュー65にエンキューできる。また、そのジョブが初期起動の場合は、ジョブの実行の前に該当のJCBを確保し、優先度情報などを記憶できる。
 図13は、沈み込み防止処理のフローチャートである。
 沈み込み防止処理は、図9で説明したジョブスケジューリング処理のS93の処理である。
 プログラムは、優先度低再起動キュー64に格納されたJCB番号を、入力順に1つずつ取得し、S121~S123の処理を繰り返す。例えば、プログラムは、優先度低再起動キュー64内で入力順の位置Bを0とし、優先度低再起動キュー64に格納されているJCB番号の数を再起動キュー接続数とし、その処理を行ってBに1を加え、Bが再起動キュー接続数に達するまで繰り返す。以下のこの図の説明においては、取得したJCB番号を対象JCB番号という。
 S131で、プログラムは、対象JCB番号のジョブ(対象ジョブ)が、初期起動から一定時間経過しているか否かを判定する。判定の結果、対象ジョブが一定時間経過している場合(S131で、Yes)、プログラムは、S132において対象ジョブを優先度低再起動キュー64からデキューし、S133において対象ジョブを優先度高再起動キュー63にエンキューし、処理を終了する。
 一方、判定の結果、対象ジョブが初期起動から一定時間経過している場合(S131で、No)、プログラムは、優先度低再起動キュー64から次のJCB番号を取得し、対象JCB番号としてS121に処理を進める。
 優先度低再起動キュー64に格納されたすべてのJCB番号に対して上記の処理を終了したとき、プログラムは、沈み込み防止処理を終了する。
 上記処理では、優先度低再起動キュー64に設定されたジョブのうち、初期起動から一定時間経過したジョブの優先度を高くし、優先的に実行できる。これにより、優先度の高いジョブが相次いで発生する場合に、優先度の低いジョブであっても、一定時間経過した後は、優先的に実行できるようにできる。
 以上、幾つかの実施例を説明したが、本発明は、それらの実施例に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
 なお、上記の実施例で説明された技術は、次のように表現することもできる。
本発明のストレージ装置において、第一初期起動キューは、優先度高初期起動キュー61等に対応し、第二初期起動キューは、優先度低初期起動キュー62等に対応し、第一再起動キューは、優先度高再起動キュー63等に対応し、第二再起動キューは、優先度低再起動キュー64等に対応し、待ちキューは、waitキュー65等に対応する。また、チャネルアダプタは、チャネルプロセッサ(HTP)113等に対応し、プロセッサは、コア(MP)1211等に対応する。
 1:ストレージ計算機、2:ホスト計算機、10:ストレージコントローラ、20:ディスクユニット、11:ホストインタフェース、12:MPPK、113:HTP、121:CPU、122:LM、1211:MP

Claims (9)

  1.  記憶デバイスと、
     ホスト計算機から送信されるコマンドに基づき、前記記憶デバイスに対するジョブを実行するコントローラと
    を備え、
     前記コントローラは、
      前記ホスト計算機に接続され、前記コマンドを受信する1つ以上のチャネルアダプタと、
      前記記憶デバイスに接続され、前記チャネルアダプタから前記コマンドを受信し、前記コマンドに基づく前記ジョブを実行する1つ以上のプロセッサと、
      前記チャネルアダプタおよび前記プロセッサに接続され、前記ジョブの実行をスケジューリングするためのキューを記憶するメモリと、
    を備え、
     前記キューは、初めて起動されるジョブの実行順序を示す初期起動キューと、実行中に待ち状態になったジョブの実行順序を示す待ちキューと、待ち状態の後に再起動されるジョブの実行順序を示す再起動キューを含み、
     前記プロセッサは、
      前記チャネルアダプタが第一コマンドを受信した場合に、前記第一コマンドに基づく第一ジョブを示す第一識別子を初期起動キューにエンキューし、
      前記第一ジョブが実行中に待ち状態になった場合に、前記第一識別子を前記初期起動キューからデキューして、前記待ちキューにエンキューし、
      前記第一ジョブの待ち状態が終了した場合に、前記第一識別子を前記待ちキューからデキューして、前記再起動キューにエンキューし、
      前記再起動キューに格納された識別子に対応するジョブを、前記初期起動キューに格納された識別子に対応するジョブよりも先に実行する
    ストレージ装置。
     
  2.  前記コマンドは、優先度を含み、
     前記初期起動キューは、優先度である第一値に対応する第一初期起動キューと、前記第一値より低い優先度である第二値に対応する第二初期起動キューとを含み、
     前記再起動キューは、前記第一値に対応する第一再起動キューと、前記第二値に対応する第二再起動キューとを含み、
     前記プロセッサは、
      前記チャネルアダプタが前記第一コマンドを受信した場合、前記第一初期起動キュー及び前記第二初期起動キューのうち、前記第一コマンドに含まれている第一優先度に対応するキューに前記第一識別子をエンキューし、
      前記第一ジョブの待ち状態が終了した場合に、前記第一識別子を前記待ちキューからデキューして、前記第一再起動キュー及び前記第二再起動キューのうち前記第一優先度に対応するキューにエンキューし、
      前記第一再起動キューに格納された識別子に対応するジョブを、前記第一初期起動キューに格納された識別子に対応するジョブよりも先に実行する
     請求項1に記載のストレージ装置。
     
  3.  前記プロセッサは、
      前記第一ジョブの待ち状態が終了した場合であって、かつ、前記第一優先度が前記第一値である場合は、前記第一ジョブを前記待ちキューからデキューして、前記第一再起動キューにエンキューする
    請求項2に記載のストレージ装置。
     
  4.  前記プロセッサは、
      前記第一ジョブの待ち状態が終了した場合であって、かつ、前記第一優先度が前記第二値である場合は、前記第一ジョブの最初に実行されてから所定時間が経過したか否かを判定し、
      前記第一ジョブが最初に実行されてから所定時間が経過した場合には、第一識別子を前記待ちキューからデキューして、前記第一再起動キューにエンキューする
    請求項3に記載のストレージ装置。
     
  5.  前記プロセッサは、
     前記第二再起動キューに格納されている識別子に対応するジョブを、前記第二初期起動キューに格納されている識別子に対応するジョブよりも先に実行する
    請求項4に記載のストレージ装置。
     
  6.  前記プロセッサは、
      前記第二再起動キューに格納されている第二識別子に対応する第二ジョブが、最初に実行されてから所定時間が経過した場合には、第二識別子を前記待ちキューからデキューして、前記第一再起動キューにエンキューする
    請求項5に記載のストレージ装置。
     
  7.  前記プロセッサは、
      前記第一初期起動キューに格納された識別子に対応するジョブを、前記第二再起動キューに格納された識別子に対応するジョブよりも先に実行する
    請求項6に記載のストレージ装置。
     
  8.  前記1つ以上のチャネルアダプタは、複数のチャネルアダプタであって、
     前記1つ以上のプロセッサは、複数のプロセッサであって、
     前記メモリは、前記複数のチャネルアダプタのそれぞれに対応するチャネル領域、及び、前記複数のプロセッサのそれぞれに対応するプロセッサ領域を含み、
     各チャネルアダプタは、前記コマンドを受信した旨の情報であるコマンド受信情報と、前記優先度とを、自身に対応するチャネル領域に記憶し、
     各プロセッサは、
      前記チャネル領域を監視し、前記コマンド受信情報を見つけた場合に、前記コマンドに含まれている情報を、自身のプロセッサ領域に記憶する
    請求項7に記載のストレージ装置。
     
  9.  記憶デバイスと、
     ホスト計算機から送信されるコマンドに基づき、前記記憶デバイスに対するジョブを実行するコントローラと
    を備えるストレージ装置により実行されるストレージ装置制御方法において、
     前記コントローラは、
      前記ホスト計算機に接続され、前記コマンドを受信する1つ以上のチャネルアダプタを有し、
      初めて起動されるジョブの実行順序を示す初期起動キューと、実行中に待ち状態になったジョブの実行順序を示す待ちキューと、待ち状態の後に再起動されるジョブの実行順序を示す再起動キューと、を生成し、
      前記チャネルアダプタが第一コマンドを受信した場合に、前記第一コマンドに基づく第一ジョブを示す第一識別子を初期起動キューにエンキューし、
      前記第一ジョブが実行中に待ち状態になった場合に、前記第一識別子を前記初期起動キューからデキューして、前記待ちキューにエンキューし、
      前記第一ジョブの待ち状態が終了した場合に、前記第一識別子を前記待ちキューからデキューして、前記再起動キューにエンキューし、
      前記再起動キューに格納された識別子に対応するジョブを、前記初期起動キューに格納された識別子に対応するジョブよりも先に実行する
    ストレージ装置制御方法。

     
PCT/JP2014/051216 2014-01-22 2014-01-22 ストレージ装置およびストレージ装置制御方法 WO2015111148A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/051216 WO2015111148A1 (ja) 2014-01-22 2014-01-22 ストレージ装置およびストレージ装置制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/051216 WO2015111148A1 (ja) 2014-01-22 2014-01-22 ストレージ装置およびストレージ装置制御方法

Publications (1)

Publication Number Publication Date
WO2015111148A1 true WO2015111148A1 (ja) 2015-07-30

Family

ID=53680980

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/051216 WO2015111148A1 (ja) 2014-01-22 2014-01-22 ストレージ装置およびストレージ装置制御方法

Country Status (1)

Country Link
WO (1) WO2015111148A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018151749A (ja) * 2017-03-10 2018-09-27 日本電気株式会社 制御装置、情報処理システム、制御方法およびプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08161184A (ja) * 1994-12-09 1996-06-21 Nec Eng Ltd タスクスケジューリング装置
JPH1185661A (ja) * 1997-09-05 1999-03-30 Hitachi Ltd 2次記憶装置およびハードディスク装置の制御方法
JPH11327793A (ja) * 1998-05-20 1999-11-30 Hitachi Ltd 記憶制御装置
JP2012128646A (ja) * 2010-12-15 2012-07-05 Toshiba Corp メモリシステムおよびメモリシステムの制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08161184A (ja) * 1994-12-09 1996-06-21 Nec Eng Ltd タスクスケジューリング装置
JPH1185661A (ja) * 1997-09-05 1999-03-30 Hitachi Ltd 2次記憶装置およびハードディスク装置の制御方法
JPH11327793A (ja) * 1998-05-20 1999-11-30 Hitachi Ltd 記憶制御装置
JP2012128646A (ja) * 2010-12-15 2012-07-05 Toshiba Corp メモリシステムおよびメモリシステムの制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018151749A (ja) * 2017-03-10 2018-09-27 日本電気株式会社 制御装置、情報処理システム、制御方法およびプログラム

Similar Documents

Publication Publication Date Title
US8392635B2 (en) Selectively enabling a host transfer interrupt
US9946670B2 (en) Determining when to throttle interrupts to limit interrupt processing to an interrupt processing time period
JP5874879B2 (ja) I/oデバイスの制御方法及び仮想計算機システム
US9465555B2 (en) Method and apparatus for efficient processing of disparate data storage commands
CN106569891B (zh) 一种存储系统中任务调度执行的方法和装置
EP3089033B1 (en) Realtime hypervisor with priority interrupt support
JP5171602B2 (ja) Raidドライバ及びこれを備えた電子機器並びにraidに対するアクセス要求調停方法
US10459773B2 (en) PLD management method and PLD management system
JP2008015888A (ja) 負荷分散制御システム及び負荷分散制御方法
US9244877B2 (en) Link layer virtualization in SATA controller
US8560750B2 (en) Systems and methods for advanced interrupt scheduling and priority processing in a storage system environment
JP2008065713A (ja) マルチプロセッサシステム及び割込み制御方法
US10031786B2 (en) Lockless multithreaded completion queue access
US20170192914A1 (en) I/o processing system including dynamic missing interrupt and input/output detection
US10831684B1 (en) Kernal driver extension system and method
JP2006323541A (ja) データ転送回路及びデータ転送方法
WO2017072868A1 (ja) ストレージ装置
JP2011165105A (ja) 入出力制御装置、入出力制御方法
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
WO2016059692A1 (ja) 計算機及びi/o処理の制御方法
WO2015111148A1 (ja) ストレージ装置およびストレージ装置制御方法
CN117075819A (zh) 命令处理方法、装置、存储介质及存储设备
US20130219088A1 (en) Configurable prioritization of data transmission in a data storage topology
US9870156B2 (en) Memory system and method of controlling memory system
US8151028B2 (en) Information processing apparatus and control method thereof

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14880020

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14880020

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP