WO2020096239A1 - 작업 의존성에 기초하여 컴퓨팅 작업을 서버에 스케줄링하는 방법 및 장치 - Google Patents

작업 의존성에 기초하여 컴퓨팅 작업을 서버에 스케줄링하는 방법 및 장치 Download PDF

Info

Publication number
WO2020096239A1
WO2020096239A1 PCT/KR2019/014040 KR2019014040W WO2020096239A1 WO 2020096239 A1 WO2020096239 A1 WO 2020096239A1 KR 2019014040 W KR2019014040 W KR 2019014040W WO 2020096239 A1 WO2020096239 A1 WO 2020096239A1
Authority
WO
WIPO (PCT)
Prior art keywords
task
tasks
server
computing
servers
Prior art date
Application number
PCT/KR2019/014040
Other languages
English (en)
French (fr)
Inventor
권기석
고한얼
백상헌
이재욱
김준우
태유진
Original Assignee
삼성전자 주식회사
고려대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사, 고려대학교 산학협력단 filed Critical 삼성전자 주식회사
Priority to US17/309,183 priority Critical patent/US20210373947A1/en
Publication of WO2020096239A1 publication Critical patent/WO2020096239A1/ko

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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]
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria

Definitions

  • Various embodiments of the present disclosure relate to a wireless communication system, and more particularly, to an apparatus for scheduling a computing task including a plurality of tasks to a plurality of computing servers and a method of operating the same.
  • the 5G communication system or the pre-5G communication system is called a 4G network (Beyond 4G Network) communication system or an LTE system (Post LTE) system.
  • 4G network Beyond 4G Network
  • LTE system Post LTE
  • 5G communication systems are contemplated for implementation in the ultra-high frequency (mmWave) band (eg, 60 gigabit (60 GHz) band).
  • mmWave ultra-high frequency
  • 60 GHz 60 gigabit
  • advanced coding modulation Advanced Coding Modulation
  • FQAM Hybrid FSK and QAM Modulation
  • SSC Extended Window Superposition Coding
  • SWB Finter Bank Multi Carrier
  • NOMA No-orthogonal multiple access
  • SCMA parse code multiple access
  • IoT Internet of Things
  • IoE Internet of Everything
  • sensing technology wired / wireless communication and network infrastructure, service interface technology, and security technology
  • M2M Machine to Machine
  • MTC Machine Type Communication
  • IoT Internet Technology
  • IoT is a field of smart home, smart building, smart city, smart car or connected car, smart grid, health care, smart home appliance, high-tech medical service through convergence and complex between existing IT (information technology) technology and various industries. It can be applied to.
  • 3GPP changed the radio radio frame structure to define TTI (Transmission Time Interval) to 1 ms or less, adjusted the HARQ technique, improved the initial access procedure and scheduling, etc. Through this, standardization is being conducted to reduce communication delay time.
  • MEC Mobile Edge Computing or Multi-access Edge Computing
  • ETSI European Telecommunication Standards Institute
  • a plurality of tasks based on a dependency relationship of each of the tasks included in the computing task, calculation processing capacity information of each of the computing servers, and transmission delay time information between the computing servers It is possible to provide a method and apparatus for transmitting and receiving a signal in a wireless communication system for reducing the execution time of a computing task by scheduling a computing task including the plurality of computing servers.
  • FIG. 1 is a conceptual diagram illustrating the operation of a control server and a terminal according to some embodiments.
  • FIG. 2 is a flowchart illustrating a method for a control server to schedule computing tasks to computing servers according to some embodiments.
  • 3 is a diagram for describing a job dependency graph according to some embodiments.
  • FIG. 4 is a diagram for describing a method in which a control server generates a spread job dependency graph by adjusting a computational complexity of jobs according to some embodiments.
  • FIG. 5 is a flowchart illustrating a method for a control server to schedule computing tasks to computing servers according to some embodiments.
  • FIG. 6 is a diagram for explaining a method of transmitting and receiving signals by a control server, a terminal, and a computing server according to some embodiments.
  • FIG. 7 is a flowchart illustrating a method for a control server to allocate computing tasks to computing servers and determine a time for each task to be performed according to some embodiments.
  • FIG. 8 is a diagram for describing a method in which a control server determines a time when a plurality of tasks are performed according to some embodiments.
  • FIG. 9 is a flowchart illustrating a method for a terminal to offload a computing operation to a control server according to some embodiments.
  • FIG. 10 is a block diagram of a control server according to some embodiments.
  • FIG. 11 is a block diagram of a terminal according to some embodiments.
  • a control server for scheduling a computing task including a plurality of tasks to a plurality of computing servers includes: a transceiver; Memory; And receiving a computing task from the terminal, generating a task dependency graph based on the dependency relationship of each of the plurality of tasks included in the computing task, computing processing capacity information and multiple of each of the plurality of computing servers Acquisition of transmission delay time information between computational servers of the, based on the job dependency graph, computational processing capacity information, and transmission delay time information, each of the plurality of jobs is scheduled to a plurality of computational servers, and a plurality of computations And at least one processor that controls to transmit a result of performing a plurality of tasks received from at least one computing server among the servers to the terminal.
  • the processor receives a computing task from the terminal, generates a task dependency graph based on the dependency relationship of each of the plurality of tasks included in the computing task, and each of the plurality of computation servers Acquire the processing processing capacity information and the transmission delay time information between the plurality of calculation servers, and based on the job dependency graph, the calculation processing capacity information, and the transmission delay time information, each of the plurality of operations a plurality of calculation servers It is possible to schedule, and control to transmit a result of performing a plurality of tasks received from at least one of the plurality of operation servers to the terminal.
  • the processor identifies the computational complexity of each of the plurality of tasks, and converts at least one of the plurality of tasks into at least one sub-task, thereby converting each of the plurality of tasks.
  • the computational complexity may be adjusted, and a task dependency graph may be generated based on a dependency relationship of each of a plurality of tasks in which the computational complexity has been adjusted.
  • the processor allocates a second task to the first computation server to which the first task is assigned, and to the first computation server when the second task among the plurality of tasks has a dependency relationship with the first task If the second task cannot be allocated, the second task is assigned to the second computing server having the lowest transmission delay time from the first computing server among the computing servers capable of allocating the second task based on the transmission delay time information. can do.
  • the processor allocates a second task to the first computation server to which the first task is assigned, and to the first computation server when the second task among the plurality of tasks has a dependency relationship with the first task If the second task cannot be allocated, the second task is assigned to the second computing server having the shortest transmission delay time from the first computing server based on the transmission delay time information, and the second task is assigned to the second computing server. If it cannot be allocated, the second job may be allocated to the third calculation server having the largest calculation processing capacity among the plurality of calculation servers based on the calculation processing capacity information.
  • the control server each of the plurality of computational servers includes a plurality of virtual machines (VMs), the processor assigns each of the plurality of operations to the plurality of computational servers and each of the plurality of operations By determining the time to be performed, each of the plurality of tasks is scheduled to the plurality of calculation servers, and for the first and second tasks assigned to the first VM of the first calculation server, the time at which the first task is performed and If the time at which the second operation is performed overlaps at least in part, allocate the second operation to the second VM of the first computation server and determine the time at which the second operation is performed, or after the first operation is performed, the second operation The time at which the second operation is performed can be determined so that it is performed.
  • VMs virtual machines
  • the processor schedules each of the plurality of operations to the plurality of operation servers by allocating each of the plurality of operations to the plurality of operation servers and determining a time at which each of the plurality of operations is performed, and the plurality of operations Adjusting the computational complexity of each of the plurality of tasks by identifying the computational complexity of each of the tasks, converting at least one task among the plurality of tasks into at least one sub-task, and adjusting the computational complexity of each of the plurality of tasks.
  • a spread task dependency graph is generated, and each of the plurality of tasks is assigned to a plurality of calculation servers based on the expanded task dependency graph, and computational complexity is adjusted.
  • the time at which each of the plurality of tasks is performed based on the task dependency graph generated based on the dependency relationship of each of the plurality of tasks that are not Can decide.
  • a method of scheduling a computing task including a plurality of tasks to a plurality of computing servers by a control server includes: receiving a computing task from a terminal; Generating a task dependency graph based on a dependency relationship of each of a plurality of tasks included in the computing task; Obtaining operation processing capacity information of each of the plurality of calculation servers and transmission delay time information between the plurality of calculation servers; Scheduling each of the plurality of tasks to the plurality of calculation servers based on the task dependency graph, the calculation processing capacity information, and the transmission delay time information; And transmitting a result of performing a plurality of tasks received from at least one computing server among the plurality of computing servers to the terminal.
  • a terminal for offloading a computing task including a plurality of tasks to a control server includes: a transceiver; Memory; And at least one processor that transmits a computing task to the control server and controls to receive a result of performing a plurality of tasks from the control server or at least one computing server.
  • the task dependency graph in which the plurality of tasks are generated based on the dependency relationship of each of the plurality of tasks, the calculation processing capacity information of each of the plurality of calculation servers, and the plurality of tasks It is a result of performing a plurality of tasks from a plurality of compute servers scheduled based on transmission delay time information between compute servers.
  • a 5G communication system (or NR) must be able to freely reflect various requirements such as users and service providers, so services satisfying various requirements must be supported.
  • Services considered for 5G communication systems include increased Mobile Broadband (eMBB), massive machine type communication (mMTC), and Ultra Reliability Low Latency Communciation (URLLC). And so on.
  • the present disclosure describes a technique for a terminal to receive broadcast information from a base station in a wireless communication system.
  • the present disclosure relates to a communication technique and a system for integrating a 5G communication system with an IoT technology to support a higher data transmission rate after a 4G system or a 4G system.
  • the present disclosure is based on 5G communication technology and IoT related technologies, such as intelligent services (e.g., smart home, smart building, smart city, smart car or connected car, health care, digital education, retail, security and safety related services, etc.) ).
  • intelligent services e.g., smart home, smart building, smart city, smart car or connected car, health care, digital education, retail, security and safety related services, etc.
  • each block of the process flow chart diagrams and combinations of flow chart diagrams can be performed by computer program instructions.
  • These computer program instructions may be mounted on a processor of a general purpose computer, special purpose computer, or other programmable data processing equipment, so that instructions performed through a processor of a computer or other programmable data processing equipment are described in flowchart block (s). It creates a means to perform functions.
  • These computer program instructions can also be stored in computer readable or computer readable memory that can be oriented to a computer or other programmable data processing equipment to implement a function in a particular way, so that computer readable or computer readable memory It is also possible for the instructions stored in to produce an article of manufacture containing instructions means for performing the functions described in the flowchart block (s).
  • Computer program instructions can also be mounted on a computer or other programmable data processing equipment, so a series of operational steps are performed on a computer or other programmable data processing equipment to create a process that is executed by the computer to generate a computer or other programmable data. It is also possible for instructions to perform processing equipment to provide steps for executing the functions described in the flowchart block (s).
  • each block may represent a module, segment, or portion of code that includes one or more executable instructions for executing the specified logical function (s). It should also be noted that in some alternative implementations, it is also possible that the functions mentioned in the blocks occur out of order. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or it is also possible that the blocks are sometimes executed in reverse order according to a corresponding function.
  • the term ' ⁇ unit' used in this embodiment means software or hardware components such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC), and ' ⁇ unit' performs certain roles. do.
  • ' ⁇ wealth' is not limited to software or hardware.
  • the ' ⁇ unit' may be configured to be in an addressable storage medium or may be configured to reproduce one or more processors.
  • ' ⁇ unit' refers to components such as software components, object-oriented software components, class components and task components, processes, functions, attributes, and procedures. , Subroutines, segments of program code, drivers, firmware, microcode, circuitry, data, database, data structures, tables, arrays, and variables.
  • components and ' ⁇ units' may be combined into a smaller number of components and ' ⁇ units', or further separated into additional components and ' ⁇ units'.
  • the components and ' ⁇ unit' may be implemented to play one or more CPUs in the device or secure multimedia card.
  • ⁇ unit may include one or more processors.
  • FIG. 1 is a conceptual diagram illustrating the operation of the control server 110 and the terminal 120 according to some embodiments.
  • ETSI's Mobile Edge Computing or Multi-access Edge Computing (MEC) technology is a technology for realizing ultra-low latency services.
  • MEC was developed to provide IT service environments and cloud computing capabilities at the edge of a mobile network, inside a radio access network (RAN), and close to mobile subscribers.
  • the goals of MEC are to reduce latency, ensure high-efficiency network operation and service delivery, and provide an improved user experience.
  • MEC's access may also include other types of access other than cellular, such as wifi and fixed networks.
  • Various disclosed embodiments provide a method and apparatus in which a control server receives a request for an offloading service from a terminal and distributes parallel computing operations to a plurality of computing servers.
  • the terminal 120 may make an offloading request to the control server 110 for a computing task difficult for the terminal 120 to perform.
  • the control server 110 may schedule and deliver a job to the plurality of computing servers 130 in response to receiving an offloading request and a computing job including a plurality of jobs from the terminal 120.
  • the plurality of operation servers 130 may perform a task according to scheduling and deliver the result of the operation to the control server 110 or the terminal 120.
  • the control server 110 may be various servers that perform scheduling.
  • the control server 110 may be a base station (eNB or gNB) or a data center that performs scheduling.
  • eNB base station
  • gNB gNode B
  • the control server is not limited to the above-described examples and may include various servers.
  • Each of the plurality of calculation servers 130 may be various servers performing calculations or tasks.
  • each of the plurality of computing servers 130 may be a base station (eNB or gNB), an access point (AP), or a data center.
  • each of the plurality of computing servers 130 may be an edge cloud device installed near the terminal 120.
  • the computing server may include various servers.
  • Each computing server included in the plurality of computing servers 130 may drive at least one VM, and may include at least one processor and a hypervisor for driving the VM.
  • Each computing server can transmit and receive signals to or from other computing servers in a wired or wireless manner.
  • the first calculation server 131, the second calculation server 132, and the third calculation server 133 may transmit and receive a job or a result of performing a job through wired or wireless.
  • the number of calculation servers included in the plurality of calculation servers 130 may be variously determined without being limited by the one shown in FIG. 1.
  • the control server 110 may set a plurality of computing servers 130 located near the terminal 120 as an edge cluster based on the location of the terminal 120.
  • the terminal 120 may receive the result of the operation performed in the edge cluster located near the terminal 120 by requesting the control server 110 to offload the computing operation.
  • FIG. 2 is a flowchart illustrating a method for a control server to schedule computing tasks to computing servers according to some embodiments.
  • control server may receive a computing task from the terminal.
  • the terminal may transmit a computing task including a plurality of tasks to the control server.
  • the terminal may transmit an offloading request for the computing task to the control server along with the computing task.
  • the type of computing operation can be variously determined.
  • the computing task may be a set of operations for performing a service provided by an application installed in the terminal.
  • the present invention is not limited to this, and the computing task may include various types of tasks.
  • control server may generate a task dependency graph based on the dependency relationship of each of a plurality of tasks included in the computing task.
  • the task dependency graph is a graph showing the dependency of multiple tasks. For example, if the first task must first be performed in order for the second task to be performed, it can be defined that the second task is dependent on the first task. Alternatively, the second task can also be defined as having a dependency on the first task.
  • control server may analyze a computing task received from the terminal, grasp the dependency relationship among a plurality of tasks included in the computing task, and generate a task dependency graph based on the identified dependency relationship.
  • the control server may generate a spread job dependency graph in which the computational complexity of each of the plurality of jobs is adjusted.
  • the control server may allocate each of the plurality of jobs to the plurality of calculation servers based on the expanded job dependency graph.
  • control server may acquire calculation processing capacity information of each of the plurality of calculation servers and transmission delay time information between the plurality of calculation servers.
  • the calculation processing capacity information may mean information about an ability of the calculation server to perform a task or information on how much the calculation server currently has resources to process a task.
  • the calculation processing capacity information includes information about the number of calculations that the calculation server can process at a predetermined time, scheduling information in which tasks for each hour are assigned to the calculation server, and time intervals in which the calculation server can be assigned a task. It may include at least one.
  • the time interval in which a task can be allocated may be a time interval in which the calculation server can perform a task because the calculation server has not yet been assigned a task.
  • the transmission delay time information between the calculation servers may mean a time taken to transmit signals from different first calculation servers to second calculation servers.
  • the transmission delay time information may mean the time taken to transmit the result of performing the operation of the first computing server to the second computing server.
  • Each of the plurality of computing servers may be physically spaced apart.
  • a transmission delay time may occur in transmitting and receiving signals between wires or wirelessly between the calculation servers.
  • at least some of the plurality of computing servers may be installed in one device. Transmission delay time may occur even when signals are transmitted and received between at least some computing servers installed in one device.
  • At least some of the plurality of computing servers may each drive a plurality of virtual machines (VMs).
  • VMs virtual machines
  • one VM may perform one task during one time period.
  • the operation server driving a plurality of VMs may perform a plurality of tasks during one time interval by driving each VM to perform a task.
  • the calculation processing capacity information of the calculation server may include the number of VMs that the calculation server runs.
  • the calculation processing capacity information may mean information about each VM's ability to perform a task or how much each VM currently has a resource capable of processing a task.
  • the calculation processing capacity information includes the number of operations that each VM can process at a predetermined time, scheduling information in which each hour's task is assigned to each VM, and time intervals in which each VM can be assigned a task. It may include at least one of the information.
  • the control server may receive calculation processing capacity information of each of the plurality of calculation servers and transmission delay time information between the plurality of calculation servers from the plurality of calculation servers. For example, the control server may periodically receive calculation processing capacity information and transmission delay time information from a plurality of calculation servers. In addition, the control server may obtain calculation processing capacity information and transmission delay time information by storing calculation processing capacity information and transmission delay time information received from a plurality of calculation servers in the control server and loading the stored information. In addition, the control server may update calculation processing capacity information and transmission delay time information stored in the control server in response to receiving updated calculation processing capacity information or updated transmission delay time information from a plurality of calculation servers.
  • the above-described method is only an example, and the method for the control server to obtain the calculation processing capacity information of each of the plurality of calculation servers and the transmission delay time information between the plurality of calculation servers is not limited to the above-described method.
  • control server may schedule each of the plurality of jobs to the plurality of operation servers based on the job dependency graph, the calculation processing capacity information, and the transmission delay time information.
  • the operation in which the control server schedules the plurality of operations may include allocating each operation to the operation server and determining an operation time.
  • the control server may schedule a plurality of tasks to a plurality of calculation servers for each step of the task dependency graph.
  • the control server may schedule at least one task included in any one step to at least one computing server.
  • the control server may allocate each task according to the dependency, based on the task dependency graph or the expanded task dependency graph.
  • the method in which the control server allocates tasks for each step of the task dependency graph according to the dependency relationship will be described in detail with reference to FIG. 5.
  • control server may determine a time at which each task is performed in the step of allocating the plurality of tasks to the plurality of computing servers. For example, the control server may determine the time each job is performed based on the time required for each job and the transmission delay time information, or may determine the time each job is performed based on each step of the expanded job dependency graph. .
  • the control server may determine a time at which each job is performed after a plurality of jobs are allocated to the plurality of computing servers. The operation in which the control server determines the time each operation is performed will be described in detail with reference to FIG. 7.
  • control server may transmit a result of performing a plurality of tasks received from at least one of the plurality of calculation servers to the terminal.
  • the first step and the last step may each include one task. That is, a plurality of tasks included in the computing task received from the terminal may converge into one task in the last step of the task dependency graph.
  • the work of the last step can be assigned to one compute server. Or, for example, when the computational throughput of the last step job is large, the last step job may be allocated to a plurality of computation servers.
  • At least one computing server to which the task of the last step is assigned may perform the task and then transmit the task execution result to the control server, or may directly transmit the task execution result to the terminal.
  • the control server may transmit a result of performing a job received from at least one computing server to the terminal.
  • step 230 may be performed before step 210 or before step 220.
  • the control server computes concurrently with low scheduling complexity by distributing and processing a plurality of jobs in parallel in consideration of the dependency of each job, the computational processing capacity of the computational servers, and the transmission delay time between the computational servers. It can reduce the completion time of the work being performed. That is, the control server can provide an ultra-low delay service requiring a large amount of computation with low processing time. For example, the control server can reduce the completion time of a computing operation compared to a Dependency-Unaware technique that does not consider job dependency or a Capacity-Based technique that considers only the computational processing capacity of a compute server.
  • 3 is a diagram for describing a job dependency graph 300 according to some embodiments.
  • the job dependency graph 300 generated by the control server may include a plurality of steps. Each step may include at least one task. That is, the control server may generate the job dependency graph 300 by adjusting the entire computing job received from the terminal into a plurality of steps and arranging at least one job in each step.
  • a circle represents one work unit.
  • the unit of work may be a logical or conceptual division of a plurality of tasks in order for the control server to easily schedule tasks.
  • one work unit may mean one work.
  • the arrows in the job dependency graph 300 indicate dependencies.
  • task 302 and task 303 have a dependency with task 301, respectively.
  • the dependency relationship can be variously defined as 1: 1, 1: n, n: 1, m: n.
  • An example of various dependencies of each task is shown in steps s-1 and s in the task dependency graph 300.
  • the entire computing task may start from one task in the task dependency graph 300, be deployed into a plurality of tasks, and then converge into one task.
  • FIG. 3 shows an example in which the task of step 1, which is the first step in the task dependency graph 300, is task 301 and the task of step M, which is the last step, is task 304.
  • the computational complexity of each task in the task dependency graph 300 may vary.
  • the control server can generate an expanded job dependency graph by adjusting the computational complexity of each job.
  • FIG. 4 is a diagram for describing a method in which a control server generates a spread job dependency graph by adjusting a computational complexity of jobs according to some embodiments.
  • each task included in the task dependency graph may have different computational complexity.
  • task 411 may have a computational complexity of 1
  • task 422 may have a computational complexity of 2.
  • the computational complexity may mean the amount of computation required for each operation to be performed. If the calculation amount is large, the time required for the operation may be large.
  • the computational complexity of the tasks included in each step is different from each other, it may take a long time to complete the entire computing task. For example, in step 401 of FIG. 4, the operation server or VM performing the operation 411 with the computational complexity of 1 waits until the operation 412 with the computational complexity of 2 is performed, and then deploys to the operation of step s + 1. Can be, and thus takes a waiting time.
  • the control server adjusts the computational complexity of at least one job to generate a spread job dependency graph 402, thereby all computing when allocating a plurality of jobs to the operation server by steps of the job dependency graph It can reduce the time to complete the work.
  • Adjusting the computational complexity of a task may mean adjusting the computational complexity of each task to the same or a similar degree.
  • the control server may set the reference computational complexity to 1, and adjust the computational complexity such that all operations have computational complexity between 0.8 and 1.2.
  • the present invention is not limited to this, and the control server may adjust all operations to have computational complexity between a certain range.
  • the control server may adjust a computational complexity of a plurality of tasks by converting a task having a large computational complexity into at least one sub-task. For example, referring to FIG. 4, the control server converts the job 412 having a computational complexity of 2 into sub-tasks 421 and 422 of the computational complexity of 1, respectively, and the operation dependency graph 402 expanded by adjusting the computational complexity. Can generate
  • the jobs converted to sub-tasks have sub-related relationships with each other.
  • the unfolded task dependency graph 402 shows sub-relationships and sub-tasks.
  • tasks having sub-relationships are only logically or conceptually separated from each other in order to adjust the computational complexity of the job dependency graph. Since they are one task before separation, they are performed on the same computation server or the same VM.
  • FIG. 5 is a flowchart illustrating a method for a control server to schedule computing tasks to computing servers according to some embodiments.
  • the control server may schedule each job included in each step to at least one computing server for each step of the expanded job dependency graph.
  • 5 illustrates an example of a method of scheduling task k of step s of the expanded task dependency graph to the computing server.
  • the control server may determine whether task k has an accessory relationship with another task. For example, the control server may determine whether there is a task n having a subordinate relationship with task k among at least one step before step s.
  • the control server may assign tasks having subordinate relationships to the same VM of the same computing server. For example, the control server may allocate task k to the VM of the compute server to which task n has a subordinate relationship with task k.
  • Tasks with sub-relationships are separated from the job dependency graphs unfolded to adjust the computational complexity of the job dependency graph, and cannot be performed in different VMs due to the nature of the sub-relationships. Thus, tasks with subordinate relationships are assigned to the same VM on the same compute server.
  • the control server may determine whether task k has a dependency on task m of the previous step. For example, the control server may determine whether there is a task m having a dependency with task k among at least one step before step s.
  • control server may select a job m, which is one of a plurality of jobs having dependencies with job k.
  • the only job that does not have a dependency on the job of the previous step is the first job of the first step.
  • Other tasks except the first one depend on at least one task.
  • step 504 if task k does not have a dependency on task m of the previous step, the control server may assign task k to the computing server having the largest computational processing capacity. That is, when task k is the first task of the first step, the control server allocates task k to the computing server having the largest computational processing capacity.
  • the calculation server having the largest calculation processing capacity may be a calculation server that drives the largest VM among a plurality of calculation servers or a server having the largest number of calculations that can be processed at a given time.
  • the control server may increase the possibility of allocating tasks having dependencies on each other to one computing server in the subsequent steps by allocating the first task of the first step to the computing server having the largest computational processing capacity.
  • tasks having dependencies on each other are assigned to one computing server, it is possible to reduce computing task completion time by performing tasks having dependencies on each other without transmission delay between computing servers.
  • control server may determine whether task k can be assigned to the computing server to which task m is assigned.
  • task k may not be assigned to the first computing server to which task m is assigned.
  • the task k may be assigned to the first computing server to which the task m is assigned.
  • step 506 when task k is assignable to the computing server to which task m is assigned, the control server may assign task k to the above-described computing server.
  • control server may allocate the task k to at least one VM that is not assigned to the task included in step s in the first computing server to which the task m is assigned.
  • step 507 if task k is not assignable to the compute server to which task m is assigned, the control server may determine whether task k can be assigned to the compute server with the shortest transmission delay time from the compute server to which task m is assigned. .
  • the control server may identify the second calculation server having the shortest transmission delay time from the first calculation server to which the task m is assigned, based on the transmission delay time information between the plurality of calculation servers.
  • step s when all the VMs of the second computing server are assigned a task included in step s, it may be impossible to assign the task k to the second computing server.
  • the control server may proceed to step 504 when it is impossible to assign the task k to the second computing server. That is, the control server can allocate the task k to the computing server having the largest computational processing capacity. The control server can increase the likelihood of allocating the task k to the computation server having the largest computational processing capacity, and assigning tasks k and dependent tasks to one computation server in subsequent steps.
  • control server may identify the third computation server having the shortest transmission delay time from the first computation server among computation servers capable of allocating the operation k, and allocate the operation k to the third computation server.
  • step 508 if it is possible to assign the task k to the compute server having the shortest transmission delay time from the compute server to which the task m is assigned, the control server may assign the task k to the above-described compute server.
  • control server can then perform the steps shown in FIG. 5 to assign task k + 1. If all the tasks in step s are assigned to at least one computing server, the control server can then perform the steps shown in FIG. 5 to assign the tasks included in step s + 1.
  • the control server according to the disclosed various embodiments, as shown in the method illustrated in FIG. 5, for each step included in the expanded dependency graph, the dependency of each task, the computational processing capacity of the computational servers, and the transmission delay time between the computational servers.
  • FIG. 6 is a diagram for explaining a method of transmitting and receiving signals by the control server 110, the terminal 120, and the computational servers 130 according to some embodiments.
  • control server 110 may receive the calculation processing capacity information of the calculation server and transmission delay time information between the calculation servers from the plurality of calculation servers 130 to the control server 110.
  • control server 110 may receive an offloading request for a computing job including a plurality of jobs from the terminal 120.
  • control server 110 may generate a task dependency graph based on the dependency relationship of each of a plurality of tasks included in the computing task.
  • control server 110 may schedule each of the plurality of jobs to the plurality of operation servers based on the job dependency graph, the calculation processing capacity information, and the transmission delay time information.
  • control server 110 may distribute a plurality of tasks to the plurality of computation servers 130 according to scheduling.
  • the calculation servers 130 may perform a plurality of tasks according to scheduling.
  • the at least one computing server may transmit a result of performing a plurality of tasks to the control server 110 or the terminal 120.
  • At least one computing server that has performed the task of the last step of the entire computing task may transmit the result of performing the tasks to the control server 110 or directly transmit the result of performing the task to the terminal 120.
  • step 608 when the control server 110 receives a result of performing a plurality of tasks from at least one computing server, the control server 110 may transmit the received result to the terminal 120.
  • steps 601, 602, 603, 604, and 608 of FIG. 6 are described in detail in steps 230, 210, 220, 240, 250 of FIG. 2, respectively.
  • FIG. 7 is a flowchart illustrating a method for a control server to allocate computing tasks to computing servers and determine a time for each task to be performed according to some embodiments.
  • the control server may determine a time at which each job is performed after a plurality of jobs are allocated to the plurality of computing servers. For example, after a plurality of tasks are allocated by the method illustrated in FIG. 5, the control server may determine a time at which each task is performed.
  • control server may receive a computing task from the terminal.
  • control server may generate a job dependency graph based on a dependency relationship of each of a plurality of jobs included in the computing job.
  • control server may acquire calculation processing capacity information of each of the plurality of calculation servers and transmission delay time information between the plurality of calculation servers.
  • control server may allocate each of the plurality of jobs to the plurality of operation servers based on the job dependency graph, the calculation processing capacity information, and the transmission delay time information.
  • control server may determine a time at which each of the plurality of jobs is performed based on the job dependency graph, calculation processing capacity information, and transmission delay time information.
  • the time at which each task is performed may refer to a time at which each task is performed based on a time at which the first task of the entire computing task starts to be performed (for example, 0 seconds).
  • the control server may allocate a plurality of tasks to a plurality of calculation servers for each step of the task dependency graph opened in operation 740.
  • the control server does not determine the time each operation is performed in the step of allocating the plurality of operations to the plurality of operation servers for each step, or when determining the time each operation is performed based on the time required for each operation, between the operation servers Due to the transmission delay time generated during signal transmission / reception, there may be a case where tasks are repeatedly allocated to one M during the same time interval.
  • the control server For the first and second tasks allocated to the first VM of the first computing server, the control server performs the second task when the time at which the first task is performed and the time at which the second task is performed overlap at least partially. Time to allocate to the second VM of the first compute server and determine the time at which the second task is performed on the second VM, or the time at which the second task is performed on the first VM so that the second task is performed after the first task is performed Can decide.
  • the control server may determine a time at which each of a plurality of tasks is performed for each step of the task dependency graph.
  • each operation is based on a job dependency graph whose computational complexity is not adjusted, rather than an expanded job dependency graph, so that jobs having subordinate relationships are not allocated to different VMs. You can decide how long a task is performed. That is, the control server may determine the time at which each task is performed based on the task dependency graph 300 of FIG. 3.
  • the control server can know the completion time of the entire computing task by determining the time at which each task is performed, and can schedule tasks not to be allocated to a single VM over the same time interval.
  • control server may determine a time at which each operation is performed so that a task that is simultaneously allocated to each VM does not occur in operation 740 of allocating the task. For example, the control server may set the start time and end time of each step in each step of the expanded job dependency graph to be the same for all VMs included in the plurality of computation servers.
  • control server may transmit a result of performing a plurality of tasks received from at least one computing server among the plurality of computing servers to the terminal.
  • Step 710, step 720, step 730, step 740, and step 760 of FIG. 7 have been described in detail in steps 210, 220, 230, 240, and 250 of FIG. 2, respectively.
  • FIG. 8 is a diagram for describing a method in which a control server determines a time when a plurality of tasks are performed according to some embodiments.
  • FIG. 8 illustrates an example in which the control server determines the time at which each operation is performed for each step of the job dependency graph in step 750 of FIG. That is, FIG. 8 describes an example of a method for determining the time at which the operation k of step s is performed.
  • the control server Before performing the method shown in FIG. 8, that is, before determining the time at which the first operation of the first step is performed, the control server takes time and transmission delay of each operation in the step of allocating the operation to a plurality of operation servers.
  • the time at which each operation is performed may be determined based on the time information. That is, before performing the method shown in FIG. 8, the control server takes all variables except r e, i and r e, i ' among all variables shown in [Table 1], and the time required for each operation and the transmission delay time. You can make decisions based on information.
  • step 801 the control server r e, i It can be determined whether max (f s', k ' + l e', e ).
  • max (f s', k ' + l e', e ) is the time at which the operation k of step s and the operation of at least one job up to step s-1, which depend on it, and at least one of the above-described operations are allocated
  • the value obtained by summing the transmission delay time from the compute server e 'to the compute server to which the task k is assigned means the largest value.
  • the task k is performed in VM-i because the task k is performed after the task assigned up to step s-1 in VM-i of the computation server e is finished. It is not assigned concurrently with other tasks.
  • task k is performed before the task assigned up to step s-1 in VM-i of the computation server e is finished, that is, Since b s, k determined in the step of allocating tasks is smaller than r e, i , the time at which task k is performed on VM-i and the time at which other tasks are performed overlap at least partially.
  • step 802 r e, i
  • the control server can determine b s, k , f s, k and update r e, i .
  • the control server determines the value of max (f s', k ' + l e', e ) as b s, k at which time task k starts, b It is possible to determine f s, k as the sum of the time required for the task k and s, k .
  • the control server may update the e r, i is determined by determining the f s, k value to the r e, i.
  • step 803 when r e, i > max (f s', k ' + l e', e ), that is, the time at which task k is performed on VM-i and the time at which other tasks are performed overlap at least partially.
  • the control server has a VM-i 'whose operation ends on VM-i before VM-i, i.e. r e, i' It is possible to determine whether there is a VM-i 'r e, i .
  • step 804 if the operation in the operation server, e-free first end VM-i 'than VM-i, the control server r e, as i since b s, k, f s, determining k, and r e, i Can be updated.
  • control server may determine the value determined by the r e, the value i s b, k, and adding the operation time of the job k s b, k to f s, k.
  • the control server may update the e r, i is determined by determining the f s, k value to the r e, i.
  • VM-i allocated in the job allocation step has at least some overlap in the time when job k is performed and the time when other jobs are performed, and there is no VM-i 'whose job ends before VM-i', the control server Task k can be scheduled so that task k is performed after all tasks of VM-i are over.
  • step 805 if there is a VM-i 'in which the job ends on VM-i before operation VM-i, the control server may schedule job k to VM-i'.
  • control server schedules task k to VM-i 'that is different from the VM-i assigned in the task assignment step, only the VM that assigns task k within compute server e is adjusted, so task k in step s Additional transmission delay time may not occur in order to be performed.
  • control server can schedule the task k to the VM in the computing server e where the task ends most quickly.
  • step 806 the control server is r e, i ' It can be determined whether max (f s', k ' + l e', e ).
  • the task k is executed in VM-i' because the task k is performed after the task assigned to VM-i 'of the compute server e' ends. And are not allocated at the same time.
  • task k is performed before the task assigned to VM-i' of Compute Server e is finished, that is, the task is assigned. Since b s, k determined in the above step is smaller than r e, i ' , the time at which task k is performed on VM-i' and the time at which other tasks are performed overlap at least partially.
  • step 807 r e, i '
  • the control server may determine b s, k , f s, k , and update r e, i' .
  • the control server determines the value of max (f s', k ' + l e', e ) as b s, k at the time job k starts , and assigns the time required for job k to b s, k .
  • the summation can be determined by f s, k .
  • the control server may update the determined f s, 'r e, i by determining as "the value of k r e, i.
  • step 808 if r e, i ' > max (f s', k' + l e ', e ), the control server determines b s, k , f s, k after r e, i' , r e, i ' can be updated.
  • control server may determine the value determined by the r e, i 'values b s, k, and adding the operation time of the job k s b, k to f s, k.
  • the control server may update the determined f s, 'r e, i by determining as "the value of k r e, i.
  • the control server has at least a first operation time and a second operation time for the first operation and the second operation allocated to the first VM of the first operation server.
  • the second task is assigned to the second VM of the first compute server and determines the time at which the second task is performed on the second VM, or the first task to be performed after the first task is performed.
  • the time at which the second operation is performed in the VM may be determined. That is, the control server can schedule tasks to be not allocated to one VM overlapping during the same time interval.
  • control server can know the completion time of the entire computing operation by determining the time at which each operation is performed. For example, r e, i of the task of the last step of the entire computing task may indicate the completion time of the entire computing task.
  • FIG. 9 is a flowchart illustrating a method for a terminal to offload a computing operation to a control server according to some embodiments.
  • the terminal may transmit a computing task including a plurality of tasks to the control server.
  • the terminal may transmit an offloading request for the computing task to the control server along with the computing task.
  • the type of computing operation can be variously determined.
  • the computing task may be a set of operations for performing a service provided by an application installed in the terminal.
  • the present invention is not limited to this, and the computing task may include various types of tasks.
  • the terminal may receive a result of performing a plurality of tasks from a control server or at least one computing server.
  • the control server schedules the plurality of tasks to the plurality of calculation servers by various methods described with reference to FIGS. 1 to 8, and the plurality of calculation servers according to the scheduling It may be the result of performing an operation.
  • a result of performing a plurality of tasks may include a task dependency graph in which a plurality of tasks are generated based on a dependency relationship of each of the plurality of tasks, information on calculation processing capacity of each of the plurality of calculation servers, and It may be a result of performing a plurality of tasks from a plurality of scheduled compute servers based on transmission delay time information between the plurality of compute servers.
  • FIG. 10 is a block diagram of a control server 1000 according to some embodiments.
  • the control server 1000 may include a transceiver 1020, a processor 1010, and a memory 1030. According to the scheduling method of the control server proposed in the above embodiments, the transceiver 1020, the processor 1010 and the memory 1030 may operate. However, the components of the control server 1000 according to some embodiments are not limited to the above-described examples. According to another embodiment, the control server 1000 may include more components or fewer components than the aforementioned components. In addition, in a specific case, the transceiver 1020, the processor 1010, and the memory 1030 may be implemented as a single chip.
  • the transceiver 1020 may transmit and receive signals with at least one terminal and a plurality of computing servers.
  • the signal may include control information and data.
  • the transmitter / receiver 1020 may be composed of an RF transmitter for up-converting and amplifying the frequency of the transmitted signal, and an RF receiver for low-noise amplifying and down-converting the received signal.
  • this is only an example, and the components of the transceiver 1020 are not limited to the RF transmitter and the RF receiver.
  • the transceiver 1020 may receive a signal through a wireless channel, output the signal to the processor 1010, and transmit a signal output from the processor 1010 through a wireless channel.
  • the processor 1010 may control a series of processes so that the control server 1000 can operate according to the above-described embodiment of the present disclosure.
  • the processor 1010 may perform at least one signal transmission / reception method among the above-described embodiments.
  • the processor 1010 receives a computing task from a terminal, generates a task dependency graph based on a dependency relationship of each of a plurality of tasks included in the computing task, and performs a plurality of operations Acquire each of the plurality of jobs based on the calculation processing capacity information of each of the servers and the transmission delay time information between the plurality of calculation servers, and based on the job dependency graph, the calculation processing capacity information, and the transmission delay time information. Scheduling to the computing server, it is possible to control to transmit to the terminal the results of the execution of a plurality of tasks received from at least one of the plurality of computing servers.
  • the processor 1010 identifies a computational complexity of each of the plurality of tasks, and converts at least one task among the plurality of tasks into at least one sub-task, thereby multiple tasks
  • the computational complexity of each of the fields may be adjusted, and a task dependency graph may be generated based on the dependency of each of the plurality of tasks in which the computational complexity has been adjusted.
  • the processor 1010 allocates a second job to the first computing server to which the first job is assigned, when the second job of the plurality of jobs has a dependency relationship with the first job, and the first job If the second server cannot be allocated to the compute server, the second compute server having the shortest transmission delay time from the first compute server among the compute servers capable of allocating the second job based on the transmission delay time information is second. You can assign tasks.
  • the processor 1010 allocates a second job to the first computing server to which the first job is assigned, when the second job of the plurality of jobs has a dependency relationship with the first job, and the first job If the second job cannot be assigned to the calculation server, the second job is assigned to the second calculation server having the shortest transmission delay time from the first calculation server based on the transmission delay time information, and the second operation server is assigned to the second calculation server. If the 2 tasks cannot be allocated, the second task may be assigned to the third computing server having the largest computational processing capacity among the plurality of computational servers based on the computational processing capacity information.
  • the control server 1000 includes each of the plurality of computational servers including a plurality of virtual machines (VMs), and the processor 1010 allocates each of the plurality of operations to the plurality of computational servers. Scheduling each of the plurality of tasks by a plurality of computing servers by determining the time each of the plurality of tasks is performed, for the first task and the second task assigned to the first VM of the first computing server, the first If the time at which the operation is performed and the time at which the second operation is performed overlap at least partially, allocate the second operation to the second VM of the first computation server and determine the time at which the second operation is performed, or the first operation After the execution, the time at which the second operation is performed may be determined so that the second operation is performed.
  • VMs virtual machines
  • the processor 1010 schedules each of the plurality of tasks to the plurality of operation servers by allocating each of the plurality of operations to the plurality of operation servers and determining a time at which each of the plurality of operations is performed. And adjust the computational complexity of each of the plurality of tasks by identifying the computational complexity of each of the plurality of tasks, and converting at least one task among the plurality of tasks into at least one sub-task, According to the dependency relationship of each of the plurality of tasks in which the computational complexity is adjusted, a spread task dependency graph is generated, and each of the plurality of tasks is assigned to a plurality of calculation servers based on the expanded task dependency graph, and calculation is performed.
  • the liver can be determined.
  • the memory 1030 may store control information or data included in a signal obtained from the control server 1000, and store data required for control of the processor 1010 and data generated during control by the processor 1010. It can have an area for.
  • the memory 1030 may store predetermined transmit antenna weight information and receive antenna weight information for determining the sum weight. Also, the memory 1030 may store information regarding the determined sum weight.
  • the memory 1030 may be configured in various forms, such as a ROM or / and RAM or / and a hard disk or / and a CD-ROM or / and DVD.
  • FIG. 11 is a block diagram of a terminal 1100 according to some embodiments.
  • the terminal 1100 may include a transceiver 1120, a processor 1110, and a memory 1130. According to the scheduling method of the terminal proposed in the above embodiments, the transceiver 1120, the processor 1110 and the memory 1130 may operate. However, the components of the terminal 1100 according to some embodiments are not limited to the above-described examples. According to another embodiment, the terminal 1100 may include more components or fewer components than the aforementioned components. In addition, in a specific case, the transceiver 1120, the processor 1110, and the memory 1130 may be implemented in a single chip form.
  • the transceiver 1120 may transmit and receive signals to and from a control server and a plurality of computing servers.
  • the signal may include control information and data.
  • the transmitter / receiver 1120 may be composed of an RF transmitter that up-converts and amplifies the frequency of the transmitted signal, and an RF receiver that amplifies the received signal with low noise and down-converts the frequency.
  • this is only an embodiment, and the components of the transceiver 1120 are not limited to the RF transmitter and the RF receiver.
  • the transceiver 1120 may receive a signal through a wireless channel, output the signal to the processor 1110, and transmit a signal output from the processor 1110 through a wireless channel.
  • the processor 1110 may control a series of processes so that the terminal 1100 can operate according to the above-described embodiment of the present disclosure.
  • the processor 1110 may perform at least one signal transmission / reception method among the above-described embodiments.
  • the processor 1110 may control to transmit a computing task to a control server and receive a result of performing a plurality of tasks from a control server or at least one computing server.
  • a task dependency graph in which a plurality of tasks are generated based on a dependency relationship of each of the plurality of tasks, calculation processing capacity information of each of the plurality of calculation servers, and a plurality of calculation servers It may be a result of performing a plurality of tasks from a plurality of scheduled computing servers based on transmission delay time information between them.
  • the memory 1130 may store control information or data included in a signal obtained from the terminal 1100, and store data required for control of the processor 1110 and data generated during control at the processor 1110. It can have an area.
  • the memory 1130 may store predetermined transmit antenna weight information and receive antenna weight information for determining the sum weight. Also, the memory 1130 may store information regarding the determined sum weight.
  • the memory 1130 may be configured in various forms such as a ROM or / and RAM or / and a hard disk or / and a CD-ROM or / and DVD.
  • each of the above embodiments is divided for convenience of description, and may be combined with each other as necessary to operate.
  • portions of each embodiment of the present disclosure may be combined with each other to operate a control server and a terminal.
  • the embodiments may be implemented in other systems, for example, LTE systems, 5G or NR systems, and other modifications based on the technical idea of the above-described embodiment.
  • the device includes a processor, a memory for storing and executing program data, a permanent storage such as a disk drive, a communication port communicating with an external device, a user such as a touch panel, keys, buttons, and the like. And an interface device.
  • the method of operation of the apparatus according to the disclosed embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer readable medium.
  • the computer-readable medium described above may include program instructions, data files, data structures, or the like alone or in combination.
  • the program instructions recorded in the above-described media may be specially designed and configured for the present disclosure or may be known and usable by those skilled in computer software.
  • the computer-readable medium described above may be included in a computer program product.
  • Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs, DVDs, and magnetic media such as floptical disks.
  • -Hardware devices specifically configured to store and execute program instructions such as magneto-optical media, and ROM, RAM, flash memory, and the like.
  • Examples of program instructions include high-level language codes that can be executed by a computer using an interpreter, etc., as well as machine language codes produced by a compiler.
  • the disclosed embodiment can be represented by functional block configurations and various processing steps. These functional blocks can be implemented with various numbers of hardware or / and software configurations that perform specific functions.
  • the disclosed embodiments may be configured with integrated circuits such as memory, processing, logic, look-up tables, etc., capable of executing various functions by control of one or more microprocessors or other control devices. You can hire them.
  • the disclosed embodiment includes C, C ++, including various algorithms implemented in a combination of data structures, processes, routines or other programming configurations.
  • Functional aspects can be implemented with algorithms running on one or more processors.
  • the disclosed embodiments may employ conventional techniques for electronic environment setting, signal processing, and / or data processing, and the like.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 개시는 복수의 작업들을 포함하는 컴퓨팅 작업(task)을 복수의 연산 서버들에 스케줄링하는 방법 및 제어 서버에 관한 것으로, 일부 실시예에 따른 제어 서버는, 송수신부; 메모리; 및 단말로부터 컴퓨팅 작업을 수신하고, 컴퓨팅 작업에 포함된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프(task dependency graph)를 생성하고, 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득하고, 작업 의존성 그래프, 연산 처리 용량 정보, 및 전송 지연 시간 정보에 기초하여, 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링하고, 복수의 연산 서버들 중 적어도 하나의 연산 서버로부터 수신한 복수의 작업들의 수행 결과를 단말에 송신하도록 제어하는 적어도 하나의 프로세서를 포함한다.

Description

작업 의존성에 기초하여 컴퓨팅 작업을 서버에 스케줄링하는 방법 및 장치
본 개시의 다양한 실시예들은 무선통신시스템에 대한 것으로서, 보다 구체적으로는 복수의 작업들을 포함하는 컴퓨팅 작업(task)을 복수의 연산 서버들에 스케줄링하는 장치 및 그 동작 방법에 관한 것이다.
4G 통신 시스템 상용화 이후 증가 추세에 있는 무선 데이터 트래픽 수요를 충족시키기 위해, 개선된 5G 통신 시스템 또는 pre-5G 통신 시스템을 개발하기 위한 노력이 이루어지고 있다. 이러한 이유로, 5G 통신 시스템 또는 pre-5G 통신 시스템은 4G 네트워크 이후 (Beyond 4G Network) 통신 시스템 또는 LTE 시스템 이후 (Post LTE) 이후의 시스템이라 불리어지고 있다. 높은 데이터 전송률을 달성하기 위해, 5G 통신 시스템은 초고주파(mmWave) 대역 (예를 들어, 60기가(60GHz) 대역과 같은)에서의 구현이 고려되고 있다. 초고주파 대역에서의 전파의 경로손실 완화 및 전파의 전달 거리를 증가시키기 위해, 5G 통신 시스템에서는 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO), 전차원 다중입출력(Full Dimensional MIMO: FD-MIMO), 어레이 안테나(array antenna), 아날로그 빔형성(analog beam-forming), 및 대규모 안테나 (large scale antenna) 기술들이 논의되고 있다. 또한 시스템의 네트워크 개선을 위해, 5G 통신 시스템에서는 진화된 소형 셀, 개선된 소형 셀 (advanced small cell), 클라우드 무선 액세스 네트워크 (cloud radio access network: cloud RAN), 초고밀도 네트워크 (ultra-dense network), 기기 간 통신 (Device to Device communication: D2D), 무선 백홀 (wireless backhaul), 이동 네트워크 (moving network), 협력 통신 (cooperative communication), CoMP (Coordinated Multi-Points), 및 수신 간섭제거 (interference cancellation) 등의 기술 개발이 이루어지고 있다. 이 밖에도, 5G 시스템에서는 진보된 코딩 변조(Advanced Coding Modulation: ACM) 방식인 FQAM (Hybrid FSK and QAM Modulation) 및 SWSC (Sliding Window Superposition Coding)과, 진보된 접속 기술인 FBMC(Filter Bank Multi Carrier), NOMA(non-orthogonal multiple access), 및 SCMA(sparse code multiple access) 등이 개발되고 있다.
한편, 인터넷은 인간이 정보를 생성하고 소비하는 인간 중심의 연결 망에서, 사물 등 분산된 구성 요소들 간에 정보를 주고 받아 처리하는 IoT(Internet of Things, 사물인터넷) 망으로 진화하고 있다. 클라우드 서버 등과의 연결을 통한 빅데이터(Big data) 처리 기술 등이 IoT 기술에 결합된 IoE (Internet of Everything) 기술도 대두되고 있다. IoT를 구현하기 위해서, 센싱 기술, 유무선 통신 및 네트워크 인프라, 서비스 인터페이스 기술, 및 보안 기술과 같은 기술 요소 들이 요구되어, 최근에는 사물간의 연결을 위한 센서 네트워크(sensor network), 사물 통신(Machine to Machine, M2M), MTC(Machine Type Communication)등의 기술이 연구되고 있다. IoT 환경에서는 연결된 사물들에서 생성된 데이터를 수집, 분석하여 인간의 삶에 새로운 가치를 창출하는 지능형 IT(Internet Technology) 서비스가 제공될 수 있다. IoT는 기존의 IT(information technology)기술과 다양한 산업 간의 융합 및 복합을 통하여 스마트홈, 스마트 빌딩, 스마트 시티, 스마트 카 혹은 커넥티드 카, 스마트 그리드, 헬스 케어, 스마트 가전, 첨단의료서비스 등의 분야에 응용될 수 있다.
이에, 5G 통신 시스템을 IoT 망에 적용하기 위한 다양한 시도들이 이루어지고 있다. 예를 들어, 센서 네트워크(sensor network), 사물 통신(Machine to Machine, M2M), MTC(Machine Type Communication)등의 기술이 5G 통신 기술인 빔 포밍, MIMO 및 어레이 안테나 등의 기법에 의해 구현되고 있는 것이다. 앞서 설명한 빅데이터 처리 기술로써 클라우드 무선 액세스 네트워크(cloud RAN)가 적용되는 것도 5G 기술과 IoT 기술 융합의 일 예라고 할 수 있을 것이다.
상술한 것과 이동통신 시스템의 발전에 따라 다양한 서비스를 제공할 수 있게 됨으로써, 이러한 서비스들을 원활하게 제공하기 위한 방안이 요구되고 있다.
초저지연(Ultra Low Latency) 서비스 제공을 위하여 3GPP에서는 라디오 Radio Frame 구조를 변경하여 TTI(Transmission Time Interval)를 1ms 이하로 정의하고, HARQ 기법을 조정하고, 최초 접속 절차 및 스케줄링을 개선하는 등의 방법을 통해 통신 지연 시간을 줄이는 표준화를 진행하고 있다. ETSI(European Telecommunication Standards Institute)에서 진행하는 모바일 에지 컴퓨팅 또는 다중 액세스 에지 컴퓨팅(MEC: Mobile Edge computing 또는 Multi-access Edge Computing) 기술은 초저지연 서비스 실현을 위한 효과적인 기술로 전망되고 있다.
본 개시의 다양한 실시예들은 무선통신시스템에서, 컴퓨팅 작업에 포함된 작업들 각각의 의존 관계, 연산 서버들 각각의 연산 처리 용량 정보, 및 연산 서버들 사이의 전송 지연 시간 정보에 기초하여 복수의 작업들을 포함하는 컴퓨팅 작업을 복수의 연산 서버들에 스케줄링함으로써 컴퓨팅 작업의 수행 시간을 감소시키기 위한, 무선통신시스템에서 신호를 송수신하는 방법 및 장치를 제공할 수 있다.
도 1은 일부 실시예에 따른 제어 서버 및 단말의 동작을 설명하기 위한 개념도이다.
도 2는 일부 실시예에 따른 제어 서버가 컴퓨팅 작업을 연산 서버들에 스케줄링하는 방법을 설명하기 위한 흐름도이다.
도 3은 일부 실시예에 따른 작업 의존성 그래프를 설명하기 위한 도면이다.
도 4는 일부 실시예에 따른 제어 서버가 작업들의 연산 복잡도를 조정하여 펼쳐진(spread) 작업 의존성 그래프를 생성하는 방법을 설명하기 위한 도면이다.
도 5는 일부 실시예에 따른 제어 서버가 컴퓨팅 작업을 연산 서버들에 스케줄링하는 방법을 설명하기 위한 순서도이다.
도 6은 일부 실시예에 따른 제어 서버, 단말, 및 연산 서버들이 신호를 송수신하는 방법을 설명하기 위한 도면이다.
도 7은 일부 실시예에 따른 제어 서버가 컴퓨팅 작업을 연산 서버들에 할당하고 각 작업이 수행되는 시간을 결정하는 방법을 설명하기 위한 흐름도이다.
도 8은 일부 실시예에 따른 제어 서버가 복수의 작업들이 수행되는 시간을 결정하는 방법을 설명하기 위한 도면이다.
도 9는 일부 실시예에 따른 단말이 제어 서버에 컴퓨팅 작업을 오프로딩하는 방법을 설명하기 위한 흐름도이다.
도 10은 일부 실시예에 따른 제어 서버의 블록도이다.
도 11은 일부 실시예에 따른 단말의 블록도이다.
일부 실시예에 따라 복수의 작업들을 포함하는 컴퓨팅 작업(task)을 복수의 연산 서버들에 스케줄링하는 제어 서버는, 송수신부; 메모리; 및 단말로부터 컴퓨팅 작업을 수신하고, 컴퓨팅 작업에 포함된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프(task dependency graph)를 생성하고, 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득하고, 작업 의존성 그래프, 연산 처리 용량 정보, 및 전송 지연 시간 정보에 기초하여, 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링하고, 복수의 연산 서버들 중 적어도 하나의 연산 서버로부터 수신한 복수의 작업들의 수행 결과를 단말에 송신하도록 제어하는 적어도 하나의 프로세서를 포함한다.
일부 실시예에 따른 프로세서는, 단말로부터 컴퓨팅 작업을 수신하고, 컴퓨팅 작업에 포함된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프(task dependency graph)를 생성하고, 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득하고, 작업 의존성 그래프, 연산 처리 용량 정보, 및 전송 지연 시간 정보에 기초하여, 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링하고, 복수의 연산 서버들 중 적어도 하나의 연산 서버로부터 수신한 복수의 작업들의 수행 결과를 단말에 송신하도록 제어할 수 있다.
일부 실시예에 따른 프로세서는, 복수의 작업들 각각의 연산 복잡도를 식별하고, 복수의 작업들 중 적어도 하나의 작업을 적어도 하나의 부속 작업(sub-task)으로 변환함으로써, 복수의 작업들 각각의 연산 복잡도를 조정하고, 연산 복잡도가 조정된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프를 생성할 수 있다.
일부 실시예에 따른 프로세서는, 복수의 작업들 중 제2 작업이 제1 작업과 의존 관계를 갖는 경우, 제1 작업이 할당된 제1 연산 서버에 제2 작업을 할당하고, 제1 연산 서버에 제2 작업을 할당할 수 없는 경우, 전송 지연 시간 정보에 기초하여 제2 작업을 할당할 수 있는 연산 서버 중 제1 연산 서버로부터의 전송 지연 시간이 가장 짧은 제2 연산 서버에 제2 작업을 할당할 수 있다.
일부 실시예에 따른 프로세서는, 복수의 작업들 중 제2 작업이 제1 작업과 의존 관계를 갖는 경우, 제1 작업이 할당된 제1 연산 서버에 제2 작업을 할당하고, 제1 연산 서버에 제2 작업을 할당할 수 없는 경우, 전송 지연 시간 정보에 기초하여 제1 연산 서버로부터의 전송 지연 시간이 가장 짧은 제2 연산 서버에 제2 작업을 할당하고, 제2 연산 서버에 제2 작업을 할당할 수 없는 경우, 연산 처리 용량 정보에 기초하여 복수의 연산 서버들 중 가장 큰 연산 처리 용량을 가진 제3 연산 서버에 제2 작업을 할당할 수 있다.
일부 실시예에 따르면, 제어 서버는 복수의 연산 서버들 각각은 복수의 VM(virtual machine)들을 포함하고, 프로세서는, 복수의 작업들 각각을 복수의 연산 서버들에 할당하고 복수의 작업들 각각이 수행되는 시간을 결정함으로써 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링하고, 제1 연산 서버의 제1 VM에 할당된 제1 작업 및 제2 작업에 대해, 제1 작업이 수행되는 시간과 제2 작업이 수행되는 시간이 적어도 일부 중복되는 경우, 제2 작업을 제1 연산 서버의 제2 VM에 할당하고 제2 작업이 수행되는 시간을 결정하거나, 제1 작업이 수행된 후 제2 작업이 수행되도록 제2 작업이 수행되는 시간을 결정할 수 있다.
일부 실시예에 따른 프로세서는, 복수의 작업들 각각을 복수의 연산 서버들에 할당하고 복수의 작업들 각각이 수행되는 시간을 결정함으로써 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링하고, 복수의 작업들 각각의 연산 복잡도를 식별하고, 복수의 작업들 중 적어도 하나의 작업을 적어도 하나의 부속 작업(sub-task)으로 변환함으로써, 복수의 작업들 각각의 연산 복잡도를 조정하고, 연산 복잡도가 조정된 복수의 작업들 각각의 의존 관계에 따라, 펼쳐진(spread) 작업 의존성 그래프를 생성하고, 펼쳐진 작업 의존성 그래프에 기초하여 복수의 작업들 각각을 복수의 연산 서버들에 할당하고, 연산 복잡도가 조정되지 않은 복수의 작업들 각각의 의존 관계에 기초하여 생성된 작업 의존성 그래프에 기초하여 복수의 작업들 각각이 수행되는 시간을 결정할 수 있다.
일부 실시예에 따른 제어 서버가 복수의 작업들을 포함하는 컴퓨팅 작업(task)을 복수의 연산 서버들에 스케줄링하는 방법은, 단말로부터 컴퓨팅 작업을 수신하는 단계; 컴퓨팅 작업에 포함된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프(task dependency graph)를 생성하는 단계; 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득하는 단계; 작업 의존성 그래프, 연산 처리 용량 정보, 및 전송 지연 시간 정보에 기초하여, 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링하는 단계; 복수의 연산 서버들 중 적어도 하나의 연산 서버로부터 수신한 복수의 작업들의 수행 결과를 단말에 송신하는 단계를 포함한다.
일부 실시예에 따라 제어 서버에 복수의 작업들을 포함하는 컴퓨팅 작업(task)을 오프로딩하는 단말은, 송수신부; 메모리; 및 제어 서버에 컴퓨팅 작업을 송신하고, 제어 서버 또는 적어도 하나의 연산 서버로부터 복수의 작업들의 수행 결과를 수신하도록 제어하는 적어도 하나의 프로세서를 포함한다. 전술한 복수의 작업들의 수행 결과는, 복수의 작업들이 복수의 작업들 각각의 의존 관계에 기초하여 생성된 작업 의존성 그래프(task dependency graph), 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보에 기초하여 스케줄링된 복수의 연산 서버로부터 복수의 작업들이 수행된 결과이다.
LTE 이후의 향후 통신 시스템으로서, 5G 통신시스템(또는 NR)은 사용자 및 서비스 제공자 등의 다양한 요구 사항을 자유롭게 반영할 수 있어야 하기 때문에 다양한 요구사항을 만족하는 서비스가 지원되어야 한다. 5G 통신시스템을 위해 고려되는 서비스로는 증가된 모바일 광대역 통신(enhanced Mobile Broadband: eMBB), 대규모 기계형 통신(massive machine type communication: mMTC), 초신뢰 저지연 통신(Ultra Reliability Low Latency Communciation: URLLC) 등이 있다.
이하 본 개시는 무선통신시스템에서 단말이 기지국으로부터 방송 정보를 수신하기 위한 기술에 대해 설명한다. 본 개시는 4G 시스템 또는 4G 시스템 이후 보다 높은 데이터 송신률을 지원하기 위한 5G 통신 시스템을 IoT 기술과 융합하는 통신 기법 및 그 시스템에 관한 것이다. 본 개시는 5G 통신 기술 및 IoT 관련 기술을 기반으로 지능형 서비스(예를 들어, 스마트 홈, 스마트 빌딩, 스마트 시티, 스마트 카 또는 커넥티드 카, 헬스 케어, 디지털 교육, 소매업, 보안 및 안전 관련 서비스 등)에 적용될 수 있다.
이하, 본 개시의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시예를 설명함에 있어서 본 개시가 속하는 기술 분야에 익히 알려져 있고 본 개시와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 개시의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부된 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성 요소에는 동일한 참조 번호를 부여하였다.
본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시는 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 개시의 개시가 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시는 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이때, 본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다. 또한 실시예에서 ‘~부’는 하나 이상의 프로세서를 포함할 수 있다.
도 1은 일부 실시예에 따른 제어 서버(110) 및 단말(120)의 동작을 설명하기 위한 개념도이다.
ETSI에서 진행하는 모바일 에지 컴퓨팅 또는 다중 액세스 에지 컴퓨팅(MEC: Mobile Edge computing 또는 Multi-access Edge Computing, 이하 MEC) 기술은 초저지연 서비스 실현을 위한 기술이다.
MEC는 모바일 네트워크의 가장자리, 무선 액세스 네트워크(RAN)의 내부, 및 모바일 가입자들과 근접한 곳 등에 IT 서비스 환경 및 클라우드 컴퓨팅 능력을 제공하기 위해 개발되었다. MEC의 목표는 지연 시간(latency)을 줄이고, 고효율적인 네트워크 운영 및 서비스 제공을 보장하고, 향상된 사용자 경험을 제공하는 것이다. MEC의 액세스는 와이파이(wifi) 및 고정 네트워크들과 같은 셀룰러 이외의 다른 유형의 액세스 또한 포함할 수 있다.
한편, MEC가 실제 네트워크에 초저지연 서비스의 요구사항을 만족시키기 위해서는 이동성 지원, 자원 관리 등의 해결해야 하는 여러 쟁점들이 존재한다. 특히 최근에는 모바일 디바이스의 부족한 성능을 보완 하기 위해 모바일 디바이스가 수행할 연산을 MEC의 에지 클라우드로 오프로딩하는 기법들이 많이 연구되고 있다. 하지만 MEC의 에지 클라우드가 일반적으로 제한된 컴퓨팅 자원을 가지고 있으며 미래의 초저지연 서비스(예를 들어, AR, VR, 홀로그램 등) 들이 복잡한 연산을 요구한다는 점에서, 낮은 처리 시간을 보장하며 에지 클라우드를 이용해 오프로딩 서비스를 제공하기 위한 기법이 필요하다.
개시된 다양한 실시예는 제어 서버가 단말로부터 오프로딩 서비스 요청을 받아 복수의 연산 서버들로 컴퓨팅 작업을 분산적으로 병렬 처리하는 방법 및 장치를 제공한다.
도 1을 참조하면, 단말(120)은 단말(120)이 수행하기 어려운 컴퓨팅 작업에 대해 제어 서버(110)로 오프로딩 요청을 할 수 있다. 제어 서버(110)는 단말(120)로부터 오프로딩 요청 및 복수의 작업을 포함하는 컴퓨팅 작업을 수신하는 것에 대응하여, 복수의 연산 서버들(130)에 작업을 스케줄링하여 전달할 수 있다. 복수의 연산 서버들(130)은 스케줄링에 따라 작업을 수행하고 수행한 결과를 제어 서버(110) 또는 단말(120)로 전달할 수 있다.
제어 서버(110)는 스케줄링을 수행하는 다양한 서버일 수 있다. 예를 들어, 제어 서버(110)는 기지국(eNB 또는 gNB)일 수 있고, 스케줄링을 수행하는 데이터 센터일 수도 있다. 물론 전술한 예시에 한정되지 않고 제어 서버는 다양한 서버를 포함할 수 있다.
복수의 연산 서버들(130) 각각은 연산 또는 작업을 수행하는 다양한 서버일 수 있다. 예를 들어, 복수의 연산 서버들(130) 각각은 기지국(eNB 또는 gNB)일 수 있고, AP(Access Point)일 수도 있고, 데이터 센터일 수도 있다. 또한, 복수의 연산 서버들(130) 각각은 단말(120) 부근에 설치된 에지 클라우드 장치일 수 있다. 물론 전술한 예시에 한정되지 않고 연산 서버는 다양한 서버를 포함할 수 있다.
복수의 연산 서버들(130)에 포함된 각 연산 서버는 적어도 하나의 VM을 구동할 수 있고, 적어도 하나의 프로세서 및 VM을 구동하기 위한 하이퍼바이저를 포함할 수 있다. 각 연산 서버는 다른 연산 서버와 유선 또는 무선으로 신호를 송수신할 수 있다. 예를 들어, 제1 연산 서버(131), 제2 연산 서버(132), 제3 연산 서버(133)는 유무선으로 작업 또는 작업 수행 결과를 송수신할 수 있다. 복수의 연산 서버들(130)에 포함된 연산 서버의 수는 물론 도 1에 도시된 바에 의해 한정되지 않고 다양하게 정해질 수 있다.
제어 서버(110)는 단말(120)의 위치에 기초하여 단말(120) 근처에 위치하는 복수의 연산 서버들(130)을 에지 클러스터로 설정할 수 있다. 단말(120)은 제어 서버(110)에 컴퓨팅 작업의 오프로딩 요청을 함으로써, 단말(120) 근처에 위치한 에지 클러스터에서 수행된 작업 결과를 수신할 수 있다.
도 2는 일부 실시예에 따른 제어 서버가 컴퓨팅 작업을 연산 서버들에 스케줄링하는 방법을 설명하기 위한 흐름도이다.
210 단계에서, 제어 서버는 단말로부터 컴퓨팅 작업을 수신할 수 있다.
단말은 복수의 작업들을 포함하는 컴퓨팅 작업을 제어 서버에 송신할 수 있다. 단말은 컴퓨팅 작업과 함께 컴퓨팅 작업에 대한 오프로딩 요청을 제어 서버에 송신할 수 있다.
컴퓨팅 작업의 종류는 다양하게 정해질 수 있다. 예를 들어, 컴퓨팅 작업은 단말에 설치된 어플리케이션에서 제공되는 서비스가 수행되기 위한 연산 집합일 수 있다. 물론 이에 한정되지 않고 컴퓨팅 작업은 다양한 종류의 작업을 포함할 수 있다.
220 단계에서, 제어 서버는 컴퓨팅 작업에 포함된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프(task dependency graph)를 생성할 수 있다.
작업 의존성 그래프(task dependency graph)는 복수의 작업들의 의존관계를 나타내는 그래프이다. 예를 들어, 제2 작업이 수행되기 위해 반드시 제1 작업이 먼저 수행되어야 한다면, 제2 작업은 제1 작업과 의존관계에 있다고 정의할 수 있다. 또는 제2 작업은 제1 작업과 의존성이 있다고도 정의할 수 있다.
예를 들어, 제어 서버는 단말로부터 받은 컴퓨팅 작업을 분석함으로써 컴퓨팅 작업에 포함된 복수의 작업들 사이의 의존관계를 파악하고, 파악한 의존관계에 기초하여 작업 의존성 그래프를 생성할 수 있다.
일부 실시예에 따른 제어 서버는 복수의 작업들 각각의 연산 복잡도가 조정된, 펼쳐진(spread) 작업 의존성 그래프를 생성할 수 있다. 제어 서버는 펼쳐진 작업 의존성 그래프에 기초하여 복수의 작업들 각각을 복수의 연산 서버에 할당할 수 있다.
230 단계에서, 제어 서버는 복수의 연산 서버들 각각의 연산 처리 용량 정보(processing capacity) 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득할 수 있다.
연산 처리 용량 정보는 연산 서버가 작업을 수행하는 능력에 대한 정보 또는 연산 서버가 작업을 처리할 수 있는 자원을 현재 얼마나 확보하고 있는지에 대한 정보를 의미할 수 있다. 예를 들어, 연산 처리 용량 정보는 연산 서버가 소정의 시간에 처리할 수 있는 연산의 수, 연산 서버에 시간별 작업이 할당된 스케줄링 정보, 연산 서버에서 작업을 할당 받을 수 있는 시간 구간에 대한 정보 중 적어도 하나를 포함할 수 있다. 예를 들어, 작업을 할당 받을 수 있는 시간 구간은 연산 서버가 아직 작업을 할당 받지 않아 연산 서버의 작업 수행이 가능한 시간 구간일 수 있다.
연산 서버 사이의 전송 지연 시간 정보는 서로 다른 제1 연산 서버에서 제2 연산 서버로 신호를 전송하는데 걸리는 시간을 의미할 수 있다. 예를 들어, 전송 지연 시간 정보는 제1 연산 서버의 작업 수행 결과를 제2 연산 서버로 전송하는데 걸리는 시간을 의미할 수 있다.
복수의 연산 서버들 각각은 물리적으로 이격되어 위치할 수 있다. 복수의 연산 서버들 각각이 물리적으로 이격되어 위치하는 경우, 연산 서버들 사이에 유선 또는 무선으로 신호를 송수신하는 데에 전송 지연 시간이 발생할 수 있다. 또한 복수의 연산 서버들 중 적어도 일부는 하나의 장치에 설치되어 있을 수 있다. 하나의 장치에 설치된 적어도 일부의 연산 서버들 간에 서로 신호를 송수신할 때에도 전송 지연 시간은 발생할 수 있다.
일부 실시예에 따르면, 복수의 연산 서버들 중 적어도 일부는 각각 복수의 가상 머신(VM:Virtual Machine)을 구동할 수 있다. 예를 들어, 하나의 VM은 하나의 시간 구간 동안 하나의 작업을 수행할 수 있다. 복수의 VM을 구동하는 연산 서버는 각각의 VM을 구동하여 작업을 수행함으로써 하나의 시간 구간 동안 복수의 작업을 수행할 수 있다.
일부 실시예에 따르면, 연산 서버의 연산 처리 용량 정보는 연산 서버가 구동하는 VM의 개수를 포함할 수 있다. 또한, 연산 처리 용량 정보는 연산 서버에 포함된 각각이 VM이 작업을 수행하는 능력에 대한 정보 또는 각각의 VM이 작업을 처리할 수 있는 자원을 현재 얼마나 확보하고 있는지에 대한 정보를 의미할 수 있다. 예를 들어, 연산 처리 용량 정보는 각각의 VM이 소정의 시간에 처리할 수 있는 연산의 수, 각각의 VM에 시간별 작업이 할당된 스케줄링 정보, 각각의 VM이 작업을 할당 받을 수 있는 시간 구간에 대한 정보 중 적어도 하나를 포함할 수 있다.
일부 실시예에 따르면, 제어 서버는 복수의 연산 서버들로부터 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 수신할 수 있다. 예를 들어, 제어 서버는 주기적으로 복수의 연산 서버들로부터 연산 처리 용량 정보 및 전송 지연 시간 정보를 수신할 수 있다. 또한 제어 서버는 복수의 연산 서버들로부터 수신한 연산 처리 용량 정보 및 전송 지연 시간 정보를 제어 서버에 저장하고, 저장된 정보를 로딩함으로써 연산 처리 용량 정보 및 전송 지연 시간 정보를 획득할 수도 있다. 또한, 제어 서버는 복수의 연산 서버들로부터 갱신된 연산 처리 용량 정보 또는 갱신된 전송 지연 시간 정보를 수신하는 것에 대응하여 제어 서버에 저장된 연산 처리 용량 정보 및 전송 지연 시간 정보를 갱신할 수 있다. 물론 전술한 방법은 예시일 뿐, 제어 서버가 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득하는 방법은 전술한 방법에 한정되지 않는다.
240 단계에서, 제어 서버는 작업 의존성 그래프, 연산 처리 용량 정보, 및 전송 지연 시간 정보에 기초하여, 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링할 수 있다.
제어 서버가 복수의 작업들을 스케줄링 하는 동작은 각 작업을 연산 서버에 할당하는 동작 및 각 작업이 수행되는 시간을 결정하는 동작을 포함할 수 있다.
일부 실시예에 따른 제어 서버는 복수의 작업들을 작업 의존성 그래프의 각 스텝 별로 복수의 연산 서버들에 스케줄링할 수 있다. 제어 서버는 어느 하나의 스텝에 포함된 적어도 하나의 작업을 적어도 하나의 연산 서버에 스케줄링할 수 있다.
제어 서버는 작업 의존성 그래프 또는 펼쳐진 작업 의존성 그래프에 기초하여, 각 작업을 의존 관계에 따라 할당할 수 있다. 제어 서버가 작업 의존성 그래프의 각 스텝 별로 작업을 의존 관계에 따라 할당하는 방법은 도 5를 참조하여 자세히 설명한다.
일부 실시예에 따르면, 제어 서버는 복수의 작업들을 복수의 연산 서버에 할당하는 단계에서 각 작업이 수행되는 시간을 결정할 수 있다. 예를 들어, 제어 서버는 각 작업의 소요 시간 및 전송 지연 시간 정보에 기초하여 각 작업이 수행되는 시간을 결정하거나, 펼쳐진 작업 의존성 그래프의 각 스텝을 기준으로 각 작업이 수행되는 시간을 결정할 수 있다.
일부 실시예에 따른 제어 서버는 복수의 작업들이 복수의 연산 서버에 할당된 후 각 작업이 수행되는 시간을 결정할 수 있다. 제어 서버가 각 작업이 수행되는 시간을 결정하는 동작은 도 7을 참조하여 자세히 설명한다.
250 단계에서, 제어 서버는 복수의 연산 서버들 중 적어도 하나의 연산 서버로부터 수신한 복수의 작업들의 수행 결과를 단말에 송신할 수 있다.
작업 의존성 그래프에서 첫 번째 스텝 및 마지막 스텝은 각각 하나의 작업을 포함할 수 있다. 즉 단말로부터 수신한 컴퓨팅 작업에 포함된 복수의 작업들은 작업 의존성 그래프의 마지막 스텝에서 하나의 작업으로 수렴될 수 있다.
마지막 스텝의 작업은 하나의 연산 서버에 할당될 수 있다. 또는, 예를 들어 마지막 스텝의 작업의 연산 처리량이 큰 경우, 마지막 스텝의 작업은 복수의 연산 서버에 할당될 수도 있다.
마지막 스텝의 작업이 할당된 적어도 하나의 연산 서버는 작업을 수행한 후 제어 서버로 작업 수행 결과를 송신할 수 있고, 또는 단말로 직접 작업 수행 결과를 송신할 수도 있다. 제어 서버는 적어도 하나의 연산 서버로부터 수신한 작업 수행 결과를 단말에 송신할 수 있다.
도 2에 도시된 각 단계가 수행되는 순서는 도2에 도시된 바에 의해 한정되지 않고 다양하게 정해질 수 있다. 예를 들어, 230 단계는 210 단계 이전에 수행되거나, 220단계 이전에 수행될 수도 있다.
개시된 다양한 실시예에 따른 제어 서버는, 각 작업의 의존성, 연산 서버들의 연산 처리 용량, 및 연산 서버들 사이의 전송 지연 시간을 고려하여 복수의 작업을 분산 병렬 처리함으로써, 낮은 스케줄링 복잡도를 갖는 동시에 컴퓨팅 작업이 수행되는 완료 시간을 줄일 수 있다. 즉, 제어 서버는 많은 연산량을 요구하는 초저지연 서비스를 낮은 처리 시간과 함께 제공할 수 있다. 예를 들어, 제어 서버는 작업 의존성을 고려하지 않는 Dependency-Unaware 기법 또는 연산 서버의 연산 처리 용량만을 고려하는 Capacity-Based 기법에 비하여 컴퓨팅 작업이 수행되는 완료 시간을 줄일 수 있다.
또한, 복수의 연산 서버들이 단말 근처에 위치하는 엣지 서버들인 경우, 제어 서버가 복수의 연산 서버들에 스케줄링된 작업을 송신하는 데에 소요되는 전송 지연 시간, 연산 서버들이 제어 서버 또는 단말에 작업 수행 결과를 송신하는 데에 소요되는 전송 지연 시간 등을 줄일 수 있어, 컴퓨팅 작업이 수행되는 완료 시간을 더욱 줄일 수 있다.
도 3은 일부 실시예에 따른 작업 의존성 그래프(300)를 설명하기 위한 도면이다.
도 3을 참조하면, 일부 실시예에 따른 제어 서버가 생성한 작업 의존성 그래프(300)는 복수의 스텝들을 포함할 수 있다. 각 스텝은 적어도 하나의 작업을 포함할 수 있다. 즉, 제어 서버는 단말로부터 수신한 전체 컴퓨팅 작업을 복수의 스텝들로 조정하고 각 스텝에 적어도 하나의 작업을 배치함으로써 작업 의존성 그래프(300)를 생성할 수 있다.
작업 의존성 그래프(300)에서 원은 1개의 작업 단위를 나타낸다. 작업 단위는 제어 서버가 작업을 용이하게 스케줄링하기 위해 복수의 작업들을 논리적으로 또는 개념적으로 나눈 것일 수 있다. 또는 1개의 작업 단위는 하나의 작업을 의미할 수도 있다.
작업 의존성 그래프(300)에서 화살표는 의존성을 나타낸다. 예를 들어, 작업 302 및 작업 303은 각각 작업 301과 의존성을 갖는다. 의존관계는 1:1, 1:n, n:1, m:n 등 다양하게 정해질 수 있다. 각 작업이 갖는 다양한 의존관계의 일 예가 작업 의존성 그래프(300)에서 스텝 s-1과 스텝s에 도시되어 있다.
전체 컴퓨팅 작업은 작업 의존성 그래프(300)에서 하나의 작업으로부터 시작해서 복수의 작업들로 전개된 후 다시 하나의 작업으로 수렴될 수 있다. 도 3에는 작업 의존성 그래프(300)에서 첫 번째 스텝인 스텝 1의 작업은 작업301이고 마지막 스텝인 스텝 M의 작업은 작업 304인 일 예가 도시되어 있다.
작업 의존성 그래프(300)의 각 작업의 연산 복잡도는 다양할 수 있다. 제어 서버는 각 작업의 연산 복잡도를 조정함으로써 펼쳐진 작업 의존성 그래프를 생성할 수 있다.
도 4는 일부 실시예에 따른 제어 서버가 작업들의 연산 복잡도를 조정하여 펼쳐진(spread) 작업 의존성 그래프를 생성하는 방법을 설명하기 위한 도면이다.
도 4의 401은 도 3의 작업 의존성 그래프(300)의 스텝 s, s+1, s+2만을 도시한 것이다. 도4의 401을 참조하면, 작업 의존성 그래프에 포함된 각 작업은 서로 다른 연산 복잡도를 가질 수 있다. 예를 들어, 작업 411은 1의 연산 복잡도, 작업 422는 2의 연산 복잡도를 가질 수 있다.
연산 복잡도는 각 작업이 수행되는 데에 필요한 연산량을 의미할 수 있다. 연산량이 크면 작업 소요 시간이 클 수 있다. 복수의 작업을 작업 의존성 그래프의 스텝별로 연산 서버에 할당하는 경우, 각 스텝에 포함된 작업들의 연산 복잡도가 서로 상이하다면, 전체 컴퓨팅 작업 완료 시간이 오래 걸릴 수 있다. 예를 들어, 도 4의 401의 스텝 s에서 연산 복잡도가 1인 작업 411을 수행한 연산 서버 또는 VM은, 연산 복잡도가 2인 작업 412가 수행되기 까지 대기한 후 스텝 s+1의 작업으로 전개될 수 있고, 따라서 대기 시간이 소요된다.
일부 실시예에 따른 제어 서버는 적어도 하나의 작업의 연산 복잡도를 조정하여 펼쳐진(spread) 작업 의존성 그래프(402)를 생성함으로써, 복수의 작업을 작업 의존성 그래프의 스텝별로 연산 서버에 할당하는 경우 전체 컴퓨팅 작업 완료 시간을 줄일 수 있다.
작업의 연산 복잡도를 조정하는 것은 각 작업의 연산 복잡도를 동일 또는 유사한 정도로 조정하는 것을 의미할 수 있다. 예를 들어, 제어 서버는 기준 연산 복잡도를 1로 설정하고, 모든 작업이 0.8~1.2 사이의 연산 복잡도를 갖도록 연산 복잡도를 조정할 수 있다. 물론 이에 한정되지 않지 않고, 제어 서버는 모든 작업이 일정 범위 사이의 연산 복잡도를 가지도록 조정할 수 있다.
일부 실시예에 따른 제어 서버는 연산 복잡도가 큰 작업을 적어도 하나의 부속 작업(sub-task)으로 변환함으로써 복수의 작업들의 연산 복잡도를 조정할 수 있다. 예를 들어, 도 4를 참조하면, 제어 서버는 연산 복잡도가 2인 작업 412를, 각각 연산 복잡도가 1인 부속 작업 421 및 부속 작업 422로 변환함으로써 연산 복잡도가 조정하여 펼쳐진 작업 의존성 그래프(402)를 생성할 수 있다.
부속 작업으로 변환된 작업들은 서로 부속 관계를 갖는다. 펼쳐진 작업 의존성 그래프(402)에는 부속 관계 및 부속 작업들이 표시되어 있다. 한편, 부속 관계를 갖는 작업들은 작업 의존성 그래프의 연산 복잡도를 조정하기 위하여 서로 논리적으로 또는 개념적으로 분리된 것일 뿐, 분리되기 전에는 하나의 작업이므로, 같은 연산 서버 또는 같은 VM에서 수행된다.
도 5는 일부 실시예에 따른 제어 서버가 컴퓨팅 작업을 연산 서버들에 스케줄링하는 방법을 설명하기 위한 순서도이다.
일부 실시예에 따른 제어 서버는 펼쳐진 작업 의존성 그래프의 각 스텝별로, 각 스텝에 포함된 각 작업을 적어도 하나의 연산 서버에 스케줄링할 수 있다. 도 5는 펼쳐진 작업 의존성 그래프의 스텝 s의 작업 k를 연산 서버에 스케줄링하는 방법의 예시를 설명한다.
501 단계에서, 제어 서버는 작업 k가 다른 작업과 부속 관계를 갖는지 여부를 판단할 수 있다. 예를 들어, 제어 서버는 스텝 s 이전의 적어도 하나의 스텝 중 작업 k와 부속 관계를 갖는 작업 n이 있는지 판단할 수 있다.
502 단계에서, 제어 서버는 부속 관계를 갖는 작업들은 같은 연산 서버의 같은 VM에 할당할 수 있다. 예를 들어, 제어 서버는 작업 k와 부속 관계를 갖는 작업 n이 할당된 연산 서버의 VM에 작업 k를 할당할 수 있다.
부속 관계를 갖는 작업들은 작업 의존성 그래프의 연산 복잡도를 조정하기 위하여 펼쳐진 작업 의존성 그래프에서 분리된 것이고, 부속 관계의 특성상 서로 다른 VM에서 수행될 수 없다. 따라서 부속 관계를 갖는 작업들은 같은 연산 서버의 같은 VM에 할당된다.
503 단계에서, 제어 서버는 작업 k가 이전 스텝의 작업m에 대해 의존성을 갖는지 여부를 판단할 수 있다. 예를 들어, 제어 서버는 스텝 s 이전의 적어도 하나의 스텝 중 작업 k와 의존성을 갖는 작업 m이 있는지 여부를 판단할 수 있다.
또한 제어 서버는 작업 k와 의존성을 갖는 복수의 작업 중 하나의 작업인 m을 선택할 수 있다.
펼쳐진 작업 의존성 그래프에 따르면, 이전 스텝의 작업에 대해 의존성을 갖지 않는 작업은 첫 번째 스텝의 첫 번째 작업뿐이다. 첫 번째 작업을 제외한 나머지 작업들은 적어도 하나의 작업에 대해 의존성을 갖는다.
504 단계에서, 작업 k가 이전 스텝의 작업m에 대해 의존성을 갖지 않는 경우, 제어 서버는 작업 k를 연산 처리 용량이 가장 큰 연산 서버에 할당할 수 있다. 즉, 작업 k가 첫 번째 스텝의 첫 번째 작업인 경우, 제어 서버는 작업 k를 연산 처리 용량이 가장 큰 연산 서버에 할당한다.
예를 들어, 연산 처리 용량이 가장 큰 연산 서버는 복수의 연산 서버들 중 가장 많은 VM을 구동하는 연산 서버 또는 소정의 시간에 처리할 수 있는 연산의 수가 가장 많은 서버일 수 있다.
제어 서버는 연산 처리 용량이 가장 큰 연산 서버에 첫 번째 스텝의 첫 번째 작업을 할당함으로써, 이후의 스텝들에서 서로 의존성을 갖는 작업들을 하나의 연산 서버에 할당하는 가능성을 높일 수 있다. 서로 의존성을 갖는 작업들이 하나의 연산 서버에 할당되는 경우 연산 서버간의 전송 지연 없이 서로 의존성을 갖는 작업들을 수행함으로써 컴퓨팅 작업 완료 시간을 줄일 수 있다.
505 단계에서, 제어 서버는 작업 m이 할당된 연산 서버에 작업 k를 할당 가능한지 여부를 판단할 수 있다.
예를 들어 작업 m이 할당된 제1 연산 서버의 모든 VM이 스텝 s에 포함된 작업을 할당 받은 경우, 작업 m이 할당된 제1 연산 서버에 작업 k를 할당 불가능할 수 있다.
작업 m이 할당된 제1 연산 서버의 VM들 중 적어도 하나의 VM이 스텝 s에 포함된 작업을 할당받지 않은 경우, 작업 m이 할당된 제1 연산 서버에 작업 k를 할당 가능할 수 있다.
506 단계에서, 작업 m이 할당된 연산 서버에 작업 k가 할당 가능한 경우, 제어 서버는 전술한 연산 서버에 작업 k를 할당할 수 있다.
예를 들어, 제어 서버는 작업 m이 할당된 제1 연산 서버에서 스텝 s에 포함된 작업을 할당받지 않은 적어도 하나의 VM에 작업 k를 할당할 수 있다.
507 단계에서, 작업 m이 할당된 연산 서버에 작업 k가 할당 불가능한 경우, 제어 서버는 작업 m이 할당된 연산 서버로부터 전송 지연 시간이 가장 짧은 연산 서버에 작업 k를 할당 가능한지 여부를 판단할 수 있다.
제어 서버는 복수의 연산 서버들 사이의 전송 지연 시간 정보에 기초하여, 작업 m이 할당된 제1 연산 서버로부터 전송 지연 시간이 가장 짧은 제2 연산 서버를 식별할 수 있다.
예를 들어, 제2 연산 서버의 모든 VM이 스텝 s에 포함된 작업을 할당 받은 경우, 제2 연산 서버에 작업 k를 할당 불가능할 수 있다.
일부 실시예에 따른 제어 서버는, 제2 연산 서버에 작업 k를 할당 불가능한 경우, 단계 504로 진행할 수 있다. 즉, 제어 서버는 작업 k를 연산 처리 용량이 가장 큰 연산 서버에 할당할 수 있다. 제어 서버는 연산 처리 용량이 가장 큰 연산 서버에 작업 k를 할당함으로써, 이후의 스텝들에서 작업 k와 의존성을 갖는 작업들을 하나의 연산 서버에 할당하는 가능성을 높일 수 있다.
또는, 일부 실시예에 따른 제어 서버는 제2 연산 서버에 작업 k를 할당 불가능한 경우, 작업 m이 할당된 제1 연산 서버로부터 짧은 전송 지연 시간을 갖는 순서대로 다른 연산 서버에 작업 k의 할당을 시도할 수 있다. 즉, 제어 서버는 작업 k를 할당할 수 있는 연산 서버 중 제1 연산 서버로부터의 전송 지연 시간이 가장 짧은 제3 연산 서버를 식별하고, 제3 연산 서버에 작업 k를 할당할 수 있다.
508 단계에서, 작업 m이 할당된 연산 서버로부터 전송 지연 시간이 가장 짧은 연산 서버에 작업 k를 할당 가능한 경우, 제어 서버는 전술한 연산 서버에 작업 k를 할당할 수 있다.
작업 k가 어느 하나의 연산 서버에 할당되면 제어 서버는 다음으로 작업 k+1의 할당하기 위해 도 5에 도시된 단계들을 수행할 수 있다. 스텝 s의 모든 작업이 적어도 하나의 연산 서버에 할당되면 제어 서버는 다음으로 스텝 s+1에 포함된 작업을 할당하기 위해 도 5에 도시된 단계들을 수행할 수 있다.
개시된 다양한 실시예에 따른 제어 서버는 도 5에 도시된 방법과 같이, 펼쳐진 의존성 그래프에 포함된 각 스텝별로, 각 작업의 의존성, 연산 서버들의 연산 처리 용량, 및 연산 서버들 사이의 전송 지연 시간을 고려하여 복수의 작업을 복수의 연산 서버에 할당함으로써, 낮은 스케줄링 복잡도를 갖는 동시에 컴퓨팅 작업이 수행되는 완료 시간을 줄일 수 있다.
도 6은 일부 실시예에 따른 제어 서버(110), 단말(120), 및 연산 서버들(130)이 신호를 송수신하는 방법을 설명하기 위한 도면이다.
도 6에서 설명할 내용 중 도 2에서 설명한 내용과 중복되는 내용은 간단히 설명하도록 한다.
601 단계에서, 제어 서버(110)는 복수의 연산 서버들(130)로부터 제어 서버(110)에 연산 서버의 연산 처리 용량 정보 및 연산 서버들 사이의 전송 지연 시간 정보를 수신할 수 있다.
602 단계에서, 제어 서버(110)는 단말(120)로부터 복수의 작업들을 포함하는 컴퓨팅 작업에 대한 오프로딩 요청을 수신할 수 있다.
603 단계에서, 제어 서버(110)는 컴퓨팅 작업에 포함된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프(task dependency graph)를 생성할 수 있다.
604 단계에서, 제어 서버(110)는 작업 의존성 그래프, 연산 처리 용량 정보, 및 전송 지연 시간 정보에 기초하여, 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링할 수 있다.
605 단계에서, 제어 서버(110)는 스케줄링에 따라 복수의 작업들을 복수의 연산 서버들(130)에 분배할 수 있다.
606 단계에서, 연산 서버들(130)은 스케줄링에 따라 복수의 작업들을 수행할 수 있다.
607 단계에서, 적어도 하나의 연산 서버는 복수의 작업들의 수행 결과를 제어 서버(110) 또는 단말(120)에 송신할 수 있다. 전체 컴퓨팅 작업의 마지막 스텝의 작업을 수행한 적어도 하나의 연산 서버는 제어 서버(110)로 작업들의 수행 결과를 송신하거나, 또는 단말(120)로 직접 작업 수행 결과를 송신할 수 있다.
608 단계에서, 제어 서버(110)가 적어도 하나의 연산 서버로부터 복수의 작업들의 수행 결과를 수신한 경우, 제어 서버(110)는 수신한 결과를 단말(120)에 송신할 수 있다.
도 6의 601 단계, 602 단계, 603 단계, 604 단계, 608 단계의 자세한 내용은 각각 도 2의 230 단계, 210 단계, 220 단계, 240 단계, 250 단계에서 자세히 설명하였다.
도 7은 일부 실시예에 따른 제어 서버가 컴퓨팅 작업을 연산 서버들에 할당하고 각 작업이 수행되는 시간을 결정하는 방법을 설명하기 위한 흐름도이다.
일부 실시예에 따른 제어 서버는 복수의 작업들이 복수의 연산 서버에 할당된 후 각 작업이 수행되는 시간을 결정할 수 있다. 예를 들어, 제어 서버는 도 5에 도시된 방법에 의해 복수의 작업들이 할당된 후, 각 작업이 수행되는 시간을 결정할 수 있다.
도 7에서 설명할 내용 중 도 2에서 설명한 내용과 중복되는 내용은 간단히 설명하도록 한다.
710 단계에서, 제어 서버는 단말로부터 컴퓨팅 작업을 수신할 수 있다.
720 단계에서, 제어 서버는 컴퓨팅 작업에 포함된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프를 생성할 수 있다.
730 단계에서, 제어 서버는 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득할 수 있다.
740 단계에서, 제어 서버는 작업 의존성 그래프, 연산 처리 용량 정보, 및 전송 지연 시간 정보에 기초하여, 복수의 작업들 각각을 복수의 연산 서버들에 할당할 수 있다.
750 단계에서, 제어 서버는 작업 의존성 그래프, 연산 처리 용량 정보, 및 전송 지연 시간 정보에 기초하여, 복수의 작업들 각각이 수행되는 시간을 결정할 수 있다.
각 작업이 수행되는 시간은 전체 컴퓨팅 작업의 첫 번째 작업이 수행되기 시작하는 시각을 기준(예를 들어, 0초)으로 하여 각 작업이 수행되는 시각을 의미할 수 있다.
일부 실시예에 따른 제어 서버는 740 단계에서 펼쳐진 작업 의존성 그래프의 각 스텝별로 복수의 작업들을 복수의 연산 서버에 할당할 수 있다. 제어 서버가 복수의 작업들을 스텝별로 복수의 연산 서버에 할당하는 단계에서 각 작업이 수행되는 시간을 결정하지 않거나, 각 동작의 소요 시간에 기초하여 각 작업이 수행되는 시간을 결정한 경우, 연산 서버 간 신호 송수신 시 발생하는 전송 지연 시간의 영향으로 작업들이 동일한 시간 구간 동안 하나의 M에 중복되어 할당되는 경우가 발생할 수도 있다.
제어 서버는 제1 연산 서버의 제1 VM에 할당된 제1 작업 및 제2 작업에 대해, 제1 작업이 수행되는 시간과 제2 작업이 수행되는 시간이 적어도 일부 중복되는 경우, 제2 작업을 제1 연산 서버의 제2 VM에 할당하고 제2 작업이 제2 VM에서 수행되는 시간을 결정하거나, 제1 작업이 수행된 후 제2 작업이 수행되도록 제1 VM에서 제2 작업이 수행되는 시간을 결정할 수 있다.
제어 서버는 작업 의존성 그래프의 각 스텝별로 복수의 작업들 각각이 수행되는 시간을 결정할 수 있다. 제어 서버가 각 스텝별로 각 작업이 수행되는 시간을 결정하는 경우, 부속 관계를 갖는 작업들이 서로 다른 VM에 할당되지 않도록, 펼쳐진 작업 의존성 그래프가 아니라 연산 복잡도가 조정되지 않은 작업 의존성 그래프에 기초하여 각 작업이 수행되는 시간을 결정할 수 있다. 즉, 제어 서버는 도 3의 작업 의존성 그래프(300)에 기초하여 각 작업이 수행되는 시간을 결정할 수 있다.
제어 서버는 각 작업이 수행되는 시간을 결정함으로써 전체 컴퓨팅 작업의 완료 시간을 알 수 있고, 작업들이 동일한 시간 구간 동안 하나의 VM에 중복되어 할당되지 않도록 스케줄링할 수 있다.
한편, 일부 실시예에 따른 제어 서버는 작업을 할당하는 740 단계에서 각 VM에 동시에 할당되는 작업이 발생하지 않도록 각 작업이 수행되는 시간을 결정할 수도 있다. 예를 들어, 제어 서버는 펼쳐진 작업 의존성 그래프의 각 스텝별로 스텝의 시작 시간 및 종료 시간을 복수의 연산 서버들에 포함된 모든 VM에 대해 동일하게 설정할 수 있다.
760 단계에서, 제어 서버는 복수의 연산 서버들 중 적어도 하나의 연산 서버로부터 수신한 복수의 작업들의 수행 결과를 단말에 송신할 수 있다.
도 7의 710 단계, 720 단계, 730 단계, 740 단계, 760 단계의 자세한 내용은 각각 도 2의 210 단계, 220 단계, 230 단계, 240 단계, 250 단계에서 자세히 설명하였다.
도 8은 일부 실시예에 따른 제어 서버가 복수의 작업들이 수행되는 시간을 결정하는 방법을 설명하기 위한 도면이다.
도 8은 도 7의 750 단계에서 제어 서버가 작업 의존성 그래프의 스텝별로 각 작업이 수행되는 시간을 결정하는 예시를 도시한다. 즉, 도 8은 스텝 s의 작업 k가 수행되는 시간을 결정하는 방법의 예시를 설명한다.
도 8에 도시된 각 변수의 의미는 다음 [표 1]과 같다.
[표 1]
Figure PCTKR2019014040-appb-img-000001
도 8에 도시된 방법을 수행하기 전에, 즉 첫 번째 스텝의 첫 번째 작업이 수행되는 시각을 결정하기 전에, 제어 서버는 복수의 연산 서버에 작업을 할당하는 단계에서 각 작업의 소요시간 및 전송 지연 시간 정보에 기초하여 각 작업이 수행되는 시간을 결정할 수 있다. 즉, 제어 서버는 도 8에 도시된 방법을 수행하기 전에, [표 1]에 도시된 모든 변수 중 r e,i 및 r e,i'를 제외한 모든 변수를 각 작업의 소요시간 및 전송 지연 시간 정보에 기초하여 결정할 수 있다.
801 단계에서, 제어 서버는 r e,i
Figure PCTKR2019014040-appb-img-000002
max(f s',k' + l e',e) 인지 여부를 판단할 수 있다. max(f s',k' + l e',e)은 스텝 s의 작업 k와 의존성이 있는 스텝 s-1까지의 적어도 하나의 작업의 연산이 끝나는 시각과, 전술한 적어도 하나의 작업이 할당된 연산 서버 e'로부터 작업 k가 할당된 연산 서버로의 전송 지연 시간을 합산한 값이 가장 큰 값을 의미한다.
스텝 s의 작업 k와 의존성이 있는 스텝 s'의 작업 k'가 할당된 연산 서버 e'와 작업 k가 할당된 연산 서버 e가 같은 경우, 즉 전송 지연 시간이 발생하지 않은 경우, l e',e0이다. e'와 e가 같지 않은 경우 l e',e>0이다.
r e,i
Figure PCTKR2019014040-appb-img-000003
max(f s',k' + l e',e)인 경우, 연산 서버e의 VM-i에 스텝 s-1까지 할당된 작업이 끝난 후 작업 k를 수행하게 되므로 VM-i에 작업k가 다른 작업과 동시에 할당되지 않는다.
r e,i > max(f s',k' + l e',e)인 경우, 연산 서버e의 VM-i에 스텝 s-1까지 할당된 작업이 끝나기 전에 작업 k를 수행하게 되므로, 즉 작업을 할당하는 단계에서 결정된 b s,k가 r e,i보다 작으므로, VM-i에 작업k가 수행되는 시간과 다른 작업이 수행되는 시간이 적어도 일부 중복된다.
제어 서버가 첫 번째 스텝의 첫 번째 작업이 수행되는 시각을 결정하는 경우, 즉 s=1이고 k=1인 경우, 아직 VM-i에 할당된 작업이 없으므로 r e,i0 이다. 따라서 s=1이고 k=1인 경우에는 r e,i
Figure PCTKR2019014040-appb-img-000004
max(f s',k' + l e',e)이 늘 성립한다.
802 단계에서, r e,i
Figure PCTKR2019014040-appb-img-000005
max(f s',k' + l e',e)인 경우, 제어 서버는 b s,k, f s,k 를 결정하고, r e,i를 갱신할 수 있다.
제어 서버가 첫 번째 스텝의 첫 번째 작업이 수행되는 시각을 결정하는 경우, 즉 s=1이고 k=1인 경우에는, b s,k, f s,k 및 r e,i는 이전 스텝에 대한 고려 없이 결정되어 있고 갱신할 필요가 없다.
작업 k가 첫 번째 스텝의 첫 번째 작업이 아닌 경우, 제어 서버는 max(f s',k' + l e',e) 값을 작업 k가 시작되는 시각인 b s,k로 결정하고, b s,k에 작업 k의 작업 소요 시간을 합산한 값을 f s,k로 결정할 수 있다. 제어 서버는 결정된 f s,k 값을 r e,i로 결정함으로써 r e,i를 갱신할 수 있다.
803 단계에서, r e,i > max(f s',k' + l e',e)인 경우, 즉 VM-i에 작업k가 수행되는 시간과 다른 작업이 수행되는 시간이 적어도 일부 중복되는 경우, 제어 서버는 연산 서버 e에서 작업이 VM-i보다 먼저 끝나는 VM-i'가 있는지 여부, 즉 r e,i'
Figure PCTKR2019014040-appb-img-000006
r e,i인 VM-i'가 있는지 여부를 판단할 수 있다.
804 단계에서, 연산 서버 e에서 작업이 VM-i보다 먼저 끝나는 VM-i'가 없는 경우, 제어 서버는 r e,i 이후로 b s,k, f s,k 를 결정하고, r e,i를 갱신할 수 있다.
예를 들어 제어 서버는 r e,i 값을 b s,k로 결정하고, b s,k에 작업 k의 작업 소요 시간을 합산한 값을 f s,k로 결정할 수 있다. 제어 서버는 결정된 f s,k 값을 r e,i로 결정함으로써 r e,i를 갱신할 수 있다.
즉, 작업 할당 단계에서 할당된 VM-i에 작업k가 수행되는 시간과 다른 작업이 수행되는 시간이 적어도 일부 중복되고, 작업이 VM-i보다 먼저 끝나는 VM-i'가 없는 경우, 제어 서버는 VM-i의 모든 작업이 끝난 이후 작업 k가 수행되도록 작업 k를 스케줄링할 수 있다.
805 단계에서, 연산 서버 e에서 작업이 VM-i보다 먼저 끝나는 VM-i'가 있는 경우, 제어 서버는 작업 k를 VM-i'에 스케줄링할 수 있다.
제어 서버가 작업 k를 작업 할당 단계에서 할당된 VM-i와 다른 VM-i'에 작업 k를 스케줄링하는 경우, 연산 서버 e 내에서 작업 k를 할당하는 VM만 조정되므로, 스텝 s에서 작업 k가 수행되는 데에 추가적인 전송 지연 시간이 발생하지 않을 수 있다.
예를 들어, 제어 서버는 연산 서버 e 내에서 작업이 가장 빨리 끝나는 VM에 작업 k를 스케줄링할 수 있다.
806 단계에서, 제어 서버는 r e,i'
Figure PCTKR2019014040-appb-img-000007
max(f s',k' + l e',e) 인지 여부를 판단할 수 있다.
r e,i'
Figure PCTKR2019014040-appb-img-000008
max(f s',k' + l e',e)인 경우, 연산 서버e'의 VM-i'에 할당된 작업이 끝난 후 작업 k를 수행하게 되므로 VM-i'에 작업k가 다른 작업과 동시에 할당되지 않는다.
r e,i' > max(f s',k' + l e',e)인 경우, 연산 서버e의 VM-i'에 할당된 작업이 끝나기 전에 작업 k를 수행하게 되므로, 즉 작업을 할당하는 단계에서 결정된 b s,k가 r e,i'보다 작으므로, VM-i'에 작업k가 수행되는 시간과 다른 작업이 수행되는 시간이 적어도 일부 중복된다.
807 단계에서, r e,i'
Figure PCTKR2019014040-appb-img-000009
max(f s',k' + l e',e)인 경우, 제어 서버는 b s,k, f s,k 를 결정하고, r e,i'를 갱신할 수 있다.
예를 들어 제어 서버는 max(f s',k' + l e',e) 값을 작업 k가 시작되는 시각인 b s,k로 결정하고, b s,k에 작업 k의 작업 소요 시간을 합산한 값을 f s,k로 결정할 수 있다. 제어 서버는 결정된 f s,k 값을 r e,i'로 결정함으로써 r e,i'를 갱신할 수 있다.
808 단계에서, r e,i' > max(f s',k' + l e',e)인 경우, 제어 서버는 r e,i' 이후로 b s,k, f s,k 를 결정하고, r e,i'를 갱신할 수 있다.
예를 들어 제어 서버는 r e,i' 값을 b s,k로 결정하고, b s,k에 작업 k의 작업 소요 시간을 합산한 값을 f s,k로 결정할 수 있다. 제어 서버는 결정된 f s,k 값을 r e,i'로 결정함으로써 r e,i'를 갱신할 수 있다.
제어 서버는 도 8을 참조하여 설명한 바와 같이, 제1 연산 서버의 제1 VM에 할당된 제1 작업 및 제2 작업에 대해, 제1 작업이 수행되는 시간과 제2 작업이 수행되는 시간이 적어도 일부 중복되는 경우, 제2 작업을 제1 연산 서버의 제2 VM에 할당하고 제2 작업이 제2 VM에서 수행되는 시간을 결정하거나, 제1 작업이 수행된 후 제2 작업이 수행되도록 제1 VM에서 제2 작업이 수행되는 시간을 결정할 수 있다. 즉 제어 서버는 작업들이 동일한 시간 구간 동안 하나의 VM에 중복되어 할당되지 않도록 스케줄링할 수 있다.
또한 제어 서버는 각 작업이 수행되는 시간을 결정함으로써 전체 컴퓨팅 작업의 완료 시간을 알 수 있다. 예를 들어, 전체 컴퓨팅 작업의 마지막 스텝의 작업의 r e,i가 전체 컴퓨팅 작업의 완료 시간을 나타낼 수 있다.
도 9는 일부 실시예에 따른 단말이 제어 서버에 컴퓨팅 작업을 오프로딩하는 방법을 설명하기 위한 흐름도이다.
910 단계에서, 단말은 제어 서버에 복수의 작업들을 포함하는 컴퓨팅 작업을 송신할 수 있다.
단말은 컴퓨팅 작업과 함께 컴퓨팅 작업에 대한 오프로딩 요청을 제어 서버에 송신할 수 있다. 컴퓨팅 작업의 종류는 다양하게 정해질 수 있다. 예를 들어, 컴퓨팅 작업은 단말에 설치된 어플리케이션에서 제공되는 서비스가 수행되기 위한 연산 집합일 수 있다. 물론 이에 한정되지 않고 컴퓨팅 작업은 다양한 종류의 작업을 포함할 수 있다.
920 단계에서, 단말은 제어 서버 또는 적어도 하나의 연산 서버로부터 복수의 작업들의 수행 결과를 수신할 수 있다.
복수의 작업들의 수행 결과는, 일부 실시예에 따른 제어 서버가 도 1 내지 도 8을 참조하여 설명한 다양한 방법에 의해 복수의 작업들을 복수의 연산 서버들에 스케줄링하고, 복수의 연산 서버들이 스케줄링에 따라 연산을 수행한 결과일 수 있다. 예를 들어, 복수의 작업들의 수행 결과는, 복수의 작업들이 복수의 작업들 각각의 의존 관계에 기초하여 생성된 작업 의존성 그래프(task dependency graph), 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보에 기초하여 스케줄링된 복수의 연산 서버로부터 복수의 작업들이 수행된 결과일 수 있다.
도 10은 일부 실시예에 따른 제어 서버(1000)의 블록도이다.
도 10을 참조하면, 제어 서버(1000)는 송수신부(1020), 프로세서(1010) 및 메모리(1030)를 포함할 수 있다. 상기 실시예들에서 제안한 제어 서버의 스케줄링 방법에 따라, 송수신부(1020), 프로세서(1010) 및 메모리(1030)가 동작할 수 있다. 다만, 일부 실시예에 따른 제어 서버(1000)의 구성 요소가 전술한 예에 한정되는 것은 아니다. 다른 실시예에 따라, 제어 서버(1000)는 전술한 구성 요소들 보다 더 많은 구성 요소를 포함하거나 더 적은 구성 요소를 포함할 수도 있다. 뿐만 아니라 특정한 경우 송수신부(1020), 프로세서(1010) 및 메모리(1030)가 하나의 칩(chip) 형태로 구현될 수도 있다.
송수신부(1020)는 적어도 하나의 단말 및 복수의 연산 서버들과 신호를 송수신할 수 있다. 신호는 제어 정보 및 데이터를 포함할 수 있다. 이를 위해, 송수신부(1020)는 송신되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신기 및 수신되는 신호를 저 잡음 증폭하고 주파수를 하강 변환하는 RF 수신기 등으로 구성될 수 있다. 다만, 이는 일 실시예일뿐, 송수신부(1020)의 구성 요소가 RF 송신기 및 RF 수신기로 한정되는 것은 아니다.
또한, 송수신부(1020)는 무선 채널을 통해 신호를 수신하여 프로세서(1010)로 출력하고, 프로세서(1010)로부터 출력된 신호를 무선 채널을 통해 송신할 수 있다.
프로세서(1010)는 상술한 본 개시의 실시예에 따라 제어 서버(1000)가 동작할 수 있도록 일련의 과정을 제어할 수 있다. 예를 들어, 프로세서(1010)는 전술한 실시예들 중 적어도 하나 이상의 신호 송수신 방법을 수행할 수 있다.
일부 실시예에 따른 프로세서(1010)는, 단말로부터 컴퓨팅 작업을 수신하고, 컴퓨팅 작업에 포함된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프(task dependency graph)를 생성하고, 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득하고, 작업 의존성 그래프, 연산 처리 용량 정보, 및 전송 지연 시간 정보에 기초하여, 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링하고, 복수의 연산 서버들 중 적어도 하나의 연산 서버로부터 수신한 복수의 작업들의 수행 결과를 단말에 송신하도록 제어할 수 있다.
일부 실시예에 따른 프로세서(1010)는, 복수의 작업들 각각의 연산 복잡도를 식별하고, 복수의 작업들 중 적어도 하나의 작업을 적어도 하나의 부속 작업(sub-task)으로 변환함으로써, 복수의 작업들 각각의 연산 복잡도를 조정하고, 연산 복잡도가 조정된 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프를 생성할 수 있다.
일부 실시예에 따른 프로세서(1010)는, 복수의 작업들 중 제2 작업이 제1 작업과 의존 관계를 갖는 경우, 제1 작업이 할당된 제1 연산 서버에 제2 작업을 할당하고, 제1 연산 서버에 제2 작업을 할당할 수 없는 경우, 전송 지연 시간 정보에 기초하여 제2 작업을 할당할 수 있는 연산 서버 중 제1 연산 서버로부터의 전송 지연 시간이 가장 짧은 제2 연산 서버에 제2 작업을 할당할 수 있다.
일부 실시예에 따른 프로세서(1010)는, 복수의 작업들 중 제2 작업이 제1 작업과 의존 관계를 갖는 경우, 제1 작업이 할당된 제1 연산 서버에 제2 작업을 할당하고, 제1 연산 서버에 제2 작업을 할당할 수 없는 경우, 전송 지연 시간 정보에 기초하여 제1 연산 서버로부터의 전송 지연 시간이 가장 짧은 제2 연산 서버에 제2 작업을 할당하고, 제2 연산 서버에 제2 작업을 할당할 수 없는 경우, 연산 처리 용량 정보에 기초하여 복수의 연산 서버들 중 가장 큰 연산 처리 용량을 가진 제3 연산 서버에 제2 작업을 할당할 수 있다.
일부 실시예에 따르면, 제어 서버(1000)는 복수의 연산 서버들 각각은 복수의 VM(virtual machine)들을 포함하고, 프로세서(1010)는, 복수의 작업들 각각을 복수의 연산 서버들에 할당하고 복수의 작업들 각각이 수행되는 시간을 결정함으로써 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링하고, 제1 연산 서버의 제1 VM에 할당된 제1 작업 및 제2 작업에 대해, 제1 작업이 수행되는 시간과 제2 작업이 수행되는 시간이 적어도 일부 중복되는 경우, 제2 작업을 제1 연산 서버의 제2 VM에 할당하고 제2 작업이 수행되는 시간을 결정하거나, 제1 작업이 수행된 후 제2 작업이 수행되도록 제2 작업이 수행되는 시간을 결정할 수 있다.
일부 실시예에 따른 프로세서(1010)는, 복수의 작업들 각각을 복수의 연산 서버들에 할당하고 복수의 작업들 각각이 수행되는 시간을 결정함으로써 복수의 작업들 각각을 복수의 연산 서버들에 스케줄링하고, 복수의 작업들 각각의 연산 복잡도를 식별하고, 복수의 작업들 중 적어도 하나의 작업을 적어도 하나의 부속 작업(sub-task)으로 변환함으로써, 복수의 작업들 각각의 연산 복잡도를 조정하고, 연산 복잡도가 조정된 복수의 작업들 각각의 의존 관계에 따라, 펼쳐진(spread) 작업 의존성 그래프를 생성하고, 펼쳐진 작업 의존성 그래프에 기초하여 복수의 작업들 각각을 복수의 연산 서버들에 할당하고, 연산 복잡도가 조정되지 않은 복수의 작업들 각각의 의존 관계에 기초하여 생성된 작업 의존성 그래프에 기초하여 복수의 작업들 각각이 수행되는 시간을 결정할 수 있다.
메모리(1030)는 제어 서버(1000)에서 획득되는 신호에 포함된 제어 정보 또는 데이터를 저장할 수 있으며, 프로세서(1010)의 제어에 필요한 데이터 및 프로세서(1010)에서 제어 시 발생되는 데이터 등을 저장하기 위한 영역을 가질 수 있다. 예를 들어, 메모리(1030)는 합산 가중치 결정을 위해 기 설정된 송신 안테나 가중치 정보 및 수신 안테나 가중치 정보를 저장할 수 있다. 또한, 메모리(1030)는 결정된 합산 가중치에 관한 정보를 저장할 수 있다.
이러한 메모리(1030)는 롬(ROM) 또는/및 램(RAM) 또는/및 하드디스크 또는/및 CD-ROM 또는/및 DVD 등의 다양한 형태로 구성될 수 있다.
도 11은 일부 실시예에 따른 단말(1100)의 블록도이다.
도 11을 참조하면, 단말(1100)은 송수신부(1120), 프로세서(1110) 및 메모리(1130)를 포함할 수 있다. 상기 실시예들에서 제안한 단말의 스케줄링 방법에 따라, 송수신부(1120), 프로세서(1110) 및 메모리(1130)가 동작할 수 있다. 다만, 일부 실시예에 따른 단말(1100)의 구성 요소가 전술한 예에 한정되는 것은 아니다. 다른 실시예에 따라, 단말(1100)은 전술한 구성 요소들 보다 더 많은 구성 요소를 포함하거나 더 적은 구성 요소를 포함할 수도 있다. 뿐만 아니라 특정한 경우 송수신부(1120), 프로세서(1110) 및 메모리(1130)가 하나의 칩(chip) 형태로 구현될 수도 있다.
송수신부(1120)는 제어 서버 및 복수의 연산 서버들과 신호를 송수신할 수 있다. 신호는 제어 정보 및 데이터를 포함할 수 있다. 이를 위해, 송수신부(1120)는 송신되는 신호의 주파수를 상승 변환 및 증폭하는 RF 송신기 및 수신되는 신호를 저 잡음 증폭하고 주파수를 하강 변환하는 RF 수신기 등으로 구성될 수 있다. 다만, 이는 일 실시예일뿐, 송수신부(1120)의 구성 요소가 RF 송신기 및 RF 수신기로 한정되는 것은 아니다.
또한, 송수신부(1120)는 무선 채널을 통해 신호를 수신하여 프로세서(1110)로 출력하고, 프로세서(1110)로부터 출력된 신호를 무선 채널을 통해 송신할 수 있다.
프로세서(1110)는 상술한 본 개시의 실시예에 따라 단말(1100)이 동작할 수 있도록 일련의 과정을 제어할 수 있다. 예를 들어, 프로세서(1110)는 전술한 실시예들 중 적어도 하나 이상의 신호 송수신 방법을 수행할 수 있다.
일부 실시예에 따른 프로세서(1110)는, 제어 서버에 컴퓨팅 작업을 송신하고, 제어 서버 또는 적어도 하나의 연산 서버로부터 복수의 작업들의 수행 결과를 수신하도록 제어할 수 있다. 복수의 작업들의 수행 결과는, 복수의 작업들이 복수의 작업들 각각의 의존 관계에 기초하여 생성된 작업 의존성 그래프(task dependency graph), 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보에 기초하여 스케줄링된 복수의 연산 서버로부터 복수의 작업들이 수행된 결과일 수 있다.
메모리(1130)는 단말(1100)에서 획득되는 신호에 포함된 제어 정보 또는 데이터를 저장할 수 있으며, 프로세서(1110)의 제어에 필요한 데이터 및 프로세서(1110)에서 제어 시 발생되는 데이터 등을 저장하기 위한 영역을 가질 수 있다. 예를 들어, 메모리(1130)는 합산 가중치 결정을 위해 기 설정된 송신 안테나 가중치 정보 및 수신 안테나 가중치 정보를 저장할 수 있다. 또한, 메모리(1130)는 결정된 합산 가중치에 관한 정보를 저장할 수 있다.
이러한 메모리(1130)는 롬(ROM) 또는/및 램(RAM) 또는/및 하드디스크 또는/및 CD-ROM 또는/및 DVD 등의 다양한 형태로 구성될 수 있다.
한편, 본 명세서와 도면에 개시된 본 개시의 실시예들은 본 개시의 기술 내용을 쉽게 설명하고 본 개시의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 개시의 범위를 한정하고자 하는 것은 아니다.
즉 본 개시의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은 본 개시의 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다. 또한 상기 각각의 실시예는 설명의 편의를 위하여 구분된 것으로, 필요에 따라 서로 조합되어 운용할 수 있다. 예컨대, 본 개시의 각각의 실시예의 일부분들이 서로 조합되어 제어 서버와 단말이 운용될 수 있다. 또한, 실시예들은 다른 시스템, 예를 들어, LTE 시스템, 5G 또는 NR 시스템 등에도 상술한 실시예의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능할 수 있다.
개시된 실시예에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 
개시된 실시예에 따른 장치의 동작방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 전술한 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 전술한 매체에 기록되는 프로그램 명령은 본 개시를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 전술한 컴퓨터 판독 가능 매체는 컴퓨터 프로그램 제품에 포함될 수 있다.
컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
개시된 실시예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다.  이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다.  예를 들어, 개시된 실시예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다.  개시된 실시예의 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 개시된 실시예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다.  기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다.  또한, 개시된 실시예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다.

Claims (14)

  1. 복수의 작업들을 포함하는 컴퓨팅 작업(task)을 복수의 연산 서버들에 스케줄링하는 제어 서버에 있어서,
    송수신부;
    메모리; 및
    단말로부터 상기 컴퓨팅 작업을 수신하고,
    상기 컴퓨팅 작업에 포함된 상기 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프(task dependency graph)를 생성하고,
    상기 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득하고,
    상기 작업 의존성 그래프, 상기 연산 처리 용량 정보, 및 상기 전송 지연 시간 정보에 기초하여, 상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 스케줄링하고,
    상기 복수의 연산 서버들 중 적어도 하나의 연산 서버로부터 수신한 상기 복수의 작업들의 수행 결과를 상기 단말에 송신하도록 제어하는 적어도 하나의 프로세서를 포함하는, 제어 서버.
  2. 제1항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 복수의 작업들 각각의 연산 복잡도를 식별하고,
    상기 복수의 작업들 중 적어도 하나의 작업을 적어도 하나의 부속 작업(sub-task)으로 변환함으로써, 상기 복수의 작업들 각각의 연산 복잡도를 조정하고,
    상기 연산 복잡도가 조정된 복수의 작업들 각각의 의존 관계에 기초하여 상기 작업 의존성 그래프를 생성하는, 제어 서버.
  3. 제1항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 복수의 작업들 중 제2 작업이 제1 작업과 의존 관계를 갖는 경우,
    상기 제1 작업이 할당된 제1 연산 서버에 상기 제2 작업을 할당하고,
    상기 제1 연산 서버에 상기 제2 작업을 할당할 수 없는 경우, 상기 전송 지연 시간 정보에 기초하여 상기 제2 작업을 할당할 수 있는 연산 서버 중 상기 제1 연산 서버로부터의 전송 지연 시간이 가장 짧은 제2 연산 서버에 상기 제2 작업을 할당하는, 제어 서버.
  4. 제1항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 복수의 작업들 중 제2 작업이 제1 작업과 의존 관계를 갖는 경우,
    상기 제1 작업이 할당된 제1 연산 서버에 상기 제2 작업을 할당하고,
    상기 제1 연산 서버에 상기 제2 작업을 할당할 수 없는 경우, 상기 전송 지연 시간 정보에 기초하여 상기 제1 연산 서버로부터의 전송 지연 시간이 가장 짧은 제2 연산 서버에 상기 제2 작업을 할당하고,
    상기 제2 연산 서버에 상기 제2 작업을 할당할 수 없는 경우, 상기 연산 처리 용량 정보에 기초하여 상기 복수의 연산 서버들 중 가장 큰 연산 처리 용량을 가진 제3 연산 서버에 상기 제2 작업을 할당하는, 제어 서버.
  5. 제1항에 있어서,
    상기 제어 서버는, 상기 복수의 연산 서버들 각각은 복수의 VM(virtual machine)들을 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 할당하고 상기 복수의 작업들 각각이 수행되는 시간을 결정함으로써 상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 스케줄링하고,
    제1 연산 서버의 제1 VM에 할당된 제1 작업 및 제2 작업에 대해, 상기 제1 작업이 수행되는 시간과 상기 제2 작업이 수행되는 시간이 적어도 일부 중복되는 경우, 상기 제2 작업을 제1 연산 서버의 제2 VM에 할당하고 상기 제2 작업이 수행되는 시간을 결정하거나, 상기 제1 작업이 수행된 후 상기 제2 작업이 수행되도록 상기 제2 작업이 수행되는 시간을 결정하는, 제어 서버.
  6. 제1항에 있어서, 상기 적어도 하나의 프로세서는,
    상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 할당하고 상기 복수의 작업들 각각이 수행되는 시간을 결정함으로써 상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 스케줄링하고,
    상기 복수의 작업들 각각의 연산 복잡도를 식별하고, 상기 복수의 작업들 중 적어도 하나의 작업을 적어도 하나의 부속 작업(sub-task)으로 변환함으로써, 상기 복수의 작업들 각각의 연산 복잡도를 조정하고, 상기 연산 복잡도가 조정된 복수의 작업들 각각의 의존 관계에 따라, 펼쳐진(spread) 작업 의존성 그래프를 생성하고, 상기 펼쳐진 작업 의존성 그래프에 기초하여 상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 할당하고,
    연산 복잡도가 조정되지 않은 상기 복수의 작업들 각각의 의존 관계에 기초하여 생성된 상기 작업 의존성 그래프에 기초하여 상기 복수의 작업들 각각이 수행되는 시간을 결정하는, 제어 서버.
  7. 제어 서버에 복수의 작업들을 포함하는 컴퓨팅 작업(task)을 오프로딩하는 단말에 있어서,
    송수신부;
    메모리; 및
    상기 제어 서버에 상기 컴퓨팅 작업을 송신하고,
    상기 제어 서버 또는 적어도 하나의 연산 서버로부터 상기 복수의 작업들의 수행 결과를 수신하도록 제어하는 적어도 하나의 프로세서를 포함하고,
    상기 수행 결과는, 상기 복수의 작업들이 상기 복수의 작업들 각각의 의존 관계에 기초하여 생성된 작업 의존성 그래프(task dependency graph), 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보에 기초하여 스케줄링된 상기 복수의 연산 서버로부터 상기 복수의 작업들이 수행된 결과인, 단말.
  8. 제어 서버가 복수의 작업들을 포함하는 컴퓨팅 작업(task)을 복수의 연산 서버들에 스케줄링하는 방법에 있어서,
    단말로부터 상기 컴퓨팅 작업을 수신하는 단계;
    상기 컴퓨팅 작업에 포함된 상기 복수의 작업들 각각의 의존 관계에 기초하여 작업 의존성 그래프(task dependency graph)를 생성하는 단계;
    상기 복수의 연산 서버들 각각의 연산 처리 용량 정보 및 복수의 연산 서버들 사이의 전송 지연 시간 정보를 획득하는 단계;
    상기 작업 의존성 그래프, 상기 연산 처리 용량 정보, 및 상기 전송 지연 시간 정보에 기초하여, 상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 스케줄링하는 단계;
    상기 복수의 연산 서버들 중 적어도 하나의 연산 서버로부터 수신한 상기 복수의 작업들의 수행 결과를 상기 단말에 송신하는 단계를 포함하는, 스케줄링 방법.
  9. 제8항에 있어서,
    상기 작업 의존성 그래프를 생성하는 단계는,
    상기 복수의 작업들 각각의 연산 복잡도를 식별하는 단계;
    상기 복수의 작업들 중 적어도 하나의 작업을 적어도 하나의 부속 작업(sub-task)으로 변환함으로써, 상기 복수의 작업들 각각의 연산 복잡도를 조정하는 단계; 및
    상기 연산 복잡도가 조정된 복수의 작업들 각각의 의존 관계에 기초하여 상기 작업 의존성 그래프를 생성하는 단계를 포함하는, 스케줄링 방법.
  10. 제8항에 있어서,
    상기 스케줄링하는 단계는, 상기 복수의 작업들 중 제2 작업이 제1 작업과 의존 관계를 갖는 경우,
    상기 제1 작업이 할당된 제1 연산 서버에 상기 제2 작업을 할당하고,
    상기 제1 연산 서버에 상기 제2 작업을 할당할 수 없는 경우, 상기 전송 지연 시간 정보에 기초하여 상기 제2 작업을 할당할 수 있는 연산 서버 중 상기 제1 연산 서버로부터의 전송 지연 시간이 가장 짧은 제2 연산 서버에 상기 제2 작업을 할당하는 단계를 포함하는, 스케줄링 방법.
  11. 제8항에 있어서,
    상기 스케줄링하는 단계는, 상기 복수의 작업들 중 제2 작업이 제1 작업과 의존 관계를 갖는 경우,
    상기 제1 작업이 할당된 제1 연산 서버에 상기 제2 작업을 할당하고,
    상기 제1 연산 서버에 상기 제2 작업을 할당할 수 없는 경우, 상기 전송 지연 시간 정보에 기초하여 상기 제1 연산 서버로부터의 전송 지연 시간이 가장 짧은 제2 연산 서버에 상기 제2 작업을 할당하고,
    상기 제2 연산 서버에 상기 제2 작업을 할당할 수 없는 경우, 상기 연산 처리 용량 정보에 기초하여 상기 복수의 연산 서버들 중 가장 큰 연산 처리 용량을 가진 제3 연산 서버에 상기 제2 작업을 할당하는 단계를 포함하는, 스케줄링 방법.
  12. 제8항에 있어서,
    상기 복수의 연산 서버들 각각은 복수의 VM(virtual machine)들을 포함하고,
    상기 스케줄링하는 단계는,
    상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 할당하는 단계; 및
    상기 복수의 작업들 각각이 수행되는 시간을 결정하는 단계를 포함하고,
    상기 수행되는 시간을 결정하는 단계는,
    제1 연산 서버의 제1 VM에 할당된 제1 작업 및 제2 작업에 대해, 상기 제1 작업이 수행되는 시간과 상기 제2 작업이 수행되는 시간이 적어도 일부 중복되는 경우, 상기 제2 작업을 제1 연산 서버의 제2 VM에 할당하고 상기 제2 작업이 수행되는 시간을 결정하거나, 상기 제1 작업이 수행된 후 상기 제2 작업이 수행되도록 상기 제2 작업이 수행되는 시간을 결정하는, 스케줄링 방법.
  13. 제12항에 있어서,
    상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 할당하는 단계는,
    상기 복수의 작업들 각각의 연산 복잡도를 식별하는 단계;
    상기 복수의 작업들 중 적어도 하나의 작업을 적어도 하나의 부속 작업(sub-task)으로 변환함으로써, 상기 복수의 작업들 각각의 연산 복잡도를 조정하는 단계;
    상기 연산 복잡도가 조정된 복수의 작업들 각각의 의존 관계에 따라, 펼쳐진(spread) 작업 의존성 그래프를 생성하는 단계; 및
    상기 펼쳐진 작업 의존성 그래프에 기초하여 상기 복수의 작업들 각각을 상기 복수의 연산 서버들에 할당하는 단계를 포함하고,
    상기 수행되는 시간을 결정하는 단계는,
    연산 복잡도가 조정되지 않은 상기 복수의 작업들 각각의 의존 관계에 기초하여 생성된 상기 작업 의존성 그래프에 기초하여 상기 복수의 작업들 각각이 수행되는 시간을 결정하는 단계를 포함하는, 스케줄링 방법.
  14. 제8항의 방법을 수행하도록 하는 프로그램이 저장된 기록매체를 포함하는 컴퓨터 프로그램 제품.
PCT/KR2019/014040 2018-11-06 2019-10-24 작업 의존성에 기초하여 컴퓨팅 작업을 서버에 스케줄링하는 방법 및 장치 WO2020096239A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/309,183 US20210373947A1 (en) 2018-11-06 2019-10-24 Method and device for arranging schedule for computing task to server on basis of task dependency

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180135343A KR102598084B1 (ko) 2018-11-06 2018-11-06 작업 의존성에 기초하여 컴퓨팅 작업을 서버에 스케줄링하는 방법 및 장치
KR10-2018-0135343 2018-11-06

Publications (1)

Publication Number Publication Date
WO2020096239A1 true WO2020096239A1 (ko) 2020-05-14

Family

ID=70611398

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2019/014040 WO2020096239A1 (ko) 2018-11-06 2019-10-24 작업 의존성에 기초하여 컴퓨팅 작업을 서버에 스케줄링하는 방법 및 장치

Country Status (3)

Country Link
US (1) US20210373947A1 (ko)
KR (1) KR102598084B1 (ko)
WO (1) WO2020096239A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113094177A (zh) * 2021-04-21 2021-07-09 上海商汤科技开发有限公司 一种任务分发系统、方法、装置、计算机设备及存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111953730B (zh) * 2020-07-02 2024-01-09 华北电力大学(保定) 一种基于noma的服务器协作边缘计算方法
EP4191487A1 (en) * 2021-12-06 2023-06-07 Tata Consultancy Services Limited Enhancing batch predictions by localizing jobs contributing to time deviation and generating fix recommendations
WO2023225938A1 (en) * 2022-05-26 2023-11-30 Citrix Systems, Inc. Systems and methods for scheduling multiple participant tasks

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011243120A (ja) * 2010-05-20 2011-12-01 Nec Corp ジョブ管理装置、ジョブ管理方法、およびジョブ管理プログラム
US20140108861A1 (en) * 2012-10-15 2014-04-17 Hadapt, Inc. Systems and methods for fault tolerant, adaptive execution of arbitrary queries at low latency
KR20150009662A (ko) * 2013-07-16 2015-01-27 한국전자통신연구원 가상 데스크톱 서비스 제공 방법 및 장치
JP2016162067A (ja) * 2015-02-27 2016-09-05 日本電気株式会社 情報処理システムおよびその制御方法
KR20170044320A (ko) * 2015-10-15 2017-04-25 주식회사 비디 분산 컴퓨팅 기반의 어플리케이션 객체 분석 방법, 이를 수행하는 어플리케이션 객체 분석 서버 및 이를 저장하는 기록매체

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101013073B1 (ko) * 2007-12-17 2011-02-14 한국전자통신연구원 태스크 분배 및 병렬 처리 시스템과 그 방법
US8332852B2 (en) * 2008-07-21 2012-12-11 International Business Machines Corporation Thread-to-processor assignment based on affinity identifiers
US9002721B2 (en) * 2008-10-08 2015-04-07 Appirio, Inc. System and method for project management and completion
US9542231B2 (en) * 2010-04-13 2017-01-10 Et International, Inc. Efficient execution of parallel computer programs
KR20130088512A (ko) * 2012-01-31 2013-08-08 한국전자통신연구원 클러스터 컴퓨팅 환경에서의 자원 관리 장치 및 방법
US9485197B2 (en) * 2014-01-15 2016-11-01 Cisco Technology, Inc. Task scheduling using virtual clusters
US9442760B2 (en) * 2014-10-03 2016-09-13 Microsoft Technology Licensing, Llc Job scheduling using expected server performance information
KR101656706B1 (ko) * 2015-04-02 2016-09-22 두산중공업 주식회사 고성능 컴퓨팅 환경에서의 작업 분배 시스템 및 방법
US9612865B2 (en) * 2015-06-15 2017-04-04 International Business Machines Corporation Managed services coordinator

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011243120A (ja) * 2010-05-20 2011-12-01 Nec Corp ジョブ管理装置、ジョブ管理方法、およびジョブ管理プログラム
US20140108861A1 (en) * 2012-10-15 2014-04-17 Hadapt, Inc. Systems and methods for fault tolerant, adaptive execution of arbitrary queries at low latency
KR20150009662A (ko) * 2013-07-16 2015-01-27 한국전자통신연구원 가상 데스크톱 서비스 제공 방법 및 장치
JP2016162067A (ja) * 2015-02-27 2016-09-05 日本電気株式会社 情報処理システムおよびその制御方法
KR20170044320A (ko) * 2015-10-15 2017-04-25 주식회사 비디 분산 컴퓨팅 기반의 어플리케이션 객체 분석 방법, 이를 수행하는 어플리케이션 객체 분석 서버 및 이를 저장하는 기록매체

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113094177A (zh) * 2021-04-21 2021-07-09 上海商汤科技开发有限公司 一种任务分发系统、方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
KR102598084B1 (ko) 2023-11-03
US20210373947A1 (en) 2021-12-02
KR20200052135A (ko) 2020-05-14

Similar Documents

Publication Publication Date Title
WO2020096239A1 (ko) 작업 의존성에 기초하여 컴퓨팅 작업을 서버에 스케줄링하는 방법 및 장치
WO2022055333A1 (en) Multi-cell scheduling with reduced control overhead
WO2019031900A1 (ko) V2x 통신 방법 및 단말
WO2022035238A1 (en) Adaptive cross-carrier scheduling and flexible pucch groups
WO2021006618A1 (en) Monitoring of downlink control channels for communication with multiple transmission-reception points
WO2020231161A1 (ko) 무선 통신 시스템에서 시스템 정보 블록 송수신 방법 및 장치
EP3453216A1 (en) Method and user equipment for transmitting uplink signals
WO2017171504A1 (en) Method and apparatus for providing different services in mobile communication system
WO2020040530A1 (en) Method and apparatus for performing communication in wireless communication system
WO2020055172A1 (en) Improvements in and relating to telecommunication networks
WO2020197183A1 (en) Transmit power control apparatus and method of electronic device in wireless communication system
WO2021225406A1 (en) Method and device for generating and removing dynamic eas using ue app and status
WO2020060143A1 (ko) 무선 통신 시스템에서 전송 전력을 제어하는 방법 및 장치
WO2020105969A1 (ko) 무선 통신 시스템에서 업링크 동작을 결정하는 전자 장치 및 그 방법
WO2020075980A1 (ko) 동적 시분할 듀플렉스 환경에서 셀 간 간섭 완화 방법 및 그 전자 장치
EP4023017A1 (en) Signal transmission method and device for ue
WO2020145622A1 (ko) 무선 통신 시스템에서 단말의 전력 소모 감소 방법 및 장치
WO2018062969A1 (en) Method and device of power control
WO2018084638A1 (ko) 무선 이동 통신 시스템에서 단말의 신호 전송 방법 및 장치
WO2020167095A1 (en) Method and apparatus for registering api provider domain function entities on capif core function entity
WO2020145793A1 (ko) 무선 통신 시스템에서 복수의 물리 하향링크 공유 채널들을 송수신하는 방법 및 이를 위한 장치
WO2015186955A1 (en) Apparatus and method for mitigating interference in wireless communication system
WO2021235899A1 (en) Methods and devices for transmitting data and control information
WO2021029691A1 (en) Method for controlling wireless relay device and corresponding devices
WO2021172862A1 (ko) 통신 네트워크에서 위장 기지국의 공격을 방어하는 방법, 관리 서버 및 기지국

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

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

Country of ref document: EP

Kind code of ref document: A1