Load distribution system, load distribution method, load distribution device, and load distribution program

JPWO2025041214A1Pending Publication Date: 2025-02-27
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025541176
Authority / Receiving Office
JP · JP
Patent Type
Applications
Filing Date
2023-08-21
Publication Date
2025-02-27
Patent Text Reader

Abstract

A server (2) of a load distribution system (1000) is provided with: a processing performance collection unit (21) that collects processing performance values of devices that differ in performance in terms of executing a process; and a processing execution unit (22) that executes process processing. A load distribution device (1) is provided with: a data aggregation unit (11) that acquires the processing performance values from the server and stores the same in a storage unit (14) for each prescribed function; a load distribution ratio determination unit (12) that calculates, for a prescribed function, a performance ratio that is a processing performance value of a device relative to the lowest processing performance value, and determines a load distribution ratio according to the calculated performance ratio; and a load distribution execution unit (13) that distributes process processing to the device according to the determined load distribution ratio.
Need to check novelty before this filing date? Find Prior Art

Description

Load balancing system, load balancing method, load balancing device, and load balancing program

[0001] The present invention relates to a load balancing system, a load balancing method, a load balancing device, and a load balancing program for allocating tasks to be executed by devices.

[0002] Conventionally, load balancers and task schedulers have been used as a method for allocating tasks to multiple devices (e.g., CPU cores) mounted on a server, etc. In a distribution method using a load balancer, load distribution is performed at a predetermined ratio (see Non-Patent Document 1).

[0003] In load balancing using a task scheduler, for example, the standard scheduler (Stop, Deadline, Realtime, Fair, Idle) of the Linux kernel ("Linux" is a registered trademark) controls the task execution order according to the process priority (see Non-Patent Document 2). Also, in schedulers for heterogeneous physical core configurations with different operating frequencies (e.g., Capacity Aware, Energy Aware), a common concept that higher operating frequencies have relatively larger capacity is introduced, and existing scheduling mechanisms are applied to heterogeneous cores (see Non-Patent Documents 3 and 4).

[0004] "Load Balancer - Round Robin / Ratio / Least Connection / Fastest," [online], [Retrieved August 4, 2023], As a network engineer, Internet <URL: https: / / www.infraexpert.com / study / loadbalancer4.html> "Reading Comprehension Introduction to the Linux Kernel (Scheduler Part 2)," [online], Qiita Inc., [Retrieved August 4, 2023], Internet <URL: https: / / qiita.com / ueba / items / 749e8da79b49fc0bc932> "Capacity Aware Scheduling," [online], [Retrieved August 4, 2023], The kernel development community, Internet <URL: https: / / www.kernel.org / doc / html / next / scheduler / sched-capacity.html> "Energy Aware Scheduling," [online], [Retrieved August 4, 2023], The kernel development community, Internet <URL: https: / / www.kernel.org / doc / html / next / scheduler / sched-energy.html>

[0005] However, with conventional methods, when load distribution is performed to processes (or servers equipped with CPUs with different processing performance) linked to devices (e.g., CPU cores) with different processing performance, only the processes (or servers equipped with CPUs with low processing performance) running on the devices (CPU cores) with low processing performance become overloaded, resulting in a degradation of service levels. Furthermore, if load distribution is performed to match CPU cores with low processing performance to avoid the above, excess slack will be created in CPU cores with high processing performance, reducing resource utilization efficiency.

[0006] The present invention was made in consideration of these points, and its objective is to improve resource utilization efficiency by not causing performance degradation of processes processed by devices with low processing performance when distributing device load, while at the same time fully utilizing the processing capacity of devices with high processing performance.

[0007] The load balancing system of the present invention is a load balancing system comprising a server having a device that processes processes and a load balancing device that distributes loads to multiple processes running on the server, wherein the server comprises a processing performance collection unit that collects the processing performance values ​​of each device with different performance that executes the process as data for each predetermined function that affects the processing performance values, and a processing execution unit that executes the processing of the process according to a load balancing ratio calculated by the load balancing device, and the load balancing device comprises a data aggregation unit that acquires the processing performance values ​​of the devices with different performance from the server and stores them in a memory unit for each predetermined function that affects the processing performance values, a load balancing ratio determination unit that calculates the processing performance values ​​of the devices with different performance as a performance ratio, which is the processing performance value of the device relative to the lowest processing performance value of the predetermined function, and executes a load balancing ratio determination process that determines a load balancing ratio to the devices with different performance according to the calculated performance ratio, and a load balancing execution unit that allocates process processing to devices owned by the server according to the determined load balancing ratio.

[0008] According to the present invention, in device load balancing, it is possible to prevent performance degradation of processes processed by devices with low processing performance, while at the same time making full use of the processing capacity of devices with high processing performance, thereby improving resource utilization efficiency.

[0009] FIG. 1 is a diagram showing the overall configuration of a load balancing system including a load balancing device according to an embodiment of the present invention. FIG. 2 is a diagram for explaining each function that affects a processing performance value. FIG. 3 is a flowchart showing the flow of processing executed by the load balancing system according to an embodiment of the present invention. FIG. 4 is a diagram showing the overall configuration of a load balancing system according to a second embodiment of the present invention. FIG. 5 is a flowchart showing the flow of processing executed by the load balancing system according to the second embodiment. FIG. 6 is a hardware configuration diagram showing an example of a computer that realizes the functions of the load balancing device according to an embodiment of the present invention.

[0010] Next, an embodiment of the present invention (hereinafter referred to as "the present embodiment") will be described.

[0011] [First Embodiment] To solve the aforementioned problem of reduced resource utilization efficiency due to the processing limit of low-performance cores, the load balancing system according to this embodiment (the load balancing system according to the first embodiment) increases or decreases the load allocation to processes running on devices (CPU cores) according to the processing capacity of the devices. Specifically, this load balancing system collects information on the processing performance values ​​of each device, determines a load balancing ratio (allocation ratio) based on that data, and then performs allocation. In this way, tasks are allocated at an appropriate ratio according to the performance of each device (CPU core), preventing performance degradation of processes processed by devices with low processing performance and simultaneously improving resource utilization efficiency.

[0012] First, the assumptions for explaining the configuration and effects of this embodiment will be described. (1) The application to be controlled is one in which the number of cores allocated to a process (or a virtual machine (VM), container, etc.) can be increased or decreased by scaling out / in, scaling up / down, etc. (2) There are temporary or permanent differences in processing performance among the devices (CPU cores) installed on the server. (3) For example, existing technologies such as the Linux kernel task scheduler and the load balancer for pods using Kubernetes Service ("Kubernetes" is a registered trademark) distribute the load evenly without considering the processing capacity of each CPU core. The following explanation will be based on the assumptions (1) to (3). Note that in the following explanation of the embodiment, the device will mainly be described as a CPU (CPU core), but the device in this embodiment is not limited to a CPU (CPU core) and can also be applied to accelerators such as a GPU (Graphics Processing Unit), FPGA (Field Programmable Gate Array), and XPU.

[0013] 1 is a diagram showing the overall configuration of a load balancing system 1000 including a load balancing apparatus 1 according to this embodiment. As shown in Fig. 1, the load balancing apparatus 1 is connected to and communicates with each server 2 equipped with a device (CPU core) to be controlled.

[0014] <<Server>> In the server 2, applications are implemented on a CPU core as HW (hardware). These applications may be implemented in a VM or a container. Then, a CPU (CPU core) associated with each application processes threads, which are units of instruction execution for the running application (process). The server 2 is configured by a computer including a control unit, an input / output unit, and a storage unit (all of which are not shown).

[0015] The input / output unit inputs and outputs information to and from the load balancing device 1, etc. This input / output unit is composed of a communication interface that transmits and receives information via a communication line, and an input / output interface that inputs and outputs information to and from an input device such as a keyboard (not shown) and an output device such as a monitor (not shown).

[0016] The storage unit is composed of a hard disk, flash memory, RAM (Random Access Memory), etc. This storage unit temporarily stores programs for executing the functions of the control unit and information necessary for processing by the control unit.

[0017] The control unit controls all the processes executed by the server 2 and includes a processing performance collection unit 21 and a processing execution unit 22 .

[0018] The processing performance collection unit 21 collects processing performance values ​​of devices (here, CPU cores) with different performance for executing processes as data for each predetermined function that affects the processing performance value. For example, the processing performance value is defined as two types: "throughput" and "time (delay) from task arrival to processing completion," and either one or a combination of these values ​​(for example, a linear combination) is used depending on the characteristics of the process and the SLA (Service Level Agreement).

[0019] The processing performance collection unit 21 collects some or all data regarding certain functions that affect the processing performance values ​​shown below (e.g., sibling cores, P-State, C-State, core type, high temperature operation, power saving mode, performance conflicts due to core sharing).

[0020] Sibling cores are a function that assigns multiple threads to one core. For example, HyperThreading, a technology implemented in Intel (registered trademark) products, divides one physical core into logical cores (front and back). When server 2 has this sibling core function, for example, in the example shown by reference numeral 201 in FIG. 2, a processing performance value is obtained when both logical cores (front and back) are executing processing using HyperThreading, and a processing performance value is obtained when only one of the logical cores (front and back) is executing processing.

[0021] P-State P-State is a function that dynamically changes the operating frequency by setting a specific combination of operating frequency and operating voltage for the CPU core. As shown by reference numeral 202 in Figure 2, the processing performance value is obtained in "P0," a state where the CPU operating frequency and voltage are at their maximum, and in "P8," a state where the CPU frequency is, for example, 800-2100 (MHz) and controlled in 100 (MHz) increments.

[0022] C-State C-State is a function that defines the CPU's idle state (power saving mode). It is defined from C0 (active state) to Cn, and the larger the value of n, the longer the time required to return (the time to transition to C0). The return time (delay) from C0 to Cn is obtained as a processing performance value.

[0023] Core Type: For example, suppose a server has four CPU cores, two of which are high-performance cores and two of which are low-performance cores (see reference numeral 203 in FIG. 2). In this way, when two types of CPU cores with different processing performance are configured within a single server, the processing performance value for each type of core group installed is acquired. This can be achieved, for example, by using technology equipped with multiple types of processors, such as big.LITTLE, developed by ARM (registered trademark).

[0024] High-temperature operation: In addition to the normal operating mode, this function suppresses performance and transitions to a low-performance mode when the CPU core becomes too hot (see reference numeral 204 in Figure 2). The processing performance values ​​of each CPU core are acquired in both the normal state and the performance suppression state due to high temperature.

[0025] Power saving mode: When a power saving mode (for example, EPP or EPB) is set in the CPU, the processing performance value in that power saving mode is acquired. EPP (Energy Performance Preference) and EPB (Intel performance and energy bias hint) are functions that set the priority of processor power and performance using parameters, and power saving can be set by prioritizing power.

[0026] - Performance competition due to core sharing When one CPU core is shared by multiple VMs or containers, for example, performance deteriorates compared to when one CPU is used by one VM or container. Therefore, we obtain processing performance values ​​for the case when one CPU core is shared by multiple processes and when one CPU core is occupied by one process.

[0027] The processing performance collection unit 21 is set in advance with information to be acquired regarding specific functions that are factors that affect the processing performance values ​​of each server 2, and acquires information regarding each processing performance value before the start of actual processing or at specific time intervals.

[0028] Returning to FIG. 1, the process execution unit 22 is a functional unit that processes application processes, and executes the allocated processes in accordance with the load distribution ratio determined by the load distribution device 1 according to the performance of the CPU cores, for example.

[0029] The load distribution device 1 acquires information on processing performance values ​​from each server 2, determines the load distribution ratio for processes running on the device (CPU core) according to the processing capacity of that device (CPU core), and executes load distribution for the application processes. This load distribution device 1 is configured by a computer including a control unit, an input / output unit (both not shown), and a memory unit 14.

[0030] The input / output unit inputs and outputs information to and from each server 2, etc. This input / output unit is composed of a communication interface that transmits and receives information via a communication line, and an input / output interface that inputs and outputs information to and from an input device such as a keyboard (not shown) and an output device such as a monitor (not shown).

[0031] The storage unit 14 is configured with a hard disk, flash memory, RAM (Random Access Memory), etc. This storage unit 14 stores information related to processing performance values ​​acquired from each server 2, programs (load balancing programs) for executing each function of the control unit, and also temporarily stores information necessary for processing by the control unit.

[0032] The control unit controls all the processes executed by the load distribution device 1 , and includes a data aggregation unit 11 , a load distribution ratio determination unit 12 , and a load distribution execution unit 13 .

[0033] The data aggregator 11 acquires processing performance values ​​of devices (CPU cores) with different performance from each server 2 and stores them in the storage unit 14 for each predetermined function that affects the processing performance value. The data aggregator 11 also monitors the processing performance values ​​of the CPU cores acquired from each server 2 and periodically (at predetermined time intervals) outputs instruction information to the load balancing ratio determiner 12 to execute a load balancing ratio determination process. The data aggregator 11 also outputs instruction information to the load balancing ratio determiner 12 to execute a load balancing ratio determination process when it detects a predetermined change in data that dynamically changes as the processing performance value of the CPU cores. Examples of cases in which a predetermined change is detected include when there is a change in settings for each function that requires recalculation of the processing performance value, or when there is a fluctuation in the processing performance value that exceeds a predetermined threshold due to the change in settings.

[0034] The load distribution ratio determination unit 12 calculates the load distribution ratio for each process based on the CPU core processing performance data aggregated by the data aggregation unit 11. The load distribution ratio determination unit 12 calculates the CPU core processing performance value as a scalar value and uses that value to calculate the load distribution ratio for each process. Specifically, the load distribution ratio determination unit 12 defines the lowest processing capacity value for each function as "1.0," calculates the processing performance value of devices (CPU cores) with different performance relative to that as a performance ratio, and determines the load distribution ratio for the devices (CPU cores) with different performance based on the calculated performance ratio. When devices (CPU cores) with different performance have multiple specified functions and combine the processing performance values ​​for each function, the load distribution ratio determination unit 12 multiplies the performance ratios of the processing performance values ​​calculated for each function. As described above, the processing performance value is defined for two types: "throughput" and "time (delay) from task arrival to processing completion." Either or a combination of these values ​​is used depending on the process characteristics and SLA. Below, the method for calculating the load distribution ratio for each function is described.

[0035] Sibling cores: For example, suppose a physical core is split into two logical cores (front and back) using HyperThreading. Let's assume that the processing power of one physical core is "1," and the processing power of two logical cores is "1.4." The processing power of one logical core using the front and back cores is half of "1.4," or "0.7." 1 / 0.7 = approximately 1.4 is the processing performance value of one physical core. Note that logical cores split using HyperThreading generally have less processing power than a single physical core. Therefore, the processing performance value of a CPU core is "1.4" when processing is performed by only one of the front or back logical cores, and "1.0" when processing is performed by both logical cores.

[0036] P-State: The operating frequency set by P-State is 800-2100 MHz, controllable in 100 MHz increments. Processing power increases or decreases in proportion to the CPU frequency. Here, the minimum operating frequency of 800 MHz is set to "1.0," and for every 100 MHz increase, it increases by "0.125," until the maximum of 2100 MHz is set to "2.625." Furthermore, if P-State is controlled by a governor within the CPU or the Linux kernel, the CPU frequency changes frequently. Therefore, instead of the CPU frequency itself, the processing performance value can be calculated by defining a processing performance ratio for the governor (e.g., Power Save, Performance) applied to each CPU core. For example, if the processing performance ratio for Power Save and Performance is 3x, the CPU processing performance values ​​would be "1.0" and "3.0," respectively.

[0037] C-State: Assume that the upper limit of C-State transitions can be set for each CPU core or for each CPU. Assume that a CPU core can have three C-State states: C0, C1, and C6, with recovery times of 0, 100, and 1000 μs. If the task completion time in C0 state is 1 ms, the estimated completion times for each state are 1 ms, 1.1 ms, and 2.0 ms. From the above, the CPU core's processing performance value in C6 state is 1.0, the processing performance value in C1 state is 2.0 ÷ 1.1 = 1.8, and the processing performance value in C0 state is 2.0 ÷ 1 = 2.0.

[0038] - Core type For example, assume a CPU consisting of a total of eight cores: four high-performance cores and four low-performance cores. Also, assume that the P-State (CPU frequency) is fixed and the processing performance difference is two times. In this case, the processing performance value of the low-performance core is "1.0" and the processing performance value of the high-performance core is "2.0".

[0039] High-temperature operation: In addition to the normal operating mode, assume that the CPU switches to low-performance mode when it gets too hot. Assume the difference in processing performance at this time is three times. In this case, the processing performance value for the low-performance mode during high-temperature operation is "1.0," and the normal mode is "3.0."

[0040] - Power saving mode Assume a CPU that can set EPP 0-255 or EPB 0-15. In this case, 0 is maximum performance, and the higher the number, the lower the performance (and the more power-saving). Let's say the difference in processing power between 0 and the maximum is 3 times. In this case, the processing performance value when EPP or EPB is maximum is "1.0", and when it is 0 it is "3.0". In between, the calculation is EPP x 3.0 ÷ 256 for EPP, and EPB x 3.0 ÷ 16 for EPB.

[0041] - Performance competition due to core sharing For example, when one CPU core is shared by two VMs, the processing performance value when one CPU core is shared by two processes is set to "1.0", and the processing performance value when one CPU core is occupied by one process is set to "1.4".

[0042] The load distribution ratio determination unit 12 calculates the performance ratio of the device (CPU core) for each function. When the load distribution ratio determination unit 12 combines the processing performance values ​​of multiple functions, it multiplies the performance ratios of the processing performance values ​​calculated for each function. Note that if the ratio difference due to the multiplication of performance ratios based on multiple processing performance values ​​becomes larger than a predetermined threshold, specifically, if the difference in the allocation ratio between one CPU core and another CPU core becomes large, such as 1:15, by multiplying the performance ratios of the processing performance values ​​of multiple functions, the predetermined threshold may be set to, for example, 10, and if the difference in performance ratio exceeds 10, the load distribution ratio may be set to 1:10 for all. Furthermore, correction may be performed by multiplying by a coefficient corresponding to the magnitude of the calculated difference.

[0043] Furthermore, when combining the processing performance values ​​of multiple functions, the load distribution ratio determiner 12 may set a coefficient for each function according to the functions to be combined, correct the performance ratio of the processing performance value of each function by the coefficient, and then multiply the multiple functions. In particular, when combining functions that have a common operating entity, such as a P-state and a power saving mode, such as controlling the CPU frequency, the processing performance value of each function may be corrected as necessary, taking into account excessive influence when multiple functions are combined.

[0044] The load distribution execution unit 13 distributes the load on the application processes in accordance with the load distribution ratio determined by the load distribution ratio determination unit 12 and causes the process execution unit 22 of the server 2 to execute the process.

[0045] <Processing Flow> Next, a description will be given of the processing flow executed by the load balancing system 1000 according to this embodiment. Fig. 3 is a flowchart showing the processing flow executed by the load balancing system 1000 according to this embodiment.

[0046] First, the processing performance collection unit 21 of the server 2 collects processing performance values ​​related to each function of the device (CPU core) (step S1). Specifically, the processing performance collection unit 21 collects some or all of the data (processing performance values) related to each function that affects the processing performance value (e.g., sibling cores, P-State, C-State, core type, high-temperature operation, power-saving mode, performance contention due to core sharing). The function data related to the processing performance value that the processing performance collection unit 21 will acquire is set in advance.

[0047] The data collected by the processing performance collection unit 21 is data on "throughput" and "time (delay) from task arrival to processing completion," and either one or a combination of these values ​​is collected as processing performance value data depending on the process characteristics and SLA. The processing performance collection unit 21 transmits the collected processing performance value data to the load distribution device 1.

[0048] Next, the data aggregator 11 of the load balancer 1 aggregates the data of the CPU core processing performance values ​​acquired from each server 2 and stores the data in the storage unit 14 (step S2). The data aggregator 11 saves data for each function that affects the processing performance value.

[0049] Next, the load distribution ratio determination unit 12 of the load distribution device 1 calculates the performance ratio of devices (CPU cores) with different performance for a given function based on the CPU core processing performance data aggregated by the data aggregation unit 11, and determines the load distribution ratio for each process based on the calculated performance ratio (step S3). Specifically, the load distribution ratio determination unit 12 defines the lowest processing performance value for each function as 1.0, calculates the ratio of each processing performance value to that (performance ratio: scalar value), and uses this value to calculate the task allocation ratio (load distribution ratio). For example, if the processing performance value of CPU core 0 is "1.0" and the processing performance value of CPU core 1 is "1.5," the allocation ratio (load distribution ratio) is set to 1.0:1.5.

[0050] Then, the load balancing execution unit 13 of the load balancing device 1 sets and executes allocation to the processing execution unit 22 of each server 2 at the load balancing ratio (task allocation ratio) determined by the load balancing ratio determination unit 12 for the application process (step S4).

[0051] Next, the data aggregator 11 of the load balancer 1 determines whether a predetermined change in the processing performance value has been detected or whether a predetermined time has elapsed (step S5). If the data aggregator 11 detects a predetermined change in the processing performance value or if the predetermined time has elapsed (step S5 → Yes), the process returns to step S1 and continues. If the data aggregator 11 does not detect a predetermined change or if the predetermined time has not elapsed (step S5 → No), the process ends. The load balancer 1 dynamically updates the load balancing ratio by re-executing steps S1 to S5 at predetermined time intervals. This allows the load balancer 1 to track temporary changes in processing capacity and always allocate tasks at an optimal load balancing ratio.

[0052] [Second Embodiment] Next, a load balancing system according to a second embodiment of the present invention will be described. Fig. 4 is a diagram showing the overall configuration of a load balancing system 1000A according to the second embodiment. The differences from the load balancing system 1000 according to the present embodiment shown in Fig. 1 are that each server 2 is provided with a metrics collection unit 23, and the data aggregator 11 (Fig. 1) of the load balancing device 1 is replaced with a data aggregator 11A.

[0053] The load balancing system 1000A according to the second embodiment performs processing that takes into account the fact that, depending on the nature of a process, the processing performance of a CPU core may be unrelated to the performance of an application. This is because performing load balancing control on such a process could result in performance degradation due to unintended bottlenecks. For example, if there is a bottleneck in data memory transfer, performing load balancing control to increase the amount of data allocated to that process could result in performance degradation regardless of the processing performance of the CPU core. Therefore, a function is added to collect various metrics (e.g., resource usage rate) and determine whether or not to control that process.

[0054] Each server 2 includes a metrics collection unit 23. The metrics collection unit 23 collects metrics (e.g., resource usage rates) that are set in advance according to the process to be load balanced and expected bottlenecks. The metrics collection unit 23 then transmits the collected metrics to the load balancer 1.

[0055] The data aggregator 11A of the load balancer 1 acquires preset metric information from the metrics collector 23 of the server 2 and determines whether to control a process based on a predetermined logic. Even when load balancing control is performed based on the collected metrics, the data aggregator 11A excludes application processes that do not depend on the processing performance of the CPU core from the control targets. For example, if a bottleneck is anticipated in data memory transfer, even if the task allocation amount to that CPU core is increased, the resource utilization rate (CPU utilization rate) will not increase. In such a case, since there is no need to increase the task allocation amount, the application process is excluded from the control targets. The predetermined logic in this case is that if the resource utilization rate (CPU utilization rate) does not increase accordingly when the task allocation amount increases, the process is excluded from the control targets. A predetermined logic corresponding to the metrics is preset in the data aggregator 11A.

[0056] <Processing Flow> Fig. 5 is a flowchart showing the processing flow executed by the load balancing system 1000A according to the second embodiment. Processing that is the same as that of the load balancing system 1000 according to the present embodiment shown in Fig. 3 is assigned the same step number and description thereof will be omitted.

[0057] In step S10, the metrics collection unit 23 of each server 2 collects preset metrics (e.g., resource usage rates) and transmits them to the load balancer 1. The data aggregation unit 11A of the load balancer 1 then determines, based on the collected metrics, whether or not to control the application process. If it is determined that the application process is to be controlled (step S10 → Yes), the process proceeds to the next step S1, and continues processing from step S1 onwards. On the other hand, if it is determined that the application process is not to be controlled (step S10 → No), load balancing control is not performed and processing ends.

[0058] In this way, the load balancing system 1000A according to the second embodiment can suppress unnecessary control of processes that do not affect the performance of applications even if a difference in processing performance occurs between CPU cores.

[0059] [Modification of this embodiment] A modification of the load balancing system 1000 according to this embodiment will be described below. In the load balancing system 1000 according to this embodiment, the load balancing device 1 has been described as including a "data aggregation unit" and a "load balancing ratio determination unit." However, the "data aggregation unit" and the "load balancing ratio determination unit" may be included in, for example, a load balancer or a task scheduler.

[0060] <Modification 1> In a load balancing system according to Modification 1, the load balancer has the functions of a "data aggregator" and a "load balancing ratio determiner." However, the "data aggregator" and the "load balancing ratio determiner" may be implemented outside the load balancer and operate in cooperation with the load balancer. The load balancer may also be a logical distribution function unit such as a service mesh in Kubernetes. In Modification 1, the load balancer functions as a load balancing device.

[0061] In the load balancing system according to the first modification, the "load balancing ratio determination unit" utilizes a weighted request distribution function that is generally provided in a load balancer. The "processing performance collection unit" and the "processing execution unit" are executed on the server 2, and the process that constitutes the "processing execution unit" may be a process (bare metal process) that runs directly on the OS of the server 2, or may be a VM or a container.

[0062] <Modification 2> In a load balancing system according to Modification 2, the task scheduler of the OS is provided with the functions of a "data aggregation unit" and a "load balancing ratio determination unit." However, the "data aggregation unit" and the "load balancing ratio determination unit" may be implemented outside the task scheduler and operate in cooperation with the task scheduler. In Modification 2, the task scheduler functions as a load balancing device.

[0063] The "load balancing execution unit" is the OS task scheduler itself, and instructs each CPU core to execute a process so that the ratio corresponds to the processing performance value of the CPU core. The "processing performance collection unit" and the "processing execution unit" are executed on the server 2, and the process that is the entity of the "processing execution unit" may be a process that runs directly on the OS of the server 2 (bare metal process), or may be a VM or container.

[0064] <Modification 3> A core allocation function may be newly added to a system in which a load balancer, a task scheduler, or both operate. This core allocation function may operate on server 2 having a "processing performance collection unit" and a "processing execution unit," or may be implemented externally and operate in cooperation with the load balancer, the scheduler, or server 2. In Modification 3, the core allocation function functions as a load distribution device.

[0065] In this case, the core allocation function executes a "data aggregation unit," a "load distribution ratio determination unit," and a "load distribution execution unit." The core allocation function allocates a group of processes running on the server 2 to each CPU core using functions such as taskset or cgroups so that the load corresponds to the ratio of the processing performance values ​​of the CPU cores. The process that is the entity of the "processing execution unit" may be a process (bare metal process) that runs directly on the OS of the server 2, or may be a VM (virtual machine) or a container.

[0066] Other modified examples will be described. In the load balancing system 1000 and the like in this embodiment, the device has been described assuming a CPU core. However, the device in this embodiment is not limited to a CPU core, and can also be applied to a GPU, FPGA, or the like. In this case, the "processing performance value of the CPU core" is replaced with the "processing performance value of the GPU, FPGA, or the like" to execute processing. Since GPUs and FPGAs have a function for controlling the P-State (clock frequency), load balancing control can be performed based on the difference in processing performance value due to this P-State.

[0067] <Hardware Configuration> The load balancing apparatus 1 according to this embodiment is realized by a computer 900 having a configuration such as that shown in Fig. 6. Fig. 6 is a hardware configuration diagram showing an example of the computer 900 that realizes the functions of the load balancing apparatus 1 according to this embodiment. The computer 900 has a CPU 901, a ROM (Read Only Memory) 902, a RAM 903, an HDD (Hard Disk Drive) 904, an input / output I / F (Interface) 905, a communication I / F 906, and a media I / F 907.

[0068] The CPU 901 operates based on a program (load balancing program) stored in the ROM 902 or the HDD 904, and performs control using a control unit (data aggregation unit, load balancing ratio determination unit, load balancing execution unit). The ROM 902 stores a boot program executed by the CPU 901 when the computer 900 is started, programs related to the hardware of the computer 900, and the like.

[0069] The CPU 901 controls an input device 910 such as a mouse or keyboard, and an output device 911 such as a display or printer, 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. Note that a GPU (Graphics Processing Unit) or the like may be used as a processor together with the CPU 901.

[0070] The HDD 904 stores programs executed by the CPU 901 and 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.

[0071] The media I / F 907 reads a program (load balancing program) or data stored in the recording medium 912 and outputs it to the CPU 901 via the RAM 903. The CPU 901 loads a program related to a target process 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 Disc), a magneto-optical recording medium such as an MO (Magneto Optical Disc), a magnetic recording medium, a semiconductor memory, or the like.

[0072] For example, when a computer 900 functions as the load balancing device 1 of the present invention, a CPU 901 of the computer 900 executes a load balancing program loaded onto a RAM 903, thereby realizing the functions of the load balancing device 1. Furthermore, data stored in the RAM 903 is stored in an HDD 904. The CPU 901 reads and executes a program related to a target process from a recording medium 912. Alternatively, the CPU 901 may read a program related to a target process from another device via a communication network (NW 920).

[0073] <Effects> The following describes the effects of the load balancing system and the like according to the present invention. The load balancing system according to the present invention is a load balancing system 1000 including a server 2 having a device that processes processes and a load balancing apparatus 1 that distributes loads to a plurality of processes running on the server 2, wherein the server 2 includes a processing performance collection unit 21 that collects processing performance values ​​of each device with different performance that executes the processes as data for each predetermined function that affects the processing performance values, and a processing execution unit 22 that executes the processes in accordance with a load balancing ratio calculated by the load balancing apparatus 1, and the load balancing apparatus 1 includes a data aggregation unit 11 that acquires the processing performance values ​​of the devices with different performances from the server 2 and stores them in a storage unit 14 for each predetermined function that affects the processing performance values, a load balancing ratio determination unit 12 that calculates the processing performance values ​​of the devices with different performances as a performance ratio, which is the processing performance value of the device relative to the lowest processing performance value of the predetermined function, and executes a load balancing ratio determination process to determine a load balancing ratio for the devices with different performances in accordance with the calculated performance ratio, and a load balancing execution unit 13 that allocates process processing to devices owned by the server 2 in accordance with the determined load balancing ratio.

[0074] By doing this, the load balancing system 1000 can balance the load at an appropriate ratio according to the performance of each device, thereby preventing performance degradation of processes processed by devices with low processing performance, and at the same time, making full use of the processing capacity of devices with high processing performance, thereby improving resource utilization efficiency.

[0075] Furthermore, in the load balancing system 1000, the data aggregation unit 11 monitors the processing performance values ​​of devices with different performance for each specified function, and when it detects a specified change and at specified time intervals, it instructs the load balancing ratio determination unit 12 to execute the load balancing ratio determination process.

[0076] In this way, the load balancing system 1000 can follow temporary changes in the processing power of each device and balance the load at an appropriate ratio.

[0077] Furthermore, in the load balancing system 1000, when devices with different process processing performance have multiple specified functions that affect the processing performance value, the load balancing ratio determination unit 12 determines the load balancing ratio by multiplying the performance ratios calculated for each function.

[0078] By doing this, the load balancing system 1000 can distribute the load at an appropriate ratio corresponding to the multiple functions, even if devices with different process processing capabilities have multiple specified functions.

[0079] Furthermore, in the load balancing system 1000A, the server 2 further includes a metrics collection unit 23 that collects metrics that serve as indicators of whether or not a process should be subject to load balancing control, and the data aggregation unit 11A of the load balancing device 1 acquires metric information and determines, based on a predetermined logic, whether or not a process should be subject to load balancing control.

[0080] In this way, the load balancing system 1000A can suppress unnecessary control of processes that do not affect the performance of applications even if a difference in processing performance occurs between CPU cores.

[0081] The present invention is not limited to the above-described embodiments, and many modifications can be made by a person having ordinary skill in the art within the technical concept of the present invention.

[0082] REFERENCE SIGNS LIST 1 Load balancing device 2 Server 11, 11A Data aggregation unit 12 Load balancing ratio determination unit 13 Load balancing execution unit 14 Storage unit 21 Processing performance collection unit 22 Processing execution unit 23 Metrics collection unit 1000, 1000A Load balancing system

Claims

1. A load balancing system comprising: a server having a device for processing processes; and a load balancing device that distributes loads to a plurality of processes operating on the server, wherein the server comprises: a processing performance collection unit that collects processing performance values ​​of each device with different performance for executing the processes as data for each predetermined function that affects the processing performance values; and a processing execution unit that executes processing of the processes in accordance with a load balancing ratio calculated by the load balancing device, wherein the load balancing device comprises: a data aggregation unit that acquires processing performance values ​​of the devices with different performance from the server and stores them in a memory unit for each predetermined function that affects the processing performance values; a load balancing ratio determination unit that calculates the processing performance values ​​of the devices with different performance as a performance ratio, which is the processing performance value of the device relative to the lowest processing performance value of the predetermined function, and executes a load balancing ratio determination process to determine a load balancing ratio for the devices with different performance in accordance with the calculated performance ratio; and a load balancing execution unit that allocates process processing to devices owned by the server in accordance with the determined load balancing ratio.

2. The load balancing system of claim 1, wherein the data aggregation unit monitors the processing performance values ​​of the devices with different performance for each of the specified functions, and when a specified change is detected and at specified time intervals, instructs the load balancing ratio determination unit to execute the load balancing ratio determination process.

3. The load balancing system of claim 1, wherein the load balancing ratio determination unit determines the load balancing ratio by multiplying the performance ratios calculated for each function when devices with different performance for processing the process have multiple specified functions that affect the processing performance value.

4. The load balancing system of claim 1, further comprising: a metrics collection unit that collects metrics that serve as an indicator of whether or not the process should be subject to load balancing control; and the data aggregation unit of the load balancing device acquires information about the metrics and determines, based on a predetermined logic, whether or not the process should be subject to load balancing control.

5. A load balancing method for a load balancing system comprising a server having a device for processing processes and a load balancing device that distributes loads to a plurality of processes operating on the server, wherein the server executes a step of collecting processing performance values ​​of each of devices with different performance for executing the process as data for each predetermined function that affects the processing performance value, the load balancing device executes a step of acquiring the processing performance values ​​of the devices with different performance from the server and storing them in a memory unit for each predetermined function that affects the processing performance value, calculating the processing performance values ​​of the devices with different performance as a performance ratio, which is the processing performance value of the device relative to the lowest processing performance value of the predetermined function, and executing a load balancing ratio determination process of determining a load balancing ratio for the devices with different performance in accordance with the calculated performance ratio, and allocating process processing to devices owned by the server in accordance with the determined load balancing ratio, and the server executes a step of processing the processes in accordance with the load balancing ratio calculated by the load balancing device.

6. A load balancing device that distributes loads to a plurality of processes running on a device, comprising: a data aggregation unit that acquires processing performance values ​​of each of devices with different performance for executing the processes, and stores the values ​​in a memory unit for each specified function that affects the processing performance values; a load balancing ratio determination unit that calculates the processing performance values ​​of the devices with different performance as a performance ratio, which is the processing performance value of the device relative to the lowest processing performance value of the specified function, and executes a load balancing ratio determination process that determines a load balancing ratio to the devices with different performance in accordance with the calculated performance ratio; and a load balancing execution unit that allocates process processing to the devices with different performance in accordance with the determined load balancing ratio.

7. A load balancing method of a load balancing device that distributes loads to a plurality of processes running on a device, wherein the load balancing device executes the following steps: acquiring a processing performance value of each device with different performance for executing a process, and storing the acquired processing performance value in a memory unit for each predetermined function that affects the processing performance value; calculating the processing performance value of the device with different performance as a performance ratio, which is the processing performance value of the device relative to the lowest processing performance value of the predetermined function, and executing a load balancing ratio determination process that determines a load balancing ratio to the device with different performance in accordance with the calculated performance ratio; and allocating process processing to the device with different performance in accordance with the determined load balancing ratio.

8. A load balancing program for causing a computer as a load balancing device to execute the load balancing method according to claim 7.