WO2020004380A1 - 割当装置、システム、タスク割当方法及びプログラム - Google Patents

割当装置、システム、タスク割当方法及びプログラム Download PDF

Info

Publication number
WO2020004380A1
WO2020004380A1 PCT/JP2019/025125 JP2019025125W WO2020004380A1 WO 2020004380 A1 WO2020004380 A1 WO 2020004380A1 JP 2019025125 W JP2019025125 W JP 2019025125W WO 2020004380 A1 WO2020004380 A1 WO 2020004380A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
server
allocation
tasks
servers
Prior art date
Application number
PCT/JP2019/025125
Other languages
English (en)
French (fr)
Inventor
昌治 森本
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Publication of WO2020004380A1 publication Critical patent/WO2020004380A1/ja

Links

Images

Classifications

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

Definitions

  • the present invention is based on the priority claim of US Provisional Application No. 62 / 690,391 (filed on June 27, 2018), the entire contents of which are incorporated herein by reference. .
  • the present invention relates to an assignment device, a system, a task assignment method, and a program.
  • Patent Literature 1 discloses a load distribution system for suppressing the cost generated by using a cloud server as described above.
  • a server arranged in the user's network executes a part of processing (task) necessary for realizing an application (service), and a task that cannot be processed by the edge server is performed by a cloud server.
  • a system to execute on Such a system is often constructed for the purpose of reducing the utilization cost and improving the processing speed of the entire system.
  • a system that shares tasks required by the edge server and the cloud server with each other is referred to as an edge cloud system.
  • the edge cloud system not only costs are incurred in using a cloud server, but also costs are incurred in using a network (for example, the Internet) used for data transfer from the edge server to the cloud server.
  • a network for example, the Internet
  • the edge cloud system becomes vulnerable to load fluctuation.
  • a large number of tasks are assigned to the edge server so as to make maximum use of the resources of the edge server, even if the load on the system is slightly increased, the processing capacity of the edge server is lost and the service cannot be provided continuously.
  • a large amount of tasks are allocated to the cloud server in order to allow a margin in the processing capacity of the edge server in preparation for the load fluctuation, the use of the cloud server increases and the cost increases.
  • edge cloud system it is important to assign tasks required for applications for providing services to edge servers and cloud servers.
  • Non-Patent Document 1 discloses a task allocation method that restricts the CPU (Central Processing Unit) utilization of an edge server, the network bandwidth between the edge server and the cloud server, and the memory capacity of each server.
  • the task allocation method disclosed in Non-Patent Document 1 realizes task allocation that maximizes the throughput (processing amount) of the edge cloud system.
  • Non-Patent Document 1 discloses a task assignment method applicable to an edge cloud system. Specifically, Non-Patent Document 1 considers the task assignment as a NP (Non-deterministic Polynomial) complete problem of QM3DKP (Quadratic Multiple 3-Dimensional Knapsack Problem), and determines a task to be executed by an edge server and a cloud server. are doing. More specifically, in Non-Patent Literature 1, communication delay is minimized by allocating adjacent tasks to the same node (edge server or cloud server) as much as possible while searching for a topology defining the execution order of tasks in a breadth-first manner. In Non-Patent Document 1, a CPU usage rate, a network bandwidth, and a memory amount are expressed by linear amounts, and a minimum distance between a resource required for a task and an allocated resource is selected.
  • NP Non-deterministic Polynomial
  • QM3DKP Quadrattic Multiple 3-Dimensional Knapsack Problem
  • Non-Patent Document 1 is a heuristic algorithm. That is, by applying the technology disclosed in Non-Patent Document 1 to the edge cloud system, tasks are assigned to the edge server and the cloud server, and an application or the like can be realized.
  • Non-Patent Document 1 may not result in an optimal task arrangement. Specifically, a task may be assigned to the cloud server more than necessary, and the amount of data transmitted and received between the edge server and the cloud server may not be minimized. Further, in Non-Patent Document 1, when task assignment in an edge cloud system is treated as an NP complete problem called QM3DKP, a long time is required to obtain a solution (not necessarily an optimal solution).
  • the present invention has a main object to provide an assignment device, a system, a task assignment method, and a program that contribute to realizing task assignment to an edge server and a cloud server in a short time in an edge cloud system.
  • the second server executes a plurality of tasks necessary for realizing the application while sharing the tasks with each other, and the allocation determining unit determines whether to allocate each of the plurality of tasks to one of the first and second servers;
  • the determination of the boundary between the task to be assigned to the first server and the task to be assigned to the second server among the plurality of tasks is performed by a specific constraint expression.
  • An allocating device is provided that represents
  • a first server a second server connected to the first server via a network, and at least a CPU mounted on the first server ( (Central Processing Unit)
  • a mixed integer programming problem is constructed using information on resources and information on a bandwidth of a network connecting the first and second servers, and the first integer is constructed based on a solution of the mixed integer programming problem.
  • an assignment device that determines a task to be assigned to the second server, wherein the first and second servers share and execute a plurality of tasks necessary for realizing an application, and the assignment device includes: A determination as to which of the first and second servers each of the plurality of tasks is to be allocated; and a task to be allocated to the first server among the plurality of tasks.
  • a system is provided which realizes the determination of the boundary with the task to be assigned to the second server by a specific constraint expression.
  • an assignment device at least information on a CPU (Central Processing Unit) mounted on a first server and connection between the first server and the second server A mixed integer programming problem using the information on the bandwidth of the network to be performed, and determining a task to be assigned to the first and second servers based on a solution of the mixed integer programming problem;
  • the server executes a plurality of tasks necessary for realizing the application while sharing the tasks with each other, and determines whether to allocate each of the plurality of tasks to one of the first and second servers, and among the plurality of tasks, Determining the boundary between the task to be assigned to the first server and the task to be assigned to the second server is achieved by a specific constraint expression.
  • a method is provided.
  • a computer mounted on an allocating device includes at least information on a CPU (Central Processing Unit) resource mounted on a first server, A process of configuring a mixed integer programming problem using information on the bandwidth of a network connecting the two servers, and a process of determining a task to be assigned to the first and second servers based on a solution of the mixed integer programming problem
  • the first and second servers share and execute a plurality of tasks necessary for realizing an application, and assign each of the plurality of tasks to one of the first and second servers.
  • the program is provided.
  • This program can be recorded on a computer-readable storage medium.
  • the storage medium can be non-transient, such as a semiconductor memory, hard disk, magnetic recording medium, optical recording medium, and the like.
  • the present invention can be embodied as a computer program product.
  • an assignment device a system, a task assignment method, and a program that contribute to realizing task assignment to an edge server and a cloud server in a short time in an edge cloud system.
  • FIG. 1 is a diagram illustrating an example of a schematic configuration of an edge cloud system according to a first embodiment.
  • FIG. 7 is a diagram illustrating an example of processing included in face authentication.
  • FIG. 4 is a diagram for explaining a schematic operation of the assignment device according to the first embodiment.
  • FIG. 3 is a diagram illustrating an example of a hardware configuration of an assignment device according to the first embodiment.
  • FIG. 3 is a diagram illustrating an example of a processing configuration of the edge server according to the first embodiment.
  • FIG. 3 is a diagram illustrating an example of a processing configuration of a cloud server according to the first embodiment.
  • FIG. 4 is a diagram illustrating an example of a processing configuration of an assignment device according to the first embodiment.
  • FIG. 1 is a diagram illustrating an example of a schematic configuration of an edge cloud system according to a first embodiment.
  • FIG. 7 is a diagram illustrating an example of processing included in face authentication.
  • FIG. 4 is a diagram for explaining a schematic operation of the assignment
  • FIG. 5 is a diagram illustrating an example of a task graph stored in a storage unit.
  • FIG. 6 is a diagram illustrating an example of task information stored in a storage unit.
  • FIG. 4 is a diagram illustrating an example of network band information stored in a storage unit.
  • FIG. 4 is a diagram illustrating an example of performance requirements stored in a storage unit.
  • FIG. 5 is a diagram for explaining an operation of an assignment determining unit according to the first embodiment.
  • FIG. 5 is a diagram for explaining an operation of an assignment determining unit according to the first embodiment.
  • 5 is a flowchart illustrating an example of an operation of an assignment determining unit according to the first embodiment. It is a figure showing an example of a task graph.
  • FIG. 6 is a diagram illustrating an example of task information stored in a storage unit.
  • FIG. 4 is a diagram illustrating an example of network band information stored in a storage unit.
  • FIG. 4 is a diagram illustrating an example of performance requirements stored in a storage unit
  • FIG 14 is a diagram illustrating an example of a processing configuration of an edge server according to a second embodiment. It is a figure showing an example of processing composition of a cloud server concerning a 2nd embodiment. It is an example of the processing configuration of the allocation device according to the third embodiment. It is a figure for explaining operation of the allocation device concerning a 3rd embodiment. It is a figure for explaining operation of the allocation device concerning a 3rd embodiment. It is a figure showing an example of an extended task graph.
  • connection lines between blocks in each drawing include both bidirectional and unidirectional.
  • the one-way arrow schematically indicates the flow of a main signal (data), and does not exclude bidirectionality.
  • a circuit diagram, a block diagram, an internal configuration diagram, a connection diagram, and the like shown in the disclosure of the present application although not explicitly shown, an input port and an output port exist at an input terminal and an output terminal of each connection line. The same applies to the input / output interface.
  • the allocation device 100 includes an allocation determination unit 101 (see FIG. 1).
  • the allocation determination unit 101 mixes at least information on CPU (Central Processing Unit) resources mounted on the first server and information on the bandwidth of a network connecting the first server and the second server. Construct an integer programming problem.
  • the assignment determining unit 101 determines a task to be assigned to the first and second servers based on the solution of the mixed integer programming problem.
  • the first and second servers share and execute a plurality of tasks necessary for realizing the application.
  • the assignment determining unit 101 determines whether to assign each of the plurality of tasks to one of the first and second servers, and, among the plurality of tasks, a task to be assigned to the first server and a task to be assigned to the second server. Is determined by a specific constraint equation.
  • the assignment device 100 handles assignment of tasks in the edge cloud system as a mixed integer programming problem. Since the mixed integer programming problem is an optimization problem that maximizes or minimizes an objective function represented by a linear expression under constraints expressed by an inequality, software (program) representing the optimal problem Is performed in an information processing apparatus, the time required for processing to obtain a solution to the optimal problem is short.
  • the allocation device 100 determines whether to allocate a plurality of tasks forming one application to the first server or the second server, and, among the plurality of tasks, the task to be allocated to the first server and the second server. The determination of the boundary with the task to be assigned to is represented by a specific constraint expression.
  • the solution of the task assignment can be obtained in a short time. That is, in the edge cloud system including the first and second servers, the allocation device 100 can realize the task allocation to the two servers in a short time. Further, with respect to the objective function, the cost of operating the edge cloud system is minimized by setting the use of the resources of the cloud server to be minimized and solving the mixed integer programming problem. That is, the allocating apparatus 100 can obtain the optimal solution regarding the task allocation in the edge cloud system in a short time.
  • FIG. 2 is a diagram illustrating an example of a schematic configuration of the edge cloud system according to the first embodiment.
  • the edge cloud system includes a plurality of edge servers 10-1 to 10-N (N is a positive integer, the same applies hereinafter), a cloud server 20, and an allocation device 30. .
  • edge servers 10-1 to 10-N when there is no particular reason to distinguish the edge servers 10-1 to 10-N, the edge servers 10-1 to 10-N will be simply referred to as "edge servers 10.”
  • the edge server 10 and the cloud server 20 are connected via a network and are configured to be able to communicate with each other.
  • the edge server 10 is a server that is located at the end of the network on the user side and performs edge computing.
  • the cloud server 20 is a server that is arranged on the cloud side network and performs cloud computing.
  • the edge server 10 and the cloud server 20 constitute an edge cloud system.
  • the edge server 10 and the cloud server 20 share and execute a plurality of tasks necessary for realizing the application.
  • the execution result of the task assigned to the edge server 10 is transmitted to the cloud server 20.
  • the cloud server 20 executes the assigned task using the execution result acquired from the edge server 10.
  • the edge server 10 and the cloud server 20 cooperate to realize one application.
  • the edge server 10 is connected to a camera (not shown) that outputs video data, and an application related to face authentication (person identification) is realized.
  • detection processing of a face image included in video data is performed. Thereafter, a process of cutting out the detected face image from the video data is executed. Thereafter, a plurality of feature points (feature vectors) characterizing the face image are calculated from the cut-out face image. Lastly, a matching process of the calculated feature point and the feature amount using the prepared feature point is performed.
  • Each of the above tasks is executed by the edge server 10 or the cloud server 20.
  • the above tasks can be realized by existing technology and are obvious to those skilled in the art, so detailed descriptions thereof will be omitted.
  • the task division shown in FIG. 3 is an example, and is not intended to limit the task division of the application related to face authentication to four.
  • an application related to face authentication may be realized by three or less tasks, or may be realized by five or more tasks.
  • the execution of the plurality of tasks is shared between the edge server 10 and the cloud server 20 to realize an application related to face authentication. That is, a plurality of tasks necessary to realize one application are optimally distributed and distributed to the edge server 10 and the cloud server 20.
  • the allocating device 30 is a device that determines allocation of the plurality of tasks to the edge server 10 and the cloud server 20.
  • the allocating device 30 configures the mixed integer planning problem using at least information on the CPU resources mounted on the edge server 10 and information on the bandwidth of the network connecting the edge side and the cloud side.
  • the allocating device 30 determines a task to be allocated to the edge server 10 and the cloud server 20 based on the solution of the mixed integer programming problem.
  • the allocating device 30 sets the objective function of the mixed integer programming problem so as to use as much of the CPU resource of the edge server 10 as possible. In other words, the allocating device 30 allocates tasks so as to realize an application related to face authentication while optimizing (minimizing) the cost related to the resources of the cloud server 20.
  • the allocating device 30 reallocates the tasks executed by the edge server 10 and the cloud server 20, respectively, according to the load fluctuation of the edge cloud system. That is, the assignment device 30 changes the assignment of the tasks assigned to the edge server 10 and the cloud server 20 according to the state of the edge cloud system.
  • FIG. 4 is a diagram for explaining a schematic operation of the allocation device 30.
  • the edge cloud system shown in FIG. 4 is in operation, and an application relating to face authentication is realized by the edge server 10-1 and the cloud server 20.
  • the edge server 10 executes tasks related to “face detection” and “face extraction”, and the cloud server 20 executes tasks related to “feature point calculation” and “feature point matching”. In such a situation, consider the case where the load of the edge cloud system fluctuates.
  • the allocation device 30 reduces the tasks to be allocated to the edge server 10 and increases the processing capacity of the edge server 10.
  • the allocation device 30 monitors the CPU usage rate of the edge server 10 as load information of the edge cloud system, and grasps the load of the edge cloud system. When it is determined from the CPU usage rate that the processing capacity of the edge server 10 has reached the upper limit, the allocation device 30 changes the task allocation between the edge server 10 and the cloud server 20.
  • the allocation device 30 changes the execution subject of the “face cutout” task from the edge server 10-1 to the cloud server 20.
  • the allocation device 30 increases the tasks allocated to the edge server 10. For example, when almost no person is shown in the video obtained from the camera and there is little data to be processed by the edge server 10, the tasks are arranged so that many tasks are executed by the edge server 10. That is, when the CPU resources (arithmetic processing capacity) of the edge server 10 have room, the allocation device 30 increases the tasks to be allocated to the edge server 10 and makes full use of the resources of the edge server 10.
  • the assignment device 30 determines the assignment of each task so that the CPU resources of the edge server 10 are used as much as possible.
  • the assignment device 30 notifies the edge server 10 and the cloud server 20 of the determined assignment (the task executed by each server), and continues the operation as the edge cloud system. Note that each server generally knows in advance the execution order of the notified tasks, and it is not necessary for the allocation device 30 to notify each server of the task execution order.
  • FIG. 5 is a diagram illustrating an example of a hardware configuration of the allocation device 30.
  • the allocation device 30 has a configuration illustrated in FIG.
  • the allocation device 30 includes a CPU (Central Processing Unit) 31, a memory 32, an input / output interface 33, a NIC (Network Interface Card) 34 as a communication interface, and the like, which are mutually connected by an internal bus.
  • the configuration shown in FIG. 5 is not intended to limit the hardware configuration of the allocation device 30.
  • the allocation device 30 may include hardware (not shown).
  • the number of CPUs and the like included in the assignment device 30 is not intended to be limited to the example illustrated in FIG. 5.
  • a plurality of CPUs 31 may be included in the assignment device 30.
  • the memory 32 is a RAM (Random Access Memory), a ROM (Read Only Memory), an auxiliary storage device (such as a hard disk) or the like.
  • the input / output interface 33 is an interface of an input / output device (not shown).
  • the input / output device includes, for example, a display device, an operation device, and the like.
  • the display device is, for example, a liquid crystal display or the like.
  • the operation device is, for example, a keyboard or a mouse.
  • the function of the allocation device 30 is realized by a processing module described later.
  • the processing module is realized, for example, by the CPU 31 executing a program stored in the memory 32.
  • the program can be downloaded via a network or updated using a storage medium storing the program.
  • the processing module may be realized by a semiconductor chip. That is, the function performed by the processing module may be realized by any hardware or software executed using the hardware.
  • the hardware configurations of the edge server 10 and the cloud server 20 can be the same as those of the allocation device 30, and are obvious to those skilled in the art.
  • the cloud server 20 has higher performance.
  • the arithmetic processing capability of the cloud server 20 is substantially infinite in comparison with the edge server 10. That is, it is assumed that the arithmetic processing capability of the cloud server 20 is high enough to execute a plurality of tasks constituting an application executed in the edge cloud system with a sufficient margin.
  • FIG. 6 is a diagram illustrating an example of a processing configuration (processing module) of the edge server 10 according to the first embodiment.
  • the edge server 10 includes a communication control unit 201, a data input unit 202, a task execution unit 203, and a load notification unit 204.
  • the communication control unit 201 controls communication with other devices (the cloud server 20, the allocation device 30).
  • the communication control unit 201 transmits data (packet) to another device.
  • the communication control unit 201 distributes a packet received from another device to another processing module (for example, the task execution unit 203).
  • the data input unit 202 acquires video data output from a camera (not shown). The data input unit 202 transfers the obtained video data to the task execution unit 203.
  • the task execution unit 203 executes some or all of a plurality of tasks constituting an application related to face authentication. For example, the task execution unit 203 executes some or all of the four tasks illustrated in FIG.
  • the task execution unit 203 executes a task described in “execution task notification” notified from the allocation device 30. Further, as described later, since the CPU allocation rate at the time of executing each task is also notified from the allocation apparatus 30, the task execution unit 203 executes each task at the notified CPU allocation rate.
  • the task execution unit 203 transmits the execution result to the cloud server 20 when the execution of the last task among the tasks to be executed by the own device (edge server 10) is completed. For example, when the task execution unit 203 executes a task related to “face detection” and “face extraction” among the four tasks illustrated in FIG. Sent to.
  • the load notification unit 204 notifies the allocation device 30 of information indicating the load of the own device (the edge server 10). For example, the load notification unit 204 transmits the CPU usage rate of its own device to the allocation device 30 as load information.
  • the load notification unit 204 can notify the allocation device 30 of the load information at an arbitrary timing. For example, the load notification unit 204 notifies the allocation device 30 of the load information at a predetermined timing or after a predetermined period has elapsed.
  • the load notification unit 204 performs a threshold process on the obtained load information, and when the load rises above a predetermined first threshold or when the load falls below a predetermined second threshold, The load information may be notified to the allocation device 30. That is, when it is considered that the load on the edge server 10 fluctuates greatly (changes), the load notification unit 204 may notify the allocation device 30 of the load information at the time.
  • the load information notified by the load notification unit 204 to the allocation device 30 is not limited to the CPU usage rate.
  • a predetermined relationship for example, a proportional relationship
  • the memory usage may be notified to the cloud server 20 as load information.
  • the load notification unit 204 can acquire information such as a CPU usage rate and a memory usage amount by using a function of an OS (Operating System) installed in the edge server 10.
  • OS Operating System
  • FIG. 7 is a diagram illustrating an example of a processing configuration (processing module) of the cloud server 20 according to the first embodiment.
  • the cloud server 20 includes a communication control unit 301, a task execution unit 302, and a result output unit 303.
  • the communication control unit 301 controls communication with other devices (the edge server 10 and the allocation device 30).
  • the task execution unit 302 has the same function as the task execution unit 203 of the edge server 10. That is, the task execution unit 302 executes the task notified from the assignment device 30 among the plurality of tasks forming the application related to face authentication. At that time, the task execution unit 302 executes the task assigned to the own device using the task execution result received from the edge server 10.
  • the task execution unit 302 passes the execution result to the result output unit 303.
  • the result output unit 303 outputs an execution result (for example, a result of face authentication) acquired from the task execution unit 302. For example, the result output unit 303 transfers the execution result to another server. Alternatively, when the user who has installed the edge server 10 needs the execution result, the result output unit 303 may transmit the execution result to the edge server 10.
  • an execution result for example, a result of face authentication
  • FIG. 8 is a diagram illustrating an example of a processing configuration (processing module) of the allocation device 30.
  • the allocation device 30 includes a communication control unit 401, an allocation determination unit 402, and a storage unit 403.
  • the communication control unit 401 controls communication with another device.
  • the assignment determining unit 402 determines assignment of tasks to be executed by the edge server 10 and the cloud server 20, respectively.
  • the allocation determining unit 402 determines a task to be allocated to the edge server 10 and the cloud server 20 (executes task re-allocation) when it is determined that the load fluctuation of the edge cloud system is larger than a predetermined value.
  • the assignment determination unit 402 determines a task to be assigned to the edge server 10 and the cloud server 20, the assignment determination unit 402 notifies each server of the determined task as an “execution task”.
  • the storage unit 403 stores information and data necessary for the operation of the allocation device 30.
  • the storage unit 403 stores information to be referred to when the assignment determining unit 402 determines task assignment.
  • the storage unit 403 stores information on an application realized by the edge cloud system. More specifically, the storage unit 403 stores a task graph that determines connections regarding a plurality of tasks constituting the application and an execution order of each task.
  • the storage unit 403 stores information as shown in FIG. 9 as a task graph.
  • the task graph divides an application related to face authentication into a plurality of tasks, and defines a connection relationship (dependency, topology) of each task and an execution order thereof.
  • each task is treated as a node. Further, the task graph includes a start node connected to the first task (the face detection node in FIG. 9) and an end node connected to the last task (the feature amount matching node in FIG. 9).
  • the start node and the end node are nodes for specifying the start and end of the task graph.
  • the start node is assigned to the edge server 10 and the end node is assigned to the cloud server 20.
  • the start node may be regarded as a video data acquisition task, and the end node may be regarded as a collation result output task.
  • the execution of the application related to face authentication starts from the edge server 10 and ends at the cloud server 20.
  • the storage unit 403 stores, as task information, detailed specifications for each of a plurality of tasks constituting an application related to face authentication.
  • the storage unit 403 stores information as shown in FIG. 10 as task information.
  • the task information includes a CPU allocation rate and a data size obtained as a result of executing each task for each of a plurality of tasks forming an application.
  • the CPU allocation ratio is a ratio of a CPU resource of the edge server 10 that needs to be allocated to a corresponding task when processing one video frame.
  • the example in FIG. 10 indicates that 20% of the CPU resources (the computing power of the CPU) of the edge server 10 is required to execute the face detection task on one video frame.
  • the data size is the size of data obtained as a result of processing one video frame by the corresponding task.
  • the CPU allocation rate of each task may be determined according to the processing amount of each task. Normally, a scheduler mounted on an operating system equally allocates CPU resources to each task unless otherwise instructed. However, for example, when the same CPU resource is allocated to the face detection task and the face extraction task, the respective tasks have different performances (throughputs), but the system needs to achieve the same performance (same throughput) by two tasks. Therefore, the CPU allocation ratio is determined according to the performance ratio of each task. It is preferable that the validity of the determined CPU allocation ratio is verified by causing a processor equivalent to the CPU mounted on the edge server 10 to execute a target task.
  • the storage unit 403 stores information on the network bandwidth between the edge server 10 and the cloud server 20 (network bandwidth information). For example, the storage unit 403 stores the network bandwidth between each edge server 10 and the cloud server 20, as illustrated in FIG.
  • the value to be registered as the network bandwidth information may be a physical bandwidth (theoretical value) of the network and an available bandwidth (an actually available bandwidth). From the viewpoint of system operation, it is desirable to register the available bandwidth. .
  • the storage unit 403 stores information (performance requirements) on performance required for each of a plurality of tasks. For example, as shown in FIG. 12, the storage unit 403 stores the number of persons who need to be processed per unit time in the edge cloud system for each task. In FIG. 12, the number of persons that need to be processed by the system per unit time is used as the performance requirement of each task, but another index may be used as the performance requirement of each task. For example, the number of frames may be used as a performance requirement for each task.
  • FIGS. 9 to 12 showing the information stored in the storage unit 403 are exemplifications, and each information is not limited to the numbers and units described in these drawings.
  • the information stored in the storage unit 403 is registered in the allocation device 30 by a system administrator or the like in advance before the operation of the edge cloud system.
  • values for each situation may be prepared.
  • the network bandwidth between the edge server 10 and the cloud server 20 differs depending on the time zone
  • the network bandwidth for each time zone may be prepared.
  • the allocation determining unit 402 switches the network bandwidth to be referred to according to the time zone for determining the task allocation.
  • performance requirements may be prepared for each time zone.
  • the assignment determining unit 402 determines a task to be assigned to the edge server 10 and the cloud server 20 based on the information stored in the storage unit 403 and the load information of the edge cloud system. At this time, the allocation determining unit 402 generates a constraint condition and an objective function constituting the mixed integer programming problem using the information stored in the storage unit 403 and the load information of the edge server 10. More specifically, the allocation determining unit 402 generates an objective function for maximizing the CPU allocation ratio in the edge server 10. The assignment determination unit 402 determines a task to be assigned to two servers by solving a mixed integer programming problem composed of constraints and an objective function.
  • the allocation determining unit 402 generates a constraint equation corresponding to the following four constraints as constraints for solving the mixed integer programming problem.
  • the first constraint is a constraint that specifies that the task described in the task graph is executed by either the edge server 10 or the cloud server 20.
  • FIG. 13 Focusing on a specific node in the task graph and extracting nodes connected before and after the specific node, a part of the task graph is generalized as shown in FIG. In FIG. 13, circles are nodes (start node, end node, processing node) in the task graph. The characters written inside the circles are suffixes for specifying nodes.
  • the CPU allocation rate of the edge server 10 is described using the suffix of the node. For example, when the edge server 10 executes the task of the node i, the CPU allocation rate of the edge server is denoted by xi .
  • link connecting the nodes is described using the suffixes of the nodes before and after the link.
  • a link connecting a node h and a node i is denoted as l hi
  • a link connecting a node i and a node j is denoted as l ij .
  • Each link is given a binary value of “0” or “1”.
  • the value assigned to each link is referred to as a “link value”.
  • the link value When the link value is “0”, it indicates that the task of the node connected to the link is executed by the edge server 10. When the link value is “1”, it indicates that at least the task of the node connected downstream of the link is executed by the cloud server 20.
  • the link value changes from “0” to “1” (when the link value of the two links changes from “0” to “1” before and after the node connected to the two links)
  • the two The nodes connected to the links indicate the boundaries of the nodes executed by the edge server 10.
  • FIG. 13B shows that the tasks of the nodes h and i are executed by the edge server 10, and the task of the node j is executed by the cloud server 20. Further, since the link value 1 changes from “0” to “1” before and after the node i, it indicates that the node i is the boundary (terminal) executed by the edge server 10. As described above, whether each node is executed by the edge server 10 or the cloud server 20 is determined by the variable 1 (link value).
  • a light gray node indicates that the corresponding task is executed by the edge server 10
  • a dark gray node indicates that the corresponding task is executed by the cloud server 20.
  • the first constraint condition can be expressed as the following equation (1) using the CPU allocation ratio x of the edge server 10 and the link value.
  • x j 0.
  • the constraint equation (1) determines which of the two servers each of the plurality of tasks is to be assigned to, and the determination of the boundaries of the tasks to be executed by each of the plurality of tasks (the tasks assigned to each server). Is determined).
  • the second constraint condition specifies that a task subsequent to the task executed by the cloud server 20 is not executed by the edge server 10. That is, the second restriction condition specifies that the processing flow of the task does not flow backward from the cloud side to the edge side.
  • the second constraint condition can be expressed as the following equation (2) using the link value.
  • the link value of the link l hi and the link value of the link l ij can take “0” or “1”, respectively.
  • the combination of the excluded link values corresponds to executing the task in the cloud server 20 and then executing the subsequent task in the edge server 10.
  • the second constraint condition is a constraint condition relating to the link dependency that excludes the flow of the task processing from flowing backward (from the cloud side to the edge side).
  • the allocation determining unit 402 generates the above-mentioned constraint expressions (1) and (2) based on the task graph stored in the storage unit 403.
  • the third constraint condition specifies that the tasks assigned to the edge server 10 can be executed by the edge server 10.
  • the third constraint condition can be expressed as the following equation (3).
  • the left side of Expression (3) is the total sum of the CPU allocation ratio x allocated to the edge server 10.
  • X u shown on the right-hand side of equation (3) is an upper limit value of the CPU allocation ratio to be assigned to the edge server 10.
  • the CPU allocation ratio upper limit value X u is in the range of 0 to 1 inclusive (0 ⁇ X u ⁇ 1) .
  • the allocation determination unit 402 sets the CPU allocation rate upper limit value Xu low.
  • the allocation determination unit 402 sets the CPU allocation rate upper limit value Xu high.
  • the allocation determination unit 402 sets the CPU allocation rate upper limit value Xu low (for example, 0.5).
  • the allocation determination unit 402 sets the CPU allocation ratio upper limit value Xu high (for example, 0.9).
  • the allocation determination unit 402 determines the upper limit (the CPU allocation ratio) of the total CPU allocation ratio of the tasks executed by the edge server 10 according to the load information (the CPU usage ratio of the edge server 10) acquired from the edge server 10. Adjust upper limit X u ).
  • the third constraint guarantees that the task assigned to the edge server 10 can be executed by the edge server 10.
  • the allocation determining unit 402 generates the above-described constraint expression (3) based on the CPU allocation ratio of the task information stored in the storage unit 403 and the CPU usage ratio (load information of the edge server 10) acquired from the edge server 10. I do. Specifically, the allocation determining unit 402 refers to the table information that defines the relationship between the CPU usage rate of the edge server 10 and the CPU allocation rate upper limit value Xu , and refers to the CPU allocation rate upper limit value X applied to Equation (3). Determine u . Alternatively, the allocation determining unit 402 may determine the CPU allocation ratio upper limit value X u using a function which defines the relationship between the CPU utilization of the edge server 10 and the CPU allocation ratio upper limit value X u. That is, the allocation determination unit 402 may use any method relates determination of the CPU allocation ratio upper limit value X u corresponding to CPU utilization edge server 10.
  • the fourth constraint condition specifies that the execution result of the task at the last stage (terminal) assigned to the edge server 10 can be transmitted to the cloud server 20.
  • the fourth constraint condition can be expressed as the following equation (4).
  • D i indicates the size of the data obtained as a result of executing the task once the node i at the edge server 10.
  • F i indicates the number of times to perform the tasks of the node i per unit time. The F i corresponds to the performance requirements described with reference to FIG. 12.
  • C described on the right side of Expression (4) is a network band between the edge server 10 and the cloud server 20 described with reference to FIG.
  • Equation (4) ensures that the calculated task execution result of node i is transmitted and received over the network between edge server 10 and cloud server 20. In other words, a situation in which data cannot be transmitted from the edge server 10 to the cloud server 20 due to lack of bandwidth in the network connecting the edge server 10 and the cloud server 20 due to the fourth constraint condition is excluded.
  • the allocation determination unit 402 generates the above-described constraint equation (4) based on the data size of the task information stored in the storage unit 403, the performance requirement, and the network bandwidth information.
  • the objective function is a function that maximizes the sum of the CPU allocation rates allocated to the edge server 10.
  • the objective function is a function that achieves the minimization of the computing resources of the cloud server 20.
  • the objective function f (x) is expressed by the following equation (5).
  • the objective function f (x) when the sum of the CPU allocation ratio x i is the largest becomes the maximum.
  • the assignment determining unit 402 solves the mixed integer programming problem composed of the four constraints and the objective function, and determines a task to be assigned to the edge server 10 and the cloud server 20 based on the solution. For example, the allocation determining unit 402 obtains a solution of the mixed integer programming problem using an existing solver.
  • various solvers are provided from a plurality of vendors for the above solver, and a solver suitable for the environment of the allocation device 30 or the like is incorporated (installed in the allocation device 30) and can be used by the allocation determination unit 402. Just fine.
  • the allocation determination unit 402 obtains a CPU allocation ratio x to be allocated to each node that maximizes the objective function of Expression (5) by solving the mixed integer programming problem. For example, in the task graph shown in FIG. 9, the node suffix is determined as shown in FIG. In FIG. 14A, the suffix of the node is a number written in parentheses inside the node.
  • the assignment determination unit 402 determines that the face detection process and the face extraction process are to be assigned to the edge server 10 by solving the mixed integer programming problem, the result shown in FIG. 14B is obtained.
  • the CPU allocation rates of the nodes 1 and 2 are 0 or more, the tasks corresponding to these nodes are executed by the edge server 10.
  • the boundary between the edge side and the cloud side is the node 2 (face extraction node), and the CPU allocation rates allocated to the nodes are 20% and 30%, respectively.
  • the assignment determination unit 402 solves the mixed integer programming problem and determines that the face detection processing, the face clipping processing, and the feature point calculation processing are to be allocated to the edge server 10, the processing illustrated in FIG. Such a result is obtained.
  • the boundary node between the edge side and the cloud side is node 3 (feature point calculation node).
  • the assignment determination unit 402 notifies the edge server 10 and the cloud server 20 of the execution task based on the calculated CPU assignment ratio. At this time, the allocation determination unit 402 also notifies the edge server 10 of the CPU allocation rate of each task along with the executed tasks. For example, in the example of FIG. 14B, the assignment determining unit 402 notifies the edge server 10 of tasks related to “face detection” and “face clipping” as execution tasks. At this time, the allocation determining unit 402 also notifies the edge server 10 of the CPU allocation ratio (“0.2”, “0.3”) of each task.
  • the allocation determining unit 402 acquires the CPU usage rate (load information) from the edge server 10 (step S101).
  • the allocation determining unit 402 performs a threshold process or the like on the obtained CPU usage rate, and determines whether or not the task needs to be reallocated (step S102).
  • step S102 If reassignment is unnecessary (step S102, No branch), the process returns to step S101 and continues.
  • Step S102 If reassignment is necessary (Step S102, Yes branch), the assignment determining unit 402 generates a constraint expression expressing the constraint condition (Step S103).
  • the allocation determining unit 402 solves the mixed integer programming problem using the generated constraint equation and the objective function (Step S104).
  • the assignment determination unit 402 determines a task to be assigned to each of the edge server 10 and the cloud server 20 based on the solution of the mixed integer programming problem (Step S105).
  • the assignment determination unit 402 notifies the edge server 10 and the cloud server 20 of the determined execution task (Step S106). At this time, the allocation determining unit 402 also notifies the edge server 10 of the CPU allocation rate of each execution task.
  • the operation of the assignment device 30 is described using a simple task graph as shown in FIG. 3 as an example.
  • the task graph is not a simple task graph as shown in FIG. 3, the optimal task assignment of a task graph having a complicated structure by the constraints shown in equations (1) to (4) and the objective function shown in equation (5). Can be realized.
  • the assignment determining unit 402 may generate the constraint conditions shown in Expressions (1) to (4) for each of the separated nodes and links. That is, when the structure of the task graph becomes complicated, the total number of suffixes specifying the nodes increases, so that the expressions (constraint expressions for each node) that expand each constraint condition increase. That is, even if the structure of the task graph becomes complicated, only the amount of the constraint condition increases, and the situation that each constraint condition cannot be generated does not occur.
  • FIG. 3 and FIG. 16 show one-input and one-output task graphs, but an optimal task assignment can be calculated for a multi-input multi-output task graph.
  • an optimal task assignment can be calculated for a multi-input multi-output task graph.
  • the structure of the task graph targeted in the present disclosure can be any structure.
  • the assignment device 30 can obtain a solution of the mixed integer programming problem related to task assignment in a short time by using the constraint equation and the objective function as described above. For example, when tasks are assigned to 50 servers on the edge side (the number of CPUs on the edge side is 50) for ten types of task graphs each having a seven-node configuration, the time required to obtain a solution is several hundred. ms. Also, the environment for solving the mixed integer programming problem (the scale of the CPU and the like of the allocating device 30) does not require a very advanced environment like a supercomputer, and a general-purpose CPU (for example, having a base operating frequency of 2.4 GHz, The calculation result can be obtained by a 4-core CPU).
  • the assignment determining unit 402 uses the constraints and the objective function to determine the tasks to be assigned to the edge server 10 and the cloud server 20 and the CPU assignment rates of the tasks to be assigned to the edge server 10.
  • the constraint equation (1) is configured so that task allocation in an edge cloud system that is usually a nonlinear programming problem can be treated as a mixed integer programming problem. . That is, when considering the task assignment in the edge cloud system, it defines a variable y i that indicates CPU utilization x i and node i is performed by the one cloud side is performed in the edge side of the node i, task assignment A configuration used for calculation is conceivable.
  • the CPU usage on the edge side is calculated as x i ⁇ y i using the CPU usage x i and the variable y i ( ⁇ is a multiplication operator).
  • the constraint equation regarding the CPU utilization on the edge side is a quadratic equation, and constitutes a nonlinear programming problem. Therefore, in the present disclosure, a solution of task assignment in an edge cloud system can be obtained in a short time from the viewpoint unique to the present application that a problem that becomes non-linear is usually replaced with a mixed integer programming problem by the constraint equation (1). I am trying to be.
  • the objective function since the objective function aims at maximizing the CPU allocation rate allocated to the edge server 10, it is possible to minimize the cost of resources related to the cloud server 20.
  • an optimal solution (task allocation) that minimizes the resources on the cloud side is obtained.
  • the tasks executed by each of the edge server 10 and the cloud server 20 are reassigned according to the load fluctuation of the edge server 10.
  • an edge cloud system that is robust against load fluctuations is provided.
  • the case has been described in which the CPU usage of the edge server 10 is used as the load information of the edge cloud system, and the task reassignment is performed when the load on the edge server 10 fluctuates greatly.
  • the second embodiment a case will be described in which a network load between two servers is used as load information of an edge cloud system and task reassignment is performed.
  • the edge cloud system in order for the service to be smoothly provided, it is necessary for the execution result of the task by the edge server 10 to reach the cloud server 20 with little delay. In other words, if the network band (available band) between the edge server 10 and the cloud server 20 becomes narrow, there is a possibility that data cannot be transmitted and received smoothly.
  • the network band available band
  • the network bandwidth between the edge server 10 and the cloud server 20 is obtained as load information of the edge cloud system, and task reassignment is performed.
  • FIG. 17 is a diagram illustrating an example of a processing configuration of the edge server 10a according to the second embodiment. Referring to FIGS. 6 and 17, a bandwidth estimating unit 205 is added to the edge server 10 according to the first embodiment.
  • FIG. 18 is a diagram illustrating an example of a processing configuration of the cloud server 20a according to the second embodiment.
  • a band estimating unit 304 is added to the edge server 10 according to the first embodiment.
  • the processing configuration of the allocation device 30a according to the second embodiment can be the same as that of FIG.
  • the bandwidth estimating unit of the two servers estimates the available bandwidth of the network connecting the edge server 10 and the cloud server 20 using various methods. For example, an available band estimation method described in Reference Document 1 (Japanese Patent No. 5928574) can be used.
  • Reference 1 discloses a method of estimating an available bandwidth using a packet train including a plurality of packets.
  • the outline of the bandwidth estimation by the packet train is as follows.
  • the transmitting side transmits packets whose packet size gradually increases at regular transmission intervals.
  • the packet transmission interval is constant, the packet size gradually increases, so that the transmission rate gradually increases.
  • queuing delay occurs. That is, due to the occurrence of the queuing delay, the transmission interval that was initially constant gradually increases.
  • the receiving side identifies a packet in which queuing delay occurs by detecting a point at which the transmission interval (reception interval) increases, and estimates the available bandwidth by dividing the size of the packet by the transmission interval.
  • the technology disclosed in Reference 1 is applied to the edge cloud system so that the available bandwidth in the upstream direction (the direction of data transmission from the edge server 10a to the cloud server 20a) can be obtained.
  • the bandwidth estimating unit 205 of the edge server 10a is set to the transmitting side
  • the bandwidth estimating unit 304 of the cloud server 20a is set to the receiving side.
  • the bandwidth estimating unit 304 of the cloud server 20a on the receiving side estimates the available bandwidth based on the packet train transmitted from the bandwidth estimating unit 205 of the edge server 10a on the transmitting side. After that, the cloud server 20a (bandwidth estimation unit 304) transmits the estimated available bandwidth to the allocation device 30a at an arbitrary timing.
  • the allocation determining unit 402 of the allocation device 30a performs a threshold process on the obtained available bandwidth, and when determining that the available bandwidth is largely fluctuated, executes the task reallocation described in the first embodiment. I do. At that time, the allocation determining unit 402 uses the value acquired from the cloud server 20a for C described on the right side of Expression (4).
  • the assignment device 30a not only performs task reassignment in response to a change in network load, but also performs task assignment when the load on the edge server 10 fluctuates, as in the first embodiment. Reassignment may be performed.
  • the available bandwidth between the edge server 10 and the cloud server 20 is estimated using the technique described in Reference 1, but the above-described embodiment is described using another available bandwidth estimation method.
  • the available band may be estimated.
  • the network available bandwidth between the edge and the cloud is estimated, and the estimated available bandwidth is used as load information of the edge cloud system.
  • the allocation device 30a according to the second embodiment determines a task to be allocated to the edge server 10a and the cloud server 20a so as to match the estimated available bandwidth.
  • the network band connecting the edge side and the cloud side fluctuates and smooth operation of the system is hindered, tasks suitable for the fluctuated network environment are allocated. That is, similarly to the second embodiment, an edge cloud system that is robust against a load change is provided.
  • the allocation device 30 is used to realize an edge cloud system that is robust to load fluctuations.
  • the function of the assignment device 30 can be utilized for other purposes.
  • the function of the allocation device 30 can be used for designing an edge cloud system.
  • FIG. 19 is an example of the processing configuration of the allocation device 30b according to the third embodiment.
  • the assignment device 30b according to the third embodiment further includes an input unit 404 and a display unit 405.
  • FIG. 19 illustrates the communication control unit 401, the processing module need not exist in the allocation device 30b.
  • the input unit 404 inputs detailed information of the target edge cloud system. For example, the input unit 404 acquires a task graph as shown in FIG. 9, task information as shown in FIG. 10, network bandwidth information as shown in FIG. 11, and various types of information of performance requirements as shown in FIG. More specifically, the input unit 404 creates a GUI (Graphical User Interface) for the user to input the information, and acquires the information by a user operation.
  • GUI Graphic User Interface
  • the input unit 404 generates a GUI as shown in FIG. 20 and realizes input of a task graph by a user.
  • the input unit 404 transfers the acquired detailed information of the edge cloud system to the allocation determining unit 402.
  • the assignment determining unit 402 determines task assignment using the detailed information of the edge cloud system acquired from the input unit 404 in the same manner as in the first embodiment.
  • the assignment determining unit 402 transfers the determined task assignment to the display unit 405.
  • the display unit 405 displays the obtained task assignment.
  • the display unit 405 displays a task assignment result as shown in FIG.
  • the user can know the task assignment suitable for the conditions input by the user.
  • the user can check how the task assignment changes and use it for designing the edge cloud system. For example, the user understands how the task assignment changes when the network bandwidth is narrowed. As a result, the user can grasp the minimum amount of CPU resources required to process the task assigned to the edge server when the network bandwidth is narrow.
  • the allocation device 30b includes the input unit 404 and the display unit 405, so that the allocation device 30 described in the first and second embodiments can be used for designing an edge cloud system. Can be used.
  • the configuration of the edge cloud system, the configuration, operation, and the like of the edge cloud system described in the first to third embodiments are merely examples, and do not limit the configuration of the system and the like.
  • the function of the allocation device 30 may be incorporated in the cloud server 20 or the edge server 10.
  • the edge server 10 calculates the load information of its own device and notifies the allocation device 30 of the calculated load information has been described. ) May be inquired.
  • the storage unit 403 is provided inside the allocation device 30 and the information necessary for determining the task allocation is stored in the storage unit 403.
  • the information required for the task allocation is stored in an external database server or the like. May be stored.
  • an application related to face authentication is realized by the edge cloud system from the video data acquired by the edge server 10, but another application may be realized by the edge cloud system.
  • a point-of-sale (POS) system that manages sales of products and the like may be realized by an edge cloud system.
  • each edge server 10 realizes the same application (application related to face authentication) has been described, but each edge server 10 may realize different applications.
  • an application related to face authentication may be realized by the edge server 10-1 and the cloud server 20
  • an application related to the POS system may be realized by the edge server 10-2 and the cloud server 20.
  • the allocation device 30 may store the task graph, task information, and performance requirements for each application. If the computing power of each edge server 10 is different, the allocating device 30 may store the task information (particularly, the CPU allocation rate) for each edge server 10.
  • one edge server 10 includes a plurality of CPUs, or when one CPU includes a plurality of cores, a plurality of CPUs that can independently perform arithmetic processing inside one edge server 10 are provided.
  • a processor may be included. In this case, the CPU allocation ratio of the task information for each processor included in one edge server 10 may be managed.
  • one edge server 10 includes a plurality of processors
  • a single edge server 10 may implement a plurality of applications.
  • the assignment device 30 may manage the task graph and the task information for each processor, and execute the above-described task assignment for each application.
  • a plurality of task graphs may be prepared for one application.
  • a task graph having a structure in which each task such as “face detection” is further decomposed into a plurality of tasks may be prepared.
  • the task graph shown in FIG. 9 may be prepared as a basic task graph
  • the task graph shown in FIG. 22 may be prepared as an extended task graph.
  • the assignment device 30 first attempts task assignment using the basic task graph, and executes a task assignment process using the extended task graph when a solution cannot be obtained by task assignment using the basic task graph. Is also good. That is, the assignment device 30 may increase the options of task assignment (the degree of freedom of task assignment) by using a task graph with a finer granularity for task division, and may realize optimal task assignment. In this case, task information corresponding to the extended task graph is prepared.
  • the generation timing of the constraint expression has been described as being at the time of executing the task reassignment process (step S103 in FIG. 15). May be limited to the constraint expression affected by Specifically, when the CPU usage rate of the edge server 10 is used as the load information of the edge cloud system, the load information of the constraint equations (1) to (4) is affected by the equation (3). Only. Therefore, the allocating apparatus 30 calculates the constraint expressions of the formulas (1), (2) and (4) in advance at the time of starting the system, and calculates the constraint expression of the formula (3) at the time of task reallocation. do it. As described above, by calculating in advance a constraint expression that is not affected by the load fluctuation of the edge cloud system, the time required for task reassignment can be reduced.
  • equations (1) to (4) are described as constraint equations expressing the first to fourth constraint conditions, and equation (5) is described as an objective function.
  • equations (1) to (4) are described as constraint equations expressing the first to fourth constraint conditions
  • equation (5) is described as an objective function.
  • these equations are examples.
  • the constraint condition and the objective function can be expressed in other formats.
  • link value For example, in the above embodiment, binary values of “0” and “1” are given for the value of a link (link value) connecting nodes, and interpretation of task assignment is given to each link value.
  • the link value “0” specifies that the node connected to the link is assigned to the edge server 10
  • the link value “1” specifies that the subsequent node of the link is assigned to the cloud server 20. I have.
  • the interpretation of the link value may be reversed to generate a constraint expression corresponding to the first constraint condition.
  • a binary value is given to a link to generate the expression (1) expressing the first constraint condition.
  • the constraint equation corresponding to the first constraint condition can be expressed as the following equation (6). That is, a binary value may be assigned to the node itself and treated as a variable for determining whether or not the node is arranged on the edge side.
  • equation (5) has been described as the objective function
  • equation (5) is merely an example, and is not intended to limit the objective function to be used.
  • the objective function may be the following equation (7).
  • the objective function shown in Expression (7) is a function for maximizing the CPU allocation rate allocated to the edge server 10 and minimizing the amount of data transmitted and received between the edge server 10 and the cloud server 20.
  • the solution (task assignment) is determined such that the first term shown on the right side of the equation (7) is minimum and the second term is maximum.
  • is a coefficient indicating which of the first term and the second term on the right side is weighted (0 ⁇ ⁇ ⁇ 1).
  • the task assignment in the edge cloud system described in the above embodiment is a “mixed integer programming problem” in which real numbers and integers are mixed in variables.
  • the link variable l used for task assignment is an integer that is either “0” or “1”. Therefore, in some cases, a solution may not be obtained, or a long time calculation may be required to obtain a solution.
  • the variable that causes the above problem may be treated as a real number, and after the solution is obtained, the variable treated as an integer may be converted into an integer. For example, in the method described in the above embodiment, if a solution is not obtained even after a lapse of a predetermined time, the assignment device 30 suspends the calculation of the task assignment being executed.
  • the allocating device 30 treats the link variable l, which is an integer variable, as a real number, and obtains a solution by using the constraint expressions represented by Expressions (1) to (4) and the objective function represented by Expression (5).
  • the assignment device 30 may determine the task assignment by rounding the link variable l to “0” or “1” after the solution is obtained. Such a method is called “Randomized @ Rounding”, and the allocating device 30 can also calculate the final solution (task allocation) using the above-described approximation algorithm.
  • the processing capacity of the cloud server 20 and the amount of memory of the two servers are excluded from the constraints constituting the mixed integer programming problem.
  • the exclusion of these factors is based on the consideration that, given the current state of the actual edge cloud system, it will not be a constraint on task assignment.
  • the CPU usage rate and the allocation rate of the edge server 10 described above are replaced with the CPU usage rate and the allocation rate of the cloud server 20, and the constraint corresponding to the equation (3) What is necessary is just to generate an expression.
  • a constraint equation relating to the resources of the cloud server 20 is incorporated into the mixed integer programming problem, the obtained task assignment result is hardly affected. That is, the CPU resource of the cloud server 20 rarely becomes a bottleneck in task assignment.
  • the execution task after the reassignment is notified to the two servers.
  • the task assignment does not change.
  • the execution task need not be notified.
  • the task reallocation process is executed in response to the load fluctuation of the edge cloud system, but the allocation device 30 performs the reallocation at a predetermined timing and at a predetermined interval regardless of the improper fluctuation. May be executed.
  • the assignment device 30 may notify the two servers of the execution task when the task assignment status immediately before and the execution result of the task reassignment process are different.
  • the computer can function as the above-described assignment device. Furthermore, by causing the computer to execute the above-described computer program, the computer can execute the task assignment method in the edge cloud system.
  • the allocation determining unit A task graph that determines a connection regarding a plurality of tasks constituting the application and an execution order of each task, For each of the plurality of tasks constituting the application, task information that determines a CPU allocation rate and a data size obtained as a result of executing each task, Network bandwidth information defining a network bandwidth between the first and second servers; 6.
  • a first constraint condition that specifies that the task described in the task graph is executed on one of the first and second servers is generated as one of the constraint conditions.
  • Assignment device [Appendix 8] The allocation determining unit, Using the task graph, a second constraint defining that a task subsequent to the task executed by the second server is not executed by the first server is set to one of the constraints. The assignment device according to attachment 7, wherein the assignment device is generated as one. [Appendix 9] The allocation determining unit, A third constraint condition that specifies that a task assigned to the first server using the CPU allocation rate and the load information of the first server can be executed by the first server is set as the third constraint condition. 9.
  • the assignment device according to claim 8, wherein the assignment device is generated as one of the constraint conditions.
  • the allocation determining unit Using the data size, the performance requirement, and the network bandwidth information included in the task information, the execution result of the last-stage task assigned to the first server can be transmitted to the second server.
  • the allocating device according to supplementary note 9, wherein the specified fourth constraint is generated as one of the constraints.
  • the allocation device according to any one of Supplementary Notes 6 to 10, wherein the objective function is a function that maximizes a total sum of CPU allocation rates allocated to the first server. [Supplementary Note 12] 12.
  • the allocating apparatus further comprising a storage unit configured to store the task graph, the task information, the network bandwidth information, and the performance requirement.
  • the allocation determining unit, 13. The allocating apparatus according to claim 1, wherein when configuring the mixed integer programming problem, information regarding memories mounted on the first and second servers is not used.
  • [Appendix 14] This is as in the system according to the second aspect described above.
  • [Appendix 15] This is the same as the task allocation method according to the third viewpoint described above.
  • [Appendix 16] This is the same as the program according to the fourth aspect described above. Note that the forms of Supplementary Notes 14 to 16 can be expanded to the forms of Supplementary Notes 2 to 13 similarly to the form of Supplementary Note 1.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

エッジクラウドシステムにおいて、エッジサーバ及びクラウドサーバへのタスク割当を短時間で実現する割当装置を提供する。割当装置は、割当決定部を備える。割当決定部は、少なくとも、第1のサーバに搭載されたCPUリソースに関する情報と、第1のサーバと第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成する。割当決定部は、混合整数計画問題の解に基づき第1及び第2のサーバに割り当てるタスクを決定する。第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行する。割当決定部は、複数のタスクのそれぞれを第1及び第2のサーバのいずれに割り当てるかに関する決定と、複数のタスクのうち、第1のサーバに割り当てるタスクと第2のサーバに割り当てるタスクとの境界の決定と、を特定の制約式により実現する。

Description

割当装置、システム、タスク割当方法及びプログラム
 [関連出願についての記載]
 本発明は、米国仮出願62/690,391(2018年 6月27日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
 本発明は、割当装置、システム、タスク割当方法及びプログラムに関する。
 近年、通信ネットワーク(以下、本書では単に「ネットワーク」と称する)技術、情報処理技術の進展により、ネットワークを介して演算処理能力の高いコンピュータリソースを利用するクラウドコンピューティングが広く利用されている。クラウドシステム(クラウドサーバ)の利用にはコストが発生することが多い。具体的には、使用量に応じて料金が定まる従量課金がクラウドサーバの利用に適用されることが多い。特許文献1には、上述のようなクラウドサーバの利用に伴い発生するコストを抑制するための負荷分散システムが開示されている。
 ここで、ユーザ側のネットワークに配置されたサーバ(エッジサーバ)にてアプリケーション(サービス)の実現に必要な一部の処理(タスク)を実行し、エッジサーバにて処理しきれないタスクをクラウドサーバにて実行するシステムが存在する。このようなシステムは、上記利用コストの低減や、システム全体での処理速度の向上を目的として構築されることが多い。本願開示では、上記エッジサーバとクラウドサーバで必要なタスクを互いに分担するシステムをエッジクラウドシステムと表記する。
 また、エッジクラウドシステムでは、クラウドサーバの利用にコストが生じるだけでなく、エッジサーバからクラウドサーバへのデータ転送に用いるネットワーク(例えば、インターネット)の利用にもコストが発生する。
 上記エッジクラウドシステムの運用に伴い発生するコストの削減を目的として、多くのタスクをエッジサーバに実行させると、エッジクラウドシステムは負荷変動に対して脆弱になる。つまり、エッジサーバのリソースを最大限活用するようにエッジサーバに数多くのタスクを割り当てると、システムの負荷が少し増加しただけでエッジサーバの処理余力がなくなり、継続してサービスを提供できなくなる。一方、上記負荷変動に備え、クラウドサーバに多くのタスクを割り当てることでエッジサーバの処理能力に余裕を待たせると、クラウドサーバの利用が増えコストが上昇する。
 このように、エッジクラウドシステムでは、サービスを提供するためのアプリケーションに必要なタスクをどのようにエッジサーバ、クラウドサーバに割り当てるかと言う点が重要となる。
 非特許文献1には、エッジサーバのCPU(Central Processing Unit)利用率、エッジサーバとクラウドサーバ間のネットワーク帯域及び各サーバのメモリ量を制約とするタスク割当手法が開示されている。当該非特許文献1に開示されたタスク割当手法は、エッジクラウドシステムのスループット(処理量)を最大化するようなタスク割当を実現している。
特開2015-153370号公報
Boyang Peng、etc "R-Storm: Resource-Aware Scheduling in Storm"、Proceedings of the 16th Annual Middleware Conference. ACM、2015
 上述のように、非特許文献1には、エッジクラウドシステムに適用可能なタスク割当手法が開示されている。具体的には、非特許文献1では、当該タスク割当をQM3DKP(Quadratic Multiple 3-Dimensional Knapsack Problem)というNP(Non-deterministic Polynomial)完全問題と捉え、エッジサーバ、クラウドサーバにて実行するタスクを決定している。より詳細には、非特許文献1では、タスクの実行順序を規定するトポロジを幅優先探索しつつ、隣接タスクをできるだけ同じノード(エッジサーバ又はクラウドサーバ)に割り当てることで通信遅延を最小化している。非特許文献1では、CPU使用率、ネットワーク帯域、メモリ量を線形量で表現し、タスクの要求リソースと割当リソースの最小距離を選択している。
 上記非特許文献1に開示されたようなタスクの割当手法は、ヒューリステックなアルゴリズムである。つまり、非特許文献1に開示された技術をエッジクラウドシステムに適用することで、エッジサーバとクラウドサーバにタスクが割り当てられ、アプリケーション等を実現できる。
 しかし、非特許文献1に開示された手法では、タスクの最適な配置とはならない可能性がある。具体的には、クラウドサーバに必要以上にタスクが割り当てられ、また、エッジサーバとクラウドサーバ間で送受信されるデータ量も最小化されないことがある。さらに、非特許文献1では、エッジクラウドシステムにおけるタスク割当をQM3DKPというNP完全問題として扱った場合、解(必ずしも最適ではない解)を得るために長い時間が必要となる。
 本発明は、エッジクラウドシステムにおいて、エッジサーバ及びクラウドサーバへのタスク割当を短時間で実現することに寄与する、割当装置、システム、タスク割当方法及びプログラムを提供することを主たる目的とする。
 本発明乃至開示の第1の視点によれば、少なくとも、第1のサーバに搭載されたCPU(Central Processing Unit)リソースに関する情報と、前記第1のサーバと第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成し、前記混合整数計画問題の解に基づき前記第1及び第2のサーバに割り当てるタスクを決定する、割当決定部を備え、前記第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行し、前記割当決定部は、前記複数のタスクのそれぞれを第1及び第2のサーバのいずれに割り当てるかに関する決定と、前記複数のタスクのうち、前記第1のサーバに割り当てるタスクと前記第2のサーバに割り当てるタスクとの境界の決定と、を特定の制約式により実現する、割当装置が提供される。
 本発明乃至開示の第2の視点によれば、第1のサーバと、前記第1のサーバとネットワークを介して接続される第2のサーバと、少なくとも、第1のサーバに搭載されたCPU(Central Processing Unit)リソースに関する情報と、前記第1及び第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成し、前記混合整数計画問題の解に基づき前記第1及び第2のサーバに割り当てるタスクを決定する、割当装置と、を含み、前記第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行し、前記割当装置は、前記複数のタスクのそれぞれを第1及び第2のサーバのいずれに割り当てるかに関する決定と、前記複数のタスクのうち、前記第1のサーバに割り当てるタスクと前記第2のサーバに割り当てるタスクとの境界の決定と、を特定の制約式により実現する、システムが提供される。
 本発明乃至開示の第3の視点によれば、割当装置において、少なくとも、第1のサーバに搭載されたCPU(Central Processing Unit)リソースに関する情報と、前記第1のサーバと第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成し、前記混合整数計画問題の解に基づき前記第1及び第2のサーバに割り当てるタスクを決定し、前記第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行し、前記複数のタスクのそれぞれを第1及び第2のサーバのいずれに割り当てるかに関する決定と、前記複数のタスクのうち、前記第1のサーバに割り当てるタスクと前記第2のサーバに割り当てるタスクとの境界の決定と、は特定の制約式により実現される、タスク割当方法が提供される。
 本発明乃至開示の第4の視点によれば、割当装置に搭載されたコンピュータに、少なくとも、第1のサーバに搭載されたCPU(Central Processing Unit)リソースに関する情報と、前記第1のサーバと第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成する処理と、前記混合整数計画問題の解に基づき前記第1及び第2のサーバに割り当てるタスクを決定する処理と、を実行させ、前記第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行し、前記複数のタスクのそれぞれを第1及び第2のサーバのいずれに割り当てるかに関する決定と、前記複数のタスクのうち、前記第1のサーバに割り当てるタスクと前記第2のサーバに割り当てるタスクとの境界の決定と、は特定の制約式により実現される、プログラムが提供される。
 なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
 本発明乃至開示の各視点によれば、エッジクラウドシステムにおいて、エッジサーバ及びクラウドサーバへのタスク割当を短時間で実現することに寄与する、割当装置、システム、タスク割当方法及びプログラムが、提供される。
一実施形態の概要を説明するための図である。 第1の実施形態に係るエッジクラウドシステムの概略構成の一例を示す図である。 顔認証に含まれる処理の一例を示す図である。 第1の実施形態に係る割当装置の概略動作を説明するための図である。 第1の実施形態に係る割当装置のハードウェア構成の一例を示す図である。 第1の実施形態に係るエッジサーバの処理構成の一例を示す図である。 第1の実施形態に係るクラウドサーバの処理構成の一例を示す図である。 第1の実施形態に係る割当装置の処理構成の一例を示す図である。 記憶部が記憶するタスクグラフの一例を示す図である。 記憶部が記憶するタスク情報の一例を示す図である。 記憶部が記憶するネットワーク帯域情報の一例を示す図である。 記憶部が記憶する性能要件の一例を示す図である。 第1の実施形態に係る割当決定部の動作を説明するための図である。 第1の実施形態に係る割当決定部の動作を説明するための図である。 第1の実施形態に係る割当決定部の動作の一例を示すフローチャートである。 タスクグラフの一例を示す図である。 第2の実施形態に係るエッジサーバの処理構成の一例を示す図である。 第2の実施形態に係るクラウドサーバの処理構成の一例を示す図である。 第3の実施形態に係る割当装置の処理構成の一例である。 第3の実施形態に係る割当装置の動作を説明するための図である。 第3の実施形態に係る割当装置の動作を説明するための図である。 拡張タスクグラフの一例を示す図である。
 はじめに、本発明の一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。さらに、本願開示に示す回路図、ブロック図、内部構成図、接続図などにおいて、明示は省略するが、入力ポート及び出力ポートが各接続線の入力端及び出力端のそれぞれに存在する。入出力インターフェイスも同様である。
 一実施形態に係る割当装置100は、割当決定部101を備える(図1参照)。割当決定部101は、少なくとも、第1のサーバに搭載されたCPU(Central Processing Unit)リソースに関する情報と、第1のサーバと第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成する。割当決定部101は、混合整数計画問題の解に基づき第1及び第2のサーバに割り当てるタスクを決定する。第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行する。割当決定部101は、複数のタスクのそれぞれを第1及び第2のサーバのいずれに割り当てるかに関する決定と、複数のタスクのうち、第1のサーバに割り当てるタスクと第2のサーバに割り当てるタスクとの境界の決定と、を特定の制約式により実現する。
 割当装置100は、エッジクラウドシステムにおけるタスクの割当を混合整数計画問題として扱う。前記混合整数計画問題は、不等式にて表現される制約条件のもとで、一次式で表現される目的関数を最大化又は最小化する最適問題であるので、係る最適問題を表すソフトウェア(プログラム)を情報処理装置において実行する場合、係る最適問題の解を得るまでの処理に要する時間が短い。とりわけ、割当装置100は、1つのアプリケーションをなす複数のタスクを第1及び第2のサーバのいずれに割り当てるかに関する決定と、複数のタスクのうち、第1のサーバに割り当てるタスクと第2のサーバに割り当てるタスクとの境界の決定と、を特定の制約式で表現している。エッジクラウドシステムにおけるタスク割当の要諦が簡易な制約式にて表現されるため、上記タスク割当の解が短時間で得られる。即ち、割当装置100は、第1及び第2のサーバからなるエッジクラウドシステムにおいて、当該2つのサーバへのタスク割当を短時間で実現できる。また、上記目的関数に関し、クラウドサーバのリソースの使用を最小化するように設定し、混合整数計画問題を解くことでエッジクラウドシステムを運用する際に生じるコストが最小化される。即ち、割当装置100は、エッジクラウドシステムにおけるタスク割当に関する最適解を短時間で得ることができる。
 以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
 第1の実施形態について、図面を用いてより詳細に説明する。
 図2は、第1の実施形態に係るエッジクラウドシステムの概略構成の一例を示す図である。図2を参照すると、エッジクラウドシステムは、複数のエッジサーバ10-1~10-N(Nは正の整数、以下同じ)と、クラウドサーバ20と、割当装置30と、を含んで構成される。
 なお、以降の説明において、エッジサーバ10-1~10-Nを区別する特段の理由がない場合には、単に「エッジサーバ10」と表記する。
 エッジサーバ10とクラウドサーバ20はネットワークを介して接続され、相互に通信可能に構成されている。
 エッジサーバ10は、ユーザ側のネットワークにおける末端に配置され、エッジコンピューティングを担うサーバである。
 クラウドサーバ20は、クラウド側のネットワークに配置され、クラウドコンピューティングを担うサーバである。
 エッジサーバ10とクラウドサーバ20により、エッジクラウドシステムが構成される。エッジサーバ10とクラウドサーバ20はアプリケーションの実現に必要な複数のタスクを互いに分担して実行する。エッジサーバ10に割り当てられたタスクの実行結果は、クラウドサーバ20に送信される。クラウドサーバ20は、エッジサーバ10から取得した実行結果を用いて割り当てられたタスクを実行する。
 図2に示すエッジクラウドシステムでは、エッジサーバ10とクラウドサーバ20が協働して、1つのアプリケーションを実現する。例えば、図2の例では、エッジサーバ10は映像データを出力するカメラ(図示せず)に接続され、顔認証(人物特定)に係るアプリケーションが実現される。
 ここで、顔認証の実現には、複数のタスクを実行する必要がある。例えば、図3に示すように、顔認証の実現には、4つのタスクが順に実行される必要がある。
 具体的には、映像データに含まれる顔画像の検出処理が実行される。その後、当該検出された顔画像を映像データから切り出す処理が実行される。その後、切り出された顔画像から当該顔画像を特徴付ける複数の特徴点(特徴ベクトル)が算出される。最後に、算出された特徴点と予め用意された特徴点を用いた特徴量の照合処理が行われる。
 なお、上記タスクのそれぞれはエッジサーバ10又はクラウドサーバ20にて実行されるものであるが、上記タスクは既存の技術により実現可能であり、当業者にとって明らかであるからその詳細な説明は省略する。また、図3に示すタスクの分割は例示であって、顔認証に係るアプリケーションのタスク分割を4つに限定する趣旨ではない。例えば、顔認証に係るアプリケーションは3個以下のタスクにより実現されてもよいし、5個以上のタスクにより実現されてもよい。
 第1の実施形態に係るエッジクラウドシステムでは、上記複数のタスクの実行をエッジサーバ10とクラウドサーバ20で分担し、顔認証に係るアプリケーションを実現する。即ち、1つのアプリケーションを実現するために必要な複数のタスクがエッジサーバ10とクラウドサーバ20に分散して最適配置される。
 図2に説明を戻す。割当装置30は、上記複数のタスクに関し、エッジサーバ10とクラウドサーバ20への割当を決定する装置である。割当装置30は、少なくとも、エッジサーバ10に搭載されたCPUリソースに関する情報と、エッジ側とクラウド側を接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成する。割当装置30は、当該混合整数計画問題の解に基づき前記エッジサーバ10及びクラウドサーバ20に割り当てるタスクを決定する。
 割当装置30は、エッジサーバ10のCPUリソースをなるべく多く使用するように、上記混合整数計画問題の目的関数を設定する。換言するならば、割当装置30は、クラウドサーバ20のリソースに関するコストを最適化(最小化)しつつ、顔認証に係るアプリケーションを実現できるようにタスクの割当を行う。
 また、割当装置30は、エッジクラウドシステムの負荷変動に応じて、エッジサーバ10及びクラウドサーバ20それぞれが実行するタスクの再割当を行う。つまり、割当装置30は、エッジクラウドシステムの状況に応じて、エッジサーバ10及びクラウドサーバ20が担当するタスクの割当を変更する。
 図面を参照しつつ、割当装置30の上記動作の概略を具体的に説明する。図4は、割当装置30の概略動作を説明するための図である。図4に示すエッジクラウドシステムは稼働中であり、エッジサーバ10-1とクラウドサーバ20により顔認証に係るアプリケーションが実現されている。
 エッジサーバ10は、「顔検出」及び「顔切り出し」に係るタスクを実行し、クラウドサーバ20は、「特徴点算出」及び「特徴点照合」に係るタスクを実行している。このような状況下において、エッジクラウドシステムの負荷が変動した場合を考える。
 例えば、エッジサーバ10に接続されたカメラから得られる映像に多くの人物が写ることで処理すべきデータが増加し、エッジサーバ10の負荷が上昇する場合がある。この場合、割当装置30は、エッジサーバ10に割り当てるタスクを減らし、エッジサーバ10の処理余力を引き上げる。
 図4の例では、割当装置30は、エッジサーバ10のCPU使用率をエッジクラウドシステムの負荷情報として監視し、エッジクラウドシステムの負荷を把握する。当該CPU使用率により、エッジサーバ10の処理余力が上限に達したと判断した場合には、割当装置30は、エッジサーバ10とクラウドサーバ20のタスク分担を変更する。
 例えば、図4の例では、エッジサーバ10-1の負荷が上昇したことに応じ、割当装置30は、「顔切り出し」のタスクの実行主体をエッジサーバ10-1からクラウドサーバ20に変更する。
 なお、上記の例は、エッジサーバ10の負荷が上昇した場合であるが、エッジサーバ10の負荷が下降する場合もあり得る。このような場合には、割当装置30はエッジサーバ10に割り当てるタスクを増やす。例えば、カメラから得られる映像にほとんど人が写っておらず、エッジサーバ10にて処理すべきデータが少ない場合には、多くのタスクがエッジサーバ10にて実行されようにタスクが配置される。つまり、エッジサーバ10のCPUリソース(演算処理能力)に余裕がある場合には、割当装置30は、エッジサーバ10に割り当てるタスクを増やしエッジサーバ10のリソースを最大限活用する。
 なお、エッジサーバ10の負荷状況によっては、各タスクの割当に関し、複数の選択があり得る。この場合、割当装置30は、エッジサーバ10のCPUリソースがなるべく多く使用されるように各タスクの割当を決定する。
 割当装置30は、決定した割当(各サーバが実行するタスク)をエッジサーバ10、クラウドサーバ20に通知し、エッジクラウドシステムとしての動作を継続する。なお、各サーバは、通知されたタスクの実行順序を予め把握しているのが通常であり、割当装置30から各サーバに対してタスクの実行順序を通知する必要はない。
 続いて、第1の実施形態に係るエッジクラウドシステムを構成する各装置について説明する。
 初めに、各装置のハードウェア構成について説明する。
[ハードウェア構成]
 図5は、割当装置30のハードウェア構成の一例を示す図である。割当装置30は図5に例示する構成を備える。例えば、割当装置30は、内部バスにより相互に接続される、CPU(Central Processing Unit)31、メモリ32、入出力インターフェイス33及び通信インターフェイスであるNIC(Network Interface Card)34等を備える。
 但し、図5に示す構成は、割当装置30のハードウェア構成を限定する趣旨ではない。割当装置30は、図示しないハードウェアを含んでもよい。割当装置30に含まれるCPU等の数も図5の例示に限定する趣旨ではなく、例えば、複数のCPU31が割当装置30に含まれていてもよい。
 メモリ32は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)等である。
 入出力インターフェイス33は、図示しない入出力装置のインターフェイスである。入出力装置には、例えば、表示装置、操作デバイス等が含まれる。表示装置は、例えば、液晶ディスプレイ等である。操作デバイスは、例えば、キーボードやマウス等である。
 割当装置30の機能は、後述の処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ32に格納されたプログラムをCPU31が実行することで実現される。また、そのプログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能は、何らかのハードウェア、或いはハードウェアを利用して実行されるソフトウェアにより実現できればよい。
 なお、エッジサーバ10やクラウドサーバ20のハードウェア構成も割当装置30と同一とすることができ、且つ、当業者にとって明らかであるため、その説明を省略する。
 ここで、通常、エッジサーバ10とクラウドサーバ20のハードウェアスペックや演算処理能力を比較すると、クラウドサーバ20の方が高性能である。当該事実を鑑みて、本願開示では、実質的にクラウドサーバ20の演算処理能力は、エッジサーバ10との比較において無限であるものとする。つまり、エッジクラウドシステムにて実行するアプリケーションをなす複数のタスクを十分な余裕を持って実行できる程度には、クラウドサーバ20の演算処理能力は高いものとする。
 また、エッジサーバ10及びクラウドサーバ20に搭載されるメモリに関し、メモリ容量が各タスクを実行する際のボトルネックにはなり得ないものとする。つまり、本願開示では、エッジサーバ10及びクラウドサーバ20共に、十分な容量のメモリを搭載していることを前提とする。なお、サーバに大容量なメモリを搭載することのコストを考慮すれば、当該前提は妥当なものである。
 次に、各装置の処理構成(処理モジュール)について説明する。
[エッジサーバ]
 図6は、第1の実施形態に係るエッジサーバ10の処理構成(処理モジュール)の一例を示す図である。図6を参照すると、エッジサーバ10は、通信制御部201と、データ入力部202と、タスク実行部203と、負荷通知部204と、を含んで構成される。
 通信制御部201は、他の装置(クラウドサーバ20、割当装置30)との間の通信を制御する。通信制御部201は、他の装置に向けてデータ(パケット)を送信する。通信制御部201は、他の装置から受信したパケットを他の処理モジュール(例えば、タスク実行部203)に振り分ける。
 データ入力部202は、カメラ(図示せず)が出力する映像データを取得する。データ入力部202は、取得した映像データをタスク実行部203に引き渡す。
 タスク実行部203は、顔認証に係るアプリケーションをなす複数のタスクの一部又は全部を実行する。例えば、タスク実行部203は、図3に示す4つのタスクの一部又は全部を実行する。
 タスク実行部203は、割当装置30から通知される「実行タスク通知」に記載されたタスクを実行する。また、後述するように、割当装置30から各タスクを実行する際のCPU割当率も通知されるので、タスク実行部203は、当該通知されたCPU割当率にて各タスクを実行する。
 タスク実行部203は、自装置(エッジサーバ10)にて実行すべきタスクのうち最終段のタスクの実行が終了すると、その実行結果をクラウドサーバ20に向けて送信する。例えば、図3に示す4つのタスクのうち、「顔検出」と「顔切り出し」に係るタスクをタスク実行部203が実行する場合には、「顔切り出し」に係るタスクの実行結果がクラウドサーバ20に送信される。
 負荷通知部204は、自装置(エッジサーバ10)の負荷を示す情報を割当装置30に通知する。例えば、負荷通知部204は、自装置のCPU使用率を負荷情報として割当装置30に送信する。
 負荷通知部204は、当該負荷情報を任意のタイミングで割当装置30に通知することができる。例えば、負荷通知部204は、予め定めたタイミング、又は、予め定めた期間の経過後に負荷情報を割当装置30に通知する。
 あるいは、負荷通知部204は、取得した負荷情報に閾値処理を実行し、予め定めた第1閾値よりも負荷が上昇した場合、あるいは、予め定めた第2閾値よりも負荷が下降した場合に、負荷情報を割当装置30に通知してもよい。つまり、エッジサーバ10の負荷が大きく変動(変化)したと考えられる場合に、負荷通知部204は、当該時点での負荷情報を割当装置30に通知してもよい。
 負荷通知部204が割当装置30に通知する負荷情報は、CPU使用率に限定されない。例えば、CPU使用率とメモリ使用量に所定の関係(例えば、比例関係)等が認められる場合には、メモリ使用量が負荷情報としてクラウドサーバ20に通知されてもよい。
 負荷通知部204は、CPU使用率やメモリ使用量等の情報を、エッジサーバ10に搭載されたOS(Operating System)の機能を用いて取得することができる。
[クラウドサーバ]
 図7は、第1の実施形態に係るクラウドサーバ20の処理構成(処理モジュール)の一例を示す図である。図7を参照すると、クラウドサーバ20は、通信制御部301と、タスク実行部302と、結果出力部303と、を含んで構成される。
 通信制御部301は、他の装置(エッジサーバ10、割当装置30)との間の通信を制御する。
 タスク実行部302は、エッジサーバ10のタスク実行部203と同様の機能を有する。つまり、タスク実行部302は、顔認証に係るアプリケーションをなす複数のタスクのうち、割当装置30から通知されたタスクを実行する。その際、タスク実行部302は、エッジサーバ10から受け取ったタスク実行結果を用いて、自装置に割り当てられたタスクを実行する。
 タスク実行部302は、最終段のタスクの実行結果が得られると、当該実行結果を結果出力部303に引き渡す。
 結果出力部303は、タスク実行部302から取得した実行結果(例えば、顔認証の結果)を出力する。例えば、結果出力部303は、実行結果を他のサーバに転送する。あるいは、エッジサーバ10を設置したユーザが上記実行結果を必要とする場合には、結果出力部303は、エッジサーバ10に向けて上記実行結果を送信してもよい。
[割当装置]
 図8は、割当装置30の処理構成(処理モジュール)の一例を示す図である。図8を参照すると、割当装置30は、通信制御部401と、割当決定部402と、記憶部403と、を含んで構成される。
 通信制御部401は、他の装置との間の通信を制御する。
 割当決定部402は、エッジサーバ10とクラウドサーバ20それぞれが実行するタスクの割当を決定する。割当決定部402は、エッジクラウドシステムの負荷変動が所定値よりも大きいと判断した場合等に、エッジサーバ10とクラウドサーバ20に割り当てるタスクを決定する(タスクの再割当を実行する)。
 割当決定部402は、エッジサーバ10とクラウドサーバ20に割り当てるタスクを決定すると、当該決定したタスクを「実行タスク」として各サーバに通知する。
 割当決定部402のより詳細な動作は後述する。
 記憶部403は、割当装置30の動作に必要な情報、データを記憶する。特に、記憶部403は、割当決定部402がタスクの割当を決定する際に参照する情報を記憶する。
 記憶部403は、エッジクラウドシステムにて実現するアプリケーションに関する情報を記憶する。より具体的には、記憶部403は、当該アプリケーションをなす複数のタスクに関する接続及び各タスクの実行順序を定めるタスクグラフを記憶する。
 例えば、記憶部403は、図9に示すような情報をタスクグラフとして記憶する。図9に示すように、タスクグラフは、顔認証に係るアプリケーションが複数のタスクに分解され、各タスクの接続関係(依存関係、トポロジ)とその実行順序を規定する。
 なお、タスクグラフでは各タスクをノードとして扱う。また、タスクグラフには、最初のタスク(図9では顔検出ノード)に接続されたスタートノードと、最後のタスク(図9では特徴量照合ノード)に接続されたエンドノードが含まれる。
 当該スタートノードやエンドノードは、タスクグラフの開始及び終了を明示するためのノードであり、スタートノードはエッジサーバ10に割り当てられ、エンドノードはクラウドサーバ20に割り当てられる。あるいは、スタートノードを映像データの取得タスク、エンドノードを照合結果の出力タスクと捉えてもよい。
 このようにスタートノードとエンドノードを定めることで、顔認証に係るアプリケーションの実行は、エッジサーバ10から始まりクラウドサーバ20で終了する。
 記憶部403は、顔認証に係るアプリケーションをなす複数のタスクそれぞれに関する詳細仕様をタスク情報として記憶する。例えば、記憶部403は、図10に示すような情報をタスク情報として記憶する。図10に示すように、タスク情報は、アプリケーションをなす複数のタスクそれぞれについて、CPU割当率と各タスクを実行した結果得られるデータサイズを含む。
 CPU割当率は、1枚の映像フレームを処理する際、対応するタスクに割り当てる必要があるエッジサーバ10のCPUリソースの割合である。例えば、図10の例は、1枚の映像フレームに対して顔検出タスクを実行するには、エッジサーバ10のCPUリソース(CPUの演算能力)の20%が必要であることを示す。
 あるいは、CPU割当率は、単位時間(1秒間)にて各タスクに割り当てるCPU時間から算出してもよい。例えば、顔検出タスクに200ms(ミリ秒)のCPU時間を割り当てる場合に、CPU割当率が20%(200/1000ms=0.2)となる。なお、記号「/」は除算演算子を示す。
 データサイズは、1枚の映像フレームを対応するタスクにて処理した結果得られるデータのサイズである。
 なお、各タスクのCPU割当率は、各タスクの処理量に応じて決定すればよい。通常、オペレーティングシステムに搭載されたスケジューラは、何も指示がなければ各タスクに均等にCPUリソースを割り当てる。しかし、例えば、顔検出タスクと顔切り出しタスクに同じCPUリソースを割り当てた場合の各タスク性能(スループット)は異なるが、システムとしては2つのタスクで同じ性能(同じスループット)を達成する必要がある。そのため、各タスクの性能比に合わせてCPU割当率を決定する。なお、決定したCPU割当率の妥当性は、エッジサーバ10に搭載されたCPUと同等のプロセッサに対象とするタスクを実行させて検証するのが好ましい。
 記憶部403は、エッジサーバ10とクラウドサーバ20の間のネットワーク帯域に関する情報(ネットワーク帯域情報)を記憶する。例えば、記憶部403は、図11に示すように各エッジサーバ10について、クラウドサーバ20との間のネットワーク帯域を記憶する。なお、ネットワーク帯域情報として登録する値には、ネットワークの物理帯域(理論値)と可用帯域(実際に利用可能な帯域)が考えられるが、システム運用の観点からは可用帯域を登録することが望ましい。
 記憶部403は、複数のタスクそれぞれに求められる性能に関する情報(性能要件)を記憶する。例えば、記憶部403は、図12に示すように各タスクについて、エッジクラウドシステムにて単位時間あたりに処理する必要がある人物の数を記憶する。なお、図12には、各タスクの性能要件としてシステムが単位時間あたりに処理する必要がある人物の数を用いているが、他の指標を各タスクの性能要件として用いてもよい。例えば、フレーム数を各タスクの性能要件として用いてもよい。
 なお、記憶部403に格納される情報を示す図9~図12は例示であって、各情報はこれらの図面に記載された数字、単位に限定されないことは勿論である。また、記憶部403に格納すれる情報は、エッジクラウドシステムの稼働前に予めシステム管理者等が割当装置30に登録する。
 エッジクラウドシステムの状況等に応じて、上記情報が変化する場合には、各状況についての値を用意してもよい。例えば、図11において、エッジサーバ10とクラウドサーバ20の間のネットワーク帯域が時間帯によって異なる場合には、各時間帯についてのネットワーク帯域を準備してもよい。この場合、割当決定部402は、タスクの割当を決定する時間帯に応じて参照するネットワーク帯域を切り替える。
 また、例えば、昼間と夜間ではエッジクラウドシステムに要求される性能が異なる場合には、性能要件を時間帯ごとに用意すればよい。
 続いて、割当決定部402の動作について説明する。
 割当決定部402は、上記記憶部403に記憶された情報と、エッジクラウドシステムの負荷情報に基づき、エッジサーバ10とクラウドサーバ20に割り当てるタスクを決定する。その際、割当決定部402は、記憶部403に格納された情報とエッジサーバ10の負荷情報を利用して、混合整数計画問題を構成する制約条件と目的関数を生成する。より具体的には、割当決定部402は、エッジサーバ10におけるCPU割当率の最大化を目的する目的関数を生成する。割当決定部402は、制約条件と目的関数から構成される混合整数計画問題を解くことで2つのサーバに割り当てるタスクを決定する。
 割当決定部402は、上記混合整数計画問題を解くための制約条件として以下の4つ制約条件に対応する制約式を生成する。
 第1の制約条件は、タスクグラフに記載されたタスクがエッジサーバ10又はクラウドサーバ20のいずれか一方で実行されることを規定する制約条件である。
 タスクグラフにおける特定のノードに着目し、当該特定のノードの前後に接続されたノードを抜き出すとタスクグラフの一部は図13(a)のとおりに一般化される。図13において、丸印がタスクグラフにおけるノード(スタートノード、エンドノード、処理ノード)である。また、丸印の内部に記載された文字は、ノードを特定するためのサフィックスである。
 また、各ノードに対応するタスクをエッジサーバ10が実行する場合、当該エッジサーバ10のCPU割当率をノードのサフィックスを用いて記載する。例えば、ノードiのタスクをエッジサーバ10が実行する場合、当該エッジサーバのCPU割当率をxと表記する。
 CPU割当率xは、0≦x≦1の範囲における値とする。CPU割当率がゼロ(x=0)の場合は、対応するノードのタスクはエッジサーバ10にて実行されないことを示す。CPU割当率がゼロ以外であれば、対応するノードのタスクはエッジサーバ10にて実行されることを示し、その値が対応するタスクに割り当てるエッジサーバ10のCPU割当率となる。
 また、ノードを接続するリンクをその前後のノードのサフィックスを用いて表記する。例えば、図13(a)において、ノードhとノードiを接続するリンクをlhiと表記し、ノードiとノードjを接続するリンクをlijと表記する。
 各リンクには、「0」又は「1」のバイナリ値が与えられる。以下、各リンクに付与する値を「リンク値」と表記する。
 リンク値が「0」の場合は、当該リンクに接続されたノードのタスクはエッジサーバ10にて実行されることを示す。リンク値が「1」の場合は、少なくとも当該リンクの後段に接続されたノードのタスクはクラウドサーバ20にて実行されることを示す。リンク値が「0」から「1」に変化する場合(2つのリンクに接続されたノードの前後で当該2つのリンクのリンク値が「0」から「1」に変化する場合)、当該2つのリンクに接続されたノードは、エッジサーバ10にて実行されるノードの境界を示す。
 例えば、図13(b)は、ノードh及びノードiのタスクはエッジサーバ10にて実行されることを示し、ノードjのタスクはクラウドサーバ20にて実行されることを示す。また、ノードiの前後でリンク値lが「0」から「1」に変化しているので、ノードiがエッジサーバ10にて実行される境界(末端)であることを示す。このように、各ノードがエッジサーバ10、クラウドサーバ20のいずれで実行されるかは変数l(リンク値)により決定される。
 なお、図13を含む以降の図面において、薄い灰色のノードは対応するタスクがエッジサーバ10にて実行され、濃い灰色のノードは対応するタスクがクラウドサーバ20にて実行されることを示す。
 第1の制約条件は、上記エッジサーバ10のCPU割当率xとリンク値を用いて下記の式(1)として表現できる。
[式1]
Figure JPOXMLDOC01-appb-I000001
 式(1)によれば、ノードjのタスクをエッジサーバ10で実行する場合には、0<x≦1の関係が成り立つため、必然的にリンクlijのリンク値は「0」となる。リンクlijのリンク値が「1」であると、式(1)が成り立たないためである。
 また、ノードjのタスクをエッジサーバ10で実行しない場合、つまり、当該タスクをクラウドサーバ20にて実行する場合には、x=0となる。x=0となる理由は、混合整数計画問題の目的関数がエッジサーバ10のCPU割当率xの最大化に設定されるので、当該目的関数によりCPU割当率xは0よりも大きいことが保証されるためである。
 上記のように、第1の制約条件を制約式(1)として生成することで、2つのサーバで同じタスクを実行することや、2つのサーバが共に特定のタスクを実行しないことが排除される。また、制約式(1)により、複数のタスクのそれぞれを2つのサーバのいずれに割り当てるかに関する決定と、複数のタスクのうち各サーバのそれぞれが実行するタスクの境界の決定(各サーバに割り当てるタスクの境界の決定)と、が実現される。
 第2の制約条件は、クラウドサーバ20にて実行されたタスクの後段のタスクはエッジサーバ10で実行されることがないことを規定する。つまり、タスクの処理フローがクラウド側からエッジ側に逆流することがないことを第2の制約条件にて規定する。
 第2の制約条件は、上記リンク値を用いて下記の式(2)として表現できる。
[式2]
Figure JPOXMLDOC01-appb-I000002
 例えば、図13において、リンクlhiのリンク値とリンクlijのリンク値はそれぞれ、「0」又は「1」を取り得る。これらの組み合わせは、
(lhi、lij)=(0、0)、
(lhi、lij)=(0、1)、
(lhi、lij)=(1、1)、
(lhi、lij)=(1、0)の4通り存在する。
 上記式(2)は、これら4つの組み合わせのうち、(lhi、lij)=(1、0)を排除する。当該排除されるリンク値の組み合わせは、クラウドサーバ20でタスクを実行した後、エッジサーバ10にてその後段のタスクを実行することに相当する。
 このように、第2の制約条件は、タスク処理のフローが逆流(クラウド側からエッジ側)することを排除するリンクの依存関係に関する制約条件である。
 割当決定部402は、上記の制約式(1)及び(2)を記憶部403に格納されたタスクグラフに基づき生成する。
 第3の制約条件は、エッジサーバ10に割り当てるタスクがエッジサーバ10にて実行可能であることを規定する。第3の制約条件は、下記の式(3)として表現できる。
[式3]
Figure JPOXMLDOC01-appb-I000003
 式(3)の左辺は、エッジサーバ10に割り当てるCPU割当率xの総和である。式(3)の右辺に示すXは、エッジサーバ10に割り当てるCPU割当率の上限値である。当該CPU割当率上限値Xは、0以上1以下の範囲とする(0≦X≦1)。
 例えば、エッジサーバ10のCPU使用率が高く、エッジサーバ10のタスク実行余力に限りがある場合には、割当決定部402は、CPU割当率上限値Xを低く設定する。一方、エッジサーバ10のCPU使用率が低く、エッジサーバ10のタスク実行余力に余裕がある場合には、割当決定部402は、CPU割当率上限値Xを高く設定する。
 例えば、エッジサーバ10から取得したCPU使用率が95%と極めて高い場合には、既にエッジサーバ10に割り当てているタスクの実行が限界に近いことを示す。このような場合、割当決定部402は、CPU割当率上限値Xを低く設定する(例えば、0.5)。
 対して、例えば、エッジサーバ10から取得したCPU使用率が5%と極めて低い場合には、エッジサーバ10により多くのタスクを割当可能であることを示す。このような場合、割当決定部402は、CPU割当率上限値Xを高く設定する(例えば、0.9)。
 このように、割当決定部402は、エッジサーバ10から取得した負荷情報(エッジサーバ10のCPU使用率)に応じて、エッジサーバ10が実行するタスクのCPU割当率の総和の上限(CPU割当率上限値X)を調整する。
 第3の制約条件により、エッジサーバ10に割り当てられたタスクが当該エッジサーバ10にて実行可能であることが担保される。
 割当決定部402は、上記の制約式(3)を、記憶部403に格納されたタスク情報のCPU割当率と、エッジサーバ10から取得するCPU使用率(エッジサーバ10の負荷情報)に基づき生成する。具体的には、割当決定部402は、エッジサーバ10のCPU使用率とCPU割当率上限値Xの関係を規定するテーブル情報を参照し、式(3)に適用するCPU割当率上限値Xを決定する。あるいは、割当決定部402は、エッジサーバ10のCPU使用率とCPU割当率上限値Xの関係を規定する関数を用いてCPU割当率上限値Xを決定してもよい。即ち、割当決定部402は、エッジサーバ10のCPU使用率に応じたCPU割当率上限値Xの決定に関し任意の方法を用いることができる。
 第4の制約条件は、エッジサーバ10に割り当てられた最終段(末端)のタスクの実行結果がクラウドサーバ20に送信可能であることを規定する。第4の制約条件は、下記の式(4)として表現できる。
[式4]
Figure JPOXMLDOC01-appb-I000004
 式(4)において、Dは、ノードiのタスクをエッジサーバ10にて1回実行した結果得られるデータのサイズを示す。Fは、ノードiのタスクを単位時間あたりに実行する回数を示す。当該Fは、図12を参照して説明した性能要件に該当する。
 DとFを乗算することで、ノードiのタスク実行結果のデータサイズが計算される。また、式(4)の右辺に記載したCは、図11を参照して説明したエッジサーバ10とクラウドサーバ20の間のネットワーク帯域である。
 式(4)は、上記計算されたノードiのタスク実行結果が、エッジサーバ10とクラウドサーバ20の間のネットワークにより送受信されることを担保する。つまり、第4の制約条件により、エッジサーバ10とクラウドサーバ20を接続するネットワークの帯域不足により、エッジサーバ10からクラウドサーバ20にデータが送信不可となる状況を排除する。
 割当決定部402は、上記の制約式(4)を、記憶部403に格納されたタスク情報のデータサイズと、性能要件と、ネットワーク帯域情報と、に基づき生成する。
 次に、目的関数について説明する。
 目的関数は、エッジサーバ10に割り当てるCPU割当率の総和を最大化する関数である。換言するならば、目的関数は、クラウドサーバ20のコンピューティングリソースの最小化を達成する関数である。目的関数f(x)は、下記の式(5)により表現される。
[式5]
Figure JPOXMLDOC01-appb-I000005
 式(5)によれば、CPU割当率xの総和が最も大きいときに上記目的関数f(x)は最大となる。
 割当決定部402は、上記4つの制約条件及び目的関数から構成される混合整数計画問題を解き、その解に基づきエッジサーバ10及びクラウドサーバ20に割り当てるタスクを決定する。例えば、割当決定部402は、既存のソルバーを使用し、上記混合整数計画問題の解を得る。なお、上記ソルバーに関し、複数のベンダーから種々のソルバーが提供されており、割当装置30の環境等に適したソルバーを組み込み(割当装置30にインストール)、割当決定部402にて使用可能に構成すればよい。
 割当決定部402は、上記混合整数計画問題を解くことで、式(5)の目的関数を最大化する各ノードに割り当てるCPU割当率xを得る。例えば、図9に示すタスクグラフにおいて、図14(a)に示すようにノードのサフィックスを定める。なお、図14(a)において、ノードのサフィックスは、ノード内部に括弧書きした数字である。
 割当決定部402が混合整数計画問題を解くことで、顔検出処理と顔切り出し処理をエッジサーバ10に割り当てると決定した場合には、図14(b)に示すような結果が得られる。この場合、ノード1とノード2のCPU割当率は0以上であるので、これらのノードに対応するタスクはエッジサーバ10にて実行される。また、エッジ側とクラウド側の境界はノード2(顔切り出しノード)であり、各ノードに割り当てるCPU割当率はそれぞれ20%と30%となる。
 あるいは、割当決定部402が混合整数計画問題を解くことで、顔検出処理、顔切り出し処理、特徴点算出処理のそれぞれをエッジサーバ10に割り当てると決定した場合には、図14(c)に示すような結果が得られる。この場合、エッジ側とクラウド側の境界ノードは、ノード3(特徴点算出ノード)となる。
 割当決定部402は、算出したCPU割当率からエッジサーバ10、クラウドサーバ20のそれぞれに実行タスクを通知する。その際、割当決定部402は、エッジサーバ10に対しては、実行タスクと共に各タスクのCPU割当率も通知する。例えば、図14(b)の例では、割当決定部402は、エッジサーバ10に対しては「顔検出」及び「顔切り出し」に係るタスクを実行タスクとして通知する。その際、割当決定部402は、各タスクのCPU割当率(「0.2」、「0.3」)もエッジサーバ10に通知する。
 割当決定部402の動作をまとめると、図15に示すフローチャートのとおりとなる。
 割当決定部402は、エッジサーバ10からCPU使用率(負荷情報)を取得する(ステップS101)。
 割当決定部402は、当該取得したCPU使用率に対して閾値処理等を施し、タスクの再割当が必要か否かを判定する(ステップS102)。
 再割当が不要であれば(ステップS102、No分岐)、ステップS101に戻り処理を継続する。
 再割当が必要であれば(ステップS102、Yes分岐)、割当決定部402は、上記制約条件を表現する制約式を生成する(ステップS103)。
 割当決定部402は、生成した制約式と目的関数を用いて、混合整数計画問題を解く(ステップS104)。
 割当決定部402は、混合整数計画問題の解に基づきエッジサーバ10及びクラウドサーバ20のそれぞれに割り当てるタスクを決定する(ステップS105)。
 割当決定部402は、決定した実行タスクを、エッジサーバ10及びクラウドサーバ20に通知する(ステップS106)。その際、割当決定部402は、エッジサーバ10に対して、各実行タスクのCPU割当率も併せて通知する。
 なお、第1の実施形態では、理解の容易のため、図3に示すような単純なタスクグラフを例に取り、割当装置30の動作を説明している。しかし、図3に示すような単純なタスクグラフでなくとも、式(1)~(4)に示す制約条件と式(5)に示す目的関数により複雑な構造を有するタスクグラフの最適なタスク割当を実現できる。
 例えば、図16に示すような複雑な構造を有するタスクグラフであっても、上記説明した制約条件と目的関数により最適(クラウドサーバのリソースの最小化)なタスク割当を実現できる。図16に示すような複雑な構造のタスクグラフであっても、ノードと各ノードを接続するリンクに着目すれば、図13に示す接続関係に分離可能なためである。割当決定部402は、分離された各ノードとリンクについて、式(1)~(4)に示す制約条件を生成すればよい。つまり、タスクグラフの構造が複雑になると、ノードを指定するサフィックスの総数が増加するので各制約条件を展開した式(各ノードについての制約式)が増加する。即ち、タスクグラフの構造が複雑になったとしても制約条件の分量が増えるだけであり、各制約条件が生成できないという事態は生じない。
 また、図3や図16では、1入力1出力のタスクグラフを示すが、多入力多出力のタスクグラフに関しても最適なタスク割当が算出できる。例えば、多入力のタスクグラフであれば、当該多入力に対するスタートノードをエッジサーバ側に割り当てるようにすれば良いだけである。このように、本願開示にて対象とするタスクグラフの構造は任意の構造とすることができる。
 また、上述のように、第1の実施形態に割当装置30は、上記のような制約式と目的関数を用いてタスク割当に関する混合整数計画問題の解を短時間で得ることができる。例えば、それぞれが7ノード構成である10種類のタスクグラフを対象としてタスクをエッジ側のサーバ50台(エッジ側のCPUの数が50個)に割り当てる場合、解を得るのに要する時間は数百ms程度である。また、混合整数計画問題を解く環境(割当装置30のCPU等の規模)もスーパーコンピュータのように非常に高度な環境を必要とせず、汎用のCPU(例えば、ベース動作周波数が2.4ギガヘルツ、4コアのCPU)にて演算結果を得ることができる。
 以上のように、第1の実施形態に係る割当決定部402は、制約条件と目的関数を使って、エッジサーバ10及びクラウドサーバ20に割り当てるタスクと、エッジサーバ10に割り当てるタスクのCPU割当率と、を同時に決定する。より具体的には、第1の実施形態に係る割当装置30では、通常、非線形計画問題となるエッジクラウドシステムにおけるタスク割当を混合整数計画問題として扱えるように制約式(1)を構成している。即ち、エッジクラウドシステムにおけるタスク割当を考える際、ノードiにおけるCPU使用率xとノードiがエッジ側で実行されるのかクラウド側で実行されるのかを示す変数yを定義し、タスク割当の計算に利用する構成が考えられる。この場合、CPU使用率xと変数yを用いてエッジ側のCPU使用率をx×yとして計算することになる(×は乗算演算子)。しかし、このような計算では、エッジ側のCPU使用率に関する制約式は2次式となり、非線形計画問題を構成することになる。そこで本願開示では、通常、非線形となってしまう問題を制約式(1)により混合整数計画問題に置き替えて取り扱う、という本願特有の見地により、エッジクラウドシステムにおけるタスク割当の解が短時間で得られるようにしている。また、第1の実施形態では、上記目的関数は、エッジサーバ10に割り当てるCPU割当率の最大化を目的とするので、クラウドサーバ20に関するリソースのコストの最小化が実現できる。
 第1の実施形態では、クラウド側のリソースを最小化するような最適な解(タスクの割当)が得られる。
 さらに、第1の実施形態では、エッジサーバ10の負荷変動に応じて、エッジサーバ10及びクラウドサーバ20のそれぞれが実行するタスクの再割当が行われる。その結果、負荷変動に対してロバストなエッジクラウドシステムが提供される。
[第2の実施形態]
 続いて、第2の実施形態について図面を参照して詳細に説明する。
 第1の実施形態では、エッジクラウドシステムの負荷情報としてエッジサーバ10のCPU使用率を使用し、エッジサーバ10の負荷が大きく変動した場合にタスクの再割当を実行する場合を説明した。第2の実施形態では、2つのサーバ間のネットワーク負荷をエッジクラウドシステムの負荷情報として使用し、タスクの再割当を実行する場合を説明する。
 エッジクラウドシステムにおいて、サービスが円滑に提供されるためには、エッジサーバ10によるタスクの実行結果が遅延が少なくクラウドサーバ20に到達する必要がある。換言すれば、エッジサーバ10とクラウドサーバ20間のネットワーク帯域(可用帯域)が狭くなると円滑なデータの送受信が行えない可能性がある。
 第2の実施形態では、エッジサーバ10とクラウドサーバ20の間のネットワーク帯域をエッジクラウドシステムの負荷情報として取得し、タスクの再割当を実行する。
 図17は、第2の実施形態に係るエッジサーバ10aの処理構成の一例を示す図である。図6及び図17を参照すると、第1の実施形態に係るエッジサーバ10に帯域推定部205が追加されている。
 図18は、第2の実施形態に係るクラウドサーバ20aの処理構成の一例を示す図である。図7及び図18を参照すると、第1の実施形態に係るエッジサーバ10に帯域推定部304が追加されている。なお、第2の実施形態に係る割当装置30aの処理構成は図8と同様とすることができるので図8に相当する説明は省略する。
 2つサーバの帯域推定部は、種々の方法を用いて、エッジサーバ10とクラウドサーバ20を接続するネットワークの可用帯域を推定する。例えば、参考文献1(特許第5928574号公報)に記載されている可用帯域推定手法を用いることができる。
 当該参考文献1には、複数のパケットからなるパケットトレインを用いた可用帯域の推定方法が開示されている。パケットトレインによる帯域推定の概略は以下のとおりである。
 はじめに、送信側は、パケットサイズが徐々に増加するパケットを一定の送信間隔で送信する。パケットの送信間隔は一定であるが、パケットサイズは徐々に増加するため、送信レートは徐々に増加する。パケットごとの送信レートがボトルネックとなるネットワークをパケットが通過し、送信レートが可用帯域を上回るとキューイング遅延が発生する。即ち、キューイング遅延が発生することにより、当初は一定であった送信間隔が徐々に広がっていく。
 受信側は、送信間隔(受信間隔)が広がっていくポイントを検出することでキューイング遅延が発生するパケットを特定し、当該パケットのサイズを送信間隔で除算することで可用帯域を推定する。
 第2の実施形態では、上り方向(エッジサーバ10aからクラウドサーバ20aへのデータ送信方向)の可用帯域が得られるように、上記参考文献1に開示された技術をエッジクラウドシステムに適用する。具体的には、エッジサーバ10aの帯域推定部205を上記送信側、クラウドサーバ20aの帯域推定部304を上記受信側にそれぞれ設定する。
 受信側であるクラウドサーバ20aの帯域推定部304は、送信側であるエッジサーバ10aの帯域推定部205から送信されてくるパケットトレインに基づき可用帯域を推定する。その後、クラウドサーバ20a(帯域推定部304)は、推定した可用帯域を任意のタイミングにて割当装置30aに送信する。
 割当装置30aの割当決定部402は、取得した可用帯域に閾値処理を施し、可用帯域が大きく変動していると判断した場合には、第1の実施形態にて説明したタスクの再割当を実行する。その際、割当決定部402は、式(4)の右辺に記載されたCにクラウドサーバ20aから取得した値を使用する。
 第2の実施形態に係る割当装置30aは、ネットワークの負荷変動を契機としてタスクの再割当を行うだけでなく、第1の実施形態と同様に、エッジサーバ10の負荷が変動した場合もタスクの再割当を行ってもよい。
 なお、第2の実施形態では、参考文献1に記載された技術を用いてエッジサーバ10とクラウドサーバ20間の可用帯域を推定する場合について説明したが、他の可用帯域推定手法を用いて上記可用帯域を推定しても良いことは勿論である。
 以上のように、第2の実施形態では、エッジ・クラウド間のネットワーク可用帯域を推定し、当該推定した可用帯域をエッジクラウドシステムの負荷情報として使用する。その後、第2の実施形態に係る割当装置30aは、推定された可用帯域に適合するようにエッジサーバ10aとクラウドサーバ20aに割り当てるタスクを決定する。その結果、エッジ側とクラウド側を接続するネットワーク帯域が変動し、システムの円滑な運用が阻害される場合であっても、変動したネットワーク環境に適したタスクの割当が行われる。即ち、第2の実施形態と同様、負荷変動に対してロバストなエッジクラウドシステムが提供される。
[第3の実施形態]
 続いて、第3の実施形態について図面を参照して詳細に説明する。
 第1及び第2の実施形態では、負荷変動にロバストなエッジクラウドシステムを実現するために割当装置30を活用している。しかし、割当装置30の機能は他の用途に活用することもできる。
 例えば、割当装置30の機能をエッジクラウドシステムの設計に活用することもできる。
 図19は、第3の実施形態に係る割当装置30bの処理構成の一例である。図8と図19を参照すると、第3の実施形態に係る割当装置30bは、入力部404と表示部405をさらに備えている。なお、図19には、通信制御部401を記載しているが、当該処理モジュールは割当装置30bに存在しなくともよい。
 入力部404は、対象となるエッジクラウドシステムの詳細情報を入力する。例えば、入力部404は、図9に示すようなタスクグラフ、図10に示すようなタスク情報、図11に示すようなネットワーク帯域情報、図12に示すような性能要件の各種情報を取得する。具体的には、入力部404は、ユーザがこれらの情報を入力するためのGUI(Graphical User Interface)を作成し、ユーザの操作によりこれらの情報を取得する。
 例えば、入力部404は、図20に示すようなGUIを生成し、ユーザによるタスクグラフの入力を実現する。入力部404は、取得したエッジクラウドシステムの詳細情報を割当決定部402に引き渡す。
 割当決定部402は、入力部404から取得したエッジクラウドシステムの詳細情報を用いて、第1の実施形態と同様にタスク割当を決定する。割当決定部402は、決定したタスク割当を表示部405に引き渡す。
 表示部405は、取得したタスク割当を表示する。例えば、表示部405は、図21に示すようなタスク割当結果を表示する。ユーザは図21の結果を確認することで、自らが入力した諸条件に適したタスク割当を知ることができる。
 ユーザは、入力する諸条件の一部を可変することで、タスク割当がどのように変化するのか確認し、エッジクラウドシステムの設計に役立てることができる。例えば、ユーザは、ネットワーク帯域を狭くすると、タスク割当がどのように変化するか把握する。その結果、ユーザは、当該ネットワーク帯域が狭い場合にエッジサーバに割り当てられるタスクを処理するために最低限必要なCPUリソース量を把握できる。
 以上のように、第3の実施形態に係る割当装置30bは入力部404、表示部405を備えることで、第1及び第2の実施形態にて説明した割当装置30をエッジクラウドシステムの設計に用いることができる。
[変形例]
 なお、第1乃至第3の実施形態にて説明したエッジクラウドシステムの構成、割当装置30の構成、動作等は例示であって、システム等の構成を限定する趣旨ではない。例えば、割当装置30の機能がクラウドサーバ20やエッジサーバ10に組み込まれていてもよい。
 上記実施形態では、エッジサーバ10が自装置の負荷情報を算出し、当該算出した負荷情報を割当装置30に通知する場合を説明したが、割当装置30が各エッジサーバ10に負荷状況(負荷情報)を問い合わせてもよい。
 上記実施形態では、割当装置30の内部に記憶部403を設け、タスクの割当決定に必要な情報を当該記憶部403に記憶しているが、当該タスク割当に必要な情報を外部のデータベースサーバ等に格納してもよい。
 上記実施形態では、エッジサーバ10が取得した映像データから顔認証に係るアプリケーションをエッジクラウドシステムにて実現する場合を説明したが、他のアプリケーションをエッジクラウドシステムにて実現してもよい。例えば、商品等の売り上げ管理を行うPOS(Point Of Sale)システムをエッジクラウドシステムにて実現してもよい。
 上記実施形態では、各エッジサーバ10が同じアプリケーション(顔認証に係るアプリケーション)を実現する場合について説明したが、それぞれのエッジサーバ10は互いに異なるアプリケーションを実現してもよい。例えば、エッジサーバ10-1とクラウドサーバ20にて顔認証に係るアプリケーションを実現し、エッジサーバ10-2とクラウドサーバ20にてPOSシステムに係るアプリケーションを実現してもよい。
 各エッジサーバ10が異なるアプリケーションを実現する場合には、割当装置30は、各アプリケーションについてのタスクグラフ、タスク情報、性能要件を記憶すればよい。また、各エッジサーバ10の演算能力が異なる場合には、割当装置30は、エッジサーバ10それぞれについてタスク情報(特に、CPU割当率)を記憶すればよい。
 また、1台のエッジサーバ10に複数のCPUが含まれる場合や、1つのCPUに複数のコアが含まれる場合等、1台のエッジサーバ10の内部に独立して演算処理が可能な複数のプロセッサが含まれることがある。この場合、1台のエッジサーバ10に含まれる各プロセッサについてタスク情報のCPU割当率を管理すればよい。
 また、1台のエッジサーバ10に複数のプロセッサが含まれる場合には、1台のエッジサーバ10にて複数のアプリケーションが実現されてもよい。この場合、割当装置30は、プロセッサごとにタスクグラフ、タスク情報を管理すると共に、各アプリケーションについて上記説明したタスク割当を実行すればよい。
 上記実施形態では、図9を参照してアプリケーションに含まれるタスクの接続関係、実行順序等を規定するタスクグラフを説明した。当該タスクグラフに関して、1つのアプリケーションに対して複数のタスクグラフを用意してもよい。例えば、図9に示すタスクグラフに加え、「顔検出」等の各タスクをさらに複数のタスクに分解した構造を有するタスクグラフを用意してもよい。例えば、図9に示すタスクグラフを基本タスクグラフとし、図22に示すタスクグラフを拡張タスクグラフとして用意してもよい。例えば、割当装置30は、初めに基本タスクグラフを用いてタスク割当を試み、当該基本タスクグラフによるタスク割当では解が得られない場合等に、拡張タスクグラフを用いてタスク割当処理を実行してもよい。つまり、割当装置30は、タスク分割に関してより粒度の細かいタスクグラフを使うことで、タスク割当の選択肢(タスク割当の自由度)を増やし、最適なタスク割当を実現してもよい。なお、この場合、拡張タスクグラフに対応したタスク情報を用意する。
 上記実施形態では、制約式の生成タイミングについてタスク再割当処理の実行時(図15のステップS103)であると説明したが、実際には、当該タイミングで計算する制約式はエッジクラウドシステムの負荷変動の影響を受ける制約式に限ってもよい。具体的には、エッジクラウドシステムの負荷情報としてエッジサーバ10のCPU使用率を使用する場合には、制約式(1)~(4)のうち当該負荷情報の影響を受けるのは式(3)だけである。従って、割当装置30は、式(1)、(2)及び(4)の制約式に関してはシステム起動時等に予め計算しておき、タスク再割当の際に式(3)の制約式を計算すればよい。このように、エッジクラウドシステムの負荷変動の影響を受けない制約式に関しては予め計算しておくことで、タスク再割当に要する時間を短縮することができる。
 上記実施形態では、第1乃至第4の制約条件を表現する制約式として式(1)~(4)を説明し、目的関数として式(5)を説明したが、これらの式は例示であって制約条件、目的関数は他の形式により表現可能である。
 例えば、上記実施形態では、ノード間を接続するリンクの値(リンク値)に関し、「0」と「1」のバイナリ値を与え、各リンク値にタスク割当の解釈を与えている。具体的には、リンク値「0」には当該リンクに接続されたノードはエッジサーバ10に割り当てられ、リンク値「1」には当該リンクの後段ノードはクラウドサーバ20に割り当てられることを定めている。当該リンク値の解釈を逆転して第1の制約条件に対応する制約式を生成してもよい。
 また、上記実施形態では、リンクにバイナリ値を与え、第1の制約条件を表現する式(1)を生成しているが、ノードにバイナリ値を与えて第1の制約条件に対応する制約式を生成してもよい。例えば、ノードiのノード値Qに「0」又は「1」を与えて第1の制約条件に対応する制約式を生成してもよい。例えば、Q=0の場合は、当該ノードに対応するタスクはクラウドサーバ20で実行され、Q=1の場合は当該ノードに対応するタスクはエッジサーバ10にて実行されると定める。このようにノード値を定めると、第1の制約条件に対応する制約式は下記の式(6)として表現できる。即ち、ノード自身にバイナリ値を割り当て、「ノードがエッジ側に配置されるかどうか」を決定する変数として扱ってもよい。
[式6]
Figure JPOXMLDOC01-appb-I000006
 また、目的関数として式(5)を説明したが、当該式(5)は例示であって、使用する目的関数を限定する趣旨ではないことは勿論である。例えば、目的関数を以下の式(7)としてもよい。式(7)に示す目的関数は、エッジサーバ10に割り当てるCPU割当率の最大化と、エッジサーバ10及びクラウドサーバ20間で送受信されるデータ量の最小化を目的とする関数である。式(7)の右辺に示す第1項が最小、第2項が最大となるように解(タスク割当)が求められる。
[式7]
Figure JPOXMLDOC01-appb-I000007
 なお、式(7)において、αは右辺の第1項と第2項のいずれに重みを置くかを示す係数である(0≦α≦1)。
 ここで、上記実施形態にて説明したエッジクラウドシステムにおけるタスク割当は、変数に実数と整数が混在する「混合整数計画問題」であると言える。タスク割当に利用するリンク変数lは、「0」又は「1」のいずれかとなる整数だからである。そのため場合によっては解が得られない、あるいは、解を得るのに長い時間の計算が必要となる可能性がある。このような場合、上記問題の要因となる変数を実数として扱い、解が得られた後に整数として扱われた変数を整数に変換してもよい。例えば、上記実施形態にて説明した方法では所定時間経過しても解が得られない場合には、割当装置30は、実行中のタスク割当の計算を中断する。その後、割当装置30は、整数の変数であるリンク変数lを実数として扱い、式(1)~(4)で示される制約式や式(5)で示される目的関数を用いて解を求める。割当装置30は、解が得られた後リンク変数lを「0」か「1」に丸め込むようにしてタスク割当を決定してもよい。このような手法は「Randomized Rounding」と称され、割当装置30は、上記のような近似アルゴリズムを用いて最終的な解(タスク割当)を算出することもできる。
 上記実施形態では、クラウドサーバ20の演算処理能力や2つのサーバのメモリ量に関しては、混合整数計画問題を構成する制約条件から外している。これらの要素の除外は、実際のエッジクラウドシステムの現状を考慮すれば、タスク割当の制約にならないという考察に基づく。しかし、これらの要素を考慮して混合整数計画問題を構成することも勿論可能である。例えば、エッジサーバ10のメモリ使用量を考慮して混合整数計画問題を構成するのであれば、上記説明したCPU割当率をメモリ使用量に置き替え、式(3)に相当する制約式を生成すればよい。この点、クラウドサーバ20のCPUリソースについても同様であり上記説明したエッジサーバ10のCPU使用率、割当率をクラウドサーバ20のCPU使用率、割当率に置き替えて式(3)に相当する制約式を生成すればよい。但し、例えば、クラウドサーバ20のリソースに関する制約式を混合整数計画問題に繰り込んでも、得られるタスク割当結果にほとんど影響を与えない。即ち、クラウドサーバ20のCPUリソースがタスク割当のボトルネックとなることは希である。
 上記実施形態では、タスクの再割当を実行した後は再割当後の実行タスクを2つのサーバに通知することを説明したが、結果的にタスクの割当が変化しない(直前のタスク割当と再割当処理の実行後のタスク割当が同じ)場合には、実行タスクを通知しなくてもよい。あるいは、上記実施形態では、エッジクラウドシステムの負荷変動を契機としてタスクの再割当処理を実行しているが、当該不可変動によらず、割当装置30は、所定のタイミング、所定の間隔で再割当を実行してもよい。この場合、割当装置30は、直前のタスク割当状況とタスク再割当処理の実行結果が異なる場合に、実行タスクを2つのサーバに通知すればよい。
 コンピュータの記憶部に、上述したコンピュータプログラムをインストールすることにより、コンピュータを上記説明した割当装置として機能させることができる。さらにまた、上述したコンピュータプログラムをコンピュータに実行させることにより、コンピュータによりエッジクラウドシステムにおけるタスク割当方法を実行することができる。
 上述の説明で用いたフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。
 上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
 上述の第1の視点に係る割当装置のとおりである。
[付記2]
 前記第1のサーバに割り当てられたタスクの実行結果は前記第2のサーバに送信され、前記第2のサーバは前記第1のサーバから取得した実行結果を用いて割り当てられたタスクを実行する、エッジクラウドシステムが前記第1及び第2のサーバにより構成され、
 前記割当決定部は、前記第1及び第2のサーバそれぞれに割り当てるタスクを前記第1及び第2のサーバに通知する、付記1に記載の割当装置。
[付記3]
 前記割当決定部は、
 前記エッジクラウドシステムの負荷変動に応じて、前記第1及び第2のサーバそれぞれが実行するタスクの再割当を行う、付記2に記載の割当装置。
[付記4]
 前記割当決定部は、
 前記第1のサーバの負荷変動に応じて、前記第1及び第2のサーバそれぞれが実行するタスクの再割当を行う、付記3に記載の割当装置。
[付記5]
 前記割当決定部は、
 前記第1及び第2のサーバを接続するネットワークの負荷変動に応じて、前記第1及び第2のサーバそれぞれが実行するタスクの再割当を行う、付記3又は4に記載の割当装置。
[付記6]
 前記割当決定部は、
 前記アプリケーションをなす複数のタスクに関する接続及び各タスクの実行順序を定めるタスクグラフと、
 前記アプリケーションをなす複数のタスクそれぞれについて、CPU割当率と各タスクを実行した結果得られるデータサイズを定めるタスク情報と、
 前記第1及び第2のサーバ間のネットワーク帯域を定めるネットワーク帯域情報と、
 前記複数のタスクそれぞれに求められる性能を定める性能要件と、に基づき、前記混合整数計画問題を構成する制約条件と目的関数を生成する、付記2乃至5のいずれか一に記載の割当装置。
[付記7]
 前記割当決定部は、
 前記タスクグラフに記載されたタスクが前記第1及び第2のサーバのいずれか一方で実行されることを規定する第1の制約条件を前記制約条件の1つとして生成する、付記6に記載の割当装置。
[付記8]
 前記割当決定部は、
 前記タスクグラフを用いて、前記第2のサーバにて実行されたタスクの後段のタスクは前記第1のサーバで実行されることがないことを規定する第2の制約条件を前記制約条件の1つとして生成する、付記7に記載の割当装置。
[付記9]
 前記割当決定部は、
 前記CPU割当率と、前記第1のサーバの負荷情報と、を用いて前記第1のサーバに割り当てるタスクが前記第1のサーバにて実行可能であることを規定する第3の制約条件を前記制約条件の1つとして生成する、付記8に記載の割当装置。
[付記10]
 前記割当決定部は、
 前記タスク情報に含まれるデータサイズ、前記性能要件及び前記ネットワーク帯域情報を用いて、前記第1のサーバに割り当てられた最終段のタスクの実行結果が前記第2のサーバに送信可能であることを規定する、第4の制約条件を前記制約条件の1つとして生成する、付記9に記載の割当装置。
[付記11]
 前記目的関数は、前記第1のサーバに割り当てるCPU割当率の総和を最大化する関数である、付記6乃至10のいずれか一に記載の割当装置。
[付記12]
 前記タスクグラフ、前記タスク情報、前記ネットワーク帯域情報及び前記性能要件を記憶する記憶部をさらに備える、付記6乃至11のいずれか一に記載の割当装置。
[付記13]
 前記割当決定部は、
 前記混合整数計画問題を構成する際に、前記第1及び第2のサーバに搭載されるメモリに関する情報を不使用とする、付記1乃至12のいずれか一に記載の割当装置。
[付記14]
 上述の第2の視点に係るシステムのとおりである。
[付記15]
 上述の第3の視点に係るタスク割当方法のとおりである。
[付記16]
 上述の第4の視点に係るプログラムのとおりである。
 なお、付記14~付記16の形態は、付記1の形態と同様に、付記2の形態~付記13の形態に展開することが可能である。
 なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(部分的削除を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
10、10a、10-1~10-N エッジサーバ
20、20a クラウドサーバ
30、30a、30b、100 割当装置
31 CPU(Central Processing Unit)
32 メモリ
33 入出力インターフェイス
34 NIC(Network Interface Card)
101、402 割当決定部
201、301、401 通信制御部
202 データ入力部
203、302 タスク実行部
204 負荷通知部
205、304 帯域推定部
303 結果出力部
403 記憶部
404 入力部
405 表示部

Claims (16)

  1.  少なくとも、第1のサーバに搭載されたCPU(Central Processing Unit)リソースに関する情報と、前記第1のサーバと第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成し、前記混合整数計画問題の解に基づき前記第1及び第2のサーバに割り当てるタスクを決定する、割当決定部を備え、
     前記第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行し、
     前記割当決定部は、前記複数のタスクのそれぞれを第1及び第2のサーバのいずれに割り当てるかに関する決定と、前記複数のタスクのうち、前記第1のサーバに割り当てるタスクと前記第2のサーバに割り当てるタスクとの境界の決定と、を特定の制約式により実現する、割当装置。
  2.  前記第1のサーバに割り当てられたタスクの実行結果は前記第2のサーバに送信され、前記第2のサーバは前記第1のサーバから取得した実行結果を用いて割り当てられたタスクを実行する、エッジクラウドシステムが前記第1及び第2のサーバにより構成され、
     前記割当決定部は、前記第1及び第2のサーバそれぞれに割り当てるタスクを前記第1及び第2のサーバに通知する、請求項1に記載の割当装置。
  3.  前記割当決定部は、
     前記エッジクラウドシステムの負荷変動に応じて、前記第1及び第2のサーバそれぞれが実行するタスクの再割当を行う、請求項2に記載の割当装置。
  4.  前記割当決定部は、
     前記第1のサーバの負荷変動に応じて、前記第1及び第2のサーバそれぞれが実行するタスクの再割当を行う、請求項3に記載の割当装置。
  5.  前記割当決定部は、
     前記第1及び第2のサーバを接続するネットワークの負荷変動に応じて、前記第1及び第2のサーバそれぞれが実行するタスクの再割当を行う、請求項3又は4に記載の割当装置。
  6.  前記割当決定部は、
     前記アプリケーションをなす複数のタスクに関する接続及び各タスクの実行順序を定めるタスクグラフと、
     前記アプリケーションをなす複数のタスクそれぞれについて、CPU割当率と各タスクを実行した結果得られるデータサイズを定めるタスク情報と、
     前記第1及び第2のサーバ間のネットワーク帯域を定めるネットワーク帯域情報と、
     前記複数のタスクそれぞれに求められる性能を定める性能要件と、に基づき、前記混合整数計画問題を構成する制約条件と目的関数を生成する、請求項2乃至5のいずれか一項に記載の割当装置。
  7.  前記割当決定部は、
     前記タスクグラフに記載されたタスクが前記第1及び第2のサーバのいずれか一方で実行されることを規定する第1の制約条件を前記制約条件の1つとして生成する、請求項6に記載の割当装置。
  8.  前記割当決定部は、
     前記タスクグラフを用いて、前記第2のサーバにて実行されたタスクの後段のタスクは前記第1のサーバで実行されることがないことを規定する第2の制約条件を前記制約条件の1つとして生成する、請求項7に記載の割当装置。
  9.  前記割当決定部は、
     前記CPU割当率と、前記第1のサーバの負荷情報と、を用いて前記第1のサーバに割り当てるタスクが前記第1のサーバにて実行可能であることを規定する第3の制約条件を前記制約条件の1つとして生成する、請求項8に記載の割当装置。
  10.  前記割当決定部は、
     前記タスク情報に含まれるデータサイズ、前記性能要件及び前記ネットワーク帯域情報を用いて、前記第1のサーバに割り当てられた最終段のタスクの実行結果が前記第2のサーバに送信可能であることを規定する、第4の制約条件を前記制約条件の1つとして生成する、請求項9に記載の割当装置。
  11.  前記目的関数は、前記第1のサーバに割り当てるCPU割当率の総和を最大化する関数である、請求項6乃至10のいずれか一項に記載の割当装置。
  12.  前記タスクグラフ、前記タスク情報、前記ネットワーク帯域情報及び前記性能要件を記憶する記憶部をさらに備える、請求項6乃至11のいずれか一項に記載の割当装置。
  13.  前記割当決定部は、
     前記混合整数計画問題を構成する際に、前記第1及び第2のサーバに搭載されるメモリに関する情報を不使用とする、請求項1乃至12のいずれか一項に記載の割当装置。
  14.  第1のサーバと、
     前記第1のサーバとネットワークを介して接続される第2のサーバと、
     少なくとも、第1のサーバに搭載されたCPU(Central Processing Unit)リソースに関する情報と、前記第1及び第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成し、前記混合整数計画問題の解に基づき前記第1及び第2のサーバに割り当てるタスクを決定する、割当装置と、
     を含み、
     前記第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行し、
     前記割当装置は、前記複数のタスクのそれぞれを前記第1及び第2のサーバのいずれに割り当てるかに関する決定と、前記複数のタスクのうち、前記第1のサーバに割り当てるタスクと前記第2のサーバに割り当てるタスクとの境界の決定と、を特定の制約式により実現する、システム。
  15.  割当装置において、
     少なくとも、第1のサーバに搭載されたCPU(Central Processing Unit)リソースに関する情報と、前記第1のサーバと第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成し、
     前記混合整数計画問題の解に基づき前記第1及び第2のサーバに割り当てるタスクを決定し、
     前記第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行し、
     前記複数のタスクのそれぞれを第1及び第2のサーバのいずれに割り当てるかに関する決定と、前記複数のタスクのうち、前記第1のサーバに割り当てるタスクと前記第2のサーバに割り当てるタスクとの境界の決定と、は特定の制約式により実現される、タスク割当方法。
  16.  割当装置に搭載されたコンピュータに、
     少なくとも、第1のサーバに搭載されたCPU(Central Processing Unit)リソースに関する情報と、前記第1のサーバと第2のサーバを接続するネットワークの帯域に関する情報と、を用いて混合整数計画問題を構成する処理と、
     前記混合整数計画問題の解に基づき前記第1及び第2のサーバに割り当てるタスクを決定する処理と、
     を実行させ、
     前記第1及び第2のサーバはアプリケーションの実現に必要な複数のタスクを互いに分担して実行し、
     前記複数のタスクのそれぞれを第1及び第2のサーバのいずれに割り当てるかに関する決定と、前記複数のタスクのうち、前記第1のサーバに割り当てるタスクと前記第2のサーバに割り当てるタスクとの境界の決定と、は特定の制約式により実現される、プログラム。
PCT/JP2019/025125 2018-06-27 2019-06-25 割当装置、システム、タスク割当方法及びプログラム WO2020004380A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862690391P 2018-06-27 2018-06-27
US62/690,391 2018-06-27

Publications (1)

Publication Number Publication Date
WO2020004380A1 true WO2020004380A1 (ja) 2020-01-02

Family

ID=68986600

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/025125 WO2020004380A1 (ja) 2018-06-27 2019-06-25 割当装置、システム、タスク割当方法及びプログラム

Country Status (1)

Country Link
WO (1) WO2020004380A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2021199283A1 (ja) * 2020-03-31 2021-10-07
CN113938508A (zh) * 2021-09-13 2022-01-14 杭州大杰智能传动科技有限公司 用于智能塔吊远程控制的低延迟通信方法和系统
WO2022057811A1 (zh) * 2020-09-17 2022-03-24 浙江大学 一种面向边缘服务器的网络突发负载疏散方法
WO2024079902A1 (ja) * 2022-10-14 2024-04-18 日本電気株式会社 処理制御システム、処理制御装置、および処理制御方法
WO2024079901A1 (ja) * 2022-10-14 2024-04-18 日本電気株式会社 処理制御システム、処理制御装置、および処理制御方法
WO2024079904A1 (ja) * 2022-10-14 2024-04-18 日本電気株式会社 処理制御システム、処理制御装置、および処理制御方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017141339A1 (ja) * 2016-02-15 2017-08-24 富士通株式会社 処理制御プログラム、処理制御方法、情報処理装置、および通信装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017141339A1 (ja) * 2016-02-15 2017-08-24 富士通株式会社 処理制御プログラム、処理制御方法、情報処理装置、および通信装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MORI, TOMOYA ET AL.: "Optimal Design of Fog-Cloud Computing System", IEICE TECHNICAL REPORT, vol. 117, no. 397, 15 January 2018 (2018-01-15), pages 19 - 24 *
SUGANUMA, TAKUO ET AL.: "Proposal of An Environment Adaptive Architecture for Flexible IoT", IEICE TECHNICAL REPORT, vol. 116, no. 231, 22 September 2016 (2016-09-22), pages 13 - 18 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2021199283A1 (ja) * 2020-03-31 2021-10-07
WO2021199283A1 (ja) * 2020-03-31 2021-10-07 富士通株式会社 画像処理制御装置、画像処理制御プログラム、及び画像処理制御方法
JP7311036B2 (ja) 2020-03-31 2023-07-19 富士通株式会社 画像処理制御装置、画像処理制御プログラム、及び画像処理制御方法
US11729259B2 (en) 2020-03-31 2023-08-15 Fujitsu Limited Improving resource efficiency in an image processing system for processing a moving image or a still frame
WO2022057811A1 (zh) * 2020-09-17 2022-03-24 浙江大学 一种面向边缘服务器的网络突发负载疏散方法
US11784931B2 (en) 2020-09-17 2023-10-10 Zhejiang University Network burst load evacuation method for edge servers
CN113938508A (zh) * 2021-09-13 2022-01-14 杭州大杰智能传动科技有限公司 用于智能塔吊远程控制的低延迟通信方法和系统
CN113938508B (zh) * 2021-09-13 2023-06-02 杭州大杰智能传动科技有限公司 用于智能塔吊远程控制的低延迟通信方法和系统
WO2024079902A1 (ja) * 2022-10-14 2024-04-18 日本電気株式会社 処理制御システム、処理制御装置、および処理制御方法
WO2024079901A1 (ja) * 2022-10-14 2024-04-18 日本電気株式会社 処理制御システム、処理制御装置、および処理制御方法
WO2024079904A1 (ja) * 2022-10-14 2024-04-18 日本電気株式会社 処理制御システム、処理制御装置、および処理制御方法

Similar Documents

Publication Publication Date Title
WO2020004380A1 (ja) 割当装置、システム、タスク割当方法及びプログラム
US11018979B2 (en) System and method for network slicing for service-oriented networks
US8495206B2 (en) Method and system for job scheduling in distributed data processing system with identification of optimal network topology
CN107534583B (zh) 在管理节点中实现的方法和相关装置
Nan et al. Cost-effective processing for delay-sensitive applications in cloud of things systems
US9325585B1 (en) Mission-driven autonomous and adaptive resource management
Li et al. DCloud: deadline-aware resource allocation for cloud computing jobs
EP2269136B1 (en) Method, system and computer program for workload scheduling
CN111401744B (zh) 一种移动边缘计算中不确定性环境下的动态任务卸载方法
CN107846371B (zh) 一种多媒体业务QoE资源分配方法
Li et al. Robust service provisioning with service function chain requirements in mobile edge computing
Nguyen et al. Two-stage robust edge service placement and sizing under demand uncertainty
JP6499097B2 (ja) リソース割当計算装置、リソース割当計算方法、及びプログラム
Farooq et al. QoE based revenue maximizing dynamic resource allocation and pricing for fog-enabled mission-critical IoT applications
CN111159859B (zh) 一种云容器集群的部署方法及系统
Pereira et al. Increasing the efficiency of fog nodes through of priority-based load balancing
CN107872405A (zh) 分布式带宽分配和调节
US20220232584A1 (en) Method and apparatus for bandwidth allocation
da Silva Veith et al. Multi-objective reinforcement learning for reconfiguring data stream analytics on edge computing
Meskar et al. Fair multi-resource allocation in mobile edge computing with multiple access points
Nasser et al. MOCAB/HEFT algorithm of multi radio wireless communication improved achievement assessment
Cheng et al. Resilient edge service placement under demand and node failure uncertainties
Gad-Elrab et al. Fuzzy clustering-based task allocation approach using bipartite graph in cloud-fog environment
JP6732693B2 (ja) リソース割当制御システム、リソース割当制御方法、及びプログラム
Huang The value-of-information in matching with queues

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19824714

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP