WO2018067047A1 - Method and module for assigning task to server entity - Google Patents

Method and module for assigning task to server entity Download PDF

Info

Publication number
WO2018067047A1
WO2018067047A1 PCT/SE2016/050951 SE2016050951W WO2018067047A1 WO 2018067047 A1 WO2018067047 A1 WO 2018067047A1 SE 2016050951 W SE2016050951 W SE 2016050951W WO 2018067047 A1 WO2018067047 A1 WO 2018067047A1
Authority
WO
WIPO (PCT)
Prior art keywords
resource
task
type
server
dominant
Prior art date
Application number
PCT/SE2016/050951
Other languages
French (fr)
Inventor
Yue Lu
Original Assignee
Telefonaktiebolaget Lm Ericsson (Publ)
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 Telefonaktiebolaget Lm Ericsson (Publ) filed Critical Telefonaktiebolaget Lm Ericsson (Publ)
Priority to PCT/SE2016/050951 priority Critical patent/WO2018067047A1/en
Publication of WO2018067047A1 publication Critical patent/WO2018067047A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/5044Allocation 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 hardware capabilities
    • 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/5072Grid computing

Definitions

  • Embodiments herein relate to computer systems.
  • a method and a task module for assigning a plurality of tasks to a set of server entities associated with a resource system, such as a computer system are disclosed.
  • a corresponding computer program and a computer program carrier are also disclosed.
  • Computer systems typically comprise a hardware architecture and a software architecture.
  • the hardware architecture deals with how different resources, such as processing power, memory, hard-drives, networking interface and the like, are interconnected to each other, e.g. interconnected in terms of physical formats, number of wires etc.
  • the software architecture deals with how different programs, such as operating systems, applications, applets, virtual machines and more, are managed and executed on the hardware architecture.
  • Each rack comprises one or more fully functional computers, e.g. embodied as one or more server blades, or a casing housing a computer.
  • server blade is self-contained with resources, such as processors, memory, storage, networking interface and Input/Output (I/O) peripherals.
  • a disaggregated hardware architecture such as Intel Rack Scale architecture and HyperScale Datacenter Systems, separates the resources - which with the traditional hardware architecture would have been confined within one blade - that make up a hardware machine, such a computer, server or the like.
  • the separated resources are organized into pools. Then, a host machine is allocated by picking resources of from the pools.
  • Apache Mesos Central Processing Units (CPUs), P50707 2 memories, storages etc. are abstracted away from machines (physical or virtual).
  • each cluster node e.g. a physical or virtual machine, runs a so called Mesos agent.
  • the Mesos agents report their available resources in terms of CPU, memory, storage to a Mesos master.
  • the Mesos master receives requests from different users, such as Hadoop, Spark, etc.
  • a request from a specific user indicates a job, including one or more tasks, to be executed on the Mesos agents.
  • the Mesos master will, upon receiving a request, find a suitable Mesos agent for execution of the related task.
  • each user's dominant share i.e. a maximum ratio of any resource that the user has been allocated
  • the DRF allocation possesses a set of fairness properties, but a disadvantage of the DRF, and related work that addresses demand heterogeneity of multiple resources, is that they apply a simplified model in which all resources are assumed to be pooled at one place and abstracted as one big server. Accordingly, such simplified model matches poorly with some prevalent and popular data center infrastructure, in which resources are distributed to a large number of servers, be it physical or virtual, with different sizes.
  • An object may be to improve assignment of tasks to servers.
  • the object is achieved by a method, performed by a task module, for assigning a plurality of tasks to a set of server entities associated with a resource system.
  • the resource system comprises resources of a set of resource types.
  • Each server entity of the set of server entities is associated with respective resources.
  • the task module obtains information about the plurality of tasks.
  • the plurality of tasks is associated with task types.
  • Each task type of the task types is associated with a respective demand of resources.
  • the task module further obtains information about available resources associated with the resource system.
  • the task module calculates, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources.
  • Each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types.
  • a respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares.
  • the task module selects a task among the plurality of tasks.
  • a task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares.
  • the task module initializes a set of global dominant task type resource shares.
  • the set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types.
  • the task module further performs the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity.
  • the task module selects a sub-set of server entities from among the set of server entities.
  • Each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task.
  • the task module calculates, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources.
  • Each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types.
  • a respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares.
  • Each said respective dominant server resource share is included among a set of dominant server resource shares.
  • the task module finds, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is P50707 4 among the greatest of a sub-set of dominant server resources shares of a particular resource type.
  • the particular resource type is equal to the resource type associated with the task type of the selected task.
  • the task module assigns the selected task to one of said at least one specific server entity.
  • the task module updates the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task.
  • the task module updates information about available resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources.
  • the task module finds a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares.
  • the task module further selects, among a sub-set of tasks taken from the plurality of tasks, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the subset. Tasks of the sub-set are of a task type associated with the next resource type.
  • a task module configured for assigning a plurality of tasks to a set of server entities associated with a resource system.
  • the resource system comprises resources of a set of resource types.
  • Each server entity of the set of server entities is associated with respective resources.
  • the task module is configured for obtaining information about the plurality of tasks.
  • the plurality of tasks is associated with task types.
  • Each task type of the task types is associated with a respective demand of resources.
  • the task module is further configured for obtaining information about available resources associated with the resource system.
  • the task module is configured for calculating, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources.
  • Each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types.
  • a respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares.
  • the task module is configured for selecting a task among the plurality of tasks.
  • a task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares.
  • the task module is configured for initializing a set of global dominant task type resource shares.
  • the set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types.
  • the task module is configured for performing the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity.
  • the task module is configured for selecting a sub-set of server entities from among the set of server entities.
  • Each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task.
  • the task module is configured for calculating, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources.
  • Each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types.
  • a respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares.
  • Each said respective dominant server resource share is included among a set of dominant server resource shares.
  • the task module is configured for finding, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type.
  • the particular resource type is equal to the resource type associated with the task type of the selected task.
  • the task module is configured for assigning the selected task to one of said at least one specific server entity.
  • the task module is configured for updating the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task,
  • the task module is further configured for updating information about available P50707 6 resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources.
  • the task module is configured for finding a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares.
  • the task module is configured for selecting, among a sub-set of tasks taken from the plurality of tasks, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set.
  • Tasks of the sub-set are of a task type associated with the next resource type.
  • the object is achieved by a computer program and a computer program carrier corresponding to the aspects above.
  • the set of global dominant task type resource shares is updated after the selected task has been assigned to said one of said at least one specific server entity.
  • the information about available resources is updated after the selected task has been assigned to said one of said at least one specific server entity.
  • the next resource type is found based on the respective global dominant task resource share in order to select the selected task for which the dominant task type resource share is the most extreme, i.e. among the greatest or among the least. In this manner, a fair and resource efficient assignment of tasks to server entities may be achieved. As a result, the above mentioned object is achieved.
  • the embodiments herein are applicable even when the resource system comprises server entities with different amount of resources.
  • Such resource system may sometimes be referred to as a hybrid environment.
  • the DFR of Apache Mesos may not be applied in, or at least have limited applicability in, such hybrid environment and may also use resources inefficiently.
  • Figure 1 is a schematic overview illustrating an exemplifying hardware and software system, in which embodiments herein may be implemented,
  • Figure 2 is a schematic flowchart illustrating an exemplifying method according to embodiments herein.
  • Figure 3 is a schematic block diagram illustrating an exemplifying task module according to embodiments herein.
  • FIG. 1 depicts an exemplifying hardware and software system 100 in which embodiments herein may be implemented.
  • the hardware and software system 100 may include a disaggregated hardware system or a traditional hardware system, including a plurality of physical, self-contained hardware machines.
  • the hardware and software system 100 may be a hybrid cloud, a data center or the like.
  • the present disclosure relates to a method performed by a task module 110, which manages assignment of tasks to server entities.
  • a task module 110 which manages assignment of tasks to server entities.
  • further description of the hardware and software system 100 will be provided in the following.
  • the hardware and software system 100 may be said to comprise a resource system 101.
  • the resource system 101 comprises resources, which may comprise one or more of compute resources 102, memory resources 103, network I/O resources 104, storage resources (not shown) and the like.
  • Each resource type e.g. compute resource type, memory resource type, etc.
  • the resource P50707 8 system 101 may include all or some of a total amount of resources of the resource system 101 . In particular, this means that the exemplifying method below may be applied to some or all of the total amount of resources of the resource system 101.
  • the compute resources may include CPUs, Graphics Processing Units (GPUs) or the like. It may here be mentioned that, in some embodiments of the method below, the task module 110 may separate compute resources into CPU resources and GPU resources in order to better match towards demand of resources for some particular tasks, or task types.
  • the hardware and software system 100 comprises a set of server entities 120.
  • Each server entity 121 , 122, 123 of the set of server entities 120 may be a respective physical or virtual machine depending of the implementation of the hardware and software system 100.
  • the server entity may comprise a virtual execution environment, a physical server machine, a physical hardware machine, a virtual server machine, a virtual hardware machine, a PC or the like.
  • a typical virtual execution environment may be a virtual machine, a container, such as a Docker container, Linux container or containers based on the Open Container Initiative (OCI).
  • OCI Open Container Initiative
  • at least some of the server entities 121 , 122, 123 differ in terms of available resource with respect to each other. However, the server entities 121 , 122, 123 may also have equal amount of available resources.
  • Figure 1 illustrates a first platform 131 and a second platform 132.
  • the first and second platforms 131 , 132 may send requests to the task module.
  • the request may include information about one or more tasks 141 , 142 to be assigned to an appropriate server entity 121 , 122, 123 as managed by the task module 1 10.
  • the tasks 141 , 142, which the task module 110 is about to handle, may be either compute- intensive, or memory-intensive, or storage-intensive, network-intensive or a combination thereof.
  • Job - a certain platform such as Spark, Hadoop or the like, typically has one or P50707 9 more jobs that need to be executed, e.g. to provide a service or the like.
  • Task - a certain job may be said to comprise one or more tasks, where each task is to be allocated to a server entity.
  • one server entity may execute one or more tasks.
  • Task type - tasks of a certain type all have the same demand of resources.
  • a first task to run application A on Spark platform is said to be of the same type as a second task to run the application A on Spark platform.
  • a task type may thus be associated with instances of the application A executing on e.g. Spark platform.
  • Resource refers to any resource, such as a compute resource, a memory resource, a storage resource, a network I/O resource or the like.
  • Resource type aka a type of the resource, may comprise one or more of compute resource type for compute resource, memory resource type for memory resources, storage resource type for storage resources, network I/O resource type for network I/O resources and so on.
  • Compute resources may refer to one or more of CPUs and GPUs.
  • An amount of a resource refers to e.g. a number of compute resources, a number of CPUs, a number of memory units, e.g. 512 MB, 3 GB, etc.
  • Available resource refers to resources that are not used by any platform for execution of tasks handled by said any platform.
  • Demand of resources refers to a specification or a requirement relating to one or more amounts of resources required for execution of task of a certain task type.
  • Resource share refers to a resource ratio, a resource quota, a resource measure, a resource proportion, which e.g. relate to a ratio between amount of resources required for certain task and amount of resources of required by all tasks to be assigned.
  • Figure 2 illustrates an exemplifying method according to embodiments herein when implemented in the resource system 101 of Figure 1 .
  • the task module 1 10 performs a method for assigning a plurality of tasks to a set of server entities 120 associated with a resource system 101. As an example, the task module 1 10 may assign each of the plurality of tasks to a respective server entity among the set of server entities 120.
  • the resource system 101 comprises resources of a set of resource types.
  • Each server entity 121 , 122, 123 of the set of server entities 120 is associated with respective resources.
  • the task module 1 10 obtains information about the plurality of tasks.
  • the plurality of tasks is associated with task types.
  • Each task type of the task types is associated with a respective demand of resources.
  • the task module 1 10 receives the information about the plurality of tasks in the form of one or more requests, from e.g. the first and/or second platform 131 , 132.
  • the requests indicates that e.g. the first platform has one or more tasks that shall be assigned to any suitable and available server entity and then executed by said server entity.
  • the information about the plurality of tasks may comprise, for each task of the plurality of tasks, a respective identity of the respective task, a respective demand of resources or the like.
  • the respective demand of resources may indicate demand for one or more of the set of resource types of the resource system 101.
  • the information about the plurality of tasks may also indicate a number of tasks to be assigned to different server entities of the resource system 101.
  • the respective demand of resources may be 10 compute resource and 5 memory resources, which may in more detail correspond to 10 CPUs and 5 GB of memory.
  • the task module 1 10 obtains information about available resources associated with the resource system 101. P50707 1 1
  • the task module 1 10 may obtain, such as receive, either by pushing or pulling, from one or more of the set of server entities 120, the information about available resources.
  • the information about available resources may comprise a respective number indicating available resources for each of the resource types in the resource system 101 or the like.
  • the information about available resources may comprise for each respective server entity 121 , 122, 123 a respective information about available resources.
  • the task module 1 10 may judge whether or not a particular server entity has or has not sufficiently available resources to allow the task module 1 10 to assign a certain task to it.
  • Exemplifying information about available resources for a particular server entity 121 , 122, 123 may be 23 compute resources and 18 memory resources, which may in more detail correspond to 23 CPUs and 18 GB of memory.
  • the task module 1 10 calculates, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources.
  • Each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types.
  • a respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares.
  • the respective dominant task type resource share for said each task type is the greatest of the task type resource shares of the respective set of task type resource shares.
  • each task type is said to be compute-intensive, when the respective dominant task type resource share is of memory resource type, said each task type is said to be memory-intensive, when the respective dominant task type resource share is of network I/O resource type, said each task type is said to be network l/O-intensive and so on.
  • this action may be performed by that the task module 110 calculates the respective dominant task type resource share for each platform.
  • one and the same platform will be considered as two different platforms with respect to a first job and a second job when the first and second jobs are associated to a P50707 12 first demand of resources and a second demand of resources, respectively. This typically applies under the constraint that the first demand of resource is different from the second demand of resources. To conclude, this may mean that the task type is associated with certain jobs from a particular platform.
  • a respective dominant task resource share may be calculated by the task module 1 10.
  • the respective dominant task resource share for each task is then the maximum of task resource shares of all the tasks belonging to the user.
  • the task resource share of each task ⁇ is— , in which / ' is a specific type of
  • Pi is the aggregated resource pool of all the server entities in the resource system 101 , w.r.t. the same type of resources as demanded by the task.
  • the task module 1 10 selects a task among the plurality of tasks.
  • a task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares.
  • the task module 1 10 initializes a set of global dominant task type resource shares.
  • the set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types.
  • the term "global” in "global dominant task type resource shares” merely refers to that the set of global dominant task type resource share are globally available within the algorithm e.g. by use of a so called 'global variable' which are commonly known in most programming languages.
  • the task module 1 10 sets the set of global dominant task type resource shares to zero or any other suitable value - such as minus one - indicating that the respective global dominant task type resource shared has not yet been given a value.
  • actions may also be P50707 13 performed, e.g. repeated for at least some tasks pending to be assigned to a designated server entity.
  • these actions may be repeated as long as there is any task pending to be assigned to a designated server entity, i.e. one of at least one specific server entity as referred to in action A1 10 below.
  • repetition of these actions may be interrupted if no server entity has enough available resources to fit any task pending to be assigned to a designated server entity. This means that it may happen that a certain task is not assigned to a designated server entity, but the task module continues with allocation of a next task.
  • actions A060, A070, A090, A1 10, A130, A140, A150 and A160 are repeated with the embodiments herein. That is to say, actionsA080, A100 and A120 are repeated only with some embodiments herein.
  • the task module 1 10 selects a sub-set of server entities from among the set of server entities 120.
  • Each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task.
  • the sub-set of server entities may be selected randomly among the set of server entities 120. It may be preferred that the sub-set include a multiple of a number of tasks to be assigned with this method. The multiple may be 2, 3, 4 or other suitable values. In this manner, expensive effort on maintaining and/or sampling all the server entities of the resource system may be avoided, which may be beneficial in case of large scale resources systems in real-life examples.
  • the task module 1 10 calculates, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources.
  • Each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types.
  • a respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares.
  • Each said respective dominant server resource share is included among a set of dominant server resource shares.
  • This action may be performed according to some embodiments referred to as P50707 14
  • said at least one specific server entity may comprise at least two specific server entities.
  • the task module 1 10 may calculate, for each server entity of said at least two specific server entities, a respective network I/O resource share based on the information about available resources.
  • the respective network I/O resource share is associated with a network I/O resource type.
  • the network I/O resource type is included in the set of resource types.
  • a set of network I/O resource shares comprises the respective network I/O resource share for said each server entity of said at least two specific server entities.
  • the task module 1 10 further calculates network I/O resources shares for each of the server entities.
  • the network I/O may be obtained, e.g. measured, calculated, estimated or the like, between the task module 1 10 and each of the server entities, e.g. network I/O for transmissions there between.
  • the network I/O between the task module 1 10 and each of the server entities may be relevant when assigning a particular task to a particular server entity.
  • the network I/O between compute resources and one or more of memory resources and storages resources and the like may be considered for server entity chose as a candidate for assignment of the task.
  • the network I/O between compute resources and memory/storage resources within an assigned server entity may be relevant when a particular task is executed on the assigned server entity.
  • the network I/O resource type may comprise one or more of bandwidth, latency, throughput or the like.
  • locality of each server entity 121 , 122, 123 may be considered from a perspective of one or more of network bandwidth, network throughput and network latency.
  • the network throughput and latency may play a more significant role as compared to network bandwidth, since even if the bandwidth would be sufficient user-experience may be poor if one or both of network P50707 15 throughput and latency is not sufficient.
  • the task module 1 10 may calculate the respective network I/O resource share further based on measurements, at runtime, of the information about available resources with respect to network I/O.
  • the respective network I/O resource share may be calculated as a combination of two or more of bandwidth, throughput and latency. The combination may be obtained by determining a weighted mean of said two or more of bandwidth, throughput and latency.
  • the task module 1 10 finds, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type.
  • the particular resource type is equal to the resource type associated with the task type of the selected task.
  • the task module 1 10 may randomly pick one of the server entities of the sub-set of server entities selected in action A060. Said one of the server entities may then be considered to be said at least one specific server entity in the following actions.
  • the task module 1 10 may select, among said at least two specific server entities, a selected specific server entity for which the respective network I/O resource share is among the greatest of the set of network I/O resources shares.
  • the task module 1 10 assigns the selected task to one of said at least one P50707 16 specific server entity.
  • the task module 1 10 may store information about the selected task and its assigned said one of said at least one specific server entity. This information may then be retrieved at a later stage.
  • the task module 1 10 assigns the selected task to one of said at least one specific server entity without delay.
  • the task module makes an offer between server entities and platforms, after which the platform accepts or rejects the proposed assignment or server entity.
  • action A110 may be performed by that the task module 1 10 assigns the selected task to the selected specific server entity.
  • the task module 1 10 may assign the selected task to one of said at least two specific server entities, wherein said one of said at least two specific server entities is the selected specific server entity as in action A100.
  • An advantage of the locality aware embodiments is that one or more network I/O resources, such as bandwidth, throughput and latency, with respect to the selected server entity is considered.
  • the selected server entity may be selected based on runtime measurements of the network I/O resources, e.g. instead of physical locality of compute resource in relation to the memory and/or storage resources.
  • the task module 1 10 updates the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task.
  • the task module 1 10 updates information about available resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources, e.g. for the server entity that the selected task was assigned to. P50707 17
  • the task module 110 finds a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares.
  • the task module 110 selects, among a sub-set of tasks taken from the plurality of tasks, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set.
  • the most extreme dominant task type resource shares may be the least dominant task type resource shares or the greatest dominant task type resource shares or the like.
  • Tasks of the sub-set are of a task type associated with the next resource type.
  • next resource type indicates which tasks to include in the sub-set of tasks from among the plurality of tasks. Then, among the tasks of this sub-set of tasks, the selected task is the one task whose dominant task type resource share is among the most extreme dominant task type resource shares.
  • the task module 1 10 returns to action A060 if a further selected task has been selected in action A160. Accordingly, the method described herein continues until all the tasks have been allocated, or an attempt to allocate has been made, to a server entity with appropriate resources, or until all resources of the resource system 101 have been consumed, or at least no further task fits within the available resources.
  • Figure 3 a schematic block diagram of embodiments of the task module 1 10 of Figure 1 is shown.
  • the task module 1 10 may comprise a processing module 301 , such as a means for performing the methods described herein.
  • the means may be embodied in the form of one or more hardware modules and/or one or more software modules
  • the task module 1 10 may further comprise a memory 302.
  • the memory may comprise, such as contain or store, instructions, e.g. in the form of a computer program 303, which may comprise computer readable code units.
  • the task module 1 10 and/or the processing module 301 comprises a processing circuit 304 as an exemplifying hardware module.
  • the processing module 301 may be embodied in the form of, or 'realized by', the processing circuit 304.
  • the instructions may be executable by the processing circuit 304, whereby the task module 1 10 is operative to perform the methods of Figure 2.
  • the instructions when executed by the task module 1 10 and/or the processing circuit 304, may cause the task module 1 10 to perform the method according to Figure 2.
  • a task module 1 10 for assigning a plurality of tasks to a set of server entities 120 associated with a resource system 101 .
  • the resource system 101 comprises resources of a set of resource types.
  • Each server entity 121 , 122, 123 of the set of server entities 120 is associated with respective resources.
  • the memory 302 contains the instructions executable by said processing circuit 304 whereby said task module 1 10 is operative for: obtaining information about the plurality of tasks, wherein the plurality of tasks is associated with task types, wherein each task type of the task types is associated with a respective demand of resources,
  • each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types, wherein a respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares,
  • a task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares,
  • the task module 1 10 is operative for performing the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity: selecting a sub-set of server entities from among the set of server entities 120, wherein each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task,
  • each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types, wherein a respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares, wherein each said respective dominant server resource share is included among a set of dominant server resource shares,
  • assigning the selected task to one of said at least one specific server entity updating the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task,
  • Figure 3 further illustrates a carrier 305, or program carrier, which comprises the computer program 303 as described directly above.
  • the processing module 301 comprises an Input/Output module 306, which may be exemplified by a receiving module and/or a sending module as described below when applicable.
  • the task module 1 10 and/or the processing module 301 may comprise one or more of an obtaining module 310, a calculating module 320, a selecting module 330, an initializing module 340, a finding module 350, an assigning module 360, and an updating module 370 as exemplifying hardware modules.
  • one or more of the aforementioned exemplifying hardware modules may be implemented as one or more software modules.
  • the task module 1 10 is configured for assigning a plurality of tasks to a set of server entities 120 associated with a resource system 101 .
  • the resource system 101 comprises resources of a set of resource types.
  • Each server entity 121 , 122, 123 of the set of server entities 120 is associated with respective resources.
  • the task module 1 10 and/or the processing module 301 and/or the obtaining module 310 is configured for obtaining information about the plurality of tasks.
  • the plurality of tasks is associated with task types.
  • Each task type of the task types is associated with a respective demand of resources.
  • the task module 1 10 and/or the processing module 301 and/or the obtaining module 310, or a further obtaining module (not shown), is configured for obtaining information about available resources associated with the resource system 101.
  • the task module 1 10 and/or the processing module 301 and/or the calculating module 320 is configured for calculating, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources.
  • Each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types.
  • a respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares.
  • the task module 1 10 and/or the processing module 301 and/or the selecting module 330 is configured for selecting a task among the plurality of tasks.
  • a task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares.
  • the task module 110 and/or the processing module 301 and/or the initializing module 340 is configured for initializing a set of global dominant task type resource shares.
  • the set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types.
  • the task module 1 10 is configured for performing the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity.
  • the task module 1 10 and/or the processing module 301 and/or the selecting module 330, or a further selecting module (not shown), is configured for selecting a subset of server entities from among the set of server entities 120.
  • Each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task.
  • the task module 1 10 and/or the processing module 301 and/or the calculating module 320, or a further calculating module (not shown), is configured for calculating, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources.
  • Each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types.
  • a respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares.
  • Each said respective dominant server resource share is included among a set of dominant server resource shares.
  • the task module 1 10 and/or the processing module 301 and/or the finding module 350 is configured for finding, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type.
  • the particular resource type is equal to the resource type associated with the task type of the selected task.
  • the task module 1 10 and/or the processing module 301 and/or the assigning P50707 22 module 360 is configured for assigning the selected task to one of said at least one specific server entity.
  • the task module 1 10 and/or the processing module 301 and/or the updating module 370 is configured for updating the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task.
  • the task module 1 10 and/or the processing module 301 and/or the updating module 370, or a further updating module, is configured for updating information about available resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources.
  • the task module 1 10 and/or the processing module 301 and/or the finding module 350, or a further finding module (not shown), is configured for finding a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares.
  • the task module 1 10 and/or the processing module 301 and/or the selecting module 330, or a yet further selecting module is configured for selecting, among a sub-set of tasks taken from the plurality of tasks, which sub-set of tasks is associated with the next resource type, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set.
  • Tasks of the sub-set are of a task type associated with the next resource type.
  • said at least one specific server entity may comprise at least two specific server entities.
  • the task module 1 10 and/or the processing module 301 and/or the calculating module 320, or a yet further calculating module may be configured for calculating, for each server entity of said at least two specific server entities, a respective network I/O resource share based on the information about available resources.
  • the respective network I/O resource share is associated with a network I/O resource type.
  • the network I/O resource type is included in the set of resource types.
  • a set of network I/O resource shares comprises the respective network I/O resource share for said each server entity of said at least two specific server entities.
  • the task module 1 10 and/or the processing module 301 and/or the selecting module 330, or a still further selecting module may be configured for selecting, among said at least two specific server entities, a selected specific server entity for which the respective network I/O resource share is among the greatest of the set of network I/O resources shares.
  • the task module 1 10 and/or the processing module 301 and/or the assigning module 360, or a further assigning module (not shown), may be configured for assigning of the selected task by assigning the selected task to the selected specific server entity.
  • the server entity may comprise a virtual hardware machine, a physical hardware machine, a virtual execution environment or the like.
  • the set of resource types may comprise one or more of: compute resource type, memory resource type, disk resource type, network I/O resource type and the like.
  • the information about the plurality of tasks may comprise, for each task of the plurality of tasks a respective identity of the respective task, a respective demand of resources.
  • the information about available resources may comprise a respective number indicating available resources for each of the resource types in the resource system 101.
  • the term "node” may refer to one or more physical entities, such as devices, apparatuses, computers, servers or the like. This may mean that embodiments herein may be implemented in one physical entity. Alternatively, the embodiments herein may be implemented in a plurality of physical entities, such as an arrangement comprising said one or more physical entities, i.e. the embodiments may be implemented in a distributed manner, such as on a set of server machines of a cloud system.
  • module may refer to one or more functional modules, each of which may be implemented as one or more hardware modules and/or one or more software modules and/or a combined software/hardware module in a node.
  • the module may represent a functional unit realized as software and/or hardware of the node.
  • the term "computer program carrier”, “program carrier”, or “carrier” may refer to one of an electronic signal, an optical signal, a radio signal, and a P50707 24 computer readable medium.
  • the computer program carrier may exclude transitory, propagating signals, such as the electronic, optical and/or radio signal.
  • the computer program carrier may be a non-transitory carrier, such as a non-transitory computer readable medium.
  • processing module may include one or more hardware modules, one or more software modules or a combination thereof. Any such module, be it a hardware, software or a combined hardware-software module, may be a determining means, estimating means, capturing means, associating means, comparing means, identification means, selecting means, receiving means, sending means or the like as disclosed herein.
  • the expression “means” may be a module
  • software module may refer to a software application, a Dynamic Link Library (DLL), a software component, a software object, an object according to Component Object Model (COM), a software component, a software function, a software engine, an executable binary software file or the like.
  • DLL Dynamic Link Library
  • COM Component Object Model
  • processing circuit may refer to a processing unit, a processor, an Application Specific integrated Circuit (ASIC), a Field-Programmable Gate Array (FPGA) or the like.
  • the processing circuit or the like may comprise one or more processor kernels.
  • the expression “configured to/for” may mean that a processing circuit is configured to, such as adapted to or operative to, by means of software configuration and/or hardware configuration, perform one or more of the actions described herein.
  • action may refer to an action, a step, an operation, a response, a reaction, an activity or the like. It shall be noted that an action herein may be split into two or more sub-actions as applicable. Moreover, also as applicable, it shall be noted that two or more of the actions described herein may be merged into a single action.
  • memory may refer to a hard disk, a magnetic storage medium, a portable computer diskette or disc, flash memory, random access memory (RAM) or the like. Furthermore, the term “memory” may refer to an internal register memory of a processor or the like.
  • the term "computer readable medium” may be a Universal Serial Bus (USB) memory, a DVD-disc, a Blu-ray disc, a software module that is received as a P50707 25 stream of data, a Flash memory, a hard drive, a memory card, such as a MemoryStick, a Multimedia Card (MMC), Secure Digital (SD) card, etc.
  • USB Universal Serial Bus
  • MMC Multimedia Card
  • SD Secure Digital
  • aforementioned examples of computer readable medium may be provided as one or more computer program products.
  • computer readable code units may be text of a computer program, parts of or an entire binary file representing a computer program in a compiled format or anything there between.
  • the expression “transmit” and “send” are considered to be interchangeable. These expressions include transmission by broadcasting, uni-casting, group-casting and the like. In this context, a transmission by broadcasting may be received and decoded by any authorized device within range. In case of uni-casting, one specifically addressed device may receive and decode the transmission. In case of group-casting, a group of specifically addressed devices may receive and decode the transmission.
  • number and/or value may be any kind of digit, such as binary, real, imaginary or rational number or the like. Moreover, “number” and/or “value” may be one or more characters, such as a letter or a string of letters. “Number” and/or “value” may also be represented by a string of bits, i.e. zeros and/or ones.
  • a set of may refer to one or more of something.
  • a set of devices may refer to one or more devices
  • a set of parameters may refer to one or more parameters or the like according to the embodiments herein.

Abstract

According to a method, the task module (110) selects (A040) a task among the plurality of tasks, wherein a task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares. The task module (110) calculates (A070) a respective set of server resource shares based on the information about available resources. A respective dominant server resource share for said each server entity is among the greatest server resource shares. The task module (110) finds (A090), among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type. The task module (110) assigns (A110) the selected task to one of said at least one specific server entity. The task module (110) finds (A150) a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares. The task module (110) selects (A160), among a sub-set of tasks taken from the plurality of tasks, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set. A task module (110), a computer program (303) and a computer program carrier (305) are also disclosed.

Description

METHOD AND MODULE FOR ASSIGNING TASK TO SERVER ENTITY
TECHNICAL FIELD
Embodiments herein relate to computer systems. In particular, a method and a task module for assigning a plurality of tasks to a set of server entities associated with a resource system, such as a computer system, are disclosed. A corresponding computer program and a computer program carrier are also disclosed.
BACKGROUND
Computer systems typically comprise a hardware architecture and a software architecture. The hardware architecture deals with how different resources, such as processing power, memory, hard-drives, networking interface and the like, are interconnected to each other, e.g. interconnected in terms of physical formats, number of wires etc. The software architecture deals with how different programs, such as operating systems, applications, applets, virtual machines and more, are managed and executed on the hardware architecture.
Traditional hardware architectures, used for e.g. a data center, a cloud computing system or the like, are typically built up by a plurality of racks, such as cabinets, that are networked together. Each rack comprises one or more fully functional computers, e.g. embodied as one or more server blades, or a casing housing a computer. Hence, each server blade is self-contained with resources, such as processors, memory, storage, networking interface and Input/Output (I/O) peripherals.
In order to provide greater flexibility in terms of replacement/upgrade of resources, disaggregated hardware architectures have emerged. A disaggregated hardware architecture, such as Intel Rack Scale architecture and HyperScale Datacenter Systems, separates the resources - which with the traditional hardware architecture would have been confined within one blade - that make up a hardware machine, such a computer, server or the like. The separated resources are organized into pools. Then, a host machine is allocated by picking resources of from the pools.
On top of any of the aforementioned hardware architectures, or other hardware architectures as well for that matter, different software architectures, such as Apache Mesos, may be executed. Thanks to Apache Mesos Central Processing Units (CPUs), P50707 2 memories, storages etc. are abstracted away from machines (physical or virtual).
With the Apache Mesos architecture, each cluster node, e.g. a physical or virtual machine, runs a so called Mesos agent. The Mesos agents report their available resources in terms of CPU, memory, storage to a Mesos master. The Mesos master, in its turn, receives requests from different users, such as Hadoop, Spark, etc. A request from a specific user indicates a job, including one or more tasks, to be executed on the Mesos agents. The Mesos master will, upon receiving a request, find a suitable Mesos agent for execution of the related task.
In order to efficiently allocate the tasks to the Mesos agents, A. Ghodsi, M.
Zaharia, B. Hindman, A. Konwinski, S. Shenker, and I. Stoica suggest, in "Dominant resource fairness: Fair allocation of multiple resource types," in Proc. USENIX NSDI, published in 201 1 , a method for allocation of tasks. This method is referred to as Dominant Resource Fairness (DRF) allocation in the aforementioned publication. The DRF can be implemented as part of the Mesos master.
In more detail, with the DRF allocation, each user's dominant share, i.e. a maximum ratio of any resource that the user has been allocated, is equalized. The DRF allocation possesses a set of fairness properties, but a disadvantage of the DRF, and related work that addresses demand heterogeneity of multiple resources, is that they apply a simplified model in which all resources are assumed to be pooled at one place and abstracted as one big server. Accordingly, such simplified model matches poorly with some prevalent and popular data center infrastructure, in which resources are distributed to a large number of servers, be it physical or virtual, with different sizes.
In order to apply the DRF allocation to these kinds of data center infrastructure, it has been proposed to apply the DRF to each server separately, which often results in an inefficient task allocation and inefficient use of resources of the data center, e.g. servers of the data center.
SUMMARY
An object may be to improve assignment of tasks to servers.
According to an aspect, the object is achieved by a method, performed by a task module, for assigning a plurality of tasks to a set of server entities associated with a resource system. The resource system comprises resources of a set of resource types. P50707 3
Each server entity of the set of server entities is associated with respective resources. The task module obtains information about the plurality of tasks. The plurality of tasks is associated with task types. Each task type of the task types is associated with a respective demand of resources. The task module further obtains information about available resources associated with the resource system.
Moreover, the task module calculates, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources. Each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types. A respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares. The task module selects a task among the plurality of tasks. A task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares.
Furthermore, the task module initializes a set of global dominant task type resource shares. The set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types. The task module further performs the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity.
Accordingly, the task module selects a sub-set of server entities from among the set of server entities. Each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task. The task module calculates, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources. Each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types. A respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares. Each said respective dominant server resource share is included among a set of dominant server resource shares.
Additionally, the task module finds, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is P50707 4 among the greatest of a sub-set of dominant server resources shares of a particular resource type. The particular resource type is equal to the resource type associated with the task type of the selected task.
The task module assigns the selected task to one of said at least one specific server entity. The task module updates the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task. The task module updates information about available resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources. The task module finds a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares.
The task module further selects, among a sub-set of tasks taken from the plurality of tasks, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the subset. Tasks of the sub-set are of a task type associated with the next resource type.
According to another aspect, the object is achieved by a task module configured for assigning a plurality of tasks to a set of server entities associated with a resource system. The resource system comprises resources of a set of resource types. Each server entity of the set of server entities is associated with respective resources.
The task module is configured for obtaining information about the plurality of tasks. The plurality of tasks is associated with task types. Each task type of the task types is associated with a respective demand of resources. The task module is further configured for obtaining information about available resources associated with the resource system.
Furthermore, the task module is configured for calculating, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources. Each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types. A respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares. P50707 5
The task module is configured for selecting a task among the plurality of tasks. A task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares. The task module is configured for initializing a set of global dominant task type resource shares. The set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types.
Moreover, the task module is configured for performing the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity.
Accordingly, the task module is configured for selecting a sub-set of server entities from among the set of server entities. Each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task.
The task module is configured for calculating, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources. Each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types. A respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares. Each said respective dominant server resource share is included among a set of dominant server resource shares.
The task module is configured for finding, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type. The particular resource type is equal to the resource type associated with the task type of the selected task.
Additionally, the task module is configured for assigning the selected task to one of said at least one specific server entity.
The task module is configured for updating the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task, The task module is further configured for updating information about available P50707 6 resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources.
The task module is configured for finding a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares.
Furthermore, the task module is configured for selecting, among a sub-set of tasks taken from the plurality of tasks, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set. Tasks of the sub-set are of a task type associated with the next resource type.
According to further aspects, the object is achieved by a computer program and a computer program carrier corresponding to the aspects above. The set of global dominant task type resource shares is updated after the selected task has been assigned to said one of said at least one specific server entity. In addition, the information about available resources is updated after the selected task has been assigned to said one of said at least one specific server entity. Moreover, the next resource type is found based on the respective global dominant task resource share in order to select the selected task for which the dominant task type resource share is the most extreme, i.e. among the greatest or among the least. In this manner, a fair and resource efficient assignment of tasks to server entities may be achieved. As a result, the above mentioned object is achieved. An advantage is that the embodiments herein are applicable even when the resource system comprises server entities with different amount of resources. Such resource system may sometimes be referred to as a hybrid environment. Notably, as mentioned in the background section, the DFR of Apache Mesos may not be applied in, or at least have limited applicability in, such hybrid environment and may also use resources inefficiently.
BRIEF DESCRIPTION OF THE DRAWI NGS
The various aspects of embodiments disclosed herein, including particular P50707 7 features and advantages thereof, will be readily understood from the following detailed description and the accompanying drawings, in which:
Figure 1 is a schematic overview illustrating an exemplifying hardware and software system, in which embodiments herein may be implemented,
Figure 2 is a schematic flowchart illustrating an exemplifying method according to embodiments herein, and
Figure 3 is a schematic block diagram illustrating an exemplifying task module according to embodiments herein.
DETAILED DESCRIPTION
Throughout the following description similar reference numerals have been used to denote similar features, such as nodes, actions, steps, modules, circuits, parts, items elements, units or the like, when applicable. In the Figures, features that appear in some embodiments are indicated by dashed lines.
Figure 1 depicts an exemplifying hardware and software system 100 in which embodiments herein may be implemented. The hardware and software system 100 may include a disaggregated hardware system or a traditional hardware system, including a plurality of physical, self-contained hardware machines. As an example, the hardware and software system 100 may be a hybrid cloud, a data center or the like.
The present disclosure relates to a method performed by a task module 110, which manages assignment of tasks to server entities. However, before proceeding with a more detailed description of an exemplifying method, further description of the hardware and software system 100 will be provided in the following.
Irrespectively of the hardware architecture used, the hardware and software system 100 may be said to comprise a resource system 101.
The resource system 101 comprises resources, which may comprise one or more of compute resources 102, memory resources 103, network I/O resources 104, storage resources (not shown) and the like. Each resource type, e.g. compute resource type, memory resource type, etc., may be organized, logically or physically, into a respective pool of resources associated with a respective resource type. Such pools are typically considered in case of so called disaggregated hardware systems. The resource P50707 8 system 101 may include all or some of a total amount of resources of the resource system 101 . In particular, this means that the exemplifying method below may be applied to some or all of the total amount of resources of the resource system 101. The compute resources may include CPUs, Graphics Processing Units (GPUs) or the like. It may here be mentioned that, in some embodiments of the method below, the task module 110 may separate compute resources into CPU resources and GPU resources in order to better match towards demand of resources for some particular tasks, or task types.
Moreover, the hardware and software system 100 comprises a set of server entities 120. Each server entity 121 , 122, 123 of the set of server entities 120 may be a respective physical or virtual machine depending of the implementation of the hardware and software system 100. As further examples, the server entity may comprise a virtual execution environment, a physical server machine, a physical hardware machine, a virtual server machine, a virtual hardware machine, a PC or the like. A typical virtual execution environment may be a virtual machine, a container, such as a Docker container, Linux container or containers based on the Open Container Initiative (OCI). Typically, at least some of the server entities 121 , 122, 123 differ in terms of available resource with respect to each other. However, the server entities 121 , 122, 123 may also have equal amount of available resources.
Furthermore, Figure 1 illustrates a first platform 131 and a second platform 132. The first and second platforms 131 , 132 may send requests to the task module. The request may include information about one or more tasks 141 , 142 to be assigned to an appropriate server entity 121 , 122, 123 as managed by the task module 1 10. The tasks 141 , 142, which the task module 110 is about to handle, may be either compute- intensive, or memory-intensive, or storage-intensive, network-intensive or a combination thereof.
In relation the overview presented above, the following terms and expressions are briefly described.
Job - a certain platform, such as Spark, Hadoop or the like, typically has one or P50707 9 more jobs that need to be executed, e.g. to provide a service or the like.
Task - a certain job may be said to comprise one or more tasks, where each task is to be allocated to a server entity. Notably, one server entity may execute one or more tasks.
Task type - tasks of a certain type all have the same demand of resources. As an example, a first task to run application A on Spark platform is said to be of the same type as a second task to run the application A on Spark platform. A task type may thus be associated with instances of the application A executing on e.g. Spark platform.
Resource refers to any resource, such as a compute resource, a memory resource, a storage resource, a network I/O resource or the like.
Resource type, aka a type of the resource, may comprise one or more of compute resource type for compute resource, memory resource type for memory resources, storage resource type for storage resources, network I/O resource type for network I/O resources and so on.
Compute resources, or computing resources, may refer to one or more of CPUs and GPUs.
An amount of a resource refers to e.g. a number of compute resources, a number of CPUs, a number of memory units, e.g. 512 MB, 3 GB, etc.
Available resource refers to resources that are not used by any platform for execution of tasks handled by said any platform.
Demand of resources refers to a specification or a requirement relating to one or more amounts of resources required for execution of task of a certain task type.
User refers to a platform for which all tasks have the same demand of resources. So for a platform where there are tasks of two types, which demanding its respective amount of resources, these requests from the same platform will nevertheless be considered as two different users within the meaning of this disclosure. As an example, all tasks of one user are of the same task type. Accordingly, in case Spark platform requests to execute application A and application B, these requests will be considered as being different users since it will be assumed that application A has a different demand of resources as compared to demand of resources for application B.
Resource share refers to a resource ratio, a resource quota, a resource measure, a resource proportion, which e.g. relate to a ratio between amount of resources required for certain task and amount of resources of required by all tasks to be assigned. P50707 10
Figure 2 illustrates an exemplifying method according to embodiments herein when implemented in the resource system 101 of Figure 1 .
The task module 1 10 performs a method for assigning a plurality of tasks to a set of server entities 120 associated with a resource system 101. As an example, the task module 1 10 may assign each of the plurality of tasks to a respective server entity among the set of server entities 120.
As mentioned, the resource system 101 comprises resources of a set of resource types. Each server entity 121 , 122, 123 of the set of server entities 120 is associated with respective resources.
One or more of the following actions may be performed in any suitable order. Action A010
The task module 1 10 obtains information about the plurality of tasks. The plurality of tasks is associated with task types. Each task type of the task types is associated with a respective demand of resources.
As an example, the task module 1 10 receives the information about the plurality of tasks in the form of one or more requests, from e.g. the first and/or second platform 131 , 132. The requests indicates that e.g. the first platform has one or more tasks that shall be assigned to any suitable and available server entity and then executed by said server entity.
The information about the plurality of tasks may comprise, for each task of the plurality of tasks, a respective identity of the respective task, a respective demand of resources or the like. The respective demand of resources may indicate demand for one or more of the set of resource types of the resource system 101.
The information about the plurality of tasks may also indicate a number of tasks to be assigned to different server entities of the resource system 101.
For an exemplifying task type, the respective demand of resources may be 10 compute resource and 5 memory resources, which may in more detail correspond to 10 CPUs and 5 GB of memory.
Action A020
The task module 1 10 obtains information about available resources associated with the resource system 101. P50707 1 1
The task module 1 10 may obtain, such as receive, either by pushing or pulling, from one or more of the set of server entities 120, the information about available resources.
The information about available resources may comprise a respective number indicating available resources for each of the resource types in the resource system 101 or the like.
In particular, the information about available resources may comprise for each respective server entity 121 , 122, 123 a respective information about available resources. In this manner, the task module 1 10 may judge whether or not a particular server entity has or has not sufficiently available resources to allow the task module 1 10 to assign a certain task to it.
Exemplifying information about available resources for a particular server entity 121 , 122, 123 may be 23 compute resources and 18 memory resources, which may in more detail correspond to 23 CPUs and 18 GB of memory.
Action A030
The task module 1 10 calculates, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources. Each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types. A respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares. Typically, the respective dominant task type resource share for said each task type is the greatest of the task type resource shares of the respective set of task type resource shares. When the respective dominant task type resource share is of compute resource type, said each task type is said to be compute-intensive, when the respective dominant task type resource share is of memory resource type, said each task type is said to be memory-intensive, when the respective dominant task type resource share is of network I/O resource type, said each task type is said to be network l/O-intensive and so on.
As an example, this action may be performed by that the task module 110 calculates the respective dominant task type resource share for each platform. In this context, one and the same platform will be considered as two different platforms with respect to a first job and a second job when the first and second jobs are associated to a P50707 12 first demand of resources and a second demand of resources, respectively. This typically applies under the constraint that the first demand of resource is different from the second demand of resources. To conclude, this may mean that the task type is associated with certain jobs from a particular platform.
Alternatively or additionally, a respective dominant task resource share may be calculated by the task module 1 10. The respective dominant task resource share for each task is then the maximum of task resource shares of all the tasks belonging to the user.
The task resource share of each task τ is— , in which /' is a specific type of
Pi
resources demanded by the task τ, and Pi is the aggregated resource pool of all the server entities in the resource system 101 , w.r.t. the same type of resources as demanded by the task. Action A040
The task module 1 10 selects a task among the plurality of tasks. A task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares.
Action A050
The task module 1 10 initializes a set of global dominant task type resource shares. The set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types. The term "global" in "global dominant task type resource shares" merely refers to that the set of global dominant task type resource share are globally available within the algorithm e.g. by use of a so called 'global variable' which are commonly known in most programming languages.
As an example, the task module 1 10 sets the set of global dominant task type resource shares to zero or any other suitable value - such as minus one - indicating that the respective global dominant task type resource shared has not yet been given a value.
The following actions, i.e. one or more of action A060 through A160, may also be P50707 13 performed, e.g. repeated for at least some tasks pending to be assigned to a designated server entity. In some cases, these actions may be repeated as long as there is any task pending to be assigned to a designated server entity, i.e. one of at least one specific server entity as referred to in action A1 10 below. However, repetition of these actions may be interrupted if no server entity has enough available resources to fit any task pending to be assigned to a designated server entity. This means that it may happen that a certain task is not assigned to a designated server entity, but the task module continues with allocation of a next task. In particular, actions A060, A070, A090, A1 10, A130, A140, A150 and A160 are repeated with the embodiments herein. That is to say, actionsA080, A100 and A120 are repeated only with some embodiments herein.
Action A060
The task module 1 10 selects a sub-set of server entities from among the set of server entities 120. Each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task.
As an example, the sub-set of server entities may be selected randomly among the set of server entities 120. It may be preferred that the sub-set include a multiple of a number of tasks to be assigned with this method. The multiple may be 2, 3, 4 or other suitable values. In this manner, expensive effort on maintaining and/or sampling all the server entities of the resource system may be avoided, which may be beneficial in case of large scale resources systems in real-life examples.
Action A070
The task module 1 10 calculates, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources. Each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types. A respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares. Each said respective dominant server resource share is included among a set of dominant server resource shares.
Action A080
This action may be performed according to some embodiments referred to as P50707 14
"locality aware embodiments" herein. With the locality aware embodiments, said at least one specific server entity may comprise at least two specific server entities.
The task module 1 10 may calculate, for each server entity of said at least two specific server entities, a respective network I/O resource share based on the information about available resources. The respective network I/O resource share is associated with a network I/O resource type. The network I/O resource type is included in the set of resource types. A set of network I/O resource shares comprises the respective network I/O resource share for said each server entity of said at least two specific server entities.
This means that, in addition to the task type resource shares already calculated, the task module 1 10 further calculates network I/O resources shares for each of the server entities.
As an example, the network I/O may be obtained, e.g. measured, calculated, estimated or the like, between the task module 1 10 and each of the server entities, e.g. network I/O for transmissions there between. The network I/O between the task module 1 10 and each of the server entities may be relevant when assigning a particular task to a particular server entity.
In some cases, it may be advantageous to consider the network I/O between compute resources and one or more of memory resources and storages resources and the like for server entity chose as a candidate for assignment of the task. The network I/O between compute resources and memory/storage resources within an assigned server entity may be relevant when a particular task is executed on the assigned server entity.
The network I/O resource type may comprise one or more of bandwidth, latency, throughput or the like. In these locality aware embodiments, locality of each server entity 121 , 122, 123 may be considered from a perspective of one or more of network bandwidth, network throughput and network latency. As an example, the network throughput and latency may play a more significant role as compared to network bandwidth, since even if the bandwidth would be sufficient user-experience may be poor if one or both of network P50707 15 throughput and latency is not sufficient.
As an example, the task module 1 10 may calculate the respective network I/O resource share further based on measurements, at runtime, of the information about available resources with respect to network I/O. In more detail, the respective network I/O resource share may be calculated as a combination of two or more of bandwidth, throughput and latency. The combination may be obtained by determining a weighted mean of said two or more of bandwidth, throughput and latency. Purely as an examples, weight when determining the weighted mean may be: weight (bandwidth) = 0.2, weight (latency) = 0.4, weight (throughput) = 0.4 or the like.
Action A090
The task module 1 10 finds, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type. The particular resource type is equal to the resource type associated with the task type of the selected task.
As an example, this means that the task module 1 10 assumes that at least one specific server entity to be the one with the greatest respective dominant server resource share of the same type as the resource type associated with the task type of the selected task.
In case the task module 1 10 fails in finding said at least one specific server entity according to the above, the task module 1 10 may randomly pick one of the server entities of the sub-set of server entities selected in action A060. Said one of the server entities may then be considered to be said at least one specific server entity in the following actions.
Action A100
According to the locality aware embodiments, the task module 1 10 may select, among said at least two specific server entities, a selected specific server entity for which the respective network I/O resource share is among the greatest of the set of network I/O resources shares.
Action A110
The task module 1 10 assigns the selected task to one of said at least one P50707 16 specific server entity.
As an example, the task module 1 10 may store information about the selected task and its assigned said one of said at least one specific server entity. This information may then be retrieved at a later stage.
As another example, the task module 1 10 assigns the selected task to one of said at least one specific server entity without delay.
It may typically be that the task module makes an offer between server entities and platforms, after which the platform accepts or rejects the proposed assignment or server entity.
Action A120
According to the locality aware embodiments, action A110 may be performed by that the task module 1 10 assigns the selected task to the selected specific server entity.
Expressed differently, the task module 1 10 may assign the selected task to one of said at least two specific server entities, wherein said one of said at least two specific server entities is the selected specific server entity as in action A100.
An advantage of the locality aware embodiments is that one or more network I/O resources, such as bandwidth, throughput and latency, with respect to the selected server entity is considered. In this manner, the selected server entity may be selected based on runtime measurements of the network I/O resources, e.g. instead of physical locality of compute resource in relation to the memory and/or storage resources.
Action A130
The task module 1 10 updates the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task.
Action A140
The task module 1 10 updates information about available resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources, e.g. for the server entity that the selected task was assigned to. P50707 17
Action A150
The task module 110 finds a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares.
Action A160
The task module 110 selects, among a sub-set of tasks taken from the plurality of tasks, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set. As an example, the most extreme dominant task type resource shares may be the least dominant task type resource shares or the greatest dominant task type resource shares or the like. Tasks of the sub-set are of a task type associated with the next resource type.
This means that the next resource type indicates which tasks to include in the sub-set of tasks from among the plurality of tasks. Then, among the tasks of this sub-set of tasks, the selected task is the one task whose dominant task type resource share is among the most extreme dominant task type resource shares.
At this point the task module 1 10 returns to action A060 if a further selected task has been selected in action A160. Accordingly, the method described herein continues until all the tasks have been allocated, or an attempt to allocate has been made, to a server entity with appropriate resources, or until all resources of the resource system 101 have been consumed, or at least no further task fits within the available resources. With reference to Figure 3, a schematic block diagram of embodiments of the task module 1 10 of Figure 1 is shown.
The task module 1 10 may comprise a processing module 301 , such as a means for performing the methods described herein. The means may be embodied in the form of one or more hardware modules and/or one or more software modules
The task module 1 10 may further comprise a memory 302. The memory may comprise, such as contain or store, instructions, e.g. in the form of a computer program 303, which may comprise computer readable code units. P50707 18
According to some embodiments herein, the task module 1 10 and/or the processing module 301 comprises a processing circuit 304 as an exemplifying hardware module. Accordingly, the processing module 301 may be embodied in the form of, or 'realized by', the processing circuit 304. The instructions may be executable by the processing circuit 304, whereby the task module 1 10 is operative to perform the methods of Figure 2. As another example, the instructions, when executed by the task module 1 10 and/or the processing circuit 304, may cause the task module 1 10 to perform the method according to Figure 2.
In view of the above, in one example, there is provided a task module 1 10 for assigning a plurality of tasks to a set of server entities 120 associated with a resource system 101 . As mentioned, the resource system 101 comprises resources of a set of resource types. Each server entity 121 , 122, 123 of the set of server entities 120 is associated with respective resources. Again, the memory 302 contains the instructions executable by said processing circuit 304 whereby said task module 1 10 is operative for: obtaining information about the plurality of tasks, wherein the plurality of tasks is associated with task types, wherein each task type of the task types is associated with a respective demand of resources,
obtaining information about available resources associated with the resource system 101 ,
calculating, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources, wherein each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types, wherein a respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares,
selecting a task among the plurality of tasks, wherein a task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares,
initializing a set of global dominant task type resource shares, wherein the set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types, and wherein P50707 19 the task module 1 10 is operative for performing the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity: selecting a sub-set of server entities from among the set of server entities 120, wherein each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task,
calculating, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources, wherein each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types, wherein a respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares, wherein each said respective dominant server resource share is included among a set of dominant server resource shares,
finding, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type, wherein the particular resource type is equal to the resource type associated with the task type of the selected task,
assigning the selected task to one of said at least one specific server entity, updating the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task,
updating information about available resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources,
finding a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares, and
selecting, among a sub-set of tasks taken from the plurality of tasks, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set, wherein tasks of the sub-set are of a task type associated with the next resource type. P50707 20
Figure 3 further illustrates a carrier 305, or program carrier, which comprises the computer program 303 as described directly above.
In some embodiments, the processing module 301 comprises an Input/Output module 306, which may be exemplified by a receiving module and/or a sending module as described below when applicable.
In further embodiments, the task module 1 10 and/or the processing module 301 may comprise one or more of an obtaining module 310, a calculating module 320, a selecting module 330, an initializing module 340, a finding module 350, an assigning module 360, and an updating module 370 as exemplifying hardware modules. In other examples, one or more of the aforementioned exemplifying hardware modules may be implemented as one or more software modules. Accordingly, the task module 1 10 is configured for assigning a plurality of tasks to a set of server entities 120 associated with a resource system 101 . As mentioned, the resource system 101 comprises resources of a set of resource types. Each server entity 121 , 122, 123 of the set of server entities 120 is associated with respective resources.
Therefore, according to the various embodiments described above, the task module 1 10 and/or the processing module 301 and/or the obtaining module 310 is configured for obtaining information about the plurality of tasks. The plurality of tasks is associated with task types. Each task type of the task types is associated with a respective demand of resources.
The task module 1 10 and/or the processing module 301 and/or the obtaining module 310, or a further obtaining module (not shown), is configured for obtaining information about available resources associated with the resource system 101.
The task module 1 10 and/or the processing module 301 and/or the calculating module 320 is configured for calculating, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources. Each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types. A respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares. P50707 21
Furthermore, the task module 1 10 and/or the processing module 301 and/or the selecting module 330 is configured for selecting a task among the plurality of tasks. A task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares.
The task module 110 and/or the processing module 301 and/or the initializing module 340 is configured for initializing a set of global dominant task type resource shares. The set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types.
Moreover, the task module 1 10 is configured for performing the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity.
The task module 1 10 and/or the processing module 301 and/or the selecting module 330, or a further selecting module (not shown), is configured for selecting a subset of server entities from among the set of server entities 120. Each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task.
The task module 1 10 and/or the processing module 301 and/or the calculating module 320, or a further calculating module (not shown), is configured for calculating, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources. Each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types. A respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares. Each said respective dominant server resource share is included among a set of dominant server resource shares.
Additionally, the task module 1 10 and/or the processing module 301 and/or the finding module 350 is configured for finding, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type. The particular resource type is equal to the resource type associated with the task type of the selected task.
The task module 1 10 and/or the processing module 301 and/or the assigning P50707 22 module 360 is configured for assigning the selected task to one of said at least one specific server entity.
Furthermore, the task module 1 10 and/or the processing module 301 and/or the updating module 370 is configured for updating the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task.
The task module 1 10 and/or the processing module 301 and/or the updating module 370, or a further updating module, is configured for updating information about available resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources.
The task module 1 10 and/or the processing module 301 and/or the finding module 350, or a further finding module (not shown), is configured for finding a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares.
Moreover, the task module 1 10 and/or the processing module 301 and/or the selecting module 330, or a yet further selecting module (not shown), is configured for selecting, among a sub-set of tasks taken from the plurality of tasks, which sub-set of tasks is associated with the next resource type, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set. Tasks of the sub-set are of a task type associated with the next resource type. In some embodiments of the task module 1 10, said at least one specific server entity may comprise at least two specific server entities. In these embodiments, the task module 1 10 and/or the processing module 301 and/or the calculating module 320, or a yet further calculating module (not shown), may be configured for calculating, for each server entity of said at least two specific server entities, a respective network I/O resource share based on the information about available resources. The respective network I/O resource share is associated with a network I/O resource type. The network I/O resource type is included in the set of resource types. A set of network I/O resource shares comprises the respective network I/O resource share for said each server entity of said at least two specific server entities. P50707 23
Additionally, the task module 1 10 and/or the processing module 301 and/or the selecting module 330, or a still further selecting module (not shown), may be configured for selecting, among said at least two specific server entities, a selected specific server entity for which the respective network I/O resource share is among the greatest of the set of network I/O resources shares.
Also in with these embodiments, the task module 1 10 and/or the processing module 301 and/or the assigning module 360, or a further assigning module (not shown), may be configured for assigning of the selected task by assigning the selected task to the selected specific server entity.
The server entity may comprise a virtual hardware machine, a physical hardware machine, a virtual execution environment or the like.
The set of resource types may comprise one or more of: compute resource type, memory resource type, disk resource type, network I/O resource type and the like.
The information about the plurality of tasks may comprise, for each task of the plurality of tasks a respective identity of the respective task, a respective demand of resources.
The information about available resources may comprise a respective number indicating available resources for each of the resource types in the resource system 101.
As used herein, the term "node", may refer to one or more physical entities, such as devices, apparatuses, computers, servers or the like. This may mean that embodiments herein may be implemented in one physical entity. Alternatively, the embodiments herein may be implemented in a plurality of physical entities, such as an arrangement comprising said one or more physical entities, i.e. the embodiments may be implemented in a distributed manner, such as on a set of server machines of a cloud system.
As used herein, the term "module" may refer to one or more functional modules, each of which may be implemented as one or more hardware modules and/or one or more software modules and/or a combined software/hardware module in a node. In some examples, the module may represent a functional unit realized as software and/or hardware of the node.
As used herein, the term "computer program carrier", "program carrier", or "carrier", may refer to one of an electronic signal, an optical signal, a radio signal, and a P50707 24 computer readable medium. In some examples, the computer program carrier may exclude transitory, propagating signals, such as the electronic, optical and/or radio signal. Thus, in these examples, the computer program carrier may be a non-transitory carrier, such as a non-transitory computer readable medium.
As used herein, the term "processing module" may include one or more hardware modules, one or more software modules or a combination thereof. Any such module, be it a hardware, software or a combined hardware-software module, may be a determining means, estimating means, capturing means, associating means, comparing means, identification means, selecting means, receiving means, sending means or the like as disclosed herein. As an example, the expression "means" may be a module
corresponding to the modules listed above in conjunction with the Figures.
As used herein, the term "software module" may refer to a software application, a Dynamic Link Library (DLL), a software component, a software object, an object according to Component Object Model (COM), a software component, a software function, a software engine, an executable binary software file or the like.
As used herein, the term "processing circuit" may refer to a processing unit, a processor, an Application Specific integrated Circuit (ASIC), a Field-Programmable Gate Array (FPGA) or the like. The processing circuit or the like may comprise one or more processor kernels.
As used herein, the expression "configured to/for" may mean that a processing circuit is configured to, such as adapted to or operative to, by means of software configuration and/or hardware configuration, perform one or more of the actions described herein.
As used herein, the term "action" may refer to an action, a step, an operation, a response, a reaction, an activity or the like. It shall be noted that an action herein may be split into two or more sub-actions as applicable. Moreover, also as applicable, it shall be noted that two or more of the actions described herein may be merged into a single action.
As used herein, the term "memory" may refer to a hard disk, a magnetic storage medium, a portable computer diskette or disc, flash memory, random access memory (RAM) or the like. Furthermore, the term "memory" may refer to an internal register memory of a processor or the like.
As used herein, the term "computer readable medium" may be a Universal Serial Bus (USB) memory, a DVD-disc, a Blu-ray disc, a software module that is received as a P50707 25 stream of data, a Flash memory, a hard drive, a memory card, such as a MemoryStick, a Multimedia Card (MMC), Secure Digital (SD) card, etc. One or more of the
aforementioned examples of computer readable medium may be provided as one or more computer program products.
As used herein, the term "computer readable code units" may be text of a computer program, parts of or an entire binary file representing a computer program in a compiled format or anything there between.
As used herein, the expression "transmit" and "send" are considered to be interchangeable. These expressions include transmission by broadcasting, uni-casting, group-casting and the like. In this context, a transmission by broadcasting may be received and decoded by any authorized device within range. In case of uni-casting, one specifically addressed device may receive and decode the transmission. In case of group-casting, a group of specifically addressed devices may receive and decode the transmission.
As used herein, the terms "number" and/or "value" may be any kind of digit, such as binary, real, imaginary or rational number or the like. Moreover, "number" and/or "value" may be one or more characters, such as a letter or a string of letters. "Number" and/or "value" may also be represented by a string of bits, i.e. zeros and/or ones.
As used herein, the term "set of may refer to one or more of something. E.g. a set of devices may refer to one or more devices, a set of parameters may refer to one or more parameters or the like according to the embodiments herein.
As used herein, the expression "in some embodiments" has been used to indicate that the features of the embodiment described may be combined with any other embodiment disclosed herein.
Further, as used herein, the common abbreviation "e.g.", which derives from the
Latin phrase "exempli gratia," may be used to introduce or specify a general example or examples of a previously mentioned item, and is not intended to be limiting of such item. If used herein, the common abbreviation "i.e.", which derives from the Latin phrase "id est," may be used to specify a particular item from a more general recitation. The common abbreviation "etc.", which derives from the Latin expression "et cetera" meaning "and other things" or "and so on" may have been used herein to indicate that further features, similar to the ones that have just been enumerated, exist.
Even though embodiments of the various aspects have been described, many P50707 26 different alterations, modifications and the like thereof will become apparent for those skilled in the art. The described embodiments are therefore not intended to limit the scope of the present disclosure.

Claims

P50707 27 CLAIMS
1 . A method, performed by a task module (1 10), for assigning a plurality of tasks to a set of server entities (120) associated with a resource system (101 ), wherein the resource system (101) comprises resources of a set of resource types, wherein each server entity (121 , 122, 123) of the set of server entities (120) is associated with respective resources, wherein the method comprises:
obtaining (A010) information about the plurality of tasks, wherein the plurality of tasks is associated with task types, wherein each task type of the task types is associated with a respective demand of resources,
obtaining (A020) information about available resources associated with the resource system (101),
calculating (A030), for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources, wherein each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types, wherein a respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares,
selecting (A040) a task among the plurality of tasks, wherein a task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares,
initializing (A050) a set of global dominant task type resource shares, wherein the set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types, and wherein
the method comprises the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity:
selecting (A060) a sub-set of server entities from among the set of server entities (120), wherein each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task, calculating (A070), for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources, wherein each server resource share of the respective set of server P50707 28 resource shares is associated with a respective resource type of the set of resource types, wherein a respective dominant server resource share for said each server entity is among the greatest server resource shares of the respective set of server resources shares, wherein each said respective dominant server resource share is included among a set of dominant server resource shares,
finding (A090), among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type, wherein the particular resource type is equal to the resource type associated with the task type of the selected task,
assigning (A1 10) the selected task to one of said at least one specific server entity,
updating (A130) the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task,
updating (A140) information about available resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources,
finding (A150) a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares, and
selecting (A160), among a sub-set of tasks taken from the plurality of tasks, which sub-set of tasks is associated with the next resource type, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set, wherein tasks of the sub-set are of a task type associated with the next resource type.
2. The method according to claim 1 , wherein said at least one specific server entity comprises at least two specific server entities, wherein the method comprises: calculating (A080), for each server entity of said at least two specific server entities, a respective network I/O resource share based on the information about available resources, wherein the respective network I/O resource share is associated with a network I/O resource type, wherein the network I/O resource type is included P50707 29 in the set of resource types, wherein a set of network I/O resource shares comprises the respective network I/O resource share for said each server entity of said at least two specific server entities, and
selecting (A100), among said at least two specific server entities, a selected specific server entity for which the respective network I/O resource share is among the greatest of the set of network I/O resources shares, and
wherein the assigning of the selected task comprises:
assigning (A120) the selected task to the selected specific server entity.
3. The method according to any one of the preceding claims, wherein the server entity comprises a virtual hardware machine, a physical hardware machine, or a virtual execution environment.
4. The method according to any one of the preceding claims, wherein the set of
resource types comprises one or more of: compute resource type, memory resource type, disk resource type and network I/O resource type.
5. The method according to any one of the preceding claims, wherein the information about the plurality of tasks comprises, for each task of the plurality of tasks a respective identity of the respective task, a respective demand of resources.
6. The method according to any one of the preceding claims, wherein the information about available resources comprises a respective number indicating available resources for each of the resource types in the resource system (101).
7. A computer program (303), comprising computer readable code units which when executed on a task module (1 10) causes the task module (1 10) to perform the method according to any one of claims 1-6.
8. A carrier (305) comprising the computer program (303) according to the preceding claim, wherein the carrier (305) is one of an electronic signal, an optical signal, a radio signal and a computer readable medium.
9. A task module (1 10) configured for assigning a plurality of tasks to a set of server entities (120) associated with a resource system (101 ), wherein the resource system (101 ) comprises resources of a set of resource types, wherein each server entity (121 , 122, 123) of the set of server entities (120) is associated with respective resources, wherein the task module (1 10) is configured for:
obtaining information about the plurality of tasks, wherein the plurality of tasks is associated with task types, wherein each task type of the task types is associated with a respective demand of resources,
obtaining information about available resources associated with the resource system (101),
calculating, for said each task type, a respective set of task type resource shares based on the respective demand of resources and the information about available resources, wherein each task type resource share of the respective set of task type resource shares is associated with a respective resource type of the set of resource types, wherein a respective dominant task type resource share for said each task type is among the greatest of the task type resource shares of the respective set of task type resource shares,
selecting a task among the plurality of tasks, wherein a task type of the selected task is associated with a specific dominant task type resource share that is among the most extreme dominant task type resource shares of the set of dominant task type resource shares,
initializing a set of global dominant task type resource shares, wherein the set of global dominant task type resource shares comprises a respective global dominant task type resource share associated with a respective resource type of the set of resource types, and wherein
the task module (1 10) is configured for performing the following actions, which are repeated for at least some tasks pending to be assigned to a designated server entity:
selecting a sub-set of server entities from among the set of server entities (120), wherein each server entity of the sub-set of server entities fulfils the respective demand of resources associated with the task type of the selected task,
calculating, for said each server entity of the sub-set of server entities, a respective set of server resource shares based on the information about available resources, wherein each server resource share of the respective set of server resource shares is associated with a respective resource type of the set of resource types, wherein a respective dominant server resource share for said each server P50707 31 entity is among the greatest server resource shares of the respective set of server resources shares, wherein each said respective dominant server resource share is included among a set of dominant server resource shares,
finding, among the sub-set of server entities, at least one specific server entity for which the respective dominant server resource share is among the greatest of a sub-set of dominant server resources shares of a particular resource type, wherein the particular resource type is equal to the resource type associated with the task type of the selected task,
assigning the selected task to one of said at least one specific server entity, updating the respective global dominant task type resource share associated with the resource type of the dominant task type resource share of the selected task by increasing the respective global dominant task type resource share with the dominant task type resource share of the selected task,
updating information about available resources based on demand of resources of the selected task by deducting the demand of resources from the information about available resources,
finding a next resource type of the respective global dominant task type resource share that is among the least global dominant task type resource shares of the set of global dominant task type resource shares, and
selecting, among a sub-set of tasks taken from the plurality of tasks, which sub-set of tasks is associated with the next resource type, a selected task for which the dominant task type resource share is among the most extreme dominant task type resource shares associated with the sub-set, wherein tasks of the sub-set are of a task type associated with the next resource type.
10. The task module (1 10) according to claim 9, wherein said at least one specific server entity comprises at least two specific server entities, wherein the task module (1 10) further is configured for:
calculating, for each server entity of said at least two specific server entities, a respective network I/O resource share based on the information about available resources, wherein the respective network I/O resource share is associated with a network I/O resource type, wherein the network I/O resource type is included in the set of resource types, wherein a set of network I/O resource shares comprises the respective network I/O resource share for said each server entity of said at least two P50707 32 specific server entities, and
selecting, among said at least two specific server entities, a selected specific server entity for which the respective network I/O resource share is among the greatest of the set of network I/O resources shares, and
wherein the task module (1 10) is configured for assigning of the selected task by assigning the selected task to the selected specific server entity.
1 1 . The task module (1 10) according to any one of claims 9-10, wherein the server entity comprises a virtual hardware machine, a physical hardware machine, or a virtual execution environment.
12. The task module (1 10) according to any one of claims 9-1 1 , wherein the set of resource types comprises one or more of: compute resource type, memory resource type, disk resource type and network I/O resource type.
13. The task module (1 10) according to any one of claims 9-12, wherein the information about the plurality of tasks comprises, for each task of the plurality of tasks a respective identity of the respective task, a respective demand of resources.
14. The task module (1 10) according to any one of claims 9-13, wherein the information about available resources comprises a respective number indicating available resources for each of the resource types in the resource system (101).
PCT/SE2016/050951 2016-10-05 2016-10-05 Method and module for assigning task to server entity WO2018067047A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/SE2016/050951 WO2018067047A1 (en) 2016-10-05 2016-10-05 Method and module for assigning task to server entity

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/SE2016/050951 WO2018067047A1 (en) 2016-10-05 2016-10-05 Method and module for assigning task to server entity

Publications (1)

Publication Number Publication Date
WO2018067047A1 true WO2018067047A1 (en) 2018-04-12

Family

ID=57200066

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/SE2016/050951 WO2018067047A1 (en) 2016-10-05 2016-10-05 Method and module for assigning task to server entity

Country Status (1)

Country Link
WO (1) WO2018067047A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020133967A1 (en) * 2018-12-26 2020-07-02 深圳市网心科技有限公司 Method for scheduling shared computing resources, shared computing system, server, and storage medium

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951694A (en) * 1995-06-07 1999-09-14 Microsoft Corporation Method of redirecting a client service session to a second application server without interrupting the session by forwarding service-specific information to the second server
WO2015080752A1 (en) * 2013-11-29 2015-06-04 New Jersey Institute Of Technology Allocation of virtual machines to physical machines through dominant resource assisted heuristics
WO2015177532A1 (en) * 2014-05-21 2015-11-26 University Of Leeds A mechanism for controled server overallocation in a datacenter

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5951694A (en) * 1995-06-07 1999-09-14 Microsoft Corporation Method of redirecting a client service session to a second application server without interrupting the session by forwarding service-specific information to the second server
WO2015080752A1 (en) * 2013-11-29 2015-06-04 New Jersey Institute Of Technology Allocation of virtual machines to physical machines through dominant resource assisted heuristics
WO2015177532A1 (en) * 2014-05-21 2015-11-26 University Of Leeds A mechanism for controled server overallocation in a datacenter

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A. GHODSI; M. ZAHARIA; B. HINDMAN; A. KONWINSKI; S. SHENKER; I. STOICA SUGGEST: "Dominant resource fairness: Fair allocation of multiple resource types", PROC. USENIX NSDI, 2011
ALI GHODSI ET AL: "Dominant Resource Fairness: Fair Allocation of Multiple Resource Types", USENIX,, 8 March 2011 (2011-03-08), pages 1 - 14, XP061010831 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020133967A1 (en) * 2018-12-26 2020-07-02 深圳市网心科技有限公司 Method for scheduling shared computing resources, shared computing system, server, and storage medium

Similar Documents

Publication Publication Date Title
US20160260095A1 (en) Containerized Computational Task Execution Management Using a Secure Distributed Transaction Ledger
US9922045B2 (en) Data management in a multi-tenant distributive environment
US9804881B2 (en) System and method for resizing a virtual desktop infrastructure using virtual desktop infrastructure monitoring tools
US9026630B2 (en) Managing resources in a distributed system using dynamic clusters
US8447891B2 (en) Dynamically assigning virtual functions to client applications
US10459812B2 (en) Seamless method for booting from a degraded software raid volume on a UEFI system
US10372639B2 (en) System and method to avoid SMBus address conflicts via a baseboard management controller
US20110314326A1 (en) Monitoring service endpoints
CN107506145B (en) Physical storage scheduling method and cloud host creation method
US9535743B2 (en) Data processing control method, computer-readable recording medium, and data processing control device for performing a Mapreduce process
US20160266888A1 (en) System and Method for Adaptive Application Self-Updating
CN114503076A (en) Incremental data determining method and device, server and terminal equipment
US20150227385A1 (en) Unified Extensible Firmware Interface System Management Mode Initialization Protections with System Management Interrupt Transfer Monitor Sandboxing
US11048557B2 (en) Methods and modules relating to allocation of host machines
US11347541B2 (en) Methods and apparatus for virtual machine rebalancing
CN108614734B (en) Security parameter index management method and device
US9164775B2 (en) Method and apparatus for performing an out of band job
US11513860B2 (en) Serverless function colocation with storage pools
WO2018067047A1 (en) Method and module for assigning task to server entity
CN108920278B (en) Resource allocation method and device
CN109407970B (en) Read-write request processing method and device and electronic equipment
CN111858014A (en) Resource allocation method and device
US10673937B2 (en) Dynamic record-level sharing (RLS) provisioning inside a data-sharing subsystem
US10579301B1 (en) Processing platform configured to estimate storage system performance utilizing processor characteristics
EP3811210B1 (en) Method and supporting node for supporting process scheduling in a cloud system

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

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

Country of ref document: EP

Kind code of ref document: A1