WO2016079802A1 - バッチ処理システムおよびその制御方法 - Google Patents

バッチ処理システムおよびその制御方法 Download PDF

Info

Publication number
WO2016079802A1
WO2016079802A1 PCT/JP2014/080487 JP2014080487W WO2016079802A1 WO 2016079802 A1 WO2016079802 A1 WO 2016079802A1 JP 2014080487 W JP2014080487 W JP 2014080487W WO 2016079802 A1 WO2016079802 A1 WO 2016079802A1
Authority
WO
WIPO (PCT)
Prior art keywords
file
job
time
processing
execution
Prior art date
Application number
PCT/JP2014/080487
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/080487 priority Critical patent/WO2016079802A1/ja
Publication of WO2016079802A1 publication Critical patent/WO2016079802A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Definitions

  • the present invention relates to a batch processing system and a control method thereof.
  • Batch processing is processing in which data is input to a computer, some calculation processing is performed, and output. In a company, it is used for performing business operations such as material ordering and accounting processing, and numerical simulation for new technologies.
  • Some batch processing takes a long time. For example, the transfer process at a Japanese bank takes several hours. Such a transfer process is generally performed at night. If the transfer process is not completed by the banking service start time on the next day, the account information will be inconsistent. Therefore, it is important to guarantee the deadline for the batch processing to strictly observe the end time. In order to guarantee a deadline, it is important to estimate how much processing time is likely to take before starting batch processing. This is because if the result of estimating the processing time indicates that it is unlikely that the deadline can be guaranteed, it is found that it is necessary to take some measures in advance.
  • Patent Document 1 a technique for estimating the batch processing time based on the data size and the processing performance of a single computer is presented.
  • Patent Document 1 If it is determined from the estimation using Patent Document 1 that it is unlikely that the deadline can be guaranteed, it may be possible to speed up the processing with some technique and shorten the batch processing time. However, Patent Document 1 does not mention such a technique for shortening the time. Also, in batch processing, there are many cases where an old program is used as it is. For this reason, it may be unclear what kind of files and DBs are input / output for batch processing due to changes in the program creator. In Patent Document 1, since an input / output file needs to be given in advance, if it is difficult to specify input / output of batch processing, Patent Document 1 cannot estimate the batch processing time.
  • the present invention aims to shorten the batch processing time and estimate the shortened batch processing time.
  • a representative batch processing system specifies a loop processing in the batch processing based on a plurality of computer resources for batch processing and execution trace information of the batch processing in the batch processing system, and Based on the specified loop process, an analysis unit that determines whether or not batch processing can be performed in parallel on the plurality of computer resources, and calculates an estimated execution time that can be shortened by the parallel processing, and executes the entire batch process
  • a parallel execution schedule estimation unit for estimating time is provided.
  • the batch processing time can be shortened and the shortened batch processing time can be estimated.
  • FIG. 1 is a diagram illustrating an example of an information processing system configuration.
  • the information processing system includes a management server 101, an operation terminal 118, a server device 103, a file server device 104, and a storage device 105.
  • Management server 101, operation terminal 118, server device 103, file server device 104, and storage device 105 are connected to server network 106 via links 102a to 102d.
  • the server device 103, the file server device 104, and the storage device 105 are connected to the storage network 107 via links 102e to 102f.
  • the links 102a to 102f are wired or wireless connection lines, and include one or more sub-networks, a VPN (Virtual Private Network), a VLAN (Virtual Local Area Network), a Fiber Channel zone, a Serial ATA bus, and a SCSI bus. May be.
  • a virtual machine 108 is operating in the server apparatus 103 and is connected to the server network 106 by wire or wirelessly.
  • the virtual machine 108 stores a job program 109, a trace acquisition program 110, a division program 111, and a combination program 112.
  • a plurality of job programs 109, trace acquisition programs 110, division programs 111, and combination programs 112 are illustrated, but each may be zero or one.
  • the job program 109, the trace acquisition program 110, the division program 111, and the combination program 112 may be transferred from the management server 101 via the server network 106 and stored on the virtual machine 108.
  • the server apparatus 103 or the virtual machine 108 may be directly connected to the storage apparatus 105 via a link 102f.
  • the storage apparatus 105 may be included in the server apparatus 103 or the virtual machine 108.
  • a job program 109, a trace acquisition program 110, a division program 111, and a combination program 112 may be stored.
  • Batch processing is realized by the job program 109 operating on the virtual machine 108.
  • the virtual machine 108 on the same server device 103 is shared by a plurality of job nets. Since each tenant (client, such as a client company) has a different job net, a job operates in a multi-tenant environment on one server device 103.
  • the storage apparatus 105 may be included in the file server apparatus 104.
  • the storage apparatus 105 includes a start input file 401, an intermediate file 402, and a result output file 403.
  • a plurality of start input files 401, intermediate files 402, and result output files 403 are illustrated, but may be 0 or 1, respectively.
  • the server apparatus 103, the virtual machine 108, and the file server apparatus 104 may store a start input file 401, an intermediate file 402, and a result output file 403.
  • a plurality of server devices 103, file server devices 104, and storage devices 105 are illustrated, but may be 0 or 1 respectively.
  • the management server 101 and the operation terminal 118 are each illustrated as one unit, but may be zero or more than one unit respectively.
  • the management server 101, the operation terminal 118, the server device 103, the file server device 104, and the storage device 105 may be configured by virtual machines. Further, any two or more of the management server 101, the operation terminal 118, the server device 103, the file server device 104, and the storage device 105 may be the same casing or the same virtual machine.
  • hyper1 is the host name of one server apparatus 103
  • vm1 is the host name of one virtual machine 108
  • nas1 is the host name of one file server apparatus 104
  • the host name of one storage apparatus 105 As an example, storage1 is illustrated. These devices may have host names other than these.
  • the management server 101 includes an execution trace acquisition unit 120, a job analysis unit 121, an execution time estimation formula calculation unit 122, a parallel execution schedule estimation unit 123, an operation host determination unit 124, and a job net parallelization execution unit 125. Note that there are a plurality of management servers 101, an execution trace acquisition unit 120, a job analysis unit 121, an execution time estimation formula calculation unit 122, a parallel execution schedule estimation unit 123, an operation host determination unit 124, and a job net parallelization execution unit 125. At least one of them may be operating on different management servers 101.
  • a storage device 107 is connected to the management server 101.
  • One or more execution traces 230 are stored in the storage device 107.
  • a plurality of storage devices 107 may be stored in the management server 101. Further, execution traces may be distributed and stored in a plurality of storage devices 107.
  • the operation terminal 118 includes a job execution time display unit 119. Note that the operation terminal 118 may be the same as the management server 101.
  • FIG. 2 is a diagram illustrating an example of the configuration of the management server 101.
  • the management server 101 includes a processor 200, a main memory 201, an input device 203, an output device 204, an external storage device interface 205, and a communication interface 206, which are connected via a bus 208 so that they can communicate with each other.
  • the processor 200 executes various programs 202 stored in the main memory 201 such as an execution trace acquisition program, a job analysis program, an execution time estimation formula calculation program, a parallel execution schedule estimation program, an operation host determination program, and a job net parallel execution program.
  • the execution trace acquisition unit 120, job analysis unit 121, execution time estimation formula calculation unit 122, parallel execution schedule estimation unit 123, operation host determination unit 124, and job net parallelization execution unit 125 are performed. Do.
  • execution trace acquisition program job analysis program, execution time estimation formula calculation program, parallel execution schedule estimation program, operation host determination program, and job net parallel execution program may not exist.
  • an execution trace acquisition unit 120 may be realized by dedicated hardware for performing each process.
  • a job analysis unit 121 may be realized by dedicated hardware for performing each process.
  • an execution time estimation formula calculation unit 122 may be realized by dedicated hardware for performing each process.
  • a parallel execution schedule estimation unit 123 may be realized by dedicated hardware for performing each process.
  • each processing unit realized by the processor 200 executing the various programs 202 on the main memory 201 will be described as the subject of each processing.
  • External storage device interface 205 is connected to storage device 107.
  • the storage device 107 may be provided outside the management server 101 or may be provided inside the management server 101.
  • the storage device 107 includes a job net list 210, a job list 220, an execution trace list 230, a job analysis result list 240, a job input / output file list 250, a start input file list 260, a job execution time estimation formula list 270, and a job execution time estimation.
  • Various information 207 such as a result list 280 is held.
  • job net list 210 job list 220, execution trace list 230, job analysis result list 240, job input / output file list 250, start input file list 260, job execution time estimation formula list 270, job execution time estimation result list 280 At least one or more may not exist.
  • One or more pieces of information 207 stored in the storage device 107 may be stored in the main memory 201. Various information 207 will be described in detail with reference to FIG.
  • the communication interface 206 is connected to the server network 106.
  • the communication interface 206 and the external storage device interface 205 may be the same interface.
  • Examples of the input device 203 are a keyboard, a pointer device, a touch panel, and the like, but other devices may be used.
  • Examples of the output device 204 are a display, a printer, and the like, but other devices may be used.
  • the management server 101 includes a serial interface or an Ethernet (registered trademark) interface as an alternative to the input device 203 and the output device 204 (hereinafter collectively referred to as an input / output device), and has a display, a keyboard, or a pointer device.
  • a computer may be connected to the interface.
  • the interface transmits the output information (display information) to the display computer, receives the input information from the display computer, and the display computer displays the output information or accepts the input.
  • the input and output at the input / output device may be substituted.
  • the server device 103, the file server device 104, the storage device 105, and the operation terminal 118 are also the processor 200, the main memory 201, the input device 203, the output device 204, the external storage device interface 205, and the communication interface 206. And are connected by a bus 208 so that they can communicate with each other.
  • the server device 103, the file server device 104, the storage device 105, and the operation terminal 118 may have other structures.
  • the server apparatus 103 may include a plurality of processors.
  • the server apparatus 103 includes a single processor 200, and a plurality of virtual machines 108 may be executed by the single processor 200.
  • the server apparatus 103 includes a plurality of processors 200, and a single virtual machine 108 is executed by the single processor 200.
  • a plurality of virtual machines 108 may be executed.
  • a plurality of virtual machines 108 may be executed by some or all of the plurality of processors 200.
  • the processor may be read as a processor core, and a plurality of cores may be used.
  • the job net list 210 stores information on job nets to be operated on the server apparatus 103 or the virtual machine 108. Batch processing is realized by operating this job net.
  • a job net name 211 is a name of the job net.
  • the execution schedule 212 is a time at which execution of the job net is started.
  • the deadline 213 is a time limit that the job net must be completed by that time.
  • the tenant 214 is a job net owner.
  • FIG. 4 is a diagram illustrating an example of the job list 220.
  • the job list 220 has a tabular format and includes one or more lines. Every row contains 6 columns. Here, the six columns are job net name 221, job name 222, preceding job 223, succeeding job 224, executable host 225, and command line 226. Each row of the job list 220 may include other columns (not shown), or some columns may not exist.
  • the information stored in the job list 220 may be created manually by a system administrator or the like, or may be created using some tool or utility.
  • the job net name 221 is related to the job net name 211 in the job net list 210.
  • the job name 222 is the name of the job.
  • the preceding job 223 indicates a job that should be executed before the job set in the job name 222 is executed.
  • the preceding job 223 has a relationship with the job name 222.
  • the succeeding job 224 indicates a job to be executed after the job set in the job name 222 is completed.
  • the subsequent job 224 has an association with the job name 222.
  • the executable host 225 is the server device 103 or the virtual machine 108 that can execute the job set in the job name 222.
  • the number of executable hosts 225 may be the number that can be executed.
  • the executable host 225 may be set manually by a system administrator or the like, or may be set based on a past execution history or the like.
  • the command line 226 is a command line for executing the job set in the job name 222 on the server device 103 or the virtual machine 108. By starting the job program 109 with this command line, the job is executed. Instead of directly calling the job program 109 from the command line, a script such as sh or bat may be called, and the job may be executed by calling the job program 109 from within the script.
  • Job generally inputs one or more files and outputs one or more files.
  • a file that is not output by another job is called a start input file.
  • a file output by a job and not used as input for another job is called a result output file.
  • Other files are called intermediate files.
  • the file input / output relationship between jobs is indicated by arrows of file inputs 431a to 431e and arrows of file outputs 432a to 432e.
  • a job may use a database or LDAP instead of a file, or may acquire or store information via communication such as HTTP or FTP.
  • FIGS. 7A and 7B are diagrams showing examples of processing changes caused by job parallelization.
  • the case where the job 412 (j2) in FIG. 5 is parallelized is illustrated, and the job structure before and after parallelization is shown in the same format as FIG.
  • the job is a circle, and the square below the job indicates the host that executes the job.
  • the broken line arrows indicate the job execution order, and the file input arrow and the file output arrow indicate the file input / output relationship with respect to the job.
  • FIG. 7A shows a job 412 before parallelization
  • FIG. 7B shows a job group after parallelization.
  • the parallelized job group includes a process for dividing an input file, a process for executing the divided files in parallel, and a process for combining a plurality of files output in parallel execution into one output file.
  • the intermediate file 402a to be input to the job 412 is read by the division job 415, and the contents of the intermediate file 402a are divided into a plurality of files and output as divided input files 405a and 405b.
  • the degree of parallelism is 2, that is, in order to execute two jobs in parallel, it is divided into two divided input files 405a and 405b.
  • the division program 111 is executed to divide the file.
  • the splitting process split the records so that the number or size of records is as even as possible. For example, when the divided job 415 inputs the intermediate file 402a from the top to the divided input file 405a and inputs it to a record boundary exceeding 1/2 of the size of the intermediate file 402a, the output destination is output to the divided input file 405b. The output is switched to the divided input file 405b while the intermediate file 402a is continuously input.
  • the same job 412 is executed on different hosts such as vm1 of the host 420h and vm2 of the host 420i using the divided input files 405a and 405b divided by the dividing processing as file inputs 431g and 431h.
  • Each job 412 outputs files 432i and 432j to different output files.
  • the output files are output files 406a and 406b.
  • the output files 406a and 406b are joined by the joining job 416 to create one intermediate file 402c.
  • the combined job 416 outputs the output file 406a to the intermediate file 402c while inputting the output file 406a from the top, and when all the output files 406a have been input, the input is switched to the output file 406b and the intermediate is performed while inputting the output file 406b. Continuous output to file 402c.
  • the combination job 416 executes the combination program 112 to combine files. Each job is executed in the order according to the broken arrows 430g, 430h, 430i, and 430j.
  • FIG. 8 is a diagram illustrating an example of execution traces included in the execution trace list 230.
  • the execution trace list 230 includes one or more execution trace files 231.
  • the execution contents of the job program 109 can be acquired as a log.
  • An execution trace file 231 is obtained by saving this log as a file.
  • Examples of the trace acquisition program 110 include strace and ltrace in Linux (registered trademark). In strace, the contents of the system call call are output as a log. ltrace outputs the call contents of functions included in libraries such as libc as a log.
  • the execution trace file 231 consists of multiple lines. Each line includes a time 232, a system call name 233, an argument 234, a return value 235, and a system call processing time 236.
  • the execution trace file 231 may not include some information among the time 232, the system call name 233, the argument 234, the return value 235, and the processing time 236, or may include other information.
  • the line number 237 is a number for explaining each line.
  • Time 232 is the time when the system call is called.
  • the system call name 233 is the name of the called system call.
  • An argument 234 is an argument passed when the system call is called. The argument may be input or output.
  • the return value 235 is a return value of the system call call. The meaning of the return value depends on the system call.
  • the processing time 236 is a time from when the system call is called until it returns.
  • the file name of the file to be read / written is obtained from the argument 234, and the file handle is obtained from the return value 235.
  • the return value 235 of the file input / output system call such as read or write is the file size read / written by the system call. Therefore, the file input / output size is obtained by adding the file sizes from opening to closing the file.
  • the file input / output time can be obtained by adding the processing time 236.
  • the I / O speed can be obtained from the file input / output size from the file input / output time.
  • the 6th line is the process of opening the write file /log/exec.log.
  • the ninth and sixteenth lines indicate processing for writing to a file.
  • the write size is smaller than the process to output to the file /nas/iiconme.csv described later. Since the file path name includes log and the file extension is log, this file is not considered a job output file. Typically, this file can be assumed to be a log file output that records job operations.
  • the 7th line is the process of opening the read file /work/item.csv.
  • the 10th, 11th, 13th, and 15th lines indicate processing to read from the file and the 17th line to close the file.
  • the reason why the return value is 0 in the 15th line is that the end of file (EOF, EndEOof ⁇ File) is read.
  • the eighth line is a process for opening the write file /nas/iincome.csv. Lines 12, 14, and 18 are output to a file, and line 19 indicates processing for closing the file.
  • the 20th line indicates the end of the process.
  • the largest read file is the file /work/item.csv opened on the 7th line. As you can see from the EOF on line 15, this file has been read to the end.
  • the largest writing file is the file /nas/income.csv opened on the eighth line. Therefore, these files are regarded as an input file and an output file for the job.
  • the process to read the file /work/item.csv is from the 10th line to the 15th line, and the process to write to the file /nas/iincome.csv is from the 12th line to the 18th line. Therefore, the 10th to 18th lines taking these set sums can be regarded as the loop processing 1002 in FIG.
  • the first to ninth lines before that can be regarded as preprocessing 1001
  • the 19th to 20th lines can be regarded as postprocessing 1003.
  • the time required for pre-processing, loop processing, and post-processing can be obtained from the difference in time 232 of each row.
  • FIG. 9 is a diagram illustrating an example of processing in the execution trace acquisition unit 120. This is processing for outputting the execution trace file 231.
  • the processing in FIG. 9 may have a processing order different from that shown in the drawing, may include other processing (not shown), or may not include some processing.
  • the execution trace acquisition unit 120 first inserts a trace acquisition process into the job definition (step 1101). For example, the command on the command line 226 of the job list 220 is modified to be executed via the trace acquisition program 110.
  • the execution trace acquisition unit 120 starts executing the job net (step 1102).
  • the job is executed on the virtual machine 108 in accordance with the job dependency.
  • the trace information is output to a file on the virtual machine 108.
  • the execution trace acquisition unit 120 acquires the output trace information and stores it in the execution trace list 230 (step 1103). With this process, an execution trace for the job program 109 to be executed is acquired.
  • execution trace file 231 may be acquired by executing, for example, only the job 412 (j2).
  • an execution trace file 231 obtained as a result of executing such a small file may be acquired.
  • FIG. 10 is a diagram showing an example of the job analysis result list 240.
  • the job analysis result list 240 stores the result of analyzing the contents of the execution trace file 231.
  • the job analysis result list 240 is in a table format and includes one or more lines. Every row contains seven columns. Here, the seven columns are an execution ID 241, job net name 242, job name 243, processing time 244, parallel enable 245, pre / post processing time 246, and loop processing time 247.
  • Each row of the job analysis result list 240 may include other columns (not shown), or some columns may not exist.
  • the information stored in the job analysis result list 240 may be created manually by a system administrator or the like, or may be created using some tool or utility.
  • the execution ID 241 is an identifier for identifying execution of the job net.
  • the job net name 242 is the name of the job net and is related to the job net name 211.
  • the job name 243 is the name of the job and is related to the job name 222.
  • the processing time 244 is the time from the start to the end of the job.
  • Parallel possible 245 is information indicating whether or not the job program 109 of the job indicated by the job name 243 can be executed in parallel.
  • the pre / post-processing time 246 is an estimation of the time required for the pre-processing 1001 and the post-processing 1003.
  • the loop processing time 247 is an estimation of the time required for the loop processing 1002.
  • FIG. 11 is a diagram illustrating an example of the job file input / output list 250.
  • the job file input / output list 250 stores, as a result of analyzing the contents of the execution trace file 231, files input / output by the job, the sizes of the files, input / output times and the like.
  • the job file input / output list 250 is in a table format and includes one or more lines. Every row contains nine columns. Here, the nine columns include an execution ID 251, job net name 252, job name 253, input / output 254, file name 255, file size 256, input / output time 257, I / O speed 258, and division / combination time 259. .
  • Each row of the job file input / output list 250 may include other columns (not shown), or some columns may not exist.
  • Information stored in the job file input / output list 250 may be created manually by a system administrator or the like, or may be created using some tool or utility.
  • the execution ID 251 is an identifier for identifying the execution of the job net, and is associated with the execution ID 241.
  • the job net name 252 is the name of the job net and is related to the job net name 211.
  • the job name 253 is a job name and is related to the job name 222.
  • the input / output 254 indicates whether the file indicated by the file name 255 is input to the job or output.
  • the file name 255 indicates the file name of the file input / output by the job indicated by the job name 253.
  • the file size 256 indicates the size of the file
  • the input / output time 257 indicates the time taken to input or output the file
  • the I / O speed 258 indicates the input or output of the file.
  • the I / O speed at the time is shown.
  • the I / O speed 258 is equal to the file size 256 divided by the input / output time 257.
  • the division / combination time 259 is an estimate of the time taken to divide when the file is input and to combine when the file is output. For example, when the input / output 254 is input as in the file /work/item.csv of the job 412, the input time of the division processing is the same as the input time of the job 412, and the output file size of the division processing is the input of the job 412. It is assumed that the file size is the same, and the output speed of the division process is the same as the output speed of the job 412.
  • the output time of the combining process is the same as the output time of the job 412, and the input file size of the combining process is the job 412.
  • the output file size is the same, and the input speed of the combining process is the same as the input speed of the job 412.
  • 5.0 GB of the file size 256 of the file /nas/income.csv is output at the output time of 125 seconds of the input / output time 257, and the I / of the file /work/item.csv input in the same job, that is, the job 412.
  • Adding the value of O rate 258 divided by 0.05 GB / s gives 225 seconds.
  • FIG. 12 is a diagram illustrating an example of processing in the job analysis unit 121.
  • the processing sequence of FIG. 12 may be different from that shown in the drawing, may include other processing (not shown), or may not include some processing.
  • This process is a process for creating a job analysis result list 240 and a job file input / output list 250 from the execution trace file 231.
  • the job analysis unit 121 starts the operation by inputting the job net name and the execution trace file 231 information.
  • the job analysis unit 121 obtains all jobs constituting the job net from the job list 220 and repeats steps 1202 to 12151215 (steps 1201 and 1216).
  • the execution trace file 231 is read (step 1202).
  • the overhead of the trace acquisition process is corrected (step 1203).
  • the processing time of the job becomes extra, so the time 232 during the trace and the processing time 236 are corrected by the overhead. For example, when the processing overhad is 10%, the time 232 is corrected to be 10% earlier than the start time.
  • the job analysis unit 121 acquires and stores the job processing time (step 1204). That is, the difference between the start time and the end time among the times 232 during the trace is obtained and stored in the processing time 244.
  • the job analysis unit 121 extracts input / output file candidates (step 1205). From the file path name, log file (file extension is .log, path name includes log, etc.) and configuration file (file extension is .cnf, path name includes etc, etc.) ) May be excluded to extract input / output file candidates.
  • the job analysis unit 121 calculates the file size, input / output time, and I / O speed (step 1206). This is calculated as described with reference to FIG. 8, and the calculated values are recorded in the file size 256, the input / output time 257, and the I / O speed 258.
  • the job analysis unit 121 estimates an input file (step 1207).
  • the file with the largest read size in the trace is estimated as the input file. Not only the maximum but also all files reading a certain size (for example, 100 MB or more) may be regarded as input files.
  • the output file is estimated (step 1208).
  • the file with the maximum writing size in the trace is estimated as the output file. Not only the maximum but also all files in which a certain size (for example, 100 MB or more) is written may be regarded as output files.
  • the job analysis unit 121 checks whether the input file has been sequentially read to the end (step 1209). This checks whether the system call is read only, does not seek, and whether the return value of the last read is 0, that is, read until EOF (End of File). If the condition is true in step 1209, the process proceeds to step 1210. If the condition is false, the process proceeds to step 1211. This checks whether the loop processing 1002 is included in the processing in the job program 109. If there are multiple input files, check whether all of them satisfy the condition.
  • the job analysis unit 121 checks whether output of the output file is started after the earliest time of the input file is read (step 1210). This checks whether the contents of the output file are created based on the information of the input file. If the condition of step 1210 is true, the process proceeds to step 1212. If the condition is false, the process proceeds to step 1211. In step 1211, the job analysis unit 121 stores N in the parallel possible 274, proceeds to step 1216, and stores Y in the parallel possible 274 in step 1212.
  • the job analysis unit 121 estimates preprocessing, loop processing, and postprocessing locations (step 1213). As described with reference to FIG. 8, this is estimated based on the reading position of the input file and the output position of the output file. Subsequently, pre-processing, loop processing, and post-processing times are calculated and recorded (step 1214). This is obtained from the execution trace file 231 using the time 232 of the pre-processing, loop processing, and post-processing location start / end processing obtained in step 1213. Subsequently, the dividing time of the input file and the combining time of the output file are estimated and recorded in the dividing / combining time 259 (step 1215). This is obtained as described for the division / combination time 259 of the job file input / output list 250.
  • FIG. 13 is a diagram showing an example of the start input file list 260.
  • the start input file list 260 is obtained based on the information in the job file input / output list 250. Among jobs belonging to a certain job net, those whose input file is not a file output by another job are obtained. That file becomes the starting input file.
  • the start input file list 260 has a tabular format and includes one or more lines. Every row contains three columns.
  • the three columns include a job net name 261, a start input file 262, and a size variable 263.
  • Each row of the start input file list 260 may include other columns (not shown), or some columns may not exist.
  • the information stored in the start input file list 260 may be created manually by a system administrator or the like, or may be created using some tool or utility.
  • the job net name 261 is the name of the job net, and is related to the job net name 211 and the job net name 252.
  • the start input file name 262 is a file name of a file to be input to the job net. As described above, among jobs belonging to a certain job net, an input file that is not a file output by another job is obtained, and that file becomes a start input file.
  • the size variable 263 is a name of a variable for storing the size of the start input file. This variable is used in the job execution time estimation formula list 270 described later.
  • FIG. 14 is a diagram showing an example of the job execution time estimation formula list 270.
  • the job execution time estimation formula list 270 completes the process for each job constituting the job net in accordance with the size of the start input file based on the information of the job analysis result list 240 and the start input file list 260. An expression for estimating whether is stored.
  • the job execution time estimation formula 270 has a tabular format and includes one or more lines. Every row contains seven columns.
  • the seven columns are composed of job net name 271, job name 272, processing time 273, parallel ready 274, pre / post processing time 275, loop processing time 276, and file division / combination time 277.
  • Each row of the job execution time estimation expression 270 may include other columns (not shown), or some columns may not exist.
  • the information stored in the job execution time estimation formula 270 may be created manually by a system administrator or the like, or may be created using some tool or utility.
  • the job net name 271 is a name of the job net, and correlates with the job net name 242 and the job net name 252.
  • the job name 272 is a job name and correlates with the job name 243 and the job name 253.
  • the processing time 273, the pre / post processing time 246, the loop processing time 276, and the file division / combination time 277 are a plurality of times calculated from a plurality of execution trace files 231 each including an execution trace of the same job, that is, an execution ID 241. , 251 are obtained by analyzing the times related to the same job having different IDs.
  • the correlation between the size of the start input file and the processing time 244 is obtained by regression analysis or the like, and the calculation formula is stored. This will be described in detail later.
  • the parallelable 274 stores the same information as the parallelization 245.
  • the pre- and post-processing time 275 is obtained by averaging the pre- and post-processing time 246 and the value is stored.
  • the correlation between the size of the start input file and the loop processing time 247 is obtained by regression analysis or the like, and its calculation formula is stored.
  • the correlation between the size of the start input file and the division / combination time 259 is obtained by regression analysis or the like, and its calculation formula is stored.
  • the division / combination time 259 stores either the input file division time or the output file combination time, whereas the file division / combination time 277 includes the job input file division time, Stores the correlation for the sum of the output file join times.
  • FIG. 15 is a diagram illustrating an example of processing in the execution time estimation formula calculation unit 122.
  • the processing sequence of FIG. 15 may be different from that shown in the drawing, may include other processing (not shown), or some processing may not exist.
  • This process is based on the information in the job analysis result list 240, job file input / output list 250, and start input file list 260, and how long each job constituting the job net is processed according to the size of the start input file.
  • This is a process for obtaining an expression estimated to be completed and storing it in the job execution time estimation expression list 270.
  • the job net name is input and the operation is started, and the execution time estimation formula calculation unit 122 identifies the job net input file (step 1301). This is obtained based on the information in the job file input / output list 250. Among jobs belonging to a certain job net, an input file that is not a file output by another job is obtained. That file becomes the starting input file. An arbitrary variable name is assigned to the size variable 263 and the information is stored in the start input file list 260. Subsequently, all jobs constituting the job net are obtained from the job list 220, and steps 1303 to 1308 are repeated (steps 1302 and 1309).
  • the execution time estimation formula calculation unit 122 estimates a job processing time formula (step 1303). This is because the file size 256 of the line having the same file name as the start input file name 262 shown in the start input file list 260 and the file name 255 is compared with the past job analysis result list 240 in the job file input / output list. Obtained from 250. Then, the job having the execution ID 251 correlated with the execution ID 251 of the row is obtained from the job analysis result list 240, and the processing time 244 is acquired. Thereby, a plurality of sets of the file size 256 and the processing time 244 are acquired based on the execution IDs 241 and 251. A correlation between the acquired file size 256 and the job processing time 244 is obtained by regression analysis or the like, and a calculation formula with the size of the start input file as a variable (size variable 263) is stored in the processing time 273.
  • the execution time estimation formula calculation unit 122 checks the parallel possible 245 (step 1304). If it is Y, it will progress to step 1305, and if it is N, it will progress to step 1308. In step 1305, pre- and post-processing times are estimated. Since this does not depend on the size of the start input file, the pre / post processing time 246 is acquired for the past job analysis result list 240. The average of the obtained pre / post-processing time 246 is obtained, and the time is stored in the pre- / post-processing time 275.
  • the execution time estimation formula calculation unit 122 estimates a loop processing time formula (step 1306). This is the same processing as step 1303, and the file size 256 of the start input file is obtained from the job file input / output list 250 with respect to the past job analysis result list 240, and a job having a correlation with the execution ID 251 is obtained as a job.
  • the loop processing time 247 is obtained from the analysis result list 240.
  • the correlation between the acquired file size 256 and the loop processing time 247 is obtained by regression analysis or the like, and the calculation formula is stored in the loop processing time 276.
  • the execution time estimation formula calculation unit 122 estimates the file division / combination time (step 1307). This is the same processing as step 1303, and the file size 256 of the start input file is obtained from the job file input / output list 250 with respect to the past job analysis result list 240, and its division / combination time 259 is obtained. Usually, since one job has one or more input files and one or more output files, a plurality of division / combination times 259 are required for one job. . A correlation between the file size 256 and the total time is obtained by regression analysis or the like, and the calculation formula is stored in the file division / combination time 277. Subsequently, the information on the parallelism 245 checked in step 1304 is stored in the parallelism 274 (step 1308).
  • FIG. 16 is a diagram showing an example of the job execution time estimation result list 280.
  • the job execution time estimation result list 280 is obtained when some jobs are executed in parallel based on the job net list 210, the job execution time estimation formula list 270, the start input file list 260, the size of the input file and the degree of parallelism of the jobs. This is a result of estimating the processing time of each job.
  • the job execution time estimation result list 280 is in a table format and includes one or more lines. Every row contains nine columns.
  • the nine columns include a pattern ID 281, job net name 282, job name 283, parallelism 284, estimated execution time 285, estimated start time 286, estimated end time 287, execution host 288, and confirmed 289.
  • Each row of the job execution time estimation result list 280 may include other columns (not shown), or some columns may not exist.
  • Information stored in the job execution time estimation result list 280 may be created manually by a system administrator or the like, or may be created using some tool or utility.
  • the pattern ID 281 is an identifier for identifying which job is executed with which parallelism for a certain job net and a combination (pattern).
  • pattern ID p3
  • job j2 is executed in 3 parallel
  • pattern ID p4
  • pattern j2 is executed in 4 parallel
  • pattern ID p5
  • job j2 is executed in 4 parallel
  • job j3 is executed in 2 Run in parallel.
  • the job net name 282 is a name of the job net, and correlates with the job net name 211, the job net name 221, the job net name 242, the job net name 252, the job net name 261, and the job net name 271.
  • the job name 283 is the name of the job, and correlates with the job name 222, the job name 243, the job name 253, and the job name 272.
  • the degree of parallelism 284 stores how many degrees of parallelism a job is executed.
  • the estimated execution time 285 stores the estimated execution time of the job. This is obtained by using the size of the input file as the size variable of the start input file: pre / post processing time 275 + file division / combination time 277 + loop processing time 276 ⁇ parallelism.
  • the estimated start time 286 stores the estimated start time of the job.
  • the dependency relationship of the job is obtained from the preceding job 223, and the latest estimated end time 287 of the preceding jobs is set as the estimated start time 286 of this job.
  • the estimated end time 287 stores the estimated end time of the job. Obtained by adding the estimated execution time 285 to the estimated start time 286.
  • the execution host 288 stores the host name of the virtual machine 108 that executes the job. As many host names as the degree of parallelism 283 are stored. Instead of the virtual machine 108, the host name of the server apparatus 103 may be stored. In the confirmation 289, Y is stored when a job is actually executed at the estimated job execution time, and N is stored otherwise.
  • FIG. 17 is a diagram illustrating an example of processing in the parallel execution schedule estimation unit 123, the job execution time display unit 119, and the job net parallelization execution unit 125.
  • the processing in FIG. 17 may have a processing order different from that shown in the drawing, may include other processing (not shown), or may not include some processing.
  • each of the job nets 210, the job execution time estimation result list 280, the start input file list 260, and the size of the input file is used to change the parallel degree of the job by several patterns. Estimate the job processing time and display the estimation result on the screen. An input for selecting one of the estimated parallelism patterns is received, and jobs are executed in parallel according to the selected parallelism pattern.
  • the parallel execution schedule estimation unit 123 first creates a job parallelism pattern (step 1401).
  • a pattern combination is created for a job whose parallelization 274 of the job execution time estimation formula list 270 is Y.
  • an integer value pattern from 1 to the number of hosts designated by the executable host 225 is created and used as a parallelism candidate.
  • a pattern is created by combining candidates for the degree of parallelism.
  • the job net jn1 will be described as an example.
  • jobs j2 and j3 can be parallelized.
  • the number of executable hosts for job j2 is 4, and the number of executable hosts for job j3 is 2.
  • the parallelism of job j2 is a
  • the parallelism of job j3 is b
  • the combination pattern is expressed in the form [a, b], all [1, 1] [2, 1] [3, 1] [4, 1] [1, 2] [2, 2] [3, 2] [4, 2] 8 parallelism patterns.
  • a unique identifier as a pattern ID 281 is attached to each parallelism pattern.
  • step 1403 is executed for each parallelism pattern (step 1402, step 1404).
  • the process proceeds to step 1405.
  • step 1403 a schedule when jobs are executed in parallel is estimated for each parallelism pattern. This will be described in detail later with reference to FIG.
  • the job execution time display unit 119 displays the parallel execution schedule estimated in step 1403 on the screen, and accepts an input as to which parallelism pattern to execute the job (step 1405).
  • the display screen will be described later with reference to FIG.
  • the schedule input in step 1405 is confirmed (step 1406).
  • the determination 289 is set to Y for the schedule estimated by the job net, and N is set otherwise.
  • the job net parallel execution unit 125 executes the job net according to the parallelism pattern selected in step 1405 (step 1407).
  • FIG. 18 is a diagram illustrating an example of processing in the parallel execution schedule estimation unit 123.
  • the processing order of FIG. 18 may be different from that shown in the drawing, may include other processing (not shown), or some processing may not exist.
  • step 1403 in FIG. 17 This process is called from step 1403 in FIG. 17, and the job net name, pattern ID, parallelism pattern, and start input file size are input. Then, according to the parallelism pattern, the processing time when each job is executed sequentially or in parallel is estimated from the start input file list 260, the input file size, and the job execution time estimation result list 280, and obtained from the job net list 210. Estimate the start time and end time based on the dependency between jobs.
  • the parallel execution schedule estimation unit 123 processes steps 1502 to 1507 for each job belonging to the job net indicated by the input job net name (step 1501 and step 1508). At this time, job dependency relationships are acquired from the job list 220, and processing is performed in order from jobs that are executed earlier.
  • the parallel execution schedule estimation unit 123 estimates a job start time. For this purpose, the job designated by the preceding job 223 in the job list 220 is acquired. For example, when there is no preceding job such as job j1, the execution schedule 212 is extracted from the job net list 210, the next execution time is obtained with respect to the current time when the step 1502 is executed, and this is the start of the job Estimated time.
  • the estimated end time 287 of the job execution time estimation result list 280 is acquired for these preceding jobs, and the latest estimated end time acquired is the estimated start time of this job.
  • the start time estimated in this way is stored at the estimated start time 286, and the pattern ID 281, job net name 282, job name 283, and parallelism 284 are also stored.
  • the parallel execution schedule estimation unit 123 refers to the parallelization 274 and determines whether or not the job is parallel (step 1503). If parallelism is possible, the process proceeds to step 1504. Otherwise, the process proceeds to step 1505.
  • step 1504 the processing time for executing the job sequentially or in parallel is estimated according to the parallelism of the input parallelism pattern. Estimated processing time is calculated using the size of the starting input file as a variable. The file division / combination time 277 + pre / post processing time 275 + loop processing time 276 / parallel degree is obtained. The estimated processing time is stored in the estimated execution time 285. Thereafter, the process proceeds to Step 1506.
  • step 1507 an operating host is determined (step 1507). This process will be described in detail later with reference to FIG.
  • the processing time of the job net is estimated (step 1509). This is obtained from the earliest start time and latest end time of the jobs processed between steps 1502 and 1507. The latest end time is the end time of the job net. Then, the excess of the end time of the job net from the deadline 213 is also obtained.
  • FIG. 19 is a diagram illustrating an example of processing in the operation host determination unit 124.
  • the processing in FIG. 19 may have a processing order different from that shown in the drawing, may include other processing (not shown), or may not include some processing.
  • the estimated start time, estimated end time, and operation host name list of the job are used as inputs. Based on these pieces of information, a determination is made as to which virtual machine 108 should operate the job. As a result, if the execution of another job net is delayed, the delay time is also obtained.
  • the operation host determination unit 124 first searches for an empty host (step 1601). This is to find a host that is not executing another job from the estimated start time of the job to the estimated end start time among the hosts designated by the executable host 225. If there is such a host, one of the hosts is selected and stored in the execution host 288 (step 1604), and the process is terminated. If there is no such host, the process proceeds to step 1603.
  • step 1603 a job group having overlapping execution times is acquired. This is because, among the jobs for which the confirmation 289 in the job execution time estimation result list 280 is Y, the estimated start time 285 and the estimated end time 286 are referred to, and a job group in which the start time and end time of the given job overlap is referred to. get. Let this job group be Y.
  • the operation host determination unit 124 obtains a margin time of the job net when the estimated start time 286 is delayed to the estimated end time of the input job (step 1605).
  • the allowance time is obtained by subtracting the estimated end time of the job net from the deadline 213 of the job net.
  • the estimated end time of the job net to which the job included in the job group Y belongs has already been obtained in step 1509 in FIG.
  • the operation host determination unit 124 selects a job x having the maximum margin time in the job group Y (step 1606). Instead of selecting job x in this way, the job with the smallest allowance time of 0 or more may be selected, and the estimated end time of the job net is determined by other jobs in the job net, so the allowance time is You may choose a job that does not change. The former selection can improve the resource utilization rate, and the latter selection does not make the job a critical path. Therefore, input jobs can be executed in parallel without affecting other job nets.
  • step 1606 the start time of the job selected in step 1606 is delayed, and the execution schedule of the subsequent job is corrected and stored in the job execution time estimation result list 280 (step 1607). Then, the host that should have executed job x is stored in the execution host 288 of the input job (step 1608), and the process is terminated.
  • the job net list 210 may further include information regarding the rank of each tenant, and the operation host determination unit 124 may determine an operation host using information regarding the rank. For example, in step 1606, when a plurality of jobs can be selected, such as when there are a plurality of jobs whose allowance time is so large that each can be regarded as the maximum, a job belonging to a job net owned by a tenant with a lower rank is selected. You may do it. In steps 1605 to 1606, a job belonging to a job net owned by a tenant with a lower rank may be selected from the job group Y regardless of the margin time.
  • FIG. 20 is a diagram showing an example of a job execution time display screen 500 in parallel.
  • the parallel job execution time display screen 500 illustrates the change in job net execution time, end time, and margin time with respect to deadlines when jobs are executed in parallel. Further, a margin time with respect to a deadline when the estimated end time of another job net is delayed as a result of executing jobs in parallel is shown.
  • the job execution time display screen 500 is displayed on the output device of the operation terminal 118 or the output device 204 of the management server 101.
  • the job execution time display screen 500 may be displayed at other device locations.
  • the job execution time display screen 500 includes a job net name 501, a start input file name 502, a size 503, a size increase / decrease button 504, a job net execution time table 510, and an OK button 520.
  • the job net execution time table 510 is a table format, and includes a selection 511, a pattern 512, a parallelism 513, a job net execution time 514, a job net end time 515, a job execution schedule 516, and a delay time 517 for a job net to be delayed and a deadline. Consists of.
  • job net execution time table 510 other rows or examples may be displayed, or some rows or columns may not exist.
  • the job net execution time table 510 may be displayed in a display method other than the table format, for example, a list format or a character string format.
  • the contents of the job net execution time table 510 are created by the job execution time display unit 119 based on the job execution time estimation result list 280 and information on the job net to which the job delayed in step 1607 belongs. The contents are displayed for each pattern in which jobs in the job net are executed in parallel.
  • the job net name 501 is the name of the job net displayed on this screen.
  • the start input file name 502 is the name of the start input file when starting execution of the job net.
  • the size 503 is the size of the start input file. When the screen is first displayed, the size of the start input file that is actually input is displayed.
  • the size increase / decrease button 504 is a button for adjusting the value of the size 503. The value of size 503 can be increased or decreased by pressing the up and down buttons. When the number is increased or decreased, the process of FIG. 17 is executed to obtain the job execution schedule, and the job net execution time table 510 is displayed again.
  • Selection 511 is an option indicating which pattern is selected.
  • a pattern 512 indicates a parallel degree pattern, and displays information on the pattern ID 281 in the job execution time estimation result list 280.
  • the degree of parallelism 513 indicates the degree of parallelism when a certain job is executed in parallel.
  • the host name indicating on which virtual machine 108 the job is executed in parallel is also displayed. When the host name is clicked, the virtual machine 108 may be modifiable so that the job is operated on another virtual machine 108.
  • the job net execution time 514 displays the estimated execution time of the job net obtained in step 1509.
  • the second is also displayed.
  • the job net end time 515 displays the estimated end time of the job net obtained in step 1509.
  • how much the deadline is exceeded or how much room is left is displayed.
  • the job execution schedule 516 displays on a time axis how a job net is executed as a result of executing jobs in parallel.
  • the deadline 518 is also displayed so that the deadline is exceeded or how much time is left.
  • the processing time display of jobs to be executed in parallel is divided and displayed vertically by the degree of parallelism so that it can be seen which job is executed at which parallelism.
  • the file division / combination time 277 and the pre / post-processing time 275 may be displayed by dividing into three or five horizontally.
  • Delayed job net 517 displays a job net whose execution is delayed when this pattern is selected. It also shows how much the time margin for the deadline of the job net changes.
  • OK button 520 is pressed, the job net is scheduled to be executed according to the schedule selected in the selection 511, and the screen is closed.

Abstract

 バッチ処理システムにおいて、バッチ処理のための複数の計算機リソースと、前記バッチ処理の実行トレース情報に基づき、前記バッチ処理内のループ処理を特定し、前記バッチ処理は前記複数の計算機リソースにおいて並列処理可能であるか否かを判定する解析部と、前記特定したループ処理に基づき、前記並列処理により短縮できる実行推定時間を計算し、バッチ処理全体の実行時間を推定する並列実行スケジュール推定部とを備える。

Description

バッチ処理システムおよびその制御方法
 本発明は、バッチ処理システムおよびその制御方法に関するものである。
 バッチ処理は、計算機にデータが入力されて、何らかの計算処理を施して出力する処理である。企業においては、資材発注や会計処理等といった企業業務や、新技術に対する数値シミュレーション等を行うために用いられる。
 バッチ処理は長時間かかるものがある。例えば日本の銀行での振込処理は数時間かかる。このような振込処理は一般的に夜間に行なわれる。翌日の銀行業務開始時刻までに振込処理が完了していなければ、口座情報に不整合が起きてしまう。そのためバッチ処理は終了時刻を厳守するデッドライン保証が重要となる。デッドラインを保証するには、まずバッチ処理の開始前に、処理時間がどの程度かかりそうか見積もる事が重要となる。処理時間を見積もった結果が、デッドラインを保証できそうにない場合に、事前に何らかの対策を行う必要があると判明するからである。
 例えば、特許文献1では、データサイズと計算機単体の処理性能を元に、バッチ処理時間を見積もる技術が提示されている。
特開2004-005288号公報
 特許文献1を用いた見積もりにより、デッドライン保証できそうにないと判定した場合には、対策として、何らかの技術で処理を高速化しバッチ処理時間を短縮する事が考えられる。しかしながら、特許文献1では、そのような短時間化する技術については言及していない。また、バッチ処理では、昔作られたプログラムをそのまま使い続けるケースが多い。そのため、プログラムの作成者が異動するなどにより、バッチ処理に対して、どのようなファイルやDB等の入出力があるのか不明な場合がある。特許文献1では入出力ファイルが予め与えられている必要があるため、バッチ処理の入出力の特定が困難な場合、特許文献1ではバッチ処理時間を見積もることもできない。
 本発明は、バッチ処理時間を短縮し、短縮したバッチ処理時間を見積もることを目的とする。
 本発明に係る代表的なバッチ処理システムは、バッチ処理システムにおいて、バッチ処理のための複数の計算機リソースと、前記バッチ処理の実行トレース情報に基づき、前記バッチ処理内のループ処理を特定し、前記バッチ処理は前記複数の計算機リソースにおいて並列処理可能であるか否かを判定する解析部と、前記特定したループ処理に基づき、前記並列処理により短縮できる実行推定時間を計算し、バッチ処理全体の実行時間を推定する並列実行スケジュール推定部とを備えたことを特徴とする。
 本発明によれば、バッチ処理時間を短縮し、短縮したバッチ処理時間を見積もることができる。
情報処理システムの全体構成の例を示す図である。 管理サーバの構成の例を示す図である。 ジョブネット一覧の例を示す図である。 ジョブ一覧の例を示す図である。 ジョブネットの処理構造の例を示す図である。 ジョブ内部処理の例を示す図である。 ジョブの並列化前の例を示す図である。 ジョブの並列化後の例を示す図である。 ジョブの実行トレースの例を示す図である。 ジョブの実行トレースを取得する処理の例を示す図である。 ジョブ解析結果一覧の例を示す図である。 ジョブファイル入出力一覧の例を示す図である。 ジョブ解析処理の例を示す図である。 開始入力ファイル一覧の例を示す図である。 ジョブ実行時間推定式一覧の例を示す図である。 ジョブ実行時間推定式算出処理の例を示す図である。 ジョブ実行時刻推定結果一覧の例を示す図である。 ジョブネット並列実行処理の例を示す図である。 ジョブネット並列実行スケジュール推定処理の例を示す図である。 動作ホスト決定処理の例を示す図である。 並列時のジョブ実行時間表示の例を示す図である。
 以下、本発明の実施の形態について図面を参照しながら説明する。図1は、情報処理システム構成の例を表す図である。情報処理システムは、管理サーバ101、操作端末118、サーバ装置103、ファイルサーバ装置104、ストレージ装置105を備える。
 管理サーバ101、操作端末118、サーバ装置103、ファイルサーバ装置104、ストレージ装置105は、リンク102a~102dを介してサーバ用ネットワーク106に接続される。サーバ装置103、ファイルサーバ装置104、ストレージ装置105は、リンク102e~102fを介してストレージ用ネットワーク107に接続される。リンク102a~102fは、有線または無線の接続回線であり、1つ以上のサブネットワークや、VPN(仮想プライベートネットワーク)、VLAN(仮想ローカルエリアネットワーク)、ファイバチャネルゾーン、SerialATAバス、SCSIバスを含んでいても良い。
 管理サーバ101、操作端末118、サーバ装置103、ファイルサーバ装置104、ストレージ装置105は、それぞれ異なるプロトコルで、サーバ用ネットワーク106ないしストレージ用ネットワーク107に接続されていても良い。サーバ用ネットワーク106、ストレージ用ネットワーク107が、それぞれ複数存在しても良い。サーバ用ネットワーク106とストレージ用ネットワーク107が同一であっても良い。
 サーバ装置103内には、仮想マシン108が稼働しており、サーバ用ネットワーク106に、有線または無線で接続されている。仮想マシン108には、ジョブプログラム109、トレース取得プログラム110、分割プログラム111、結合プログラム112が格納されている。ジョブプログラム109、トレース取得プログラム110、分割プログラム111、結合プログラム112は、それぞれ複数個が例示されているが、それぞれ0個または1個であっても良い。ジョブプログラム109、トレース取得プログラム110、分割プログラム111、結合プログラム112は、サーバ用ネットワーク106を介して、管理サーバ101から転送されて、仮想マシン108上に格納されても良い。
 サーバ装置103または仮想マシン108は、ストレージ装置105とリンク102fで直接に接続されていても良い。サーバ装置103または仮想マシン108内に、ストレージ装置105が含まれていても良い。サーバ装置103、ファイルサーバ装置104、ストレージ装置105内に、ジョブプログラム109、トレース取得プログラム110、分割プログラム111、結合プログラム112が格納されていても良い。
 仮想マシン108上で、ジョブプログラム109が動作することで、バッチ処理が実現される。なお、同一のサーバ装置103上の仮想マシン108は、複数のジョブネットにより共用される。各テナント(顧客企業などの依頼主)はそれぞれ異なるジョブネットを所有するため、一つのサーバ装置103上では、マルチテナント環境でジョブが動作することになる。
 ファイルサーバ装置104内に、ストレージ装置105が含まれていても良い。ストレージ装置105内には、開始入力ファイル401、中間ファイル402、結果出力ファイル403が含まれる。開始入力ファイル401、中間ファイル402、結果出力ファイル403は、それぞれ複数個が例示されているが、それぞれ0個または1個であっても良い。サーバ装置103、仮想マシン108、ファイルサーバ装置104に、開始入力ファイル401、中間ファイル402、結果出力ファイル403が格納されていても良い。
 サーバ装置103、ファイルサーバ装置104、ストレージ装置105は、それぞれ複数台が例示されているが、それぞれ0台または1台となっていても良い。管理サーバ101、操作端末118は、それぞれ1台が例示されているが、それぞれ0台または複数台となっていても良い。管理サーバ101、操作端末118、サーバ装置103、ファイルサーバ装置104、ストレージ装置105は、仮想マシンによって構成されていても良い。また、管理サーバ101、操作端末118、サーバ装置103、ファイルサーバ装置104、ストレージ装置105は、そのどれか2つ以上が、同一の筐体ないし同一の仮想マシンとなっていても良い。
 図1では、一台のサーバ装置103のホスト名としてhyper1、一台の仮想マシン108のホスト名としてvm1、一台のファイルサーバ装置104のホスト名としてnas1、一台のストレージ装置105のホスト名としてstorage1が例示されている。これらの装置は、これら以外のホスト名となっていても良い。
 管理サーバ101は、実行トレース取得部120、ジョブ解析部121、実行時間推定式算出部122、並列実行スケジュール推定部123、動作ホスト決定部124、ジョブネット並列化実行部125を備える。なお、複数の管理サーバ101が存在し、実行トレース取得部120、ジョブ解析部121、実行時間推定式算出部122、並列実行スケジュール推定部123、動作ホスト決定部124、ジョブネット並列化実行部125のうちの少なくとも一つ以上が、それぞれ異なる管理サーバ101上で動作していても良い。
 また、実行トレース取得部120、ジョブ解析部121、実行時間推定式算出部122、並列実行スケジュール推定部123、動作ホスト決定部124、ジョブネット並列化実行部125のうち、少なくとも1つ以上が存在しなくても良い。管理サーバ101については後記にて詳しく説明する。管理サーバ101には、記憶装置107が接続されている。記憶装置107には、一つ以上の実行トレース230が格納されている。なお、管理サーバ101に複数の記憶装置107が格納されていても良い。また、実行トレースが複数の記憶装置107に分散して格納されていても良い。
 操作端末118は、ジョブ実行時間表示部119を備える。なお、操作端末118が、管理サーバ101と同一であっても良い。
 図2は、管理サーバ101の構成の例を表す図である。管理サーバ101はプロセッサ200、主記憶201、入力デバイス203、出力デバイス204、外部記憶装置インターフェース205、通信インターフェース206を備え、それらが、相互に通信できるように、バス208で接続されている。主記憶201に格納された、実行トレース取得プログラム、ジョブ解析プログラム、実行時間推定式算出プログラム、並列実行スケジュール推定プログラム、動作ホスト決定プログラム、ジョブネット並列化実行プログラムなど各種プログラム202をプロセッサ200が実行することで、実行トレース取得部120、ジョブ解析部121、実行時間推定式算出部122、並列実行スケジュール推定部123、動作ホスト決定部124、ジョブネット並列化実行部125となり、各部の各処理を行う。
 なお、実行トレース取得プログラム、ジョブ解析プログラム、実行時間推定式算出プログラム、並列実行スケジュール推定プログラム、動作ホスト決定プログラム、ジョブネット並列化実行プログラムのうち、少なくとも1つ以上が存在しなくても良い。
 各種プログラム202をプロセッサ200で実行する代わりに、実行トレース取得部120、ジョブ解析部121、実行時間推定式算出部122、並列実行スケジュール推定部123、動作ホスト決定部124、ジョブネット並列化実行部125を、各処理を行う専用のハードウェアでそれぞれ実現してもよい。以下、説明を簡単にするため、主記憶201上にある各種プログラム202をプロセッサ200が実行することで実現される各処理部を、各処理の主体として説明する。
 外部記憶装置インターフェース205は記憶装置107に接続される。記憶装置107は管理サーバ101の外部に備わっていても良く、管理サーバ101の内部に備わっていても良い。記憶装置107は、ジョブネット一覧210、ジョブ一覧220、実行トレース一覧230、ジョブ解析結果一覧240、ジョブ入出力ファイル一覧250、開始入力ファイル一覧260、ジョブ実行時間推定式一覧270、ジョブ実行時刻推定結果一覧280など各種情報207を保持する。
 ジョブネット一覧210、ジョブ一覧220、実行トレース一覧230、ジョブ解析結果一覧240、ジョブ入出力ファイル一覧250、開始入力ファイル一覧260、ジョブ実行時間推定式一覧270、ジョブ実行時刻推定結果一覧280のうち、少なくとも1つ以上が存在しなくても良い。記憶装置107が保持する各種情報207のうち、1つ以上の情報が主記憶201に格納されていても良い。各種情報207については、図3以降を用いて詳しく説明する。
 通信インターフェース206は、サーバ用ネットワーク106に接続されている。通信インターフェース206と外部記憶装置インターフェース205は同一のインターフェースとなっていても良い。入力デバイス203の例は、キーボードやポインタデバイス、タッチパネル等であるが、これら以外のデバイスであってもよい。また、出力デバイス204の例は、ディスプレイやプリンタ等であるが、これら以外のデバイスであってもよい。
 また、入力デバイス203及び出力デバイス204(以下、入出力デバイスと総称する)の代替としてシリアルインターフェース又はイーサーネット(登録商標)インターフェースを管理サーバ101は備え、ディスプレイ、キーボード、又はポインタデバイスを有する表示用計算機がそのインターフェースに接続されてもよい。そして、そのインターフェースは、出力用情報(表示用情報)を表示用計算機に送信したり、入力情報を表示用計算機から受信し、表示用計算機が出力用情報を表示したり、入力を受け付けることによって、入出力デバイスでの入力及び出力を代替してもよい。 
 サーバ装置103、ファイルサーバ装置104、ストレージ装置105、操作端末118についても、管理サーバ101と同様に、プロセッサ200、主記憶201、入力デバイス203、出力デバイス204、外部記憶装置インターフェース205、通信インターフェース206を備え、それらが相互に通信できるようにバス208で接続されている。サーバ装置103、ファイルサーバ装置104、ストレージ装置105、操作端末118が、これ以外の構造をしていても良い。特に、サーバ装置103は複数のプロセッサを備えても良い。
 サーバ装置103は、一つのプロセッサ200を備え、複数の仮想マシン108が一つのプロセッサ200で実行されても良いし、複数のプロセッサ200を備え、一つの仮想マシン108が一つのプロセッサ200で実行されることにより複数の仮想マシン108が実行されても良い。さらに、複数のプロセッサ200の一部または全てで複数の仮想マシン108が実行されても良い。なお、ここでプロセッサはプロセッサのコアと読み替えて、複数のコアが使用されても良い。
 図3は、ジョブネット一覧210の例を示す図である。ジョブネット一覧210は表形式となっており、一つ以上の行から成る。全ての行は4つの列を含んでいる。ここで4つの列とは、ジョブネット名211、実行スケジュール212、デッドライン213、テナント214である。ジョブネット一覧210の各行は、これ以外の不図示の列を含んでいても良いし、幾つかの列が存在しなくても良い。ジョブネット一覧210に格納された情報は、システム管理者などにより手作業で作成されても良く、あるいは何らかのツールやユーティリティを用いて作成されても良い。
 ジョブネット一覧210には、サーバ装置103、または仮想マシン108上で動作させるジョブネットの情報が格納されている。このジョブネットを動作させることで、バッチ処理が実現される。ジョブネット名211はジョブネットの名称である。実行スケジュール212は、ジョブネットを実行開始する時刻である。デッドライン213は、ジョブネットが当該時刻までに終了させなければならない期限である。テナント214は、ジョブネットの所有者である。
 図4は、ジョブ一覧220の例を示す図である。ジョブ一覧220は表形式となっており、一つ以上の行から成る。全ての行は6つの列を含んでいる。ここで6つの列とは、ジョブネット名221、ジョブ名222、先行ジョブ223、後続ジョブ224、実行可ホスト225、コマンドライン226である。ジョブ一覧220の各行は、これ以外の不図示の列を含んでいても良いし、幾つかの列が存在しなくても良い。ジョブ一覧220に格納された情報は、システム管理者などにより手作業で作成されても良く、あるいは何らかのツールやユーティリティを用いて作成されても良い。
 ジョブ一覧220には、ジョブネット一覧210に格納されている各ジョブネットに対して、ジョブネットを構成するジョブに関する情報が格納されている。各ジョブネットは、一つ以上のジョブから成る。各ジョブは、サーバ装置103、または仮想マシン108上でジョブプログラム109を動作させることで、実行される。ジョブ同士には実行順序関係がある。
 ジョブネット名221は、ジョブネット一覧210のジョブネット名211と関連を持つ。ジョブ名222は、ジョブの名称である。先行ジョブ223は、ジョブ名222に設定されたジョブを実行する前に実行完了すべきジョブを示す。先行ジョブ223は、ジョブ名222と関連を持つ。先行ジョブ223に複数のジョブが記録されている時は、それらジョブが全て実行完了してから、ジョブ名222に設定されたジョブが実行される。
 後続ジョブ224は、ジョブ名222に設定されたジョブが実行完了した後に、実行開始すべきジョブを示す。後続ジョブ224は、ジョブ名222と関連を持つ。後続ジョブ224に複数のジョブが記録されている時は、ジョブ名222に設定された自身のジョブが実行完了した際に、後続ジョブ224に記録されたジョブを実行開始する。
 実行可ホスト225は、ジョブ名222に設定されたジョブを実行させることができるサーバ装置103、または仮想マシン108である。なお、すべてのジョブがどのサーバ装置103、または仮想マシン108でも実行可能な環境であれば、実行可ホスト225は、実行させることができる台数であっても良い。実行可ホスト225は、システム管理者などにより手作業で設定されても良いし、過去の実行履歴などに基づいて設定されても良い。
 コマンドライン226は、ジョブ名222に設定されたジョブをサーバ装置103、または仮想マシン108上で実行させる際のコマンドラインである。このコマンドラインにより、ジョブプログラム109を起動する事で、ジョブが実行される。コマンドラインからジョブプログラム109を直接呼び出す代わりに、shやbat等のスクリプトを呼び出し、そのスクリプト内からジョブプログラム109を呼ぶことでジョブを実行しても良い。
 図5は、ジョブネットの処理構造の例を示す図である。ここではジョブ一覧220で示されるジョブネットのうち、ジョブネットjn1の構造を示している。ジョブネット400(jn1)は、ジョブ411(j1)、ジョブ412(j2)、ジョブ413(j3)、ジョブ414(j4)から成る。各ジョブ同士には、先行ジョブ223、後続ジョブ224で指定された実行順序関係がある。ここでは破線矢印430a~430dが実行順序を示している。各ジョブが実行されるホストを、ジョブ411~414の下にホスト420a~420dが示している。
 ジョブは一般的に、一つ以上のファイルを入力し、一つ以上のファイルを出力する。ジョブへの入力ファイルのうち、他ジョブが出力しないファイルの事を開始入力ファイルと呼ぶ。ジョブが出力し他ジョブの入力として使われないファイルを結果出力ファイルと呼ぶ。それ以外のファイルを中間ファイルと呼ぶ。また、ジョブ同士でのファイルの入出力関係は、ファイル入力431a~431eの矢印、ファイル出力432a~432eの矢印で示されている。
 図5の例では、開始入力ファイル401が入力され、結果出力ファイル403が出力される。その中で例えばジョブ412は、破線矢印430aで示されるように先行ジョブのジョブ411の後でホスト420bすなわちvm1で実行される。この実行のためジョブ412は、ファイル出力432aとファイル入力431bで示されるようにジョブ411の出力する中間ファイル402a(中間ファイル1)を入力とする。そして、ジョブ412は、ファイル出力432cで示されるように中間ファイル402c(中間ファイル3)を出力する。その後、破線矢印430cで示される後続ジョブのジョブ414が中間ファイル402を、ファイル入力431dで示されるように入力する。
 なお、ファイルを入力するだけのジョブや、出力するだけのジョブもあり得る。また、環境チェックなどファイルを一切入出力しないジョブもあり得る。ジョブは、ファイルの代わりにデータベースやLDAPを使用しても良く、あるいはHTTPやFTP等の通信を介して情報を取得、または格納しても良い。
 図6は、ジョブを処理するために実行される、ジョブプログラム109実行時の処理フローの例を示す図である。ここでは、並列実行が可能となるジョブプログラム109の処理を示す。ジョブプログラム109が実行されると、前処理1001、ループ処理1002、後処理1003の順に実行される。ループ処理1002は、入力ファイルを全て読み終える(読み込みサイズがEOF:End of Fileになる)までの間(ステップ1010)、入力ファイルから1レコード読み(ステップ1011)、出力を計算し(ステップ1012)、出力ファイルに出力し(ステップ1013)、ステップ1010に戻る(ステップ1014)処理である。
 ステップ1011では、改行で区切られた情報、一定サイズ毎の情報、またはファイル中に指定されたサイズの情報が1レコードである。ジョブプログラム109での処理がこのような処理フローになっていれば、入力ファイルを分割し、分割したファイルのそれぞれを入力として複数の仮想マシン108でジョブを実行させ、出力されたファイルを結合して一つの出力ファイルにすることで、ジョブを並列実行しジョブ実行時間を短縮できる。ジョブプログラム109がこのように並列実行可であることを、後述する図9で示すジョブの実行トレースを元に、この並列実行可否を判定することが、本実施の形態での特徴の一つとなる。
 図7A、7Bは、ジョブ並列化による処理の変化の例を示す図である。ここでは図5中のジョブ412(j2)を並列化する場合について例示し、図5と同様の書式で並列化前後のジョブの構造を示している。ジョブは丸印で、ジョブの下にある四角はジョブを実行するホストを示している。破線矢印でジョブ同士の実行順序を、ファイル入力の矢印、ファイル出力の矢印でジョブに対するファイルの入出力関係を示している。
 図7Aが並列化前のジョブ412であり、図7Bが並列化後のジョブ群である。並列化後のジョブ群は、入力ファイルを分割する処理と、分割したファイルを並列実行する処理、並列実行で出力された複数ファイルを結合し一つの出力ファイルとする結合処理から成る。
 分割処理では、ジョブ412への入力となる中間ファイル402aを、分割ジョブ415で読み込み、中間ファイル402aの内容を複数に分割して分割入力ファイル405a、405bとしてファイル出力する。ここでは並列度が2、つまりジョブを2つ並列実行させるため、分割入力ファイル405a、405bに2分割している。分割ジョブ415では、分割プログラム111を実行してファイルを分割する。
 分割処理では、可能な限りレコード数またはサイズが均等になるように分割する。例えば、分割ジョブ415は、中間ファイル402aを先頭から入力しながら分割入力ファイル405aへ出力し、中間ファイル402aのサイズの1/2を超えたレコード境界まで入力すると、出力先を分割入力ファイル405bへ切替えて、中間ファイル402aを継続して入力しながら分割入力ファイル405bへ出力する。
 並列処理では、分割処理で分割された分割入力ファイル405a、405bをファイル入力431g、431hとして、ホスト420hのvm1とホスト420iのvm2という異なるホスト上で同一のジョブ412を実行する。各ジョブ412はそれぞれ異なる出力ファイルにファイル出力432i、432jする。ここで出力ファイルは出力ファイル406a、406bになる。結合処理では、出力ファイル406a、406bを結合ジョブ416により結合して、一つの中間ファイル402cを作る。
 例えば、結合ジョブ416は、出力ファイル406aを先頭から入力しながら中間ファイル402cへ出力し、出力ファイル406aをすべて入力し終えると、出力ファイル406bへ入力を切替えて、出力ファイル406bを入力しながら中間ファイル402cへ継続して出力する。結合ジョブ416は、結合プログラム112を実行してファイルを結合する。なお、各ジョブは破線矢印430g、430h、430i、430jにしたがった順序で実行される。
 並列度をnとして、図6での前処理1001にかかる時間をB、ループ処理1002にかかる時間をL、後処理1003かかる時間をA、図7の分割処理にかかる時間をD、結合処理にかかる時間をCとすると、並列実行後の処理時間Tは、おおよそ
 T = D + B + L÷n + A + C
の式で求められる。分割処理、結合処理による時間的オーバーヘッドよりも、並列処理による時間短縮が大きければ、単体ホストでジョブを実行するよりも処理時間が短縮できる。
 図8は、実行トレース一覧230に含まれる実行トレースの例を示す図である。実行トレース一覧230は、一つ以上の実行トレースファイル231から成る。トレース取得プログラム110を介して、ジョブプログラム109が実行されると、ジョブプログラム109での実行内容がログとして取得できる。このログをファイルとして保存したものが、実行トレースファイル231である。トレース取得プログラム110の例としては、Linux(登録商標)でのstraceやltraceがある。straceでは、システムコール呼び出しの内容をログとして出力する。ltraceでは、libc等のライブラリに含まれる関数の呼び出し内容をログとして出力する。
 Linux以外のUnix(登録商標)に対しては動的ライブラリ(.so)呼び出しを、Windows(登録商標)ではdll呼び出しを、それぞれフックすることで、同様の情報を取得できる。ここでは実行トレースファイル231として、Linuxのstraceの出力内容をファイル形式で例示する。実行トレースファイル231のサイズは一般的に大きいため、図中で内容を一部省略してある。各行はシステムコール呼び出し時の情報を示す。実行トレースファイル231は、 XML、JSONや表、メモリ上の構造体イメージなどで表現されていても良い。
 実行トレースファイル231は複数行から成る。各行は、時刻232、システムコール名233、引数234、戻り値235、システムコール処理時間236から成る。実行トレースファイル231に、時刻232、システムコール名233、引数234、戻り値235、処理時間236のうち、幾つかの情報が無くても良いし、これ以外の情報が含まれていても良い。なお、行番号237は各行を説明するための番号である。
 時刻232は、システムコール呼び出し時の時刻である。システムコール名233は、呼び出されたシステムコールの名称である。引数234は、システムコール呼び出し時に渡した引数である。引数は入力の場合もあるし、出力の場合もある。戻り値235は、システムコール呼び出しの戻り値である。戻り値の意味はシステムコールによって異なる。処理時間236は、当該システムコールを呼び出してから帰って来るまでの時間である。
 openシステムコールでは、引数234から読み書きするファイルのファイル名が得られ、戻り値235からファイルハンドルが得られる。readやwrite等のファイル入出力システムコールの戻り値235は、そのシステムコールで読み書きしたファイルサイズとなる。そのため、ファイルを開いてから閉じるまでのファイルサイズを合算することで、ファイル入出力サイズを求める。また、処理時間236を合算することでファイル入出力時間を求める事ができる。ファイル入出力サイズをファイル入出力時間から、I/O速度を求める事ができる。これらの内容を、後述する図11のジョブファイル入出力一覧に記録する。
 ここでは、図8の実行トレースファイル231の内容を元に、ジョブプログラム109が図6のようなジョブ内部処理となっているか否かと、図6での前処理1001にかかる時間、ループ処理1002にかかる時間、後処理1003かかる時間、図7の分割処理にかかる時間、結合処理にかかる時間を求める処理を簡単に説明する。実際の具体的な処理は図12を用いて改めて説明する。
 1行目は、ジョブプログラム109を実行する事を示している。ここではジョブプログラム109としてcalcincomeを実行している。2行目は読み込みファイル/etc/settingを開き、3、4行目は読み込み、5行目はファイルを閉じることを示す。2行目の戻り値はファイルハンドルを示す。3、4行目の戻り値235が、それぞれの処理で読み込んだファイルサイズとなる。ファイル/etc/settingを読む処理は、後述するファイル/work/item.csvを読む処理よりも読み込みサイズが小さい。そのため、このファイルはジョブの入力ファイルとはみなさない。典型的には、ファイルのパス名に/etc/を含むので、この処理は設定ファイルを読み込む処理と推定できる。
 6行目が、書き込みファイル/log/exec.logを開く処理である。9行目、16行目はファイルに書き込む処理を示す。後述するファイル/nas/iiconme.csvに出力する処理よりも、書き込みサイズが小さい。また、ファイルのパス名がlogを含み、ファイルの拡張子もlogなので、このファイルはジョブの出力ファイルとはみなさない。典型的には、このファイルはジョブの動作を記録するログファイル出力であると推定できる。
 7行目は、読み込みファイル/work/item.csv を開く処理である。10、11、13、15行目はファイルから読み込み、17行目でファイルを閉じる処理を示す。15行目で戻り値が0になっているのは、ファイルの終了(EOF、End of File)まで読んだからである。8行目は、書き込みファイル/nas/iincome.csv を開く処理である。12、14、18行目はファイルに出力し、19行目はファイルを閉じる処理を示す。20行目は処理の終了を示す。
 最も大きな読み込みファイルは、7行目で開いているファイル/work/item.csvである。15行目でEOFが出ていることからわかるように、このファイルは最後まで読み込まれている。また、最も大きな書き込みファイルは、8行目で開いているファイル/nas/income.csvである。よって、これらのファイルがジョブに対する入力ファイルと出力ファイルであるとみなされる。
 ファイル/work/item.csvを読む処理は10行目から15行目までで、ファイル/nas/iincome.csvに書き込む処理は12行目から18行目までである。よって、これらの集合和をとった10行目から18行目までを、図6でのループ処理1002とみなすことができる。それより前の1行目から9行目までが前処理1001、19行目から20行目までを後処理1003とみなすことができる。あるいは、入力ファイルを開く7行目から、出力ファイルを閉じる19行目までをループ処理1002とみなすこともできる。各行の時刻232の差から、前処理、ループ処理、後処理にかかる時間を求めることができる。
 Windowsで実行トレースを取得した場合、CreateFile APIでファイルを開き、ReadFileでファイルを読み、WriteFileでファイル出力し、CloseHandleでファイルを閉じる。これらの情報を元にトレースファイルの内容は解析できる。
 図9は、実行トレース取得部120での処理の例を示す図である。実行トレースファイル231を出力する処理である。図9の処理は、処理順序が図示と異なっていても良いし、これ以外の不図示の処理を含んでいても良いし、幾つかの処理が存在しなくても良い。実行トレース取得部120は、まずジョブ定義にトレース取得処理を挿入する(ステップ1101)。例えば、ジョブ一覧220のコマンドライン226のコマンドを、トレース取得プログラム110を介して実行するように修正する。
 次に、実行トレース取得部120はジョブネットを実行開始する(ステップ1102)。これにより、ジョブの依存関係に従って、仮想マシン108上でジョブが実行される。同時に、トレース情報が仮想マシン108上のファイルに出力される。最後に、実行トレース取得部120は、出力されたトレース情報を取得し、実行トレース一覧230に格納する(ステップ1103)。この処理により、実行されるジョブプログラム109に対する実行トレースが取得される。
 なお、実行トレースファイル231は、例えばジョブ412(j2)のみが実行されて、取得されても良い。また、一般に、バッチ処理が使い始められた時期には、バッチ処理の対象となるファイルは小さいため、そのような小さなファイルを対象として実行された結果の実行トレースファイル231が取得されても良い。
 図10は、ジョブ解析結果一覧240の例を示す図である。ジョブ解析結果一覧240には、実行トレースファイル231の内容を解析した結果が格納される。ジョブ解析結果一覧240は表形式となっており、一つ以上の行から成る。全ての行は7つの列を含んでいる。ここで7つの列とは、実行ID241、ジョブネット名242、ジョブ名243、処理時間244、並列可245、前・後処理時間246、ループ処理時間247である。ジョブ解析結果一覧240の各行は、これ以外の不図示の列を含んでいても良いし、幾つかの列が存在しなくても良い。ジョブ解析結果一覧240に格納された情報は、システム管理者などにより手作業で作成されても良く、あるいは何らかのツールやユーティリティを用いて作成されても良い。
 実行ID241は、ジョブネットの実行を識別する識別子である。ジョブネット名242は、ジョブネットの名称であり、ジョブネット名211と関連する。ジョブ名243は、ジョブの名称であり、ジョブ名222と関連する。処理時間244は、ジョブの開始から終了までの時間である。
 並列可245は、ジョブ名243で示されるジョブのジョブプログラム109が並列実行可能か否かを示す情報である。前・後処理時間246は、前処理1001と後処理1003にかかる時間を推定したものである。ループ処理時間247は、ループ処理1002にかかる時間を推定したものである。
 図11は、ジョブファイル入出力一覧250の例を示す図である。ジョブファイル入出力一覧250には、実行トレースファイル231の内容を解析した結果、ジョブで入出力されるファイルと、それらファイルのサイズ、入出力時間等が格納される。ジョブファイル入出力一覧250は表形式となっており、一つ以上の行から成る。全ての行は9つの列を含んでいる。ここで9つの列とは、実行ID251、ジョブネット名252、ジョブ名253、入出力254、ファイル名255、ファイルサイズ256、入出力時間257、I/O速度258、分割・結合時間259から成る。ジョブファイル入出力一覧250の各行は、これ以外の不図示の列を含んでいても良いし、幾つかの列が存在しなくても良い。
ジョブファイル入出力一覧250に格納された情報は、システム管理者などによりが手作業で作成されても良く、あるいは何らかのツールやユーティリティを用いて作成されても良い。
 実行ID251は、ジョブネットの実行を識別する識別子であり、実行ID241と関連を持つ。ジョブネット名252は、ジョブネットの名称であり、ジョブネット名211と関連する。ジョブ名253は、ジョブの名称であり、ジョブ名222と関連する。入出力254は、ファイル名255で示されるファイルがジョブへの入力なのか、出力なのかを示す。
 ファイル名255は、ジョブ名253で示されるジョブが入出力するファイルのファイル名を示す。ファイル名255で示されるファイルに関して、ファイルサイズ256は、ファイルのサイズを示し、入出力時間257は、ファイルの入力または出力にかかった時間を示し、I/O速度258は、ファイルの入力または出力した際のI/O速度を示す。I/O速度258は、ファイルサイズ256を入出力時間257で割ったものに等しい。
 分割・結合時間259は、ファイルが入力だった場合は分割、出力だった場合は結合するのにかかる時間を推定したものである。例えばジョブ412のファイル/work/item.csvのように入出力254が入力のときは、分割処理の入力時間がジョブ412の入力時間と同じであり、分割処理の出力ファイルサイズがジョブ412の入力ファイルサイズと同じであり、分割処理の出力速度はジョブ412の出力速度と同じであると仮定する。これにより、入出力時間257の入力時間200秒に、ファイル/work/item.csvのファイルサイズ256の10.0GBを、同じジョブすなわちジョブ412で出力となるファイル/nas/income.csvのI/O速度258の0.04GB/秒で割った値を加えて、450秒が得られる。
 また、ジョブ412のファイル/nas/income.csvのように入出力254が出力のときは、結合処理の出力時間がジョブ412の出力時間と同じであり、結合処理の入力ファイルサイズがジョブ412の出力ファイルサイズと同じであり、結合処理の入力速度がジョブ412の入力速度と同じであると仮定する。これにより、入出力時間257の出力時間125秒に、ファイル/nas/income.csvのファイルサイズ256の5.0GBを、同じジョブすなわちジョブ412で入力となるファイル/work/item.csvのI/O速度258の0.05GB/秒で割った値を加えて、225秒が得られる。
 図12は、ジョブ解析部121での処理の例を示す図である。図12の処理は、処理順序が図示と異なっていても良いし、これ以外の不図示の処理を含んでいても良いし、幾つかの処理が存在しなくても良い。この処理は、実行トレースファイル231から、ジョブ解析結果一覧240とジョブファイル入出力一覧250を作る処理である。ジョブネット名と実行トレースファイル231の情報を入力して、ジョブ解析部121は動作を開始する。
 ジョブ解析部121は、ジョブネットを構成する全てのジョブをジョブ一覧220から求め、ステップ1202から12151215までを繰り返す(ステップ1201、1216)。繰り返し処理の最初では、実行トレースファイル231を読み込む(ステップ1202)。そして、トレース取得処理のオーバーヘッドを補正する(ステップ1203)。トレースを取得するとジョブの処理時間が余計にかかるので、そのオーバーヘッドの分だけ、トレース中の時刻232や、処理時間236を修正する。例えば処理オーバーハッドが10%のときは、開始時刻を起点として、時刻232を全体的に10%早くなるように修正する。
 ジョブ解析部121は、ジョブの処理時間を取得・保存する(ステップ1204)。すなわち、トレース中の時刻232のうち、開始時刻と終了時刻の差を求め、処理時間244に格納する。ジョブ解析部121は、入出力ファイル候補を抽出する(ステップ1205)。ファイルのパス名から、ログファイル(ファイルの拡張子が.logである、パス名にlogを含む、など)や設定ファイル(ファイルの拡張子が.cnfである、パス名にetcを含む、など)を除外することで入出力ファイル候補を抽出しても良い。ジョブ解析部121は、ファイルサイズ、入出力時間、I/O速度を計算する(ステップ1206)。これは、図8を用いて説明したように計算し、計算した値をファイルサイズ256、入出力時間257、I/O速度258に記録する。
 続いて、ジョブ解析部121は、入力ファイルを推定する(ステップ1207)。トレース中で読み込みサイズが最大となるファイルを入力ファイルと推定する。最大だけではなく、ある程度以上のサイズ(例えば100MB以上)を読み込んでいるファイルすべてを入力ファイルとみなしても良い。そして、出力ファイルを推定する(ステップ1208)。トレース中で書き込みサイズが最大となるファイルを出力ファイルと推定する。最大だけではなく、ある程度以上のサイズ(例えば100MB以上)を書きこんでいるファイルすべてを出力ファイルとみなしても良い。
 ジョブ解析部121は、入力ファイルを最後まで逐次的に読み込んでいるかチェックする(ステップ1209)。これは、システムコールがreadのみで、seekをしていないこと、且つ最後のreadの戻り値が0、つまりEOF(End of File)まで読んでいるかをチェックする。ステップ1209で条件が真ならばステップ1210に進み、条件が偽ならばステップ1211へ進む。これは、ジョブプログラム109での処理中に、ループ処理1002が含まれるかをチェックしている。複数の入力ファイルがある場合は、それらの全てで条件を満たすか否かをチェックする。
 ジョブ解析部121は、入力ファイルの最も早い時刻の読み込みより後で、出力ファイルの出力を開始しているかチェックする(ステップ1210)。これは、入力ファイルの情報を元に、出力ファイルの内容を作成しているかチェックすることになる。ステップ1210の条件が真ならばステップ1212に進み、条件が偽ならばステップ1211へ進む。ステップ1211でジョブ解析部121は、並列可274にNを格納し、ステップ1216へ進み、ステップ1212で並列可274にYを格納する。
 ステップ1212に続いて、ジョブ解析部121は、前処理、ループ処理、後処理箇所を推定する(ステップ1213)。これは、図8を用いて説明したように、入力ファイルの読み込み箇所と、出力ファイルの出力箇所を元に推定する。続いて、前処理、ループ処理、後処理の時間を計算し記録する(ステップ1214)。これは、実行トレースファイル231中から、ステップ1213で求めた前処理、ループ処理、後処理箇所の開始・終了処理の時刻232を使用して求める。続いて、入力ファイルの分割時間、出力ファイルの結合時間を推定し、分割・結合時間259に記録する(ステップ1215)。これは、ジョブファイル入出力一覧250の分割・結合時間259に関する説明でしたように求める。
 図13は、開始入力ファイル一覧260の例を示す図である。開始入力ファイル一覧260は、ジョブファイル入出力一覧250の情報を元に求められる。あるジョブネットに属するジョブのうち、入力ファイルが他のジョブで出力されたファイルでないものを求められる。そのファイルが開始入力ファイルとなる。開始入力ファイル一覧260は表形式となっており、一つ以上の行から成る。全ての行は3つの列を含んでいる。
 ここで3つの列は、ジョブネット名261、開始入力ファイル262、サイズ変数263から成る。開始入力ファイル一覧260の各行は、これ以外の不図示の列を含んでいても良いし、幾つかの列が存在しなくても良い。開始入力ファイル一覧260に格納された情報は、システム管理者などにより手作業で作成されても良く、あるいは何らかのツールやユーティリティを用いて作成されても良い。
 ジョブネット名261は、ジョブネットの名称であり、ジョブネット名211やジョブネット名252と関連する。開始入力ファイル名262は、ジョブネットの入力となるファイルのファイル名である。前述したように、あるジョブネットに属するジョブのうち、入力ファイルが他のジョブで出力されたファイルでないものを求められ、そのファイルが開始入力ファイルとなる。サイズ変数263は、開始入力ファイルのサイズを格納するための変数の名称である。この変数は、後述するジョブ実行時間推定式一覧270で使われる。
 図14はジョブ実行時間推定式一覧270の例を示す図である。ジョブ実行時間推定式一覧270は、ジョブ解析結果一覧240と開始入力ファイル一覧260の情報を元に、開始入力ファイルのサイズによって、ジョブネットを構成する各ジョブがどの程度の時間で処理を完了するか推定するための式が格納されている。ジョブ実行時間推定式270は表形式となっており、一つ以上の行から成る。全ての行は7つの列を含んでいる。
 ここで7つの列は、ジョブネット名271、ジョブ名272、処理時間273、並列可274、前・後処理時間275、ループ処理時間276、ファイル分割・結合時間277から成る。ジョブ実行時間推定式270の各行は、これ以外の不図示の列を含んでいても良いし、幾つかの列が存在しなくても良い。ジョブ実行時間推定式270に格納された情報は、システム管理者などにより手作業で作成されても良く、あるいは何らかのツールやユーティリティを用いて作成されても良い。
 ジョブネット名271は、ジョブネットの名称であり、ジョブネット名242やジョブネット名252と相関する。ジョブ名272は、ジョブの名称であり、ジョブ名243やジョブ名253と相関する。処理時間273、前・後処理時間246、ループ処理時間276、ファイル分割・結合時間277は、同一ジョブの実行トレースをそれぞれ含む複数の実行トレースファイル231からそれぞれ計算された複数の時間、すなわち実行ID241、251のIDの異なる同一ジョブに関する時間を解析することにより、求められる。
 処理時間273は、開始入力ファイルのサイズと、処理時間244との相関を、回帰分析等で求め、その計算式が格納されている。後で具体的に説明する。並列可274は、並列化245と同じ情報が格納されている。前・後処理時間275は、前・後処理時間246の平均等で求め、その値が格納されている。ループ処理時間276は、開始入力ファイルのサイズと、ループ処理時間247との相関を、回帰分析等で求め、その計算式が格納されている。
 ファイル分割・結合時間277は、開始入力ファイルのサイズと、分割・結合時間259との相関を、回帰分析等で求め、その計算式が格納されている。分割・結合時間259には、入力ファイルの分割時間、または出力ファイルの結合時間のいずれかが格納されているのに対して、ファイル分割・結合時間277は、ジョブの入力ファイルの分割時間と、出力ファイルの結合時間の合算に対する相関が格納されている。
 図15は、実行時間推定式算出部122での処理の例を示す図である。図15の処理は、処理順序が図示と異なっていても良いし、これ以外の不図示の処理を含んでいても良いし、幾つかの処理が存在しなくても良い。この処理は、ジョブ解析結果一覧240、ジョブファイル入出力一覧250、開始入力ファイル一覧260の情報を元に、開始入力ファイルのサイズによって、ジョブネットを構成する各ジョブがどの程度の時間で処理を完了するか推定した式を求め、ジョブ実行時間推定式一覧270に格納する処理である。
 ジョブネット名が入力されて動作が開始され、実行時間推定式算出部122は、ジョブネットの入力ファイルを特定する(ステップ1301)。これは、ジョブファイル入出力一覧250の情報を元に求める。あるジョブネットに属するジョブのうち、入力ファイルが他のジョブで出力されたファイルでないものを求める。そのファイルが開始入力ファイルとなる。サイズ変数263に任意の変数名を付与した上で、これら情報を開始入力ファイル一覧260に格納する。続いて、ジョブネットを構成する全てのジョブをジョブ一覧220から求め、ステップ1303から1308までを繰り返す(ステップ1302、1309)。
 実行時間推定式算出部122は、ジョブ処理時間式を推定する(ステップ1303)。これは、過去のジョブ解析結果一覧240に対して、開始入力ファイル一覧260で示される開始入力ファイル名262と同一のファイル名を、ファイル名255に有する行のファイルサイズ256をジョブファイル入出力一覧250から求める。そして、その行の実行ID251と相関を実行ID241に持つジョブをジョブ解析結果一覧240から求め、その処理時間244を取得する。これにより、実行ID241、251を基準にしてファイルサイズ256と処理時間244の組が複数取得される。取得したファイルサイズ256と、ジョブの処理時間244との相関を回帰分析等で求め、開始入力ファイルのサイズを変数(サイズ変数263)とする計算式を処理時間273に格納する。
 実行時間推定式算出部122は、並列可245を調べる(ステップ1304)。Yであればステップ1305に、Nであればステップ1308に進む。ステップ1305では、前・後処理時間を推定する。これは、開始入力ファイルのサイズには依存しないので、過去のジョブ解析結果一覧240に対して、前・後処理時間246を取得する。取得した前・後処理時間246の平均等で求め、その時間を前・後処理時間275に格納する。
 実行時間推定式算出部122は、ループ処理時間式を推定する(ステップ1306)。これは、ステップ1303と同様の処理であり、過去のジョブ解析結果一覧240に対して、開始入力ファイルのファイルサイズ256をジョブファイル入出力一覧250から求め、その実行ID251と相関を持つジョブをジョブ解析結果一覧240から求め、そのループ処理時間247を取得する。取得したファイルサイズ256と、ループ処理時間247との相関を回帰分析等で求め、その計算式をループ処理時間276に格納する。
 実行時間推定式算出部122は、ファイル分割・結合時間を推定する(ステップ1307)。これは、ステップ1303と同様の処理であり、過去のジョブ解析結果一覧240に対して、開始入力ファイルのファイルサイズ256をジョブファイル入出力一覧250から求め、その分割・結合時間259を求める。通常、一つのジョブには一つ以上の入力ファイルと一つ以上の出力ファイルがあるため、分割・結合時間259の複数の時間が一つのジョブに必要であるので、それらを合計した時間を求める。ファイルサイズ256と、前記合計した時間との相関を回帰分析等で求め、その計算式をファイル分割・結合時間277に格納する。続いて、ステップ1304で調べた並列可245の情報を、並列可274に格納する(ステップ1308)。
 図16は、ジョブ実行時刻推定結果一覧280の例を示す図である。ジョブ実行時刻推定結果一覧280は、ジョブネット一覧210、ジョブ実行時間推定式一覧270、開始入力ファイル一覧260、入力ファイルのサイズとジョブの並列度を元に、一部のジョブを並列実行した際の、各ジョブの処理時間を推定した結果である。ジョブ実行時刻推定結果一覧280は表形式となっており、一つ以上の行から成る。全ての行は9つの列を含んでいる。
 ここで9つの列とは、パターンID281、ジョブネット名282、ジョブ名283、並列度284、推定実行時間285、推定開始時刻286、推定終了時刻287、実行ホスト288、確定289から成る。ジョブ実行時刻推定結果一覧280の各行は、これ以外の不図示の列を含んでいても良いし、幾つかの列が存在しなくても良い。ジョブ実行時刻推定結果一覧280に格納された情報は、システム管理者などにより手作業で作成されても良く、あるいは何らかのツールやユーティリティを用いて作成されても良い。
 パターンID281は、あるジョブネットに対して、どのジョブをどの並列度で実行するかと組み合わせ(パターン)を識別する識別子である。図16を例に説明すると、パターンID=p3ではジョブj2を3並列で実行し、パターンID=p4ではジョブj2を4並列で実行、パターンID=p5ではジョブj2を4並列かつジョブj3を2並列で実行する。ジョブネット名282は、ジョブネットの名称であり、ジョブネット名211、ジョブネット名221、ジョブネット名242、ジョブネット名252、ジョブネット名261、ジョブネット名271と相関する。
 ジョブ名283は、ジョブの名称であり、ジョブ名222、ジョブ名243、ジョブ名253、ジョブ名272と相関する。並列度284は、ジョブを幾つの並列度で実行するかが格納されている。推定実行時間285は、推定した当該ジョブの実行時間が格納されている。これは、入力ファイルのサイズを開始入力ファイルのサイズ変数として、前・後処理時間275+ファイル分割・結合時間277+ループ処理時間276÷並列度 で求める。推定開始時刻286は、推定した当該ジョブの開始時刻が格納されている。先行ジョブ223よりジョブの依存関係を求め、先行ジョブのうち最も遅い推定終了時刻287を、このジョブの推定開始時刻286とする。
 推定終了時刻287は、推定した当該ジョブの終了時刻が格納されている。推定開始時刻286に推定実行時間285を加えて求める。実行ホスト288は、ジョブを実行する仮想マシン108のホスト名が格納されている。並列度283の数だけホスト名が格納される。仮想マシン108の代わりに、サーバ装置103のホスト名を格納しても良い。確定289は、この推定したジョブ実行時刻で実際にジョブを実行する場合はY、そうでない場合はNが格納されている。
 図17は、並列実行スケジュール推定部123、ジョブ実行時間表示部119、ジョブネット並列化実行部125での処理の例を示す図である。図17の処理は、処理順序が図示と異なっていても良いし、これ以外の不図示の処理を含んでいても良いし、幾つかの処理が存在しなくても良い。
 この処理では、ジョブネット一覧210、ジョブ実行時間推定結果一覧280、開始入力ファイル一覧260、入力ファイルのサイズをもとに、ジョブの並列度を幾つかのパターン分だけ変化させた際の、各ジョブの処理時間を見積もり、見積もり結果を画面表示する。見積もり結果の並列度パターンの中から一つを選ぶ入力を受け付けて、その選ばれた並列度パターンに従ってジョブを並列実行する。
 並列実行スケジュール推定部123は、まずジョブの並列度パターンを作成する(ステップ1401)。ジョブ実行時間推定式一覧270の並列化274がYとなるジョブに対して、パターンの組み合わせを作成する。それぞれのジョブについて、1から、実行可ホスト225で指定されたホストの数までの整数値パターンを作成し、それを並列度の候補とする。複数のジョブが並列化可能なときは、並列度の候補を組み合わせてパターンを作成する。
 ジョブネットjn1を例に説明する。図14のジョブ実行時間推定式一覧270によれば、ジョブj2とj3が並列化可能である。また、図4のジョブ一覧220によれば、ジョブj2の実行可能ホスト数は4、ジョブj3の実行可ホスト数は2である。この場合、ジョブj2の並列度をa、ジョブj3の並列度をbとし、その組み合わせパターンを[a、b]の形式で表すと、全部で[1、1][2、1][3、1][4、1][1、2][2、2][3、2][4、2]の8個の並列度パターンとなる。それぞれの並列度パターンに、パターンID281としてユニークな識別子を付ける。
 次に、各並列度パターンのそれぞれについて、ステップ1403を実行する(ステップ1402、ステップ1404)。並列度パターンを全部処理するとステップ1405に進む。ステップ1403では、それぞれの並列度パターンに対して、ジョブを並列実行した際のスケジュールを推定する。これについては図18を用いて後で詳細を説明する。
 次に、ジョブ実行時間表示部119は、ステップ1403で推定された並列実行スケジュールを画面に表示し、どの並列度パターンでジョブを実行するのか入力を受け付ける(ステップ1405)。表示画面については図20を用いて後で説明する。ステップ1405で入力されたスケジュールを確定させる(ステップ1406)。当該ジョブネットで推定したスケジュールに対して、ジョブ実行時刻推定結果一覧280で、入力された並列度パターンに対応するものについては確定289をYに、それ以外についてはNに設定する。
 最後に、ジョブネット並列化実行部125は、ジョブネットの開始時刻が来たときに、ステップ1405で選ばれた並列度パターンに従ってジョブネットを実行する(ステップ1407)。
 図18は、並列実行スケジュール推定部123での処理の例を示す図である。図18の処理は、処理順序が図示と異なっていても良いし、これ以外の不図示の処理を含んでいても良いし、幾つかの処理が存在しなくても良い。
 この処理は、図17のステップ1403から呼び出され、ジョブネット名とパターンID、並列度パターン、開始入力ファイルのサイズを入力される。そして、並列度パターンに従って、開始入力ファイル一覧260、入力ファイルのサイズ、ジョブ実行時刻推定結果一覧280から各ジョブを逐次実行または並列実行した際の処理時間を推定し、ジョブネット一覧210から取得したジョブ同士の依存関係を元に、開始時刻と終了時刻を推定する。
 並列実行スケジュール推定部123は、入力されたジョブネット名で示されたジョブネットに属するジョブのそれぞれについて、ステップ1502から1507までを処理する(ステップ1501、ステップ1508)。この際に、ジョブ一覧220からジョブの依存関係を取得し、早く実行されるジョブから順に処理していく。
 ステップ1502で、並列実行スケジュール推定部123は、ジョブの開始時刻を推定する。そのために、ジョブ一覧220中の先行ジョブ223で指定されたジョブを取得する。例えばジョブj1のように先行ジョブが無い場合は、ジョブネット一覧210から実行スケジュール212を取り出し、ステップ1502が実行されている現在の時刻に対して次回の実行時刻を求め、それが当該ジョブの開始時刻と推定される。
 先行ジョブ223がある場合は、それら先行ジョブについてジョブ実行時刻推定結果一覧280の推定終了時刻287を取得し、取得した中で最も遅い推定終了時刻がこのジョブの推定開始時刻となる。このようにして推定した開始時刻は、推定開始時刻286に格納されるとともに、パターンID281、ジョブネット名282、ジョブ名283、並列度284もそれぞれ格納される。
 次に、並列実行スケジュール推定部123は、並列化274を参照して、当該ジョブが並列可であるか判定する(ステップ1503)。並列可であればステップ1504へ進み、そうでなければステップ1505へ進む。ステップ1504では、入力された並列度パターンの並列度に従ってジョブを逐次または並列実行する際の処理時間を推定する。推定される処理時間は、開始入力ファイルのサイズを変数として、
 ファイル分割・結合時間277+前・後処理時間275+ループ処理時間276÷並列度
の式から求められる。推定した処理時間を、推定実行時間285に格納する。その後、ステップ1506へ進む。
 ステップ1505は、並列スケジュール推定部123は、開始入力ファイルのサイズを変数として、処理時間273を計算してジョブの処理時間を推定する。推定した処理時間を、推定実行時間285に格納する。その後、ステップ1506へ進む。ステップ1506では、ジョブの終了時刻を推定する。これは、ステップ1502で求めた開始時刻と、ステップ1504または1505で求めたジョブ実行推定時間を加算して、ジョブの終了時刻を推定する。推定した終了時刻を、推定終了時刻287に格納する。
 次に、動作ホストが決定される(ステップ1507)。この処理は図19を用いて後で詳細を説明する。最後に、ジョブネットの処理時間を推定する(ステップ1509)。これはステップ1502から1507の間で処理したジョブのうち、最も早い開始時刻と、最も遅い終了時刻から求められる。また、最も遅い終了時刻はジョブネットの終了時刻である。そして、ジョブネットの終了時刻のデッドライン213からの超過分も求める。
 図19は、動作ホスト決定部124での処理の例を示す図である。図19の処理は、処理順序が図示と異なっていても良いし、これ以外の不図示の処理を含んでいても良いし、幾つかの処理が存在しなくても良い。この処理では、ジョブの推定開始時刻、推定終了時刻、動作ホスト名一覧を入力として動作する。これらの情報を元に、どの仮想マシン108でジョブを動作させれば良いかを求める。その結果、他のジョブネットの実行が遅延する場合は、その遅延時間も求める。
 動作ホスト決定部124は、まず空ホストを検索する(ステップ1601)。これは、実行可ホスト225で指定されたホストのうち、ジョブの推定開始時刻から推定終了開始時刻までの間に、他ジョブを実行していないホストを求める。そのようなホストがあれば、それらホストの中から一つを選んで実行ホスト288に格納し(ステップ1604)、処理を終了する。そのようなホストが無いときはステップ1603へ進む。
 ステップ1603では、実行時刻の重なるジョブ群を取得する。これは、ジョブ実行時刻推定結果一覧280の確定289がYとなるジョブの中で、推定開始時刻285と推定終了時刻286を参照し、与えられたジョブの開始時刻と終了時刻が重なるジョブ群を取得する。このジョブ群をYとする。
 続いて、動作ホスト決定部124は、ジョブ群Yに含まれるジョブのそれぞれについて、推定開始時刻286を、入力されたジョブの推定終了時刻に遅らせたときの、ジョブネットの余裕時間を求める(ステップ1605)。余裕時間とは、ジョブネットのデッドライン213から、ジョブネットの推定終了時刻を引いたものである。ジョブ群Yに含まれるジョブが属するジョブネットの推定終了時刻は、図18のステップ1509で既に求められている。
 動作ホスト決定部124は、ジョブ群Yの中で余裕時間が最大となるジョブxを選ぶ(ステップ1606)。このようにジョブxを選ぶ代わりに、余裕時間が0以上となる中で最小となるジョブを選んでも良いし、ジョブネット内の他のジョブによりジョブネットの推定終了時刻が決まるため、余裕時間がかわらないジョブを選んでも良い。前者の選択はリソース利用率が向上でき、後者の選択は当該ジョブがクリティカルパスとならないため、他のジョブネットに一切影響を与える事なく入力ジョブを並列実行できることになる。
 次に、ステップ1606で選んだジョブの開始時刻を遅延させ、その後続ジョブの実行スケジュールを修正したものをジョブ実行時刻推定結果一覧280に格納する(ステップ1607)。そして、入力ジョブの実行ホスト288へ、ジョブxを実行するはずであったホストを格納して(ステップ1608)、処理を終了する。
 なお、マルチテナント環境において、ジョブネット一覧210が各テナントのランクに関する情報をさらに有し、動作ホスト決定部124はランクに関する情報も使用して動作ホストを決定しても良い。例えば、ステップ1606において、それぞれが最大とみなせる程、余裕時間の非常に大きなジョブが複数存在する等、複数のジョブが選択可能な場合に、ランクの低いテナントの所有するジョブネットに属するジョブを選択しても良い。また、ステップ1605~1606において、余裕時間とは関係なく、ジョブ群Yの中で、ランクの低いテナントの所有するジョブネットに属するジョブを選択してもよい。
 図20は、並列時のジョブ実行時間表示画面500の例を示す図である。並列時のジョブ実行時間表示画面500は、ジョブを並列実行した際のジョブネットの実行時間や終了時刻、デッドラインに対する余裕時間の変化を図示する。また、ジョブを並列実行した結果、他ジョブネットの推定終了時刻が遅延した場合のデッドラインに対する余裕時間等を図示する。ジョブ実行時間表示画面500は、操作端末118の出力デバイスや、管理サーバ101の出力デバイス204に表示される。これ以外の装置場所に、ジョブ実行時間表示画面500は表示されても良い。
 ジョブ実行時間表示画面500は、ジョブネット名501、開始入力ファイル名502、サイズ503、サイズ増減ボタン504、ジョブネット実行時間表510、OKボタン520から成る。ジョブネット実行時間表510は表形式であり、選択511、パターン512、並列度513、ジョブネット実行時間514、ジョブネット終了時刻515、ジョブ実行スケジュール516、遅らせるジョブネットとデッドラインまでの余裕時間517から成る。
 ジョブネット実行時間表510には、これ以外の行または例表示されていても良いし、幾つかの行または列が存在しなくても良い。ジョブネット実行時間表510は、表形式以外の表示方式、例えばリスト形式や文字列形式で表示されていても良い。ジョブネット実行時間表510の内容は、ジョブ実行時刻推定結果一覧280と、ステップ1607で遅延させたジョブが属するジョブネットの情報を元に、ジョブ実行時間表示部119が作成する。ジョブネット中のジョブを並列実行させるパターン毎に内容を表示する。
 ジョブネット名501は、この画面に表示されているジョブネットの名称である。
開始入力ファイル名502は、ジョブネットを実行開始する際の開始入力ファイルの名前である。サイズ503は、開始入力ファイルのサイズである。画面が最初に表示されたときには、実際に入力される開始入力ファイルのサイズを表示する。サイズ増減ボタン504は、サイズ503の値を調整するボタンである。上下のボタンを押すことにより、サイズ503の値が増減できる。増減させた場合は、図17の処理が実行されてジョブ実行スケジュールを求められ、ジョブネット実行時間表510が表示し直される。
 選択511は、どのパターンを選択するのかを表す選択肢である。パターン512は、並列度パターンを示し、ジョブ実行時刻推定結果一覧280のパターンID281の情報を表示する。並列度513は、あるジョブを並列実行する際の並列度を示す。ここでは、どの仮想マシン108上でジョブを並列実行するかのホスト名も表示している。ホスト名がクリックされることで、他の仮想マシン108上でジョブを動作させるように、仮想マシン108が修正可能であっても良い。
 ジョブネット実行時間514は、ステップ1509で求めたジョブネットの推定実行時間を表示する。ここでは時分秒の表示以外に、秒でも表示している。ジョブネット終了時刻515は、ステップ1509で求めたジョブネットの推定終了時刻を表示する。ここでは終了時刻以外に、デッドラインに対してどれだけ超過しているか、またはどれだけ余裕があるかを表示している。
 ジョブ実行スケジュール516は、ジョブを並列実行した結果、ジョブネットがどのように実行されるかを時間軸で表示するものである。ここではデッドライン518も表示することで、デッドラインを超えているか、余裕時間がどの程度あるのかがわかるように表示する。また、並列実行するジョブの処理時間表示を、並列度の分だけ縦に分割表示することで、どのジョブをどの並列度で実行するのかがわかるように表示する。同様に、横に3つ、または5つに分割して、ファイル分割・結合時間277や、前・後処理時間275を表示しても良い。
 遅らせるジョブネット517は、このパターンを選んだ際に実行が遅れるジョブネットを表示している。そのジョブネットのデッドラインに対する余裕時間がどの程度変化するかも表示している。OKボタン520が押されると、選択511で選択されたスケジュールでジョブネットを実行するようスケジュールし、画面を閉じる。
 以上で説明したように、バッチ処理のプログラムを解析できない場合であっても、バッチ処理の実行結果から並列処理の可能性を判定できる。そして、バッチ処理の既存のプログラムを変更することなく、並列処理が可能になる。また、バッチ処理の一部を並列処理した際の処理時間を実際のサーバ装置の動作に即して推定することができ、デッドラインに対する余裕時間も提示できる。また、並列実行する事で、他のジョブネットの実行に発生する遅延が許容範囲かどうかも提示できる。
101 管理サーバ
103 サーバ装置
104 ファイルサーバ装置
105 ストレージ装置
108 仮想マシン
120 実行トレース取得部
121 ジョブ解析部
122 実行時間推定式算出部
123 並列実行スケジュール推定部
124 動作ホスト決定部
125 ジョブネット並列化実行部
210 ジョブネット一覧
220 ジョブ一覧
230 実行トレース一覧
240 ジョブ解析結果一覧
250 ジョブファイル入出力一覧
260 開始入力ファイル一覧
270 ジョブ実行時間推定式一覧
280 ジョブ実行時刻推定結果一覧

Claims (15)

  1.  バッチ処理システムにおいて、
     バッチ処理のための複数の計算機リソースと、
     前記バッチ処理の実行トレース情報に基づき、前記バッチ処理内のループ処理を特定し、前記バッチ処理は前記複数の計算機リソースにおいて並列処理可能であるか否かを判定する解析部と、
     前記特定したループ処理に基づき、前記並列処理により短縮できる実行推定時間を計算し、バッチ処理全体の実行時間を推定する並列実行スケジュール推定部と
    を備えたことを特徴とするバッチ処理システム。
  2.  前記解析部が並列処理可能であると判定した場合、前記バッチ処理を前記複数の計算機リソースにおいて並列処理する並列化実行部
    をさらに備えたことを特徴とする請求項1に記載のバッチ処理システム。
  3.  前記解析部は、
     前記実行トレース情報に含まれるファイルの入力と出力に記録されたファイルのサイズに基づき、バッチ処理の対象となる入力ファイルと出力ファイルを特定し、
     前記入力ファイルを逐次的に入力し、且つ前記入力ファイルの入力の後に前記出力ファイルの出力が含まれる場合、前記入力ファイルの最初の入力から前記出力ファイルの最後の出力までを前記ループ処理であると判定して、前記バッチ処理に含まれる前記ループ処理は並列処理可能であると判定し、
     前記ループ処理より前の処理を前処理であると判定し、前記ループ処理より後の処理を後処理であると判定すること
    を特徴とする請求項2に記載のバッチ処理システム。
  4.  前記解析部は、
     前記実行トレース情報に含まれるファイルの入力と出力に関して記録されたファイルのパス名あるいはファイル名の拡張子に基づき、バッチ処理の対象となる入力ファイルと出力ファイルを特定し、
     前記入力ファイルを逐次的に入力し、且つ前記入力ファイルの入力の後に前記出力ファイルの出力が含まれる場合、前記入力ファイルの最初の入力から前記出力ファイルの最後の出力までをループ処理であると判定して、前記バッチ処理に含まれる前記ループ処理は並列処理可能であると判定し、
     前記ループ処理より前の処理を前処理であると判定し、前記ループ処理より後の処理を後処理であると判定すること
    を特徴とする請求項2に記載のバッチ処理システム。
  5.  前記解析部は、
     前記実行トレース情報に含まれる実行時刻の情報に基づき、前記ループ処理と前記前処理と前記後処理それぞれの処理時間を計算し、
     前記入力ファイルのサイズに基づき、前記入力ファイルの分割時間を計算し、
     前記出力ファイルのサイズに基づき、前記出力ファイルの結合時間を計算すること
    を特徴とする請求項3に記載のバッチ処理システム。
  6.  前記バッチ処理システムは、さらに実行時間推定式算出部を備え、
     前記実行時間推定式算出部は、
     前記ループ処理の計算された処理時間と、前記入力ファイルに関連するファイルのサイズとを複数取得して、前記ループ処理の処理時間の第一の計算式を生成し、
     前記前処理の計算された処理時間と、前記後処理の計算された処理時間とを複数取得して、前記前処理と前記後処理の合計処理時間を生成し、
     前記分割時間および結合時間の合計と、前記入力ファイルに関連するファイルのサイズとを複数取得して、前記分割時間および結合時間の合計の第二の計算式を生成すること
    を特徴とする請求項5に記載のバッチ処理システム。
  7.  前記並列実行スケジュール推定部は、
     前記バッチ処理が並列処理可能であると判定された場合、前記第一の計算式を用いて計算した処理時間を、並列度で除算し、前記第二の計算式を用いて計算した処理時間を加算し、前記合計処理時間を加算することにより、実行推定時間を計算し、
     前記実行推定時間に基づき、前記バッチ処理全体の終了時刻を計算すること
    を特徴とする請求項6に記載のバッチ処理システム。
  8.  前記バッチ処理システムは、さらに動作リソース決定部を備え、
     前記動作リソース決定部は、
     前記計算機リソースを共用する他の複数のバッチ処理の中で、バッチ処理が終了しなければならないデッドラインに対して、終了時刻の最も早いバッチ処理を選択し、
     前記選択されたバッチ処理の開始時刻を遅らせること
    を特徴とする請求項7に記載のバッチ処理システム。
  9.  前記バッチ処理システムは、さらに動作リソース決定部を備え、
     前記動作リソース決定部は、
     前記バッチ処理の依頼主のランクに関する情報を取得し、
     前記計算機リソースを共用する他の複数のバッチ処理の中で、前記ランクの最も低い依頼主のバッチ処理を選択し、
     前記選択されたバッチ処理の開始時刻を遅らせること
    を特徴とする請求項7に記載のバッチ処理システム。
  10.  前記バッチ処理システムは、さらに実行時間表示部を備え、
     前記実行時間表示部は、前記並列度と前記終了時刻と前記デッドラインを表示すること
    を特徴とする請求項8に記載のバッチ処理システム。
  11.  前記並列実行スケジュール推定部は、
     前記並列度として複数の異なる並列度を生成し、
     前記実行時間表示部は、
     前記複数の異なる並列度と、前記複数の異なる並列度に応じた終了時刻とをそれぞれ表示し、前記デッドラインを表示すること
    を特徴とする請求項8に記載のバッチ処理システム。
  12.  前記並列化実行部は、
     前記入力ファイルを前記並列度にしたがって分割させ、
     前記バッチ処理を前記並列度にしたがって並列処理させ、
     前記並列度にしたがって並列処理されたバッチ処理の出力ファイルを結合させること
    を特徴とする請求項7に記載のバッチ処理システム。
  13.  バッチ処理のための複数の計算機リソースを有するバッチ処理システムの制御方法において、
     前記バッチ処理の実行トレース情報に基づき、前記バッチ処理内のループ処理を特定し、前記バッチ処理は前記複数の計算機リソースにおいて並列処理可能であるか否かを判定する解析ステップと、
     前記特定したループ処理に基づき、前記並列処理により短縮できる実行推定時間を計算し、バッチ処理全体の実行時間を推定する並列実行スケジュール推定ステップと
    を有することを特徴とするバッチ処理システムの制御方法。
  14.  前記解析ステップで並列処理可能であると判定した場合、前記バッチ処理を前記複数の計算機リソースにおいて並列処理する並列実行ステップ
    をさらに有することを特徴とする請求項13に記載のバッチ処理システムの制御方法。
  15.  前記解析ステップは、
     前記実行トレース情報に含まれるファイルの入力と出力に記録されたファイルのサイズに基づき、バッチ処理の対象となる入力ファイルと出力ファイルを特定するステップと、
     前記入力ファイルを逐次的に入力し、且つ前記入力ファイルの入力の後に前記出力ファイルの出力が含まれる場合、前記入力ファイルの最初の入力から前記出力ファイルの最後の出力までをループ処理であると判定して、前記バッチ処理に含まれる前記ループ処理は並列処理可能であると判定するステップと、
     前記ループ処理より前の処理を前処理であると判定し、前記ループ処理より後の処理を後処理であると判定するステップと
    を有することを特徴とする請求項14に記載のバッチ処理システムの制御方法。
PCT/JP2014/080487 2014-11-18 2014-11-18 バッチ処理システムおよびその制御方法 WO2016079802A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/080487 WO2016079802A1 (ja) 2014-11-18 2014-11-18 バッチ処理システムおよびその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/080487 WO2016079802A1 (ja) 2014-11-18 2014-11-18 バッチ処理システムおよびその制御方法

Publications (1)

Publication Number Publication Date
WO2016079802A1 true WO2016079802A1 (ja) 2016-05-26

Family

ID=56013418

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/080487 WO2016079802A1 (ja) 2014-11-18 2014-11-18 バッチ処理システムおよびその制御方法

Country Status (1)

Country Link
WO (1) WO2016079802A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018079162A1 (ja) * 2016-10-25 2018-05-03 株式会社日立製作所 情報処理システム
CN108334675A (zh) * 2018-01-18 2018-07-27 北京航空航天大学 数字飞行器工况集批量仿真的人工智能处理方法及系统
JP7449779B2 (ja) 2020-06-03 2024-03-14 株式会社日立製作所 ジョブ管理方法、及びジョブ管理装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008123205A (ja) * 2006-11-10 2008-05-29 Internatl Business Mach Corp <Ibm> ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
JP2014157384A (ja) * 2011-04-04 2014-08-28 Hitachi Ltd 並列化設計支援システム、プログラム、および方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008123205A (ja) * 2006-11-10 2008-05-29 Internatl Business Mach Corp <Ibm> ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
JP2014157384A (ja) * 2011-04-04 2014-08-28 Hitachi Ltd 並列化設計支援システム、プログラム、および方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MASATO YAMAMOTO: "Development of Parallel Job Step Technology and Parallel Supporting Tool", NEC TECHNICAL JOURNAL, vol. 51, no. 4, 24 April 1998 (1998-04-24), pages 133 - 140 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018079162A1 (ja) * 2016-10-25 2018-05-03 株式会社日立製作所 情報処理システム
CN108334675A (zh) * 2018-01-18 2018-07-27 北京航空航天大学 数字飞行器工况集批量仿真的人工智能处理方法及系统
CN108334675B (zh) * 2018-01-18 2022-03-15 北京航空航天大学 数字飞行器工况集批量仿真的人工智能处理方法及系统
JP7449779B2 (ja) 2020-06-03 2024-03-14 株式会社日立製作所 ジョブ管理方法、及びジョブ管理装置

Similar Documents

Publication Publication Date Title
US10776170B2 (en) Software service execution apparatus, system, and method
US9864672B2 (en) Module specific tracing in a shared module environment
US9311213B2 (en) Module database with tracing options
Zhang et al. Automated profiling and resource management of pig programs for meeting service level objectives
US10402300B2 (en) System, controller, method, and program for executing simulation jobs
JP5552449B2 (ja) データ分析及び機械学習処理装置及び方法及びプログラム
JP5326374B2 (ja) プロセッサ、性能プロファイリング装置、性能プロファイリングプログラムおよび性能プロファイリング方法
JP6369170B2 (ja) 実行時間推定装置及び方法
CN109791492B (zh) 流水线相关树查询优化器和调度器
JP5478526B2 (ja) データ分析及び機械学習処理装置及び方法及びプログラム
JP6686371B2 (ja) データステージング管理システム
US20170075714A1 (en) Presenting hypervisor data for a virtual machine with associated operating system data
WO2016079802A1 (ja) バッチ処理システムおよびその制御方法
Fu et al. Optimizing speculative execution in spark heterogeneous environments
WO2009002722A2 (en) Concurrent exception handling
US10599472B2 (en) Information processing apparatus, stage-out processing method and recording medium recording job management program
Kim et al. Performance evaluation and tuning for MapReduce computing in Hadoop distributed file system
JP2005148901A (ja) ジョブスケジューリングシステム
Ouyang et al. Mitigate data skew caused stragglers through ImKP partition in MapReduce
JP6048500B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体
Wu et al. Modeling the virtual machine launching overhead under fermicloud
JP6176380B2 (ja) 情報処理装置、方法、及びプログラム
Apichanukul et al. Accuracy improvement for backup tasks in hadoop speculative algorithm
Ullrich et al. A benchmark model for the creation of compute instance performance footprints
Ben Romdhanne et al. Hybrid scheduling for event-driven simulation over heterogeneous computers

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: 14906566

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: 14906566

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP