WO2024075157A1 - タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラム - Google Patents
タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラム Download PDFInfo
- Publication number
- WO2024075157A1 WO2024075157A1 PCT/JP2022/036964 JP2022036964W WO2024075157A1 WO 2024075157 A1 WO2024075157 A1 WO 2024075157A1 JP 2022036964 W JP2022036964 W JP 2022036964W WO 2024075157 A1 WO2024075157 A1 WO 2024075157A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- core
- execution
- dedicated
- operating frequency
- task scheduler
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 373
- 230000008569 process Effects 0.000 claims abstract description 337
- 230000000694 effects Effects 0.000 claims description 27
- 238000001514 detection method Methods 0.000 claims description 24
- 238000010586 diagram Methods 0.000 description 36
- 238000005516 engineering process Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 17
- 230000007423 decrease Effects 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 9
- 230000003068 static effect Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 3
- 238000006731 degradation reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 101100268548 Caenorhabditis elegans apl-1 gene Proteins 0.000 description 2
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical group OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 101150026430 manA gene Proteins 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
Definitions
- the present invention relates to a task scheduler device, a computing system, a task scheduling method, and a program.
- SIMD Single Instruction Multiple Data
- Intel SSE/AVX512 Single Instruction Multiple Data extended instruction set
- Recent SIMD extended instruction sets consume a lot of power and generate a lot of heat, which temporarily reduces the frequency of the core that executes the SIMD instructions (see Non-Patent Document 1).
- vRAN vRAN
- BBU Broad Band Unit
- RU Radio Unit
- DU Distributed Unit
- CU Centralized Unit
- FlexRAN software reference platform developed by Intel (registered trademark). FlexRAN is the main building block for Layer 1 (L1) functions of RAN, which builds software-based radio base stations. Currently, FlexRAN operates all cores at low frequencies, and a CPU that can meet performance requirements even at low frequencies is prepared in advance.
- L1 Layer 1
- a configuration in which the CPU on the computer (hereafter referred to as the server) supports general-purpose instructions and dedicated instructions specialized for specific operations (SIMD operation instructions and dedicated instructions for encryption).
- SIMD operation instructions and dedicated instructions for encryption are shown, for example, at "https://www.isus.jp/hpc/intel-advanced-encryption-standard-instructions-aes-ni/".
- Dedicated instructions for encryption are shown, for example, at "https://www.isus.jp/hpc/intel-advanced-encryption-standard-instructions-aes-ni/".
- FIG. 14 is a diagram showing the configuration of a CPU equipped with a SIMD unit for executing SIMD instructions.
- the CPU 10 includes four physical cores (CPUcores) 11 and an SIMD unit 12 that is provided in each of the four physical cores 11 and executes SIMD instructions.
- the physical core 11 is a single CPUcore that executes two or more processes simultaneously.
- the physical core 11 has a logical core 1 and a logical core 2 that run two threads per core.
- the four physical cores 11 shown in Figure 14 run two threads per core, resulting in eight logical cores.
- the logical core is the number of physical cores 11 multiplied by the number of threads that can be run on each core using hardware multithreading technology (e.g., Intel Hyper Threading). This hyperthreading allows a single physical core 11 to operate like two logical cores.
- hardware multithreading technology e.g., Intel Hyper Threading
- Fig. 15 is a diagram showing the execution instructions and operating frequencies of the logic core shown in Fig. 14.
- the upper diagram of Fig. 15 shows the execution instructions of the logic core shown in Fig. 14, and the lower diagram of Fig. 15 shows the core operating frequency when the execution instructions of the logic core are executed.
- the logic core 1 instruction executes a normal instruction, a SIMD instruction, and a normal instruction.
- the logic core 2 instruction executes a normal instruction (symbol a in the upper diagram of Fig. 15) while the logic core 1 instruction executes a SIMD instruction.
- the operating frequency of the SIMD extended instruction execution core (logical core 1 in this case) and the logical core (logical core 2 in this case) that runs on the same physical core drops (symbol b in the lower diagram of FIG. 15).
- the core operating frequency drops from high (approximately 3.5 GHz) to low (approximately 1.9 GHz).
- the core operating frequency continues to drop for a certain period of time (e.g., 2 ms) before returning to its original state (symbol c in the upper diagram of FIG. 15) ( ⁇ frequency drop of logical core 2>).
- SIMD instructions (dedicated instructions) can increase the power consumption of a core, and the operating frequency of logical cores operating on the same physical core can decrease. In this case, the processing performance of the core executing the dedicated instructions and the processes scheduled to the same physical core decreases.
- FIGS. 16 and 17 are diagrams explaining Existing Technology 1.
- FIG. 16 is a diagram showing the core allocation status when a CPU has multiple physical cores, and each of these multiple physical cores is operated as if it were two logical cores.
- FIG. 17 is a diagram showing the cumulative allocated CPU time of a group of processes allocated according to the core allocation status of each physical core in FIG. 16.
- a CPU 10 has two physical cores (physical core 1, physical core 2) 11. Hyper-threading causes the single physical core (physical core 1, physical core 2) 11 to operate as two logical cores (logical core 1, logical core 2).
- logical core 1 of the physical core (physical core 1) 11 is a core that executes a dedicated instruction process (SIMD)
- logical core 2 is a core that executes process 1 group which are normal instructions.
- logical core 1 of the physical core (physical core 2) 11 is a core that executes process 2 group which are normal instructions
- logical core 2 is a core that executes process 3 group which are normal instructions.
- process group 1 and process group 2 have the same priority level of "medium,” the same amount of CPU time is allocated to them. However, process group 1 and process group 2 have different frequencies. Since the same amount of CPU time is allocated to process group 1 and process group 2, depending on the performance characteristics of each process with respect to the frequency, the processing performance may not be satisfied.
- the existing technique 1 has a problem in that it is not possible to minimize the number of execution cores by allocating processes while taking into account fluctuations in the operating frequency.
- Fig. 18 is a diagram for explaining Existing Technique 2.
- Fig. 18 is a diagram showing a core allocation state when a CPU has multiple physical cores and each of the multiple physical cores is operated as if it were two logical cores.
- the CPU 10 has three physical cores (physical core 1, physical core 2, physical core 3) 11.
- a single physical core (physical core 1, physical core 2, physical core 3) 11 is operated as two logical cores (logical core 1, logical core 2).
- the physical core (physical core 1) 11 is for dedicated instruction allocation.
- the dedicated instruction is a SIMD arithmetic instruction or a dedicated instruction for encryption.
- the logical core 1 of the physical core 1 for dedicated instruction allocation is a core that executes a dedicated instruction process (SIMD).
- SIMD dedicated instruction process
- the logical core 2 of the physical core 1 for dedicated instruction allocation is a core that executes a dedicated instruction, but is not assigned here.
- logical core 1 of physical core 2 is a core that executes process 1 group, which are normal instructions
- logical core 2 is a core that executes process 2 group, which are normal instructions
- logical core 1 of physical core 3 is a core that executes process 3 group, which are normal instructions, and no process group is assigned to logical core 2.
- the present invention was made in light of this background, and aims to improve core utilization and reduce the number of CPU operating cores.
- a task scheduler device that, in a computing system that executes dedicated instructions specialized for a specific operation, uses hardware multithreading to make one physical core appear as multiple logical cores, and assigns an execution process of the dedicated instruction to the logical core, the task scheduler device comprising: a dedicated instruction execution detection unit that detects the execution of the dedicated instruction; a dedicated instruction execution affected core identification unit that identifies a logical core whose operating frequency will decrease due to the execution of the dedicated instruction and that operates on the same physical core as the execution core of the dedicated instruction; a low-frequency tolerant process allocation determination unit that determines, for the logical core whose operating frequency will decrease identified by the dedicated instruction execution affected core identification unit, to identify a process that satisfies a predetermined performance requirement even when operating at a low frequency; and a process core allocation unit that assigns the process identified by the low-frequency tolerant process allocation determination unit to the logical core whose operating frequency will decrease.
- the present invention makes it possible to improve core utilization and reduce the number of CPU operating cores.
- FIG. 1 is a schematic configuration diagram of a computing system including a task scheduler device according to an embodiment of the present invention. This is an example configuration in which a task scheduler device of a computing system according to an embodiment of the present invention is placed in user space. 1 is a configuration example in which a task scheduler device of a computing system according to an embodiment of the present invention is arranged in an OS. A diagram showing an example of application of a computing system according to an embodiment of the present invention to a task scheduler device in a server virtualization environment having a general-purpose Linux kernel (registered trademark) and a VM configuration.
- a general-purpose Linux kernel registered trademark
- FIG. 1 is a diagram showing, in the form of a table, the structure of a management database held by a dedicated instruction execution detection unit of a task scheduler device of a computing system according to an embodiment of the present invention.
- FIG. 1 is a diagram showing, in the form of a table, the structure of a database held by an active process operating frequency performance effect determination unit of a task scheduler device of a computing system according to an embodiment of the present invention.
- FIG. 11 is a diagram showing an operation pattern of a task scheduler device in a case where a core of a running process of the task scheduler device of the computing system according to the embodiment of the present invention is migrated.
- FIG. 1 is a diagram showing, in the form of a table, the structure of a management database held by a dedicated instruction execution detection unit of a task scheduler device of a computing system according to an embodiment of the present invention.
- FIG. 1 is a diagram showing, in the form of a table, the structure of a database held by an active process operating frequency
- FIG. 11 is a flowchart of an operation pattern of a task scheduler device in a case where a core of a running process of the task scheduler device of the computing system according to the embodiment of the present invention is migrated.
- 1 is a diagram showing an operation pattern of a task scheduler device in a case where a new startup process of the task scheduler device of the computing system according to an embodiment of the present invention is scheduled;
- FIG. 10 is a flowchart of an operation pattern of a task scheduler device when scheduling a new startup process of the task scheduler device of the computing system according to the embodiment of the present invention.
- 11 is a diagram showing an operation pattern of a task scheduler apparatus for collecting (periodically executed) information on frequency effects of each process of the task scheduler apparatus of the computing system according to the embodiment of the present invention.
- 11 is a flowchart of an operation pattern of a task scheduler apparatus for collecting (periodically executed) information on frequency effects of each process of the task scheduler apparatus of the computing system according to an embodiment of the present invention.
- 1 is a hardware configuration diagram showing an example of a computer that realizes the functions of a task scheduler device of a computing system according to an embodiment of the present invention.
- FIG. 1 is a diagram showing a configuration of a CPU having a SIMD unit that executes SIMD instructions.
- FIG. 15 is a diagram showing execution instructions and operating frequencies of the logic core shown in FIG. 14 .
- FIG. 1 is a diagram showing a core allocation status in a case where a CPU has multiple physical cores and each of the multiple physical cores is operated as if it were two logical cores in existing technology 1.
- FIG. 13 is a diagram showing the cumulative allocated CPU time of a group of processes allocated according to the core allocation status in a case where a CPU has multiple physical cores and each of the multiple physical cores is operated as if it were two logical cores in existing technology 1.
- FIG. 13 is a diagram showing a core allocation status in the case where a CPU has multiple physical cores and each of the multiple physical cores is operated as if it were two logical cores in the existing technique 2.
- FIG. 1 is a schematic diagram showing the configuration of a computing system including a task scheduler device according to an embodiment of the present invention.
- This embodiment is an example in which the present invention is applied to a CPU as a computing system, but it can also be applied to processors such as a GPU (Graphic Processing Unit), an FPGA (Field Programmable Gate Array), and an ASIC (Application Specific Integrated Circuit).
- processors such as a GPU (Graphic Processing Unit), an FPGA (Field Programmable Gate Array), and an ASIC (Application Specific Integrated Circuit).
- the computing system 1000 includes a CPU 10 which is hardware (HW), physical cores (physical core 1, physical core 2, ..., physical core N) 11 (processors) on the CPU 10, an OS 20, a userland 30, and a task scheduler device 100 which is a server.
- the computing system 1000 executes dedicated instructions specialized for specific operations, including SIMD instructions or dedicated instructions for encryption.
- the computing system 1000 includes a task scheduler device 100 that assigns execution processes of the dedicated instructions to logical cores by using hardware multithreading that artificially makes one physical core appear as multiple logical cores.
- the prerequisite configuration of the computing system 1000 is summarized below.
- Server The server (task scheduler device 100) is equipped with a CPU (processor).
- the CPU has one or more physical cores.
- the CPU supports hardware multithreading technology and can make a single physical core appear as multiple logical cores.
- Processes There are three types of processes that run on the server (task scheduler device 100): 1. Dedicated instruction execution process 2. Process suitable for low frequency operation This process has characteristics such as a large amount of I/O (input/output), a long CPU latency, and loose real-time requirements. 3. Processes that are not suitable for low-frequency operation: These processes are characterized by a large amount of calculation processing by the CPU and strict real-time requirements.
- each process has different characteristics, such as the ratio of dedicated command execution, the number of input/output processes, and processing priority.
- the CPU 10 includes physical cores (physical core 1, physical core 2, ..., physical core N) 11. Specifically, the physical cores (physical core 1, physical core 2, ..., physical core N) 11 are CPU cores (CPUcore #0, CPUcore #1, ...) (not shown).
- the physical cores 11 include logical core 1 and logical core 2 that execute two threads per core by using hyperthreading that makes one physical core appear as two.
- the OS 20 includes a process execution priority management unit 21 and a process IO amount recording unit 22 .
- the process execution priority management unit 21 obtains a list of processes running on the server and their respective execution priorities. Specifically, the process execution priority management unit 21 obtains the execution priority (e.g., nice value) of each process by using a nice command.
- the process IO amount recording unit 22 obtains a list of processes running on the server (task scheduler device 100) and the input/output amount of each process. Specifically, the process IO amount recording unit 22 obtains the IO amount (e.g., IOStat) of each process by using the IOStat command.
- the IO amount e.g., IOStat
- the task scheduler device 100 includes a dedicated instruction execution detection unit 110 (dedicated instruction detection unit), a dedicated instruction execution affected core identification unit 120 (core identification unit), a running process operating frequency performance impact determination unit 130 (performance impact determination unit), a low frequency acceptable process allocation determination unit 140 (acceptable process determination unit), a process core allocation unit 150, and a new process startup/low frequency operation feasibility determination unit 160.
- FIG. 2 shows an example of a configuration in which the task scheduler apparatus 100 in FIG. 1 is arranged in the user space. 2, the task scheduler device 100 is placed in a user space 40.
- the computing system 1000 executes an application (APL) 1 placed in the user space 40.
- the computing system 1000 executes the APL 1 on a server having an OS.
- the present invention can be applied when there is a thread in user space 40, such as Intel DPDK (Intel Data Plane Development Kit) (DPDK) (registered trademark).
- Intel DPDK Intelligent Data Plane Development Kit
- DPDK Registered trademark
- FIG. 3 shows an example of a configuration in which the task scheduler apparatus 100 in FIG. 3, the task scheduler device 100 is arranged in the OS 20.
- the computing system 1000 executes the APL 1 on a server having the OS 20.
- This invention can be applied when there is a thread inside the kernel, such as New API (NAPI) (registered trademark).
- NAPI New API
- the present invention can be applied to a configuration example in which the task scheduler device 100 is arranged in the user space 40.
- the OS is not limited
- the server virtualization environment is not limited.
- VM configuration ⁇ Example of application to VM configuration>
- SFC Service Function Chaining
- the computing system 1000A includes a CPU 10, physical cores (physical core 1, physical core 2, ..., physical core N) 11 (processor) on the CPU 10, a VM 50, a virtual machine monitor unit (VMM: Virtual Machine Monitor) 51 on the VM 50, an OS 20, a userland 30, and a task scheduler device 100A.
- the virtual machine monitor unit (VMM) 51 virtualizes a computer and allows multiple different OSs to run in parallel without interfering with each other.
- the virtual machine monitor unit (VM) 51 creates a virtual machine (VM) that behaves like a physical computer to software, and can run various types of OSs on it.
- Each of the multiple VMs (VM1, VM2) has a process execution priority management unit 21 and a process IO amount recording unit 22 in the OS 20, and a dedicated command execution detection unit 110 and a dedicated command execution affected core identification unit 120 in the userland 30.
- the task scheduler apparatus 100A includes an active process operating frequency performance effect determination unit 130, a low frequency tolerant process allocation determination unit 140, a process core allocation unit 150, and a new process startup/low frequency operation availability determination unit 160.
- the task scheduler apparatus 100A is not placed in the userland 30 of a single OS 20, but is placed separately outside and operates as a so-called controller function unit.
- the task scheduler apparatus 100A performs core allocation based on information about processes across multiple VMs in a VM configuration.
- the dedicated command execution detection unit 110 detects (determines) whether or not a dedicated command has been executed in a currently running process. Specifically, the dedicated command execution detection unit 110 receives an identifier (such as a PID (Process IDentifier)) of a process for which it is to determine whether or not a dedicated command is to be executed, and outputs whether or not the process executes a dedicated command.
- an identifier such as a PID (Process IDentifier)
- the dedicated command execution detection unit 110 judges whether or not a process uses a dedicated command based on information such as the process name.
- Fig. 5 is a table showing the structure of a management database held by the dedicated command execution detection unit 110.
- Fig. 5 is an example of a management database for a process that executes a dedicated command.
- a process name (signal_p, fec_dec, fec_enc, fft_process) is registered for each ID.
- the process names (signal_p, fec_dec, fec_enc, fft_process) are all processes that execute dedicated instructions.
- the dedicated command execution detection unit 110 compares the name of the process being executed with a list of processes that use dedicated commands registered in advance (FIG. 5), and determines whether or not a dedicated command has been executed.
- Dynamic detection method A special register in the CPU (for example, the XCR0 register that indicates the changed data area of SIMD in an x86 processor) is used to determine whether a special instruction has been executed. In this case, when switching the execution of the process to be detected, the scheduler of the OS kernel checks the change in the value of this register.
- the dedicated instruction execution affected core identifying unit 120 identifies a logical core whose operating frequency is reduced due to the execution of a dedicated instruction and which operates on the same physical core as the dedicated instruction execution core.
- the dedicated instruction execution affected core identifying unit 120 identifies a core executing an input process ID and a core affected by the process ID.
- the dedicated instruction execution affected core identifying unit 120 receives the number of a process executing a dedicated instruction and outputs the number of a CPU core affected by the dedicated instruction.
- the pidstat command in Linux can be used to identify the core on which a process is running from its process ID (PID).
- PID process ID
- References for the pidstat command include the pidstat(1) Linux manual page, [online], [searched on September 6, 2022], Internet URL: https://man7.org/linux/man-pages/man1/pidstat.1.html.
- the dedicated instruction execution affected core identification unit 120 extracts the operating core information number from the command output, and identifies and outputs the CPU core number that operates on the same physical core as the relevant core as CPU core information (e.g., cpuinfo in Linux).
- the active process operating frequency performance effect determiner 130 determines the performance effect of the operating frequency of an active process.
- the active process operating frequency performance effect determination unit 130 determines the performance effect of the operating frequency for all processes operating in the server (task scheduler device 100). Specifically, the active process operating frequency performance effect determination unit 130 is started at regular intervals (e.g., 10 seconds) or when a process is newly started or terminated, and determines the performance effect of the CPU operating frequency for each process.
- Static Method is a method for determining the effect of the operating frequency based on information such as the process name.
- Fig. 6 is a diagram showing, in the form of a table, the structure of a database held by the active process operating frequency performance effect determiner 130.
- Fig. 6 is an example of a database of processes for determining the frequency effect of a process. 6, the process name (nic_io, calc_crc, packet_process) and the performance impact of the frequency are registered for each ID. The process names (nic_io, calc_crc, packet_process) are all processes for determining the frequency impact of the process.
- the running process operating frequency performance impact determination unit 130 compares the name of the running process with a list of processes (list of process IDs) ( Figure 6) running on the server (task scheduler device 100) that has been registered in advance, and determines the performance impact of the running process operating frequency.
- Dynamic method is a method for determining the impact of changing the frequency of each process based on the execution priority (e.g., nice value) of each process in the process execution priority management unit 21 and the IO amount (e.g., iostat) results in the process IO amount recording unit 22.
- execution priority e.g., nice value
- IO amount e.g., iostat
- the active process operating frequency performance impact determination unit 130 obtains the execution priority (nice value) and IO amount (iostat) of each process from the process execution priority management unit 21 and the process IO amount recording unit 22, combines these two values to determine the impact level, and determines the impact of the operating frequency performance of the active process based on this impact level.
- the active process operating frequency performance impact determination unit 130 obtains the priority N (e.g., -20 to 20) of each process from the process execution priority management unit 21, and obtains the IO amount (X Mbytes/s) from the process IO amount recording unit 22.
- the low frequency tolerant process allocation determination unit 140 determines a process that satisfies a predetermined performance requirement even when operating at a low frequency for the logical core whose operating frequency is reduced and that is identified by the dedicated instruction execution affected core identification unit 120 . For example, the low frequency tolerant process allocation judgment unit 140 selects a pair of a process that will be less affected when operating at a low frequency and a core that will be affected by a dedicated instruction based on information on the number of the core affected by the dedicated instruction and information on the performance impact due to the operating frequency of each process.
- the low-frequency-tolerant process allocation judgment unit 140 selects processes that may be operated at low frequencies from the input process ID list, selects the CPU cores that are affected by the dedicated instructions, and outputs them as pairs.
- the process ID selection logic at this time is to select the process with the highest tolerance for operating at low frequencies.
- Input/output of low-frequency tolerant process allocation determination unit 140 A description will now be given of inputs and outputs to and from the low-frequency tolerant process allocation decision unit 140.
- Input 1 The dedicated instruction execution affected core identifying unit 120 inputs the number of the CPU core affected by the dedicated instruction.
- Input 2 A list of IDs of processes running on the server in question and the effect of each operating frequency are input from the active process operating frequency performance effect determination unit 130 .
- the output of the low-frequency tolerant process allocation decision unit 140 is as follows: Output: A pair of the process ID capable of operating at a low frequency and the ID of the core affected by the dedicated instruction is output.
- the operation of the low-frequency tolerant process allocation decision unit 140 will be described. 1 has 10 physical cores (No. 1 to No. 10), and six processes (A, B, C, D, E, and F) are running. In this situation, the low frequency tolerant process allocation judgment unit 140 makes the following judgment.
- the low-frequency tolerant process allocation judgment unit 140 receives the following two inputs, input 1 and input 2.
- Input 1 "Information on the number of the core affected by the dedicated instruction" ⁇ Affected (frequency drop): No.1, No.2, No.3, No.4, No.5, No.6 ⁇ No effect: No.7, No.8, No.9, No.10
- Input 2 "A list of process IDs running on the server in question and their characteristics (the extent to which they are affected by the operating frequency)" ⁇ Affected (performance degradation): A, B, C, D ⁇ Not affected: E, F
- the low-frequency-tolerant process allocation judgment unit 140 selects processes E and F from the process ID list as "processes that may be operated at a low frequency.” As the cores to run these processes, "No.1” and “No.2” are selected from “No.1, No.2, No.3, No.4, No.5, No.6". Finally, two pairs are output: (core No. 1 and process E) and (core No. 2 and process F).
- the process core allocation unit 150 allocates the process identified by the low frequency tolerant process allocation determination unit 140 to a logical core with a lower operating frequency. For example, the process core allocation unit 150 allocates a process having an input process ID to a process to be run on the input CPU core. Note that for the input cores that are affected by the performance impact, information is stored as a core list (not shown). The process core allocation unit 150 performs the following input and output. Input (when changing core allocation for an existing process): Input a pair of process ID and CPU core ID (when starting a new process): Command name Output: None
- Pattern 1 OS Scheduler Method No. 1
- the OS scheduler method modifies the task scheduler of the OS kernel to perform scheduling to a specific CPU core.
- Part 2 This is a method of changing the scheduling to a specific CPU core by changing the CPU allocation of a running task, such as the sched_setaffinity() function, [online], [searched on September 6, 2022], Internet ⁇ URL: https://linuxjm.osdn.jp/html/LDP_man-pages/man2/sched_setaffinity.2.html>.
- Pattern 2 Implementation method in the task scheduler of an application
- the implementation method in the task scheduler of an application is a form in which if the application has its own task scheduler, this task scheduler assigns the CPU core.
- a mechanism for dynamically specifying the CPU core to which the task is scheduled is used, such as pthread_setaffinity() function [online] [searched on September 6, 2022], Internet ⁇ URL: https://linuxjm.osdn.jp/html/LDP_man-pages/man3/pthread_setaffinity_np.3.html>, and the relevant process and CPU core are specified.
- Pattern 3 Method of application when starting a new process taskset, [online], [searched on September 6, 2022], Internet ⁇ URL: https://www.man7.org/linux/man-pages/man1/taskset.1.html>
- a method is used to specify the CPU core on which it will run, such as the command, so that it runs on a specific core.
- the low frequency tolerant process allocation determination unit 140 outputs two pairs (core No. 1 and process E) and (core No. 2 and process F) to the process core allocation unit 150.
- the process core allocation unit 150 receives two pairs (core No. 1 and process E) and (core No. 2 and process F) from the low frequency tolerant process allocation determination unit 140, and sets process E to run on core No. 1 and process F to run on core No. 2.
- the new process startup/low frequency operation availability determination unit 160 receives and outputs command names.
- the new process activation/low frequency operation determination unit 160 determines whether an input command can operate at a low frequency, and if so, outputs the command name to the process core allocation unit 150 to operate on a CPU core affected by the dedicated instruction. Specifically, the new process activation/low frequency operation determination unit 160 compares the input command name with command names in an internal database and determines whether operation at a low frequency is possible. If the new process activation/low frequency operation determination unit 160 determines that operation at a low frequency is possible, it outputs the command name to the process core allocation unit 150.
- Fig. 7 is a diagram showing an operation pattern of the task scheduler device when a core of a running process is moved
- Fig. 8 is a flowchart thereof.
- the functional units of the corresponding operations are indicated by thick blocks.
- the dedicated command execution detection unit 110 receives an identifier (such as a PID) of a process for which it is to determine whether or not a dedicated command is to be executed, and outputs whether or not the process in question executes a dedicated command.
- an identifier such as a PID
- step S12 the dedicated command execution detection unit 110 determines whether or not execution of a dedicated command has been detected. If execution of a dedicated command has not been detected (S12: No), the process returns to step S11.
- step S13 the dedicated instruction execution affected core identification unit 120 identifies the core executing the input process ID and the core affected by it. Specifically, the dedicated instruction execution affected core identification unit 120 accepts the number of the process executing the dedicated instruction and outputs the number of the CPU core affected by the dedicated instruction (symbol bb in FIG. 7).
- the low-frequency tolerant process allocation determination unit 140 refers to the information collection process of FIG. 12 being executed by the active process operating frequency performance impact determination unit 130, and receives the determination result of the impact of the operating frequency performance of the active process from the active process operating frequency performance impact determination unit 130 (symbol cc in FIG. 7).
- step S15 the low-frequency tolerant process allocation determination unit 140 determines the allocation of processes that are less affected by the dedicated instructions even if they operate at low frequencies to cores affected by the dedicated instructions, based on the information on the numbers of the cores affected by the dedicated instructions and the performance impact information due to the operating frequency of each process.
- step S16 the low-frequency-tolerant process allocation judgment unit 140 determines whether or not there has been a change in the assigned core of the low-frequency process. If there has been no change in the assigned core of the low-frequency process (S16: No), the process returns to step S11.
- step S17 the process core allocation unit 150 runs the process having the input process ID on the input CPU core.
- the process core allocation unit 150 changes the core allocation for the input cores that are affected by the performance (symbol ee in FIG. 7), retains the information as a list of cores (not shown), and ends the processing of this flow.
- Fig. 9 is a diagram showing an operation pattern of the task scheduler device when scheduling a new startup process
- Fig. 10 is a flowchart thereof.
- the functional units of the corresponding operations are indicated by thick blocks.
- the new process startup/low frequency operation determination unit 160 determines whether the input command is capable of low frequency operation, and if so, outputs the command name to the process core allocation unit 150 so that the command can be operated on the CPU core affected by the dedicated instruction (symbol ff in Figure 9).
- step S22 the process core allocation unit 150 runs the process having the input process ID on the input CPU core.
- the process core allocation unit 150 changes the core allocation for the input cores that will be affected by the performance (symbol ee in FIG. 9), saves the information as a list of cores, and ends the processing of this flow.
- FIG. 11 is a diagram showing an operation pattern of a task scheduler device for collecting information on the frequency effect of each process (executed periodically), and Fig. 12 is a flowchart thereof.
- the functional units of the corresponding operations are indicated by thick blocks.
- step S31 the active process operating frequency performance impact determination unit 130 determines the performance impact of the operating frequency for all processes operating within the server (task scheduler device 100). Specifically, the active process operating frequency performance impact determination unit 130 is started at regular intervals (e.g., 10 seconds) or when a process is newly started or terminated, and determines the performance impact of the CPU operating frequency on each process.
- the active process operating frequency performance impact determination unit 130 is started at regular intervals (e.g., 10 seconds) or when a process is newly started or terminated, and determines the performance impact of the CPU operating frequency on each process.
- step S32 the process execution priority management unit 21, based on an instruction from the active process operating frequency performance impact determination unit 130, obtains a list of IDs of processes operating within the server (task scheduler device 100) and their respective execution priorities, and sends them to the active process operating frequency performance impact determination unit 130 (symbol gg in FIG. 11). Specifically, the process execution priority management unit 21 obtains the execution priority of each process using the nice command.
- step S33 the active process operating frequency performance impact determination unit 130 is started at regular intervals (e.g., 10 seconds) or when a process is newly started or terminated, and determines the performance impact of the CPU operating frequency on each process.
- step S34 the process IO amount recording unit 22, based on an instruction from the active process operating frequency performance impact determination unit 130, acquires a list of processes operating within the server (task scheduler device 100) and their respective Input/Output amounts, and sends them to the active process operating frequency performance impact determination unit 130 (symbol hh in FIG. 11). Specifically, the process IO amount recording unit 22 acquires the IO amount of each process by the iostat command, and ends the processing of this flow.
- the task scheduler apparatus 100, 100A (FIGS. 1 to 4) according to the above-described embodiment is realized by a computer 900 having a configuration as shown in FIG. 13, for example.
- FIG. 13 is a hardware configuration diagram showing an example of a computer 900 that realizes the functions of the task scheduler apparatuses 100 and 100A (FIGS. 1 to 4).
- the computer 900 has a CPU 901 , a ROM 902 , a RAM 903 , a HDD 904 , a communication interface (I/F) 906 , an input/output interface (I/F) 905 , and a media interface (I/F) 907 .
- the CPU 901 operates based on a program stored in the ROM 902 or HDD 904, and controls each part of the task scheduler device 100, 100A (FIGS. 1 to 4).
- the ROM 902 stores a boot program executed by the CPU 901 when the computer 900 is started, programs that depend on the hardware of the computer 900, etc.
- the CPU 901 controls an input device 910 such as a mouse or keyboard, and an output device 911 such as a display, via an input/output I/F 905.
- the CPU 901 acquires data from the input device 910 via the input/output I/F 905, and outputs generated data to the output device 911.
- a GPU Graphics Processing Unit
- a processor may be used as a processor in addition to the CPU 901.
- the HDD 904 stores the programs executed by the CPU 901 and the data used by the programs.
- the communication I/F 906 receives data from other devices via a communication network (e.g., NW (Network) 920) and outputs the data to the CPU 901, and also transmits data generated by the CPU 901 to other devices via the communication network.
- NW Network
- the media I/F 907 reads the program or data stored in the recording medium 912 and outputs it to the CPU 901 via the RAM 903.
- the CPU 901 loads the program related to the target processing from the recording medium 912 onto the RAM 903 via the media I/F 907, and executes the loaded program.
- the recording medium 912 is an optical recording medium such as a DVD (Digital Versatile Disc) or a PD (Phase change rewritable Disk), a magneto-optical recording medium such as an MO (Magneto Optical disk), a magnetic recording medium, a conductive memory tape medium, or a semiconductor memory, etc.
- the CPU 901 of the computer 900 realizes the functions of the task scheduler device 100, 100A by executing a program loaded onto the RAM 903.
- the data in the RAM 903 is stored in the HDD 904.
- the CPU 901 reads and executes a program related to the target processing from the recording medium 912.
- the CPU 901 may read a program related to the target processing from another device via a communication network (NW 920).
- the task scheduler device 100, 100A assigns dedicated instruction execution processes to logical cores using hardware multithreading that artificially makes one physical core appear as multiple logical cores, and includes a dedicated instruction execution detection unit 110 (dedicated instruction detection unit) that detects the execution of a dedicated instruction, a dedicated instruction execution affected core identification unit 120 (core identification unit) that identifies a logical core whose operating frequency is reduced due to the execution of the dedicated instruction and that operates on the same physical core as the dedicated instruction execution core, a low frequency allowable process allocation determination unit 140 (allowable process determination unit) that determines to identify a process that satisfies a predetermined performance requirement even when operating at a low frequency for the logical core whose operating frequency is reduced identified by the dedicated instruction execution affected core identification unit 120, and a process core allocation unit 150 that assigns the process identified by the low frequency allowable process
- the task scheduler apparatus 100, 100A can reduce the number of execution physical cores while allocating the necessary CPU time to each process, which includes a process for executing dedicated instructions specialized for a specific operation, such as an SIMD instruction or a dedicated instruction for encryption. Reducing the number of execution physical cores can reduce power consumption. That is, a core whose operating frequency is reduced is identified, and a process that satisfies a predetermined performance requirement even when operated at a low frequency (a process that is less affected even when operated at a low frequency) is scheduled for the identified logical core whose operating frequency is reduced to the same physical core as SIMD execution, thereby increasing the core utilization rate. This improves the core utilization rate, reduces the number of CPU operating cores, and reduces power consumption.
- vRAN vDU
- the present task scheduler device 100A can improve the core utilization rate and reduce the number of CPU operating cores in vRAN.
- Requirement 1 Each process is assigned the CPU processing time it requires (performance improvement effect)
- Requirement 2 Reduction in the number of execution cores (minimizing the number of execution cores required to execute each process) (power saving effect)
- the above requirements 1 and 2 can be achieved.
- the dedicated command execution detection unit 110 stores a list of processes that use pre-registered dedicated commands, and compares the process list with the name of the process currently being executed to detect whether a dedicated command has been executed.
- the task scheduler devices 100 and 100A can improve core utilization, reduce the number of CPU operating cores, and reduce power consumption.
- the low-frequency tolerant process allocation determination unit 140 selects pairs of processes that may be operated at low frequencies and cores that are affected by dedicated instructions, based on information on the numbers of cores affected by dedicated instructions and information on the performance impact of the operating frequency of each process.
- the task scheduler devices 100 and 100A select processes that may be run at low frequencies and CPU cores that are affected by dedicated instructions, and output them as pairs, making it possible to select various combinations, such as selecting the one with the highest tolerance for running at low frequencies.
- the task scheduler devices 100 and 100A also make it possible to select a priority order according to the tolerance.
- the task scheduler device 100, 100A (FIGS. 1 to 4) includes an active process operating frequency performance impact determination unit 130 (performance impact determination unit) that determines the performance impact of the operating frequency of an active process, and the active process operating frequency performance impact determination unit 130 compares a preregistered process list (process ID list) with the name of the process being executed to determine the impact of the operating frequency on the performance of the active process.
- active process operating frequency performance impact determination unit 130 that determines the performance impact of the operating frequency of an active process
- process ID list preregistered process list
- the task scheduler devices 100 and 100A can determine the performance impact of the operating frequency using a static method for determining the impact of the operating frequency based on information such as the process name.
- the static method involves a comparison between a list of processes registered in advance and the name of the process currently being executed, so the amount of calculation is small and the determination can be made quickly.
- the task scheduler device 100, 100A (FIGS. 1 to 4) includes an active process operating frequency performance impact determination unit 130 (performance impact determination unit) that determines the performance impact of the operating frequency of an active process.
- the active process operating frequency performance impact determination unit 130 acquires the execution priority and process input/output amount of each process, integrates the execution priority and the process input/output amount to determine the impact level, and determines the impact of the operating frequency performance of the active process based on this impact level.
- the task scheduler devices 100 and 100A can determine the performance impact of the operating frequency by a dynamic method of determining the performance impact of the operating frequency of a running process.
- the dynamic method using calculations can dynamically determine the performance impact of the operating frequency. Even in cases where the static method cannot fully respond, it is possible to adaptively determine the performance impact of the operating frequency.
- the computing system 1000, 1000A executes dedicated instructions specialized for specific calculations, and includes a task scheduler device 100, 100A (Figs. 1 to 4) that assigns the dedicated instruction execution process to a logical core using hardware multithreading that makes one physical core appear as multiple logical cores.
- the task scheduler device 100, 100A (Figs. 1 to 4)
- a dedicated instruction execution detection unit 110 that detects the execution of a dedicated instruction
- a dedicated instruction execution affected core identification unit 120 that identifies a logical core whose operating frequency will decrease due to the execution of the dedicated instruction and that operates on the same physical core as the dedicated instruction execution core
- a low frequency tolerant process allocation determination unit 140 that determines a process that satisfies a predetermined performance requirement even when operating at a low frequency for the logical core whose operating frequency will decrease that is identified by the dedicated instruction execution affected core identification unit 120
- a process core allocation unit 150 that assigns the process identified by the low frequency tolerant process allocation determination unit 140 to the logical core whose operating frequency will decrease.
- Computing systems 1000, 1000A are computing systems in which a CPU (processor) on a server supports general-purpose instructions and dedicated instructions specialized for specific operations (SIMD operation instructions and dedicated instructions for encryption).
- the above processor can be similarly applied to processors other than a CPU, such as a GPU/FPGA/ASIC, if the processor has a SIMD calculation execution core specification function.
- the dedicated instruction may be any instruction that is specialized for a particular operation.
- a dedicated instruction for SIMD instructions or encryption is used as an example, but SIMD/encryption is merely an example, and the same can be applied to dedicated instructions other than SIMD/encryption.
- the above-mentioned configurations, functions, processing units, processing means, etc. may be realized in hardware, in part or in whole, for example by designing them as integrated circuits. Further, the above-mentioned configurations, functions, etc. may be realized by software that causes a processor to interpret and execute programs that realize each function. Information on the programs, tables, files, etc. that realize each function can be stored in a memory, a recording device such as a hard disk or SSD (Solid State Drive), or a recording medium such as an IC (Integrated Circuit) card, SD (Secure Digital) card, or optical disc.
- a recording device such as a hard disk or SSD (Solid State Drive)
- a recording medium such as an IC (Integrated Circuit) card, SD (Secure Digital) card, or optical disc.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Hardware Redundancy (AREA)
Abstract
タスクスケジューラ装置(100,100A)は、専用命令を実行することを検知する専用命令実行検知部(110)と、専用命令の実行に起因し、専用命令実行コアと同じ物理コアで動作する、動作周波数の低下する論理コアを特定する専用命令実行影響コア特定部(120)と、専用命令実行影響コア特定部(120)が特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行う低周波数許容プロセス割当判断部(140)と、低周波数許容プロセス割当判断部(140)が特定したプロセスを、動作周波数の低下する論理コアに割当てるプロセスコア割当部(150)と、を備える。
Description
本発明は、タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラムに関する。
CPUで信号・メディア処理を行うアプリケーション(例えば、vRAN (virtual Radio Access Network)L1信号処理やDeep-Learning)では、高スループットな演算処理のために、CPUのSIMD(Single Instruction Multiple Data)拡張命令セット(例えば、Intel SSE/AVX512)を多用する。
近年のSIMD拡張命令セットは、消費電力および発熱量が大きく、SIMD命令を実行するコアの周波数が一時的に低下する(非特許文献1参照)。
近年のSIMD拡張命令セットは、消費電力および発熱量が大きく、SIMD命令を実行するコアの周波数が一時的に低下する(非特許文献1参照)。
SIMD演算/(以下の説明において、「/」は「または」を表記する)命令における周辺技術動向について述べる。学術レベルでは、下記がある。
2019年から、学術レベルで、実行時の周波数の低下を考慮したスケジューリング技術が提案されている。
非特許文献2に記載の技術は、SIMD演算による周波数低下の影響を受けたプロセスを特定し、長い時間をかけてスケジューリングによる補償で公平性を確保する(「公平性確保」)。
非特許文献3に記載の技術は、SIMD命令を実行するコアを専用化するスケジューリングにより干渉を排除する(「干渉の排除」)。
2019年から、学術レベルで、実行時の周波数の低下を考慮したスケジューリング技術が提案されている。
非特許文献2に記載の技術は、SIMD演算による周波数低下の影響を受けたプロセスを特定し、長い時間をかけてスケジューリングによる補償で公平性を確保する(「公平性確保」)。
非特許文献3に記載の技術は、SIMD命令を実行するコアを専用化するスケジューリングにより干渉を排除する(「干渉の排除」)。
また、市中の実ユースケースでは、下記がある。
通常、SIMDユニットの活用は限定的であり、一部処理オフロードにとどまるため、大きな問題にはなっていない。例えば、SSL(Secure Sockets Layer)の暗号化処理で、性能低下の報告がある程度である。
通常、SIMDユニットの活用は限定的であり、一部処理オフロードにとどまるため、大きな問題にはなっていない。例えば、SSL(Secure Sockets Layer)の暗号化処理で、性能低下の報告がある程度である。
一方、vRAN(vDU)は、SIMD演算をフル活用するため、コア効率を上げようとすると、課題となる可能性が高い。ここで、上記vRAN(vDU)は、無線信号処理を行う基地局(BBU:Broad Band Unit)を汎用サーバで行うvRANにおいて、基地局機能をRU(Radio Unit)/DU(Distributed Unit)/CU(Centralized Unit)に分離する場合の、DUをいう。
また、インテル(登録商標)が開発したFlexRANソフトウェア・リファレンス・プラットフォームがある。FlexRANは、ソフトウェア・ベースの無線基地局を構築するRANのレイヤ1(L1)機能の主要ビルディング・ブロックである。現状のFlexRANは、全コアを低周波数で動作させ、低周波数でも性能を充足できるCPUを事前準備している。
Intel-avx-512-instruction-set,[online],[令和4年9月6日検索],インターネット 〈URL :https://builders.intel.com/docs/networkbuilders/intel-avx-512-instruction-set-for-packet-processing-technology-guide-1617440657.pdf (p15)〉
Fair Scheduling for AVX2 and AVX-512 Workloads, Mathias Gottschlag, usenix ATC 2021,[online],[令和4年9月6日検索],インターネット 〈URL :https://www.usenix.org/conference/atc21/presentation/gottschlag〉
Automatic Core Specialization for AVX-512 Applications, Mathias Gottschlag SYSTOR '20: Proceedings of the 13th ACM International Systems and Storage Conference,[online],[令和4年9月6日検索],インターネット 〈URL :https://dl.acm.org/doi/10.1145/3383669.3398282〉
計算機システムにおいて、計算機(以下、サーバ)上のCPUが、汎用の命令と、特定の演算に特化した専用命令(SIMD演算命令や、暗号化のための専用命令)をサポートする構成がある。暗号化のための専用命令は、例えば、「https://www.isus.jp/hpc/intel-advanced-encryption-standard-instructions-aes-ni/」に示される。この構成では、専用命令の実行時に、CPU物理コアの周波数が変動する事象が生じる。
[SIMD演算によるコア動作周波数低下事象]
図14および図15を参照して、SIMD演算によるコア動作周波数低下事象について説明する。
図14は、SIMD命令を実行するSIMDユニットを備えるCPUの構成を示す図である。
図14に示すように、CPU10は、4つの物理コア(CPUcore)11と、4つの物理コア11それぞれに設置されSIMD命令を実行するSIMDユニット12と、を備える。本明細書において、物理コア11は、2つ以上の処理を同時に実行する単一のCPUcoreである。
図14の拡大図に示すように、物理コア11は、コアごとに2つのスレッドを実行する論理コア1と論理コア2を有する。図14に示す4つの物理コア11は、コアごとに2つのスレッドを実行するため、8つの論理コアがある。すなわち、論理コアは、物理コア11の数にハードウェアマルチスレッディング技術(例えば、Intel Hyper Threading)を使用して各コアで実行できるスレッドの数を掛けたものである。このハイパースレッディングにより、単一の物理コア11を2つの論理コアのように動作させることができる。
図14および図15を参照して、SIMD演算によるコア動作周波数低下事象について説明する。
図14は、SIMD命令を実行するSIMDユニットを備えるCPUの構成を示す図である。
図14に示すように、CPU10は、4つの物理コア(CPUcore)11と、4つの物理コア11それぞれに設置されSIMD命令を実行するSIMDユニット12と、を備える。本明細書において、物理コア11は、2つ以上の処理を同時に実行する単一のCPUcoreである。
図14の拡大図に示すように、物理コア11は、コアごとに2つのスレッドを実行する論理コア1と論理コア2を有する。図14に示す4つの物理コア11は、コアごとに2つのスレッドを実行するため、8つの論理コアがある。すなわち、論理コアは、物理コア11の数にハードウェアマルチスレッディング技術(例えば、Intel Hyper Threading)を使用して各コアで実行できるスレッドの数を掛けたものである。このハイパースレッディングにより、単一の物理コア11を2つの論理コアのように動作させることができる。
図15は、図14に示す論理コアの実行命令と動作周波数を示す図である。図15の上段図が図14に示す論理コアの実行命令を示し、図15の下段図が論理コアの実行命令実行時のコア動作周波数を示している。
図15の上段図に示すように、論理コア1命令は、通常命令、SIMD命令、通常命令を実行する。論理コア2命令は、論理コア1命令がSIMD命令を実行する間、通常命令を実行する(図15の上段図の符号a)。
図15の上段図に示すように、論理コア1命令は、通常命令、SIMD命令、通常命令を実行する。論理コア2命令は、論理コア1命令がSIMD命令を実行する間、通常命令を実行する(図15の上段図の符号a)。
上記、1つの物理コアを疑似的に2つに見せかけるハイパースレッディングを用いる場合、SIMD拡張命令実行コア(ここでは、論理コア1)と、同じ物理コアで動作する論理コア(ここでは、論理コア2)の動作周波数が低下する(図15の下段図の符号b)。例えば、図15の下段図に示すように、コア動作周波数が高(約3.5Ghz)から低(約1.9Ghz)に低下する。また、SIMD実行後、コア動作周波数が元に復帰するまでに、一定時間(例えば2ms)はコア動作周波数が低下し続ける(図15の上段図の符号c)(<論理コア2の周波数低下>)。
上記、SIMD拡張命令実行コアと同じ物理コアで動作する論理コア(ここでは、論理コア2)の動作周波数低下と、この論理コア2の動作周波数低下が一定時間続くことで、「動作周波数低下期間」(図15の下段図の符号d)が生じる。このため、時間あたりの実行命令数が減り、性能変動や応答性の低下が生じる(<コア全体の性能低下>)。
このように、ハイパースレッディングを用いる場合、SIMD命令(専用命令)を実行すると、コアの消費電力が大きくなり、同一物理コアで動作する論理コアの動作周波数が低下する場合がある。この時、専用命令を実行するコアと、同一の物理コアにスケジューリングされたプロセスの処理性能が低下する。
図16~図18を参照して、既存技術の課題についてさらに詳細に説明する。
<既存技術1:平等性確保>
各プロセスに、一定のCPU時間を割り当てることで、平等性を確保する技術(<既存技術1>)がある。既存技術1は、例えばLinux CFS(Completely Fair Scheduler)で実現されている。
<既存技術1:平等性確保>
各プロセスに、一定のCPU時間を割り当てることで、平等性を確保する技術(<既存技術1>)がある。既存技術1は、例えばLinux CFS(Completely Fair Scheduler)で実現されている。
図16および図17は、既存技術1を説明する図である。図16は、CPUが複数の物理コアを有し、この複数の物理コアがそれぞれ2つの論理コアのように動作させる場合のコア割当状況を示す図である。図17は、図16の各物理コアのコア割当状況によって割り当てられたプロセス群の累積割当CPU時間を示す図である。
図16に示すように、CPU10は、2つの物理コア(物理コア1,物理コア2)11を有する。ハイパースレッディングにより、単一の物理コア(物理コア1,物理コア2)11を2つの論理コア(論理コア1,論理コア2)のように動作させる。
図16の粗い網掛け示す物理コア(物理コア1)11の論理コア1は、専用命令プロセス(SIMD)を実行するコア、論理コア2は、通常命令であるプロセス1群を実行するコアである。また、図16の細かい網掛け示す物理コア(物理コア2)11の論理コア1は、通常命令であるプロセス2群を実行するコア、論理コア2は、通常命令であるプロセス3群を実行するコアである。
図16の粗い網掛け示す物理コア(物理コア1)11の論理コア1は、専用命令プロセス(SIMD)を実行するコア、論理コア2は、通常命令であるプロセス1群を実行するコアである。また、図16の細かい網掛け示す物理コア(物理コア2)11の論理コア1は、通常命令であるプロセス2群を実行するコア、論理コア2は、通常命令であるプロセス3群を実行するコアである。
物理コア(物理コア1,物理コア2)11は、CPU時間が割り当てられる場合、動作周波数の変動については考慮されていない。図16の例では、物理コア1は、動作周波数が低く、物理コア2は、動作周波数が高いものなっている。
既存技術1では、各プロセスに、一定のCPU時間を割り当てることで、平等性を確保するが、動作周波数の変動を考慮しないため、「要件1:各プロセスそれぞれが必要とするCPU処理時間が割り当てられること」を満たさない。
すなわち、図17に示すように、プロセス1群とプロセス2群とは、優先度が同じ「中」ため、同じ長さのCPU時間が割り当てられる。しかし、プロセス1群とプロセス2群とは、周波数が異なる。プロセス1群とプロセス2群に同じ長さのCPU時間を割り当てているので、各プロセスの周波数に対する性能特性次第では、処理性能を満たせない場合がある。
既存技術1では、動作周波数の変動を考慮したプロセス割当による、実行コア数の最小化が図れないという課題がある。
既存技術1では、動作周波数の変動を考慮したプロセス割当による、実行コア数の最小化が図れないという課題がある。
<既存技術2:静的なコア割当>
図18は、既存技術2を説明する図である。図18は、CPUが複数の物理コアを有し、この複数の物理コアがそれぞれ2つの論理コアのように動作させる場合のコア割当状況を示す図である。
図18は、既存技術2を説明する図である。図18は、CPUが複数の物理コアを有し、この複数の物理コアがそれぞれ2つの論理コアのように動作させる場合のコア割当状況を示す図である。
図18に示すように、CPU10は、3つの物理コア(物理コア1,物理コア2,物理コア3)11を有する。ハイパースレッディングにより、単一の物理コア(物理コア1,物理コア2,物理コア3)11を2つの論理コア(論理コア1,論理コア2)のように動作させる。このうち、物理コア(物理コア1)11は、専用命令割当用である。上述したように、専用命令とは、SIMD演算命令や、暗号化のための専用命令である。専用命令割当用の物理コア1の論理コア1は、専用命令プロセス(SIMD)を実行するコアである。専用命令割当用の物理コア1の論理コア2は、専用命令を実行するコアであるが、ここでは割り当てられていない。すなわち、専用命令割当用の物理コア1の論理コア1、論理コア2には、専用命令を実行するプロセスのみが割り当てられる。
また、物理コア2の論理コア1は、通常命令であるプロセス1群を実行するコア、論理コア2は、通常命令であるプロセス2群を実行するコアである。同様に、物理コア3の論理コア1は、通常命令であるプロセス3群を実行するコア、論理コア2には、プロセス群が割り当てられていない。
また、物理コア2の論理コア1は、通常命令であるプロセス1群を実行するコア、論理コア2は、通常命令であるプロセス2群を実行するコアである。同様に、物理コア3の論理コア1は、通常命令であるプロセス3群を実行するコア、論理コア2には、プロセス群が割り当てられていない。
既存技術2では、専用命令を実行するプロセスと、そのほかのプロセスのコアを分け、専用化する。図18の例では、専用命令割当用の物理コア1において、使用されない論理コア2が生まれ(図18の符号e)、実行コア数の効率が悪くなる。使用されない論理コア2が生まれることは、稼働するコア数が増加することにつながるため、「要件2:実行コア数の最小化」を満たさないという課題がある。
このような背景を鑑みて本発明がなされたのであり、本発明は、コア利用率を向上させ、CPU動作コア数を削減することを課題とする。
前記した課題を解決するため、特定の演算に特化した専用命令を実行する計算システムにおいて、1つの物理コアを疑似的に複数の論理コアに見せかけるハードウェアマルチスレッディングを用いて、前記論理コアに前記専用命令の実行プロセスを割り当てるタスクスケジューラ装置であって、前記専用命令を実行することを検知する専用命令実行検知部と、前記専用命令の実行に起因し、前記専用命令の実行コアと同じ前記物理コアで動作する、動作周波数の低下する前記論理コアを特定する専用命令実行影響コア特定部と、前記専用命令実行影響コア特定部が特定した動作周波数の低下する前記論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行う低周波数許容プロセス割当判断部と、前記低周波数許容プロセス割当判断部が特定した前記プロセスを、動作周波数の低下する前記論理コアに割当てるプロセスコア割当部と、を備えることを特徴とするタスクスケジューラ装置とした。
本発明によれば、コア利用率を向上させ、CPU動作コア数を削減することができる。
以下、図面を参照して本発明を実施するための形態(以下、「本実施形態」という)におけるタスクスケジューラ装置等について説明する。
[概要]
図1は、本発明の実施形態に係るタスクスケジューラ装置を備える計算システムの概略構成図である。
本実施形態は、計算システムとしてCPUに適用した例である。CPU以外にも、GPU(Graphic Processing Unit),FPGA(Field Programmable Gate Array),ASIC(Application Specific Integrated Circuit)等のプロセッサに、同様に適用可能である。
[概要]
図1は、本発明の実施形態に係るタスクスケジューラ装置を備える計算システムの概略構成図である。
本実施形態は、計算システムとしてCPUに適用した例である。CPU以外にも、GPU(Graphic Processing Unit),FPGA(Field Programmable Gate Array),ASIC(Application Specific Integrated Circuit)等のプロセッサに、同様に適用可能である。
図1に示すように、計算システム1000は、ハードウェア(HW)であるCPU10と、CPU10上の物理コア(物理コア1,物理コア2,…,物理コアN)11(プロセッサ)と、OS20と、userland(ユーザランド)30と、サーバであるタスクスケジューラ装置100と、を備える。
計算システム1000は、SIMD命令または暗号化のための専用命令を含む特定の演算に特化した専用命令を実行する。計算システム1000は、1つの物理コアを疑似的に複数の論理コアに見せかけるハードウェアマルチスレッディングを用いて、論理コアに専用命令の実行プロセスを割り当てるタスクスケジューラ装置100を備える。
計算システム1000は、SIMD命令または暗号化のための専用命令を含む特定の演算に特化した専用命令を実行する。計算システム1000は、1つの物理コアを疑似的に複数の論理コアに見せかけるハードウェアマルチスレッディングを用いて、論理コアに専用命令の実行プロセスを割り当てるタスクスケジューラ装置100を備える。
計算システム1000において、前提となる構成をまとめると下記である。
・サーバ
サーバ(タスクスケジューラ装置100)は、CPU(プロセッサ)を搭載する。CPUは、1以上の物理コアを持つ。CPUは、ハードウェアマルチスレッディング技術をサポートし、単一の物理コアを複数の論理コアに見せかけることができる。
・サーバ
サーバ(タスクスケジューラ装置100)は、CPU(プロセッサ)を搭載する。CPUは、1以上の物理コアを持つ。CPUは、ハードウェアマルチスレッディング技術をサポートし、単一の物理コアを複数の論理コアに見せかけることができる。
・プロセス
サーバ(タスクスケジューラ装置100)上で動作するプロセスには、以下の3種類が存在する。
1.専用命令の実行プロセス
2.低周波動作に適するプロセス。このプロセスは、I/O(入出力量)が多くCPU待ち時間が長い、リアルタイム要件が緩い等の特徴がある。
3.低周波動作に適さないプロセス。このプロセスは、CPUによる演算処理が多い、リアルタイム要件が厳しい等の特徴がある。
サーバ(タスクスケジューラ装置100)上で動作するプロセスには、以下の3種類が存在する。
1.専用命令の実行プロセス
2.低周波動作に適するプロセス。このプロセスは、I/O(入出力量)が多くCPU待ち時間が長い、リアルタイム要件が緩い等の特徴がある。
3.低周波動作に適さないプロセス。このプロセスは、CPUによる演算処理が多い、リアルタイム要件が厳しい等の特徴がある。
・スケジューラ
サーバ(タスクスケジューラ装置100)上で動作するプロセスは、複数の種類が存在し、それぞれ専用命令を実行する割合や、入出力処理の多さ、処理優先度などの特性が異なる。
サーバ(タスクスケジューラ装置100)上で動作するプロセスは、複数の種類が存在し、それぞれ専用命令を実行する割合や、入出力処理の多さ、処理優先度などの特性が異なる。
<CPU10>
CPU10は、物理コア(物理コア1,物理コア2,…,物理コアN)11を備える。物理コア(物理コア1,物理コア2,…,物理コアN)11は、具体的には、CPUコア(CPUcore #0,CPUcore #1,…)(図示せず)である。物理コア11は、1つの物理コアを疑似的に2つに見せかけるハイパースレッディングを用いることで、コアごとに2つのスレッドを実行する論理コア1と論理コア2を有する。
CPU10は、物理コア(物理コア1,物理コア2,…,物理コアN)11を備える。物理コア(物理コア1,物理コア2,…,物理コアN)11は、具体的には、CPUコア(CPUcore #0,CPUcore #1,…)(図示せず)である。物理コア11は、1つの物理コアを疑似的に2つに見せかけるハイパースレッディングを用いることで、コアごとに2つのスレッドを実行する論理コア1と論理コア2を有する。
<OS20>
OS20は、プロセス実行優先度管理部21と、プロセスIO量記録部22と、を有する。
プロセス実行優先度管理部21は、サーバで動作するプロセスの一覧と、それぞれの実行優先度を取得する。具体的には、プロセス実行優先度管理部21が、niceコマンドにより各プロセスの実行優先度(例えば、nice値)を取得することがあげられる。
OS20は、プロセス実行優先度管理部21と、プロセスIO量記録部22と、を有する。
プロセス実行優先度管理部21は、サーバで動作するプロセスの一覧と、それぞれの実行優先度を取得する。具体的には、プロセス実行優先度管理部21が、niceコマンドにより各プロセスの実行優先度(例えば、nice値)を取得することがあげられる。
プロセスIO量記録部22は、サーバ(タスクスケジューラ装置100)で動作するプロセスの一覧と、それぞれのInput/Output量を取得する。具体的には、プロセスIO量記録部22が、IOStatコマンドにより各プロセスのIO量(例えば、IOStat)を取得することがあげられる。
[タスクスケジューラ装置100]
タスクスケジューラ装置100は、専用命令実行検知部110(専用命令検知部)と、専用命令実行影響コア特定部120(コア特定部)と、稼働中プロセス動作周波数性能影響判定部130(性能影響判定部)と、低周波数許容プロセス割当判断部140(許容プロセス判断部)と、プロセスコア割当部150と、新規プロセス起動・低周波動作可否判断部160と、を備える。
タスクスケジューラ装置100は、専用命令実行検知部110(専用命令検知部)と、専用命令実行影響コア特定部120(コア特定部)と、稼働中プロセス動作周波数性能影響判定部130(性能影響判定部)と、低周波数許容プロセス割当判断部140(許容プロセス判断部)と、プロセスコア割当部150と、新規プロセス起動・低周波動作可否判断部160と、を備える。
[タスクスケジューラ装置の配置]
図2および図3は、図1のタスクスケジューラ装置100の配置を説明する図である。
・user spaceへのタスクスケジューラ装置の配置
図2は、図1のタスクスケジューラ装置100をuser spaceに配置した構成例である。
図2に示す計算システム1000では、User space40にタスクスケジューラ装置100が配置される。計算システム1000は、User space40に配置されたアプリケーション(APL)1を実行する。計算システム1000は、OSを備えるサーバ上で、APL1を実行する。
図2および図3は、図1のタスクスケジューラ装置100の配置を説明する図である。
・user spaceへのタスクスケジューラ装置の配置
図2は、図1のタスクスケジューラ装置100をuser spaceに配置した構成例である。
図2に示す計算システム1000では、User space40にタスクスケジューラ装置100が配置される。計算システム1000は、User space40に配置されたアプリケーション(APL)1を実行する。計算システム1000は、OSを備えるサーバ上で、APL1を実行する。
本発明を、Intel DPDK(Intel Data Plane Development Kit)(DPDK)(登録商標)のように、user space40にthreadがある場合に適用することができる。
・OSへのタスクスケジューラ装置の配置
図3は、図1のタスクスケジューラ装置100をOS20に配置した構成例である。
図3に示す計算システム1000では、OS20にタスクスケジューラ装置100が配置される。計算システム1000は、OS20を備えるサーバ上で、APL1を実行する。
図3は、図1のタスクスケジューラ装置100をOS20に配置した構成例である。
図3に示す計算システム1000では、OS20にタスクスケジューラ装置100が配置される。計算システム1000は、OS20を備えるサーバ上で、APL1を実行する。
本発明を、New API(NAPI)(登録商標)のように、kernel内部にthreadがある場合に適用することができる。
[タスクスケジューラ装置のVM構成におけるバリエーション]
図2を参照して上述したように、User space40にタスクスケジューラ装置100を配置した構成例に適用できる。この場合、OSは限定されない。また、サーバ仮想化環境下であることも限定されない。
図2を参照して上述したように、User space40にタスクスケジューラ装置100を配置した構成例に適用できる。この場合、OSは限定されない。また、サーバ仮想化環境下であることも限定されない。
<VM構成への適用例>
NFV(Network Functions Virtualization:ネットワーク機能仮想化)による仮想化技術の進展などを背景に、サービス毎にシステムを構築して運用することが行われている。また、上記サービス毎にシステムを構築する形態から、サービス機能を再利用可能なモジュール単位に分割し、独立した仮想マシン(VM:Virtual Machineやコンテナなど)環境の上で動作させることで、部品のようにして必要に応じて利用し運用性を高めるといったSFC(Service Function Chaining)と呼ばれる形態が主流となりつつある。
NFV(Network Functions Virtualization:ネットワーク機能仮想化)による仮想化技術の進展などを背景に、サービス毎にシステムを構築して運用することが行われている。また、上記サービス毎にシステムを構築する形態から、サービス機能を再利用可能なモジュール単位に分割し、独立した仮想マシン(VM:Virtual Machineやコンテナなど)環境の上で動作させることで、部品のようにして必要に応じて利用し運用性を高めるといったSFC(Service Function Chaining)と呼ばれる形態が主流となりつつある。
図4は、汎用Linux kernel(登録商標)およびVM構成のサーバ仮想化環境におけるタスクスケジューラ装置に、計算システム1000Aを適用した例を示す図である。図1と同一構成部分には、同一符号を付している。
計算システム1000Aは、CPU10と、CPU10上の物理コア(物理コア1,物理コア2,…,物理コアN)11(プロセッサ)と、VM50と、VM50上の仮想マシンモニタ部(VMM:Virtual Machine Monitor)51と、OS20と、userland(ユーザランド)30と、タスクスケジューラ装置100Aと、を備える。
仮想マシンモニタ部(VMM)51は、コンピュータを仮想化し、複数の異なるOSを互いに干渉させずに並行して動作させる。仮想マシンモニタ部(VMM)51は、ソフトウェアに対して物理的なコンピュータのように振る舞う仮想マシン(VM)を作り出し、その上で様々な種類のOSを稼動させることができる。
計算システム1000Aは、CPU10と、CPU10上の物理コア(物理コア1,物理コア2,…,物理コアN)11(プロセッサ)と、VM50と、VM50上の仮想マシンモニタ部(VMM:Virtual Machine Monitor)51と、OS20と、userland(ユーザランド)30と、タスクスケジューラ装置100Aと、を備える。
仮想マシンモニタ部(VMM)51は、コンピュータを仮想化し、複数の異なるOSを互いに干渉させずに並行して動作させる。仮想マシンモニタ部(VMM)51は、ソフトウェアに対して物理的なコンピュータのように振る舞う仮想マシン(VM)を作り出し、その上で様々な種類のOSを稼動させることができる。
複数VM(VM1,VM2)のそれぞれにおいて、OS20にプロセス実行優先度管理部21およびプロセスIO量記録部22を有し、userland30に専用命令実行検知部110および専用命令実行影響コア特定部120を有する。
タスクスケジューラ装置100Aは、稼働中プロセス動作周波数性能影響判定部130と、低周波数許容プロセス割当判断部140と、プロセスコア割当部150と、新規プロセス起動・低周波動作可否判断部160と、を備える。タスクスケジューラ装置100Aは、単一のOS20のuserland30に配置せず、外部に別に配置し、いわゆるコントローラ機能部として動作する。
タスクスケジューラ装置100Aは、VM構成において、複数VMにまたがったプロセスの情報から、コア割当を行う。
タスクスケジューラ装置100Aは、VM構成において、複数VMにまたがったプロセスの情報から、コア割当を行う。
[タスクスケジューラ装置の各機能部の構成]
<専用命令実行検知部110>
専用命令実行検知部110は、現在実行中のプロセスにて、専用命令が実行されたか否かを検知(判定)する。具体的には、専用命令実行検知部110は、専用命令を実行するか否かを判定する対象のプロセスの識別子(PID:Process IDentifier等)を受け付け、該当プロセスが専用命令を実行するか否かを出力する。
<専用命令実行検知部110>
専用命令実行検知部110は、現在実行中のプロセスにて、専用命令が実行されたか否かを検知(判定)する。具体的には、専用命令実行検知部110は、専用命令を実行するか否かを判定する対象のプロセスの識別子(PID:Process IDentifier等)を受け付け、該当プロセスが専用命令を実行するか否かを出力する。
現在実行中のプロセスにて、専用命令が実行されたか否かを判定する手法には、下記2つの形態がある。
1:静的に検知する手法
専用命令実行検知部110は、プロセス名等の情報をもとに、専用命令を使うプロセスか否かを判定する。
1:静的に検知する手法
専用命令実行検知部110は、プロセス名等の情報をもとに、専用命令を使うプロセスか否かを判定する。
図5は、専用命令実行検知部110が持つ管理データベースの構造を表にして示す図である。図5は、専用命令を実行するプロセスの管理データベースの一例である。
図5に示すように、ID毎にプロセス名(signal_p、fec_dec、fec_enc、fft_process)を登録する。プロセス名(signal_p、fec_dec、fec_enc、fft_process)は、いずれも専用命令を実行するプロセスである。
専用命令実行検知部110は、事前に登録された専用命令を使うプロセス一覧(図5)と、実行中のプロセス名を比較し、専用命令が実行されたか否かを判定する。
図5に示すように、ID毎にプロセス名(signal_p、fec_dec、fec_enc、fft_process)を登録する。プロセス名(signal_p、fec_dec、fec_enc、fft_process)は、いずれも専用命令を実行するプロセスである。
専用命令実行検知部110は、事前に登録された専用命令を使うプロセス一覧(図5)と、実行中のプロセス名を比較し、専用命令が実行されたか否かを判定する。
2:動的に検知する手法
CPUの持つ特殊なレジスタ(例えば、x86プロセッサにおいて、SIMDの変更したデータ領域を示すXCR0レジスタ)を用い、専用命令が実行されたか否かを判定する。この場合、検知対象のプロセスの実行切替時に、OSカーネルのスケジューラがこのレジスタの値の変更を確認する。
CPUの持つ特殊なレジスタ(例えば、x86プロセッサにおいて、SIMDの変更したデータ領域を示すXCR0レジスタ)を用い、専用命令が実行されたか否かを判定する。この場合、検知対象のプロセスの実行切替時に、OSカーネルのスケジューラがこのレジスタの値の変更を確認する。
なお、CPUの持つ特殊なレジスタについては、"Chapter 13, Managing State Using The Xsave Feature Set" (PDF). Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 1: Basic Architecture. Intel Corporation (2019). Retrieved 23 March 2019.に記載がある。
<専用命令実行影響コア特定部120>
専用命令実行影響コア特定部120は、専用命令の実行に起因し、専用命令実行コアと同じ物理コアで動作する、動作周波数の低下する論理コアを特定する。本実施形態では、専用命令実行影響コア特定部120は、入力されたプロセスIDを実行しているコアと、その影響のあるコアを特定する。具体的には、専用命令実行影響コア特定部120は、専用命令を実行しているプロセスの番号を受け付け、専用命令による影響があるCPUコアの番号を出力する。
専用命令実行影響コア特定部120は、専用命令の実行に起因し、専用命令実行コアと同じ物理コアで動作する、動作周波数の低下する論理コアを特定する。本実施形態では、専用命令実行影響コア特定部120は、入力されたプロセスIDを実行しているコアと、その影響のあるコアを特定する。具体的には、専用命令実行影響コア特定部120は、専用命令を実行しているプロセスの番号を受け付け、専用命令による影響があるCPUコアの番号を出力する。
例えば、Linuxにおけるpidstatコマンドを用いて、プロセスID(PID)から、そのプロセスの動作するコアを特定する。pidstatコマンドの参考文献として、pidstat(1) Linux manual page,[online],[令和4年9月6日検索],インターネット 〈URL:https://man7.org/linux/man-pages/man1/pidstat.1.html〉がある。
専用命令実行影響コア特定部120は、コマンド出力から、動作コア情報の番号を抽出し、該当コアと同一物理コアで動作するCPUコア番号を、CPUコア情報(例えば、Linux のcpuinfo)として特定し、出力する。
<稼働中プロセス動作周波数性能影響判定部130>
稼働中プロセス動作周波数性能影響判定部130は、稼働中のプロセスの、動作周波数の性能影響を判定する。
本実施形態では、稼働中プロセス動作周波数性能影響判定部130は、サーバ(タスクスケジューラ装置100)内で動作するすべてのプロセスについて、動作周波数の性能影響を判定する。具体的には、稼働中プロセス動作周波数性能影響判定部130は、一定間隔(例えば、10秒)や、プロセスの新規起動・終了をきっかけに起動し、各プロセスの、CPU動作周波数による性能影響を判定する。
稼働中プロセス動作周波数性能影響判定部130は、稼働中のプロセスの、動作周波数の性能影響を判定する。
本実施形態では、稼働中プロセス動作周波数性能影響判定部130は、サーバ(タスクスケジューラ装置100)内で動作するすべてのプロセスについて、動作周波数の性能影響を判定する。具体的には、稼働中プロセス動作周波数性能影響判定部130は、一定間隔(例えば、10秒)や、プロセスの新規起動・終了をきっかけに起動し、各プロセスの、CPU動作周波数による性能影響を判定する。
稼働中プロセスの動作周波数性能の影響を判定する手法には、下記2つの形態がある。
1:静的な手法
静的な手法は、プロセス名等の情報をもとに、動作周波数による影響を判定する手法である。
1:静的な手法
静的な手法は、プロセス名等の情報をもとに、動作周波数による影響を判定する手法である。
図6は、稼働中プロセス動作周波数性能影響判定部130が持つデータベースの構造を表にして示す図である。図6は、プロセスの周波数影響の判定用プロセスのデータベースの一例である。
図6に示すように、ID毎にプロセス名(nic_io、calc_crc、packet_process)と周波数の性能影響度を登録する。プロセス名(nic_io、calc_crc、packet_process)は、いずれもプロセスの周波数影響の判定用プロセスである。
稼働中プロセス動作周波数性能影響判定部130は、事前に登録された、サーバ(タスクスケジューラ装置100)で動作するプロセス一覧(プロセスのID一覧)(図6)と、実行中のプロセス名を比較し、稼働中プロセス動作周波数性能影響を判定する。
図6に示すように、ID毎にプロセス名(nic_io、calc_crc、packet_process)と周波数の性能影響度を登録する。プロセス名(nic_io、calc_crc、packet_process)は、いずれもプロセスの周波数影響の判定用プロセスである。
稼働中プロセス動作周波数性能影響判定部130は、事前に登録された、サーバ(タスクスケジューラ装置100)で動作するプロセス一覧(プロセスのID一覧)(図6)と、実行中のプロセス名を比較し、稼働中プロセス動作周波数性能影響を判定する。
2:動的な手法
動的な手法は、プロセス実行優先度管理部21の各プロセスの実行優先度(例えば、nice値)やプロセスIO量記録部22のIO量(例えば、iostat)の結果をもとに、各プロセスの周波数変更の影響を判定する手法である。
動的な手法は、プロセス実行優先度管理部21の各プロセスの実行優先度(例えば、nice値)やプロセスIO量記録部22のIO量(例えば、iostat)の結果をもとに、各プロセスの周波数変更の影響を判定する手法である。
稼働中プロセス動作周波数性能影響判定部130は、プロセス実行優先度管理部21およびプロセスIO量記録部22から、各プロセスの実行優先度(nice値)およびIO量(iostat)を取得し、この2つの値を統合して影響度とし、この影響度をもとに稼働中プロセスの動作周波数性能の影響を判定する。
以下、影響度算出の具体例について述べる。
稼働中プロセス動作周波数性能影響判定部130は、プロセス実行優先度管理部21から、各プロセスの優先度N(例:-20~20)を取得し、プロセスIO量記録部22から、IO量(X Mbytes/s)を取得する。IO量を、所定値(例えば、「5」)で除算し、M(0-20)とする(21以上は、20とする)。これら2つの値を合算(K=N-M)し、影響度とする。)
稼働中プロセス動作周波数性能影響判定部130は、プロセス実行優先度管理部21から、各プロセスの優先度N(例:-20~20)を取得し、プロセスIO量記録部22から、IO量(X Mbytes/s)を取得する。IO量を、所定値(例えば、「5」)で除算し、M(0-20)とする(21以上は、20とする)。これら2つの値を合算(K=N-M)し、影響度とする。)
<低周波数許容プロセス割当判断部140>
低周波数許容プロセス割当判断部140は、専用命令実行影響コア特定部120が特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行う。
例えば、低周波数許容プロセス割当判断部140は、専用命令の影響を受けるコアの番号の情報と、各プロセスの動作周波数による性能影響情報をもとに、低周波数で動作しても影響の少ないプロセスと、専用命令による影響があるコアとをペアとして選定する。
低周波数許容プロセス割当判断部140は、専用命令実行影響コア特定部120が特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行う。
例えば、低周波数許容プロセス割当判断部140は、専用命令の影響を受けるコアの番号の情報と、各プロセスの動作周波数による性能影響情報をもとに、低周波数で動作しても影響の少ないプロセスと、専用命令による影響があるコアとをペアとして選定する。
具体的には、低周波数許容プロセス割当判断部140は、入力されたプロセスのID一覧から、低い周波数で動作させてもよいプロセスを選定し、専用命令による影響があるCPUコアを選定し、ペアとして出力する。この時のプロセスIDの選定ロジックは、低周波数で動作する許容度合いが、最も高いものから選定する。
(低周波数許容プロセス割当判断部140の入出力)
低周波数許容プロセス割当判断部140の入出力について述べる。まず、低周波数許容プロセス割当判断部140の入力は下記である。
入力1:専用命令実行影響コア特定部120から、専用命令による影響があるCPUコアの番号が入力される。
入力2:稼働中プロセス動作周波数性能影響判定部130から、該当サーバで動作するプロセスのID一覧と、それぞれの動作周波数による影響が入力される。
次に、低周波数許容プロセス割当判断部140の出力は下記である。
出力:低周波数動作可能なプロセスIDと、専用命令による影響を受けているコアのIDのペアを出力する。
低周波数許容プロセス割当判断部140の入出力について述べる。まず、低周波数許容プロセス割当判断部140の入力は下記である。
入力1:専用命令実行影響コア特定部120から、専用命令による影響があるCPUコアの番号が入力される。
入力2:稼働中プロセス動作周波数性能影響判定部130から、該当サーバで動作するプロセスのID一覧と、それぞれの動作周波数による影響が入力される。
次に、低周波数許容プロセス割当判断部140の出力は下記である。
出力:低周波数動作可能なプロセスIDと、専用命令による影響を受けているコアのIDのペアを出力する。
(低周波数許容プロセス割当判断部140の動作)
低周波数許容プロセス割当判断部140の動作について述べる。
図1に示すCPU10上の物理コア11は、10コア(No.1-No.10)であり、6つのプロセス(A,B,C,D,E,F)が動作しているとする。この状況において、低周波数許容プロセス割当判断部140は、以下の判定を行う。
低周波数許容プロセス割当判断部140の動作について述べる。
図1に示すCPU10上の物理コア11は、10コア(No.1-No.10)であり、6つのプロセス(A,B,C,D,E,F)が動作しているとする。この状況において、低周波数許容プロセス割当判断部140は、以下の判定を行う。
低周波数許容プロセス割当判断部140は、下記2つの入力1,入力2を受け付ける。
入力1:「専用命令の影響を受けているコアの番号の情報」
⇒影響が出ている(周波数低下):No.1,No.2,No.3,No.4,No.5,No.6
⇒影響が出ていない:No.7,No.8,No.9,No.10
入力1:「専用命令の影響を受けているコアの番号の情報」
⇒影響が出ている(周波数低下):No.1,No.2,No.3,No.4,No.5,No.6
⇒影響が出ていない:No.7,No.8,No.9,No.10
入力2:「当該サーバで動作するプロセスのID一覧と、それぞれの特性(動作周波数から受ける影響の大きさ)」
⇒影響を受ける(性能低下):A,B,C,D
⇒影響を受けない:E,F
⇒影響を受ける(性能低下):A,B,C,D
⇒影響を受けない:E,F
低周波数許容プロセス割当判断部140は、プロセスのID一覧から、“低い周波数で動作させてもよいプロセス”として、プロセスE,Fを選ぶ。
これらプロセスを動作させるコアとして、“No.1,No.2,No.3,No.4,No.5,No.6”の中から、“No.1”“No.2”を選ぶ。
最後に、2つのペア(コアNo.1とプロセスE)、(コアNo.2とプロセスF)を出力する。
これらプロセスを動作させるコアとして、“No.1,No.2,No.3,No.4,No.5,No.6”の中から、“No.1”“No.2”を選ぶ。
最後に、2つのペア(コアNo.1とプロセスE)、(コアNo.2とプロセスF)を出力する。
<プロセスコア割当部150>
プロセスコア割当部150は、低周波数許容プロセス割当判断部140が特定したプロセスを、動作周波数の低下する論理コアに割当てる。例えば、プロセスコア割当部150は、入力されたプロセスIDをもつプロセスを、入力されたCPUコアで動作させるプロセスへコア割当を行う。なお、入力された性能影響を受けるコアについては、コアのリスト(図示省略)として情報を保持する。
プロセスコア割当部150は、以下の入出力を行う。
入力(既存プロセスのコア割当変更時):プロセスIDとCPUコアIDのペア
入力(プロセス新規起動時):コマンド名
出力:なし
プロセスコア割当部150は、低周波数許容プロセス割当判断部140が特定したプロセスを、動作周波数の低下する論理コアに割当てる。例えば、プロセスコア割当部150は、入力されたプロセスIDをもつプロセスを、入力されたCPUコアで動作させるプロセスへコア割当を行う。なお、入力された性能影響を受けるコアについては、コアのリスト(図示省略)として情報を保持する。
プロセスコア割当部150は、以下の入出力を行う。
入力(既存プロセスのコア割当変更時):プロセスIDとCPUコアIDのペア
入力(プロセス新規起動時):コマンド名
出力:なし
プロセスコア割当部150のプロセスへのコア割当方式について述べる。
パターン1:OSスケジューラ方式
その1 図2および図3に示したように、OSスケジューラ方式は、OSカーネルのタスクスケジューラに改変を行い、特定CPUコアへのスケジューリングを行う。
パターン1:OSスケジューラ方式
その1 図2および図3に示したように、OSスケジューラ方式は、OSカーネルのタスクスケジューラに改変を行い、特定CPUコアへのスケジューリングを行う。
その2 sched_setaffinity()関数,[online],[令和4年9月6日検索],インターネット 〈URL:https://linuxjm.osdn.jp/html/LDP_man-pages/man2/sched_setaffinity.2.html〉のような、起動中のタスクのCPU割り当て変更を行う手法により、特定CPUコアへのスケジューリングを変更する方式である。
パターン2:アプリケーションにおけるタスクスケジューラでの実装方式
図2および図3に示したように、アプリケーションにおけるタスクスケジューラでの実装方式は、アプリケーションが独自のタスクスケジューラを持つ場合、このタスクスケジューラがCPUコアを割り当てる形態である。具体的には、pthread_setaffinity関数(),[online],[令和4年9月6日検索],インターネット 〈URL: https://linuxjm.osdn.jp/html/LDP_man-pages/man3/pthread_setaffinity_np.3.html〉のように、タスクをスケジュールする先のCPUコアを動的に指定するための機構を用い、該当のプロセスとCPUコアを指定する。
図2および図3に示したように、アプリケーションにおけるタスクスケジューラでの実装方式は、アプリケーションが独自のタスクスケジューラを持つ場合、このタスクスケジューラがCPUコアを割り当てる形態である。具体的には、pthread_setaffinity関数(),[online],[令和4年9月6日検索],インターネット 〈URL: https://linuxjm.osdn.jp/html/LDP_man-pages/man3/pthread_setaffinity_np.3.html〉のように、タスクをスケジュールする先のCPUコアを動的に指定するための機構を用い、該当のプロセスとCPUコアを指定する。
パターン3:プロセスの新規起動時への適用方式
taskset,[online],[令和4年9月6日検索],インターネット 〈URL: https://www.man7.org/linux/man-pages/man1/taskset.1.html〉コマンドのように、あるプロセスの起動時に、動作するCPUコアを指定する手法を用い、特定コアで動作させる。
taskset,[online],[令和4年9月6日検索],インターネット 〈URL: https://www.man7.org/linux/man-pages/man1/taskset.1.html〉コマンドのように、あるプロセスの起動時に、動作するCPUコアを指定する手法を用い、特定コアで動作させる。
上述した低周波数許容プロセス割当判断部140の動作例で、低周波数許容プロセス割当判断部140が、2つのペア(コアNo.1とプロセスE)、(コアNo.2とプロセスF)を、プロセスコア割当部150に出力する場合について述べる。
プロセスコア割当部150は、低周波数許容プロセス割当判断部140から、2つのペア(コアNo.1とプロセスE)、(コアNo.2とプロセスF)を受け取り、コアNo.1でプロセスEが、コアNo.2でプロセスFを動作させるよう、設定を行う。
プロセスコア割当部150は、低周波数許容プロセス割当判断部140から、2つのペア(コアNo.1とプロセスE)、(コアNo.2とプロセスF)を受け取り、コアNo.1でプロセスEが、コアNo.2でプロセスFを動作させるよう、設定を行う。
<新規プロセス起動・低周波動作可否判断部160>
新規プロセス起動・低周波動作可否判断部160は、入出力ともにコマンド名である。
新規プロセス起動・低周波動作可否判断部160は、入力されたコマンドが、低周波動作可能かを判定し、該当する場合は、専用命令の影響を受けるCPUコアで動作させるため、プロセスコア割当部150に対し、コマンド名を出力する。具体的には、新規プロセス起動・低周波動作可否判断部160は、入力されたコマンド名を、内部のデータベースのコマンド名と照合し、低周波数で動作可能かを判定する。新規プロセス起動・低周波動作可否判断部160は、判定により、低周波数で動作可能と判断した場合には、プロセスコア割当部150に対し、コマンド名を出力する。
新規プロセス起動・低周波動作可否判断部160は、入出力ともにコマンド名である。
新規プロセス起動・低周波動作可否判断部160は、入力されたコマンドが、低周波動作可能かを判定し、該当する場合は、専用命令の影響を受けるCPUコアで動作させるため、プロセスコア割当部150に対し、コマンド名を出力する。具体的には、新規プロセス起動・低周波動作可否判断部160は、入力されたコマンド名を、内部のデータベースのコマンド名と照合し、低周波数で動作可能かを判定する。新規プロセス起動・低周波動作可否判断部160は、判定により、低周波数で動作可能と判断した場合には、プロセスコア割当部150に対し、コマンド名を出力する。
以下、上述のように構成された計算システム1000の動作を説明する。
[タスクスケジューラ装置の動作]
稼働中のプロセスのコアを移動させる場合のタスクスケジューラ装置の動作について説明する。なお、以下の動作説明において、物理コアをCPUコアと呼び変える。
[タスクスケジューラ装置の動作]
稼働中のプロセスのコアを移動させる場合のタスクスケジューラ装置の動作について説明する。なお、以下の動作説明において、物理コアをCPUコアと呼び変える。
<稼働中のプロセスのコアを移動させる場合>
図7は、稼働中のプロセスのコアを移動させる場合のタスクスケジューラ装置の動作パターンを示す図であり、図8は、そのフローチャートである。図7において、該当する動作の機能部については、太いブロックで示している。
ステップS11で専用命令実行検知部110は、専用命令を実行するか否かを判定する対象のプロセスの識別子(PID等)を受け付け、出力として、該当プロセスが専用命令を実行するか否かを出力する。
図7は、稼働中のプロセスのコアを移動させる場合のタスクスケジューラ装置の動作パターンを示す図であり、図8は、そのフローチャートである。図7において、該当する動作の機能部については、太いブロックで示している。
ステップS11で専用命令実行検知部110は、専用命令を実行するか否かを判定する対象のプロセスの識別子(PID等)を受け付け、出力として、該当プロセスが専用命令を実行するか否かを出力する。
ステップS12で専用命令実行検知部110は、専用命令の実行を検知した場合か否かを判別する。専用命令の実行を検知しない場合(S12:No)、ステップS11に戻る。
専用命令の実行を検知した場合(S12:Yes)(図7の符号aa)、ステップS13で専用命令実行影響コア特定部120は、入力されたプロセスIDを実行しているコアと、その影響のあるコアを特定する。具体的には、専用命令実行影響コア特定部120は、専用命令を実行しているプロセスの番号を受け付け、専用命令による影響があるCPUコアの番号を出力する(図7の符号bb)。
ステップS14で低周波数許容プロセス割当判断部140は、稼働中プロセス動作周波数性能影響判定部130が実行中の図12の情報収集処理を参照し、稼働中プロセス動作周波数性能影響判定部130から稼働中プロセスの動作周波数性能の影響の判定結果を受け取る(図7の符号cc)。
ステップS15で低周波数許容プロセス割当判断部140は、専用命令の影響を受けるコアの番号の情報と、各プロセスの動作周波数による性能影響情報をもとに、低周波数で動作しても影響の少ないプロセスの専用命令による影響を受けたコアへの割り付けを判断する。
ステップS16で低周波数許容プロセス割当判断部140は、低周波数プロセスの割当コア変更がある場合か否かを判別する。低周波数プロセスの割当コア変更がない場合(S16:No)、ステップS11に戻る。
低周波数プロセスの割当コア変更がある場合(S:Yes)(図7の符号dd)、ステップS17でプロセスコア割当部150は、入力されたプロセスIDを持つプロセスを、入力されたCPUコアで動作させる。プロセスコア割当部150は、入力された性能影響を受けるコアについては、コア割当の変更を行い(図7の符号ee)、コアのリスト(図示省略)として情報を保持して本フローの処理を終了する。
<新規起動プロセスをスケジューリングする場合>
図9は、新規起動プロセスをスケジューリングする場合のタスクスケジューラ装置の動作パターンを示す図であり、図10は、そのフローチャートである。図9において、該当する動作の機能部については、太いブロックで示している。
ステップS21で新規プロセス起動・低周波動作可否判断部160は、入力されたコマンドが、低周波動作可能かを判定し、該当する場合は、専用命令の影響を受けるCPUコアで動作させるため、プロセスコア割当部150に対し、コマンド名を出力する(図9の符号ff)。
図9は、新規起動プロセスをスケジューリングする場合のタスクスケジューラ装置の動作パターンを示す図であり、図10は、そのフローチャートである。図9において、該当する動作の機能部については、太いブロックで示している。
ステップS21で新規プロセス起動・低周波動作可否判断部160は、入力されたコマンドが、低周波動作可能かを判定し、該当する場合は、専用命令の影響を受けるCPUコアで動作させるため、プロセスコア割当部150に対し、コマンド名を出力する(図9の符号ff)。
ステップS22でプロセスコア割当部150は、入力されたプロセスIDを持つプロセスを、入力されたCPUコアで動作させる。プロセスコア割当部150は、入力された性能影響を受けるコアについては、コア割当の変更を行い(図9の符号ee)、コアのリストとして情報を保持して本フローの処理を終了する。
<各プロセスの、周波数影響の情報収集(定期的に実行)>
図11は、各プロセスの、周波数影響の情報収集(定期的に実行)のタスクスケジューラ装置の動作パターンを示す図であり、図12は、そのフローチャートである。図11において、該当する動作の機能部については、太いブロックで示している。
図11は、各プロセスの、周波数影響の情報収集(定期的に実行)のタスクスケジューラ装置の動作パターンを示す図であり、図12は、そのフローチャートである。図11において、該当する動作の機能部については、太いブロックで示している。
ステップS31で稼働中プロセス動作周波数性能影響判定部130は、サーバ(タスクスケジューラ装置100)内で動作するすべてのプロセスについて、動作周波数の性能影響を判定する。具体的には、稼働中プロセス動作周波数性能影響判定部130は、一定間隔(例えば、10秒)や、プロセスの新規起動・終了をきっかけに起動し、各プロセスの、CPU動作周波数による性能影響を判定する。
ステップS32でプロセス実行優先度管理部21は、稼働中プロセス動作周波数性能影響判定部130の指示に基づき、サーバ(タスクスケジューラ装置100)内で動作するプロセスのID一覧と、それぞれの実行優先度を取得し、稼働中プロセス動作周波数性能影響判定部130に送る(図11の符号gg)。具体的には、プロセス実行優先度管理部21は、niceコマンドによる各プロセスの実行優先度を取得する。
ステップS33で稼働中プロセス動作周波数性能影響判定部130は、一定間隔(例えば、10秒)や、プロセスの新規起動・終了をきっかけに起動し、各プロセスの、CPU動作周波数による性能影響を判定する。
ステップS34でプロセスIO量記録部22は、稼働中プロセス動作周波数性能影響判定部130の指示に基づき、サーバ(タスクスケジューラ装置100)内で動作するプロセスの一覧と、それぞれのInput/Output量を取得し、稼働中プロセス動作周波数性能影響判定部130に送る(図11の符号hh)。具体的には、プロセスIO量記録部22は、iostatコマンドによる各プロセスのIO量を取得して本フローの処理を終了する。
[ハードウェア構成]
上記実施形態に係るタスクスケジューラ装置100,100A(図1~図4)は、例えば図13に示すような構成のコンピュータ900によって実現される。
図13は、タスクスケジューラ装置100,100A(図1~図4)の機能を実現するコンピュータ900の一例を示すハードウェア構成図である。
コンピュータ900は、CPU901、ROM902、RAM903、HDD904、通信インターフェイス(I/F:Interface)906、入出力インターフェイス(I/F)905、およびメディアインターフェイス(I/F)907を有する。
上記実施形態に係るタスクスケジューラ装置100,100A(図1~図4)は、例えば図13に示すような構成のコンピュータ900によって実現される。
図13は、タスクスケジューラ装置100,100A(図1~図4)の機能を実現するコンピュータ900の一例を示すハードウェア構成図である。
コンピュータ900は、CPU901、ROM902、RAM903、HDD904、通信インターフェイス(I/F:Interface)906、入出力インターフェイス(I/F)905、およびメディアインターフェイス(I/F)907を有する。
CPU901は、ROM902またはHDD904に格納されたプログラムに基づいて動作し、タスクスケジューラ装置100,100A(図1~図4)の各部の制御を行う。ROM902は、コンピュータ900の起動時にCPU901によって実行されるブートプログラムや、コンピュータ900のハードウェアに依存するプログラム等を格納する。
CPU901は、入出力I/F905を介して、マウスやキーボード等の入力装置910、および、ディスプレイ等の出力装置911を制御する。CPU901は、入出力I/F905を介して、入力装置910からデータを取得するともに、生成したデータを出力装置911へ出力する。なお、プロセッサとしてCPU901とともに、GPU(Graphics Processing Unit)等を用いてもよい。
HDD904は、CPU901により実行されるプログラムおよび当該プログラムによって使用されるデータ等を記憶する。通信I/F906は、通信網(例えば、NW(Network)920)を介して他の装置からデータを受信してCPU901へ出力し、また、CPU901が生成したデータを、通信網を介して他の装置へ送信する。
メディアI/F907は、記録媒体912に格納されたプログラムまたはデータを読み取り、RAM903を介してCPU901へ出力する。CPU901は、目的の処理に係るプログラムを、メディアI/F907を介して記録媒体912からRAM903上にロードし、ロードしたプログラムを実行する。記録媒体912は、DVD(Digital Versatile Disc)、PD(Phase change rewritable Disk)等の光学記録媒体、MO(Magneto Optical disk)等の光磁気記録媒体、磁気記録媒体、導体メモリテープ媒体又は半導体メモリ等である。
例えば、コンピュータ900が本実施形態に係る一装置として構成されるタスクスケジューラ装置100,100A(図1~図4)として機能する場合、コンピュータ900のCPU901は、RAM903上にロードされたプログラムを実行することによりタスクスケジューラ装置100,100Aの機能を実現する。また、HDD904には、RAM903内のデータが記憶される。CPU901は、目的の処理に係るプログラムを記録媒体912から読み取って実行する。この他、CPU901は、他の装置から通信網(NW920)を介して目的の処理に係るプログラムを読み込んでもよい。
[効果]
以上説明したように、特定の演算に特化した専用命令を実行する計算システム1000,1000A(図1~図4)において、1つの物理コアを疑似的に複数の論理コアに見せかけるハードウェアマルチスレッディングを用いて、論理コアに専用命令実行プロセスを割り当てるタスクスケジューラ装置100,100A(図1~図4)であって、専用命令を実行することを検知する専用命令実行検知部110(専用命令検知部)と、専用命令の実行に起因し、専用命令実行コアと同じ物理コアで動作する、動作周波数の低下する論理コアを特定する専用命令実行影響コア特定部120(コア特定部)と、専用命令実行影響コア特定部120が特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行う低周波数許容プロセス割当判断部140(許容プロセス判断部)と、低周波数許容プロセス割当判断部140が特定した前記プロセスを、動作周波数の低下する論理コアに割当てるプロセスコア割当部150と、を備える。
以上説明したように、特定の演算に特化した専用命令を実行する計算システム1000,1000A(図1~図4)において、1つの物理コアを疑似的に複数の論理コアに見せかけるハードウェアマルチスレッディングを用いて、論理コアに専用命令実行プロセスを割り当てるタスクスケジューラ装置100,100A(図1~図4)であって、専用命令を実行することを検知する専用命令実行検知部110(専用命令検知部)と、専用命令の実行に起因し、専用命令実行コアと同じ物理コアで動作する、動作周波数の低下する論理コアを特定する専用命令実行影響コア特定部120(コア特定部)と、専用命令実行影響コア特定部120が特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行う低周波数許容プロセス割当判断部140(許容プロセス判断部)と、低周波数許容プロセス割当判断部140が特定した前記プロセスを、動作周波数の低下する論理コアに割当てるプロセスコア割当部150と、を備える。
このようにすることにより、タスクスケジューラ装置100,100Aは、例えばSIMD命令または暗号化のための専用命令を含む特定の演算に特化した専用命令の実行プロセスを含むプロセス群に対し、それぞれのプロセスに必要なCPU時間を割当てつつ、実行物理コア数を削減することができる。そして、実行物理コア数を削減により、消費電力を削減することができる。
すなわち、動作周波数が低下するコアを特定し、特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセス(低周波数で動作しても影響の少ないプロセス)を、SIMD実行と同一の物理コアにスケジューリングすることで、コアの利用率を上げる。これにより、コア利用率を向上させ、CPU動作コア数を削減し、消費電力を削減することができる。特に、vRAN(vDU)はSIMD演算をフル活用するため、コア効率を上げようとすると、課題となる可能性が高いが、本タスクスケジューラ装置100A(図4)は、vRANにおいて、コア利用率を向上させ、CPU動作コア数を削減の両立を図ることができる。
すなわち、動作周波数が低下するコアを特定し、特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセス(低周波数で動作しても影響の少ないプロセス)を、SIMD実行と同一の物理コアにスケジューリングすることで、コアの利用率を上げる。これにより、コア利用率を向上させ、CPU動作コア数を削減し、消費電力を削減することができる。特に、vRAN(vDU)はSIMD演算をフル活用するため、コア効率を上げようとすると、課題となる可能性が高いが、本タスクスケジューラ装置100A(図4)は、vRANにおいて、コア利用率を向上させ、CPU動作コア数を削減の両立を図ることができる。
達成される要件をまとめると、下記である。
・要件1:各プロセスそれぞれが必要とするCPU処理時間が割り当てられること(性能向上効果)
・要件2:実行コア数の削減(各プロセスの実行に必要な実行コア数が最小化されること)(省電力効果)
上記要件1、要件2を達成することができる。
・要件1:各プロセスそれぞれが必要とするCPU処理時間が割り当てられること(性能向上効果)
・要件2:実行コア数の削減(各プロセスの実行に必要な実行コア数が最小化されること)(省電力効果)
上記要件1、要件2を達成することができる。
タスクスケジューラ装置100,100A(図1~図4)において、専用命令実行検知部110は、事前に登録された専用命令を使うプロセス一覧を記憶しており、前記プロセス一覧と、実行中のプロセス名とを比較し、専用命令が実行されたか否かを検知する。
このように、タスクスケジューラ装置100,100Aは、コア利用率を向上させ、CPU動作コア数を削減し、消費電力を削減することができる。
タスクスケジューラ装置100,100A(図1~図4)において、低周波数許容プロセス割当判断部140は、専用命令の影響を受けるコアの番号の情報と、各プロセスの動作周波数による性能影響情報をもとに、低い周波数で動作させてもよいプロセスと、専用命令による影響があるコアとをペアとして選定する。
このようにすることにより、タスクスケジューラ装置100,100Aは、低い周波数で動作させてもよいプロセスと、専用命令による影響があるCPUコアとを選定し、ペアとして出力することで、低周波数で動作する許容度合いが、最も高いものから選定する、など様々な組み合わせの選定を可能とする。また、タスクスケジューラ装置100,100Aは、許容度合いに応じた優先度順の選定を可能とする。
タスクスケジューラ装置100,100A(図1~図4)において、稼働中のプロセスの、動作周波数の性能影響を判定する稼働中プロセス動作周波数性能影響判定部130(性能影響判定部)を備え、稼働中プロセス動作周波数性能影響判定部130は、事前に登録された、プロセス一覧(プロセスのID一覧)と、実行中のプロセス名とを比較し、稼働中プロセスの動作周波数性能の影響を判定する。
このように、タスクスケジューラ装置100,100Aは、プロセス名等の情報をもとに、動作周波数による影響を判定する静的な手法により動作周波数の性能影響を判定することができる。静的な手法は、事前に登録されたプロセス一覧と実行中のプロセス名との比較判定であるため、演算量が少なく、迅速に判定できる。
タスクスケジューラ装置100,100A(図1~図4)において、稼働中のプロセスの、動作周波数の性能影響を判定する稼働中プロセス動作周波数性能影響判定部130(性能影響判定部)を備え、稼働中プロセス動作周波数性能影響判定部130は、各プロセスの実行優先度およびプロセス入出力量を取得し、実行優先度とプロセス入出力量とを統合して影響度とし、この影響度をもとに稼働中プロセスの動作周波数性能の影響を判定する。
このように、タスクスケジューラ装置100,100Aは、稼働中のプロセスの、動作周波数の性能影響を判定する動的な手法により動作周波数の性能影響を判定することができる。演算による動的な手法は、動作周波数の性能影響を動的に判定することができる。静的な手法では、対応がしきれない場合であっても適応的に動作周波数の性能影響を判定することができる。
また、特定の演算に特化した専用命令を実行する計算システム1000,1000A(図1~図4)であって、1つの物理コアを疑似的に複数の論理コアに見せかけるハードウェアマルチスレッディングを用いて、論理コアに前記専用命令実行プロセスを割り当てるタスクスケジューラ装置100,100A(図1~図4)を備え、タスクスケジューラ装置100,100A(図1~図4)は、専用命令を実行することを検知する専用命令実行検知部110と、専用命令の実行に起因し、専用命令実行コアと同じ物理コアで動作する、動作周波数の低下する論理コアを特定する専用命令実行影響コア特定部120と、専用命令実行影響コア特定部120が特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行う低周波数許容プロセス割当判断部140と、低周波数許容プロセス割当判断部140が特定した前記プロセスを、動作周波数の低下する前記論理コアに割当てるプロセスコア割当部150と、を備える。
計算システム1000,1000A(図1~図4)は、サーバ上のCPU(プロセッサ)が、汎用の命令と、特定の演算に特化した専用命令(SIMD演算命令や、暗号化のための専用命令)をサポートする計算機システムである。
上記プロセッサは、CPU以外にも、GPU/FPGA/ASIC等のプロセッサに、SIMD演算実行コア特定機能がある場合には、同様に適用可能である。
上記プロセッサは、CPU以外にも、GPU/FPGA/ASIC等のプロセッサに、SIMD演算実行コア特定機能がある場合には、同様に適用可能である。
なお、専用命令は、特定の演算に特化した命令であれば、どのような命令でもよい。本実施形態では、一例として、SIMD命令または暗号化のための専用命令としているが、SIMD/暗号化はあくまで一例であり、SIMD/暗号化以外の専用命令にも同様に適用できる。
なお、上記実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行するためのソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)カード、光ディスク等の記録媒体に保持することができる。
10 CPU(プロセッサ)
11 物理コア
20 OS
21 プロセス実行優先度管理部
22 プロセスIO量記録部
30 userland(ユーザランド)
100,100A タスクスケジューラ装置
110 専用命令実行検知部(専用命令検知部)
120 専用命令実行影響コア特定部(コア特定部)
130 稼働中プロセス動作周波数性能影響判定部(性能影響判定部)
140 低周波数許容プロセス割当判断部(許容プロセス判断部)
150 プロセスコア割当部
160 新規プロセス起動・低周波動作可否判断部
1000,1000A 計算システム
11 物理コア
20 OS
21 プロセス実行優先度管理部
22 プロセスIO量記録部
30 userland(ユーザランド)
100,100A タスクスケジューラ装置
110 専用命令実行検知部(専用命令検知部)
120 専用命令実行影響コア特定部(コア特定部)
130 稼働中プロセス動作周波数性能影響判定部(性能影響判定部)
140 低周波数許容プロセス割当判断部(許容プロセス判断部)
150 プロセスコア割当部
160 新規プロセス起動・低周波動作可否判断部
1000,1000A 計算システム
Claims (8)
- 特定の演算に特化した専用命令を実行する計算システムにおいて、1つの物理コアを疑似的に複数の論理コアに見せかけるハードウェアマルチスレッディングを用いて、前記論理コアに前記専用命令の実行プロセスを割り当てるタスクスケジューラ装置であって、
前記専用命令を実行することを検知する専用命令検知部と、
前記専用命令の実行に起因し、前記専用命令の実行コアと同じ前記物理コアで動作する、動作周波数の低下する前記論理コアを特定するコア特定部と、
前記コア特定部が特定した動作周波数の低下する前記論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行う許容プロセス判断部と、
前記許容プロセス判断部が特定した前記プロセスを、動作周波数の低下する前記論理コアに割当てるプロセスコア割当部と、を備える
ことを特徴とするタスクスケジューラ装置。 - 前記専用命令検知部は、事前に登録された専用命令を使うプロセス一覧を記憶しており、前記プロセス一覧と、実行中のプロセス名とを比較し、前記専用命令が実行されたか否かを検知する
ことを特徴とする請求項1に記載のタスクスケジューラ装置。 - 前記許容プロセス判断部は、前記専用命令の影響を受けるコアの番号の情報および各プロセスの動作周波数による性能影響情報をもとに、低い周波数で動作させてもよいプロセスと、前記専用命令による影響があるコアとをペアにして選定する
ことを特徴とする請求項1に記載のタスクスケジューラ装置。 - 稼働中のプロセスの、動作周波数の性能影響を判定する性能影響判定部を備え、
前記性能影響判定部は、事前に登録された、プロセス一覧と、実行中のプロセス名とを比較し、稼働中プロセスの動作周波数性能の影響を判定する
ことを特徴とする請求項1に記載のタスクスケジューラ装置。 - 稼働中のプロセスの、動作周波数の性能影響を判定する性能影響判定部を備え、
前記性能影響判定部は、各プロセスの実行優先度およびプロセス入出力量を取得し、前記実行優先度と前記プロセス入出力量とを統合して影響度とし、当該影響度をもとに稼働中プロセスの動作周波数性能の影響を判定する
ことを特徴とする請求項1に記載のタスクスケジューラ装置。 - 特定の演算に特化した専用命令を実行する計算システムであって、
1つの物理コアを疑似的に複数の論理コアに見せかけるハードウェアマルチスレッディングを用いて、前記論理コアに前記専用命令の実行プロセスを割り当てるタスクスケジューラ装置を備え、
前記タスクスケジューラ装置は、
前記専用命令を実行することを検知する専用命令検知部と、
専用命令の実行に起因し、前記専用命令の実行コアと同じ前記物理コアで動作する、動作周波数の低下する前記論理コアを特定するコア特定部と、
前記コア特定部が特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行う許容プロセス判断部と、
前記許容プロセス判断部が特定した前記プロセスを、動作周波数の低下する前記論理コアに割当てるプロセスコア割当部と、を備える
ことを特徴とする計算システム。 - 特定の演算に特化した専用命令の実行プロセスを割り当てるタスクスケジューラ装置のタスクスケジューリング方法であって、
前記専用命令を実行することを検知するステップと、
前記専用命令の実行に起因し、前記専用命令の実行コアと同じ物理コアで動作する、動作周波数の低下する論理コアを特定するステップと、
特定した動作周波数の低下する論理コアに対して、低周波数で動作しても所定性能要件を満たすプロセスを特定する判断を行うステップと、
特定した前記プロセスを、動作周波数の低下する前記論理コアに割当てるステップと、
を実行する
ことを特徴とするタスクスケジューリング方法。 - コンピュータを、請求項1乃至5のいずれか一項に記載のタスクスケジューラ装置として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2022/036964 WO2024075157A1 (ja) | 2022-10-03 | 2022-10-03 | タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2022/036964 WO2024075157A1 (ja) | 2022-10-03 | 2022-10-03 | タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2024075157A1 true WO2024075157A1 (ja) | 2024-04-11 |
Family
ID=90607684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2022/036964 WO2024075157A1 (ja) | 2022-10-03 | 2022-10-03 | タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2024075157A1 (ja) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004240669A (ja) * | 2003-02-05 | 2004-08-26 | Sharp Corp | ジョブスケジューラおよびマルチプロセッサシステム |
JP2018531450A (ja) * | 2015-09-23 | 2018-10-25 | クアルコム,インコーポレイテッド | 並列ワークスティーリング処理システムのための事前対処的リソース管理 |
JP2022121124A (ja) * | 2021-02-08 | 2022-08-19 | 日本電気株式会社 | ジョブ割当制御装置、ジョブ割当制御方法、及び、ジョブ割当制御プログラム |
-
2022
- 2022-10-03 WO PCT/JP2022/036964 patent/WO2024075157A1/ja unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004240669A (ja) * | 2003-02-05 | 2004-08-26 | Sharp Corp | ジョブスケジューラおよびマルチプロセッサシステム |
JP2018531450A (ja) * | 2015-09-23 | 2018-10-25 | クアルコム,インコーポレイテッド | 並列ワークスティーリング処理システムのための事前対処的リソース管理 |
JP2022121124A (ja) * | 2021-02-08 | 2022-08-19 | 日本電気株式会社 | ジョブ割当制御装置、ジョブ割当制御方法、及び、ジョブ割当制御プログラム |
Non-Patent Citations (1)
Title |
---|
ANONYMOUS: "Accelerating x265 with Intel® Advanced Vector Extensions 512 (Intel® AVX-512)", 11 May 2018 (2018-05-11), XP093156698, Retrieved from the Internet <URL:https://www.intel.com/content/www/us/en/developer/articles/technical/accelerating-x265-with-intel-advanced-vector-extensions-512-intel-avx-512.html> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809913B2 (en) | Load balancing of cloned virtual machines | |
US11113782B2 (en) | Dynamic kernel slicing for VGPU sharing in serverless computing systems | |
TWI591542B (zh) | 雲端計算節點、方法與系統及電腦可讀媒體 | |
US7673113B2 (en) | Method for dynamic load balancing on partitioned systems | |
US8140817B2 (en) | Dynamic logical partition management for NUMA machines and clusters | |
US9268394B2 (en) | Virtualized application power budgeting | |
US11093297B2 (en) | Workload optimization system | |
US8762999B2 (en) | Guest-initiated resource allocation request based on comparison of host hardware information and projected workload requirement | |
US7992151B2 (en) | Methods and apparatuses for core allocations | |
US8694638B2 (en) | Selecting a host from a host cluster to run a virtual machine | |
US10298512B2 (en) | System and method for performing resource allocation for a host computer cluster | |
US20100115510A1 (en) | Virtual graphics device and methods thereof | |
US20230376359A1 (en) | Cross-cluster load balancer | |
US9690608B2 (en) | Method and system for managing hosts that run virtual machines within a cluster | |
US20140373010A1 (en) | Intelligent resource management for virtual machines | |
KR20040028805A (ko) | 프로세서로 산출하기 위한 시스템 | |
US11556391B2 (en) | CPU utilization for service level I/O scheduling | |
US20210303327A1 (en) | Gpu-remoting latency aware virtual machine migration | |
JP6993495B2 (ja) | クラウド・ネットワーキングにおけるスケーラブルな統計及び分析メカニズム | |
WO2021011319A1 (en) | Memory-aware placement for virtual gpu enabled systems | |
Farzaneh et al. | A novel virtual machine placement algorithm using RF element in cloud infrastructure | |
WO2024075157A1 (ja) | タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラム | |
US11954534B2 (en) | Scheduling in a container orchestration system utilizing hardware topology hints | |
US11868805B2 (en) | Scheduling workloads on partitioned resources of a host system in a container-orchestration system | |
US11886926B1 (en) | Migrating workloads between computing platforms according to resource utilization |
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: 22961348 Country of ref document: EP Kind code of ref document: A1 |