US20110167427A1 - Computing system, method and computer-readable medium preventing starvation - Google Patents

Computing system, method and computer-readable medium preventing starvation Download PDF

Info

Publication number
US20110167427A1
US20110167427A1 US12/907,639 US90763910A US2011167427A1 US 20110167427 A1 US20110167427 A1 US 20110167427A1 US 90763910 A US90763910 A US 90763910A US 2011167427 A1 US2011167427 A1 US 2011167427A1
Authority
US
United States
Prior art keywords
task
group
tasks
priority
processed
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
US12/907,639
Other versions
US8799913B2 (en
Inventor
Jeong Joon Yoo
Shi Hwa Lee
Seung Won Lee
Young Sam Shin
Min Yung Son
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Assigned to SAMSUNG ELECTRONICS CO., LTD. reassignment SAMSUNG ELECTRONICS CO., LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LEE, SEUNG WON, LEE, SHI HWA, SHIN, YOUNG SAM, SON, MIN YUNG, YOO, JEONG JOON
Publication of US20110167427A1 publication Critical patent/US20110167427A1/en
Application granted granted Critical
Publication of US8799913B2 publication Critical patent/US8799913B2/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Definitions

  • Example embodiments of the following description relate to a computing system, a digital TV (DTV), an MPEG Audio Layer-3 (MP3) player, a printer, and a Solid State Disk (SSD), which enable a priority-based task scheduling. More particularly, example embodiments of the following description relate to a method that may prevent occurrence of a starvation phenomenon while maintaining priorities of tasks through task scheduling.
  • DTV digital TV
  • MP3 MPEG Audio Layer-3
  • SSD Solid State Disk
  • the task may be scheduled to be processed earlier than other tasks.
  • priority-based scheduling has a problem of a starvation phenomenon where a lower priority task will never be executed because a higher priority task continues to occupy resources.
  • a computing system, method and computer-readable medium may prevent a starvation phenomenon of lower priority tasks while maintaining a resource occupancy rate based on task priorities in a priority-based task scheduling.
  • a computing system including a task management unit to divide a plurality of tasks to be processed into a first group and a second group, the first group based on a priority and including a virtual task representing tasks in the second group, and a processing unit to process tasks in the first group according to the priority, wherein, when the virtual task is to be processed, the processing unit selects one of the tasks in the second group and processes the selected task.
  • the processing unit may process one task that is selected from the tasks in the second group using a Round-Robin scheme.
  • the processing unit may process one task that is randomly selected from the tasks in the second group.
  • the computing system may further include a load rate measuring unit to measure a rate of a time taken to process the virtual task with respect to a time taken to process the tasks in the first group.
  • the task management unit may move a lowest priority task among the tasks in the first group to the second group.
  • the task management unit may move the new task to the first group.
  • the task management unit may move the new task to the second group.
  • the task management unit may manage a first pointer to point to a lowest priority task among the tasks in the first group.
  • the task management unit may move the highest priority task among the tasks in the second group to the first group, and may adjust the first pointer to point to the moved task.
  • the task management unit may manage a second pointer to point to a highest priority task among the tasks in the second group.
  • the task management unit may move the lowest priority task among the tasks in the first group to the second group, and may adjust the second pointer to point to the moved task.
  • the task management unit may manage a first pointer to point to a lowest priority task among the tasks in the first group, and a second pointer to point to a highest priority task among the tasks in the second group.
  • the task management unit may move the new task to the first group.
  • the priority of the new task is equal to or lower than the priority of the lowest priority task pointed to by the first pointer, the task management unit may move the new task to the second group.
  • the task management unit may adjust the second pointer to point to a highest priority task among the tasks and the new task that are in the second group.
  • a computing method including dividing, by a processor, a plurality of tasks to be processed into a first group and a second group, the first group based on a priority and including a virtual task representing tasks in the second group, and processing, by the processor, tasks in the first group according to the priority, wherein the processing includes selecting one of the tasks in the second group and processing the selected task when the virtual task is to be processed.
  • FIG. 1 illustrates a block diagram of a computing system according to example embodiments
  • FIG. 2 conceptually illustrates a plurality of tasks grouped by a computing method according to example embodiments
  • FIG. 3 conceptually illustrates a result of a task promotion performed by a computing method according to example embodiments
  • FIG. 4 conceptually illustrates an example where a task demotion is demanded, according to example embodiments
  • FIG. 5 conceptually illustrates a result of a task demotion performed by a computing method according to example embodiments
  • FIG. 6 conceptually illustrates an example where a new task is input to a computing system according to example embodiments
  • FIG. 7 conceptually illustrates a result of grouping the tasks including the input new task shown in FIG. 6 by a computing method according to example embodiments;
  • FIG. 8 illustrates a flowchart of a computing method according to example embodiments.
  • FIG. 9 illustrates a flowchart of an operation of processing tasks contained in a first group in the computing method of FIG. 8 .
  • FIG. 1 illustrates a block diagram of a computing system 100 according to example embodiments.
  • the computing system 100 of FIG. 1 may include a processing unit 110 , a task management unit 120 , and a load rate measuring unit 130 .
  • the processing unit 110 may process a plurality of tasks.
  • the task management unit 120 may perform scheduling so that the plurality of tasks may be processed by the processing unit 110 .
  • the load rate measuring unit 130 may improve scheduling efficiency.
  • the task management unit 120 may divide the plurality of tasks to be processed by the processing unit 110 into a first group and a second group.
  • a priority-based scheduling may be performed in the first group, and may not be performed in the second group.
  • the first group may include a virtual task that represents tasks in the second group.
  • the virtual task may have a lowest priority in the first group.
  • the task management unit 120 may perform a task scheduling so that tasks in the first group may be processed sequentially according to their priorities, and that one of the tasks in the second group may be processed when the virtual task of the first group is to be processed.
  • the load rate measuring unit 130 may periodically or continuously measure a load rate. In other words, a rate of a time taken to process the virtual task with respect to a time taken to process the plurality of tasks may be measured, based on the scheduling performed by the task management unit 120 .
  • the measured load rate may be used to perform a task promotion or a task demotion.
  • the task promotion will be further described with reference to FIGS. 2 and 3
  • the task demotion will be further described with reference to FIGS. 4 and 5 .
  • FIG. 2 conceptually illustrates a plurality of tasks grouped by a computing method according to example embodiments.
  • the plurality of tasks to be processed in the computing system 100 may have their respective priority levels.
  • the task T 0 has a highest priority level, and the tasks T 2 to T 5 are arranged in a descending priority order.
  • a priority level may be typically determined depending on how many requests to process a task in real-time are received.
  • a lowest priority task for example the task T 5
  • the starvation phenomenon where no resources are allocated.
  • resources may be allocated to the new task earlier than the task T 5 according to the descending priority order, and accordingly, no resources may be allocated to task T 5 .
  • This conventional method fails to match the original intent of assigning priorities to tasks, even though the starvation phenomenon is prevented. In other words, it is not desirable to use the conventional method in the task scheduling.
  • all of the tasks may be divided into at least two groups.
  • the first group 210 includes a virtual task T v representing all of the tasks T 2 to T 5 in the second group 220 .
  • the priority-based task scheduling may be performed in the first group 210 , so that the tasks T 0 and T v may be processed according to their priorities.
  • a task demotion may occur due to a low load rate of the virtual task T v , and the highest priority task may be moved from the first group 210 to the second group 220 .
  • the first group 210 may include only the virtual task T v
  • the second group 220 may include the tasks except for the virtual task T v .
  • the plurality of tasks may be scheduled using the Round-Robin scheme or a random scheduling scheme, for example.
  • a task promotion may occur with respect to a highest priority task in the second group 220 , which will be described below.
  • next index pointer 222 may point to a task among the tasks in the second group 220 , so that the task may be processed when the virtual task T v is to be processed.
  • Round-Robin scheme is merely an example in the example embodiments, the example embodiments may be applied to schemes other than the Round-Robin scheme.
  • the tasks in the first group 210 may be moved to the second group 220 , which is referred to as “task demotion”.
  • the tasks in the second group 220 may be moved to the first group 210 , which is referred to as “task promotion”.
  • a lowest pointer 211 may point to a task to be moved to the second group 220 .
  • the lowest pointer 211 may point to a lowest priority task among the tasks in the first group 210 except for the virtual task T v .
  • a highest pointer 221 may point to a task to be moved to the first group 210 .
  • the highest pointer 221 may point to a highest priority task among the tasks in the second group 220 .
  • a time taken to process the virtual task T v while processing the tasks in the first group 210 may be measured.
  • a rate of a time taken to process a task selected from the second group 220 with respect to a time taken to process all the tasks in the first group 210 may be measured.
  • the measured rate is referred to as the “load rate”.
  • the load rate may be set to be a value between 0 and 1.
  • a high load rate means that tasks are scheduled almost regardless of the priority. In this instance, the priority is to be more involved in scheduling of all the tasks.
  • FIG. 3 conceptually illustrates a result of a task promotion performed by a computing method according to example embodiments.
  • the task T 2 is in a first group 310 as a result of the task promotion.
  • the task T 2 may have the lowest priority in the first group 310 , and thus, a lowest pointer 311 may be adjusted to point to the task T 2 .
  • a highest pointer 321 may be adjusted to point to a highest priority task, for example, task T 3 among the tasks T 3 , T 4 , and T 5 remaining in a second group 320 .
  • the tasks T 0 , T 2 , and T v in the first group 310 may be processed sequentially according to their priorities. As described above, when the virtual task T v is to be processed after the tasks in the first group 310 are sequentially processed according to their priorities, the task T 5 pointed to by a next index pointer 322 may be processed.
  • the first threshold set in the initial setting may remain unchanged, and may be adaptively controlled based on an amount of remaining computing resources.
  • the task demotion needs to be performed with respect to a part of the tasks in the first group 310 .
  • FIG. 4 conceptually illustrates an example where the task demotion is demanded.
  • a first group 410 may include a large number of tasks as a result of the task promotion performed as described above.
  • a low load rate may be measured.
  • the load rate refers to a rate of a time taken to process the virtual task T v with respect to a time taken to process all the tasks in the first group 410 .
  • the load rate may be periodically or continuously measured. When the load rate is equal to or less than a second threshold, the task demotion may be performed.
  • task T 4 pointed to by a lowest pointer 411 among the tasks in the first group 410 may be moved to a second group 420 .
  • the lowest pointer 411 may be adjusted to point to a lowest priority task, for example, task T 3 .
  • the task T 4 may have the highest priority in the second group 420 , and thus, a highest pointer 421 may be adjusted to point to the task T 4 .
  • a next index pointer 422 may be adjusted to point to the task T 4 moved by the task demotion to the second group 420 . While the next index pointer 422 is adjusted in this example embodiment, other example embodiments may be applied to an example where the next index pointer 422 is not adjusted.
  • FIG. 5 conceptually illustrates a result of a task demotion performed by a computing method according to example embodiments.
  • the task T 4 is moved to a second group 520 , as a result of the task demotion performed as described above. Also, a highest pointer 521 and a next index pointer 522 may be adjusted to point to the task T 4 .
  • a lowest pointer 511 may be adjusted to point to the task T 3 in a first group 510 .
  • tasks in the first group 510 may be processed in a descending priority order.
  • the task T 4 may be processed, and the next index pointer 522 may then be adjusted to point to the task T 5 .
  • the new task when a new task is input, the new task may be input into one of the first group and the second group after a determination.
  • the new task will be given with reference to FIGS. 6 and 7 .
  • FIG. 6 conceptually illustrates an example where a new task 630 is input to a computing system according to example embodiments.
  • a first group 610 contains tasks T 0 , T 2 , and T v , and a lowest pointer 611 currently points to task T 2 .
  • a second group 620 contains tasks T 3 , T 4 , and T 5 , and a highest pointer 621 and a next index pointer 622 currently point to the task T 3 and the task T 5 , respectively.
  • the new task 630 may be inserted in the second group 620 .
  • the highest pointer 621 may be adjusted to point to a highest priority task among the tasks T 3 , T 4 , and T 5 and the new task 630 that are in the second group 620 .
  • FIG. 7 A result of the above-described operation is shown in FIG. 7 .
  • FIG. 7 conceptually illustrates a result of grouping the tasks including the input new task 630 .
  • a first group 710 contains tasks T 0 , T 2 , and T v , and a lowest pointer 711 currently points to the task T 2 in the same manner as the lowest pointer 611 of FIG. 6 .
  • a second group 720 further includes the new task 630 , and a highest pointer 721 currently points to the new task 630 .
  • two different tasks with the same priority level are in the second group 720 .
  • the tasks in the first group 710 may be processed according to their priorities.
  • task T 5 pointed to by a next index pointer 722 may be processed.
  • FIG. 8 illustrates a flowchart of a computing method according to example embodiments.
  • a plurality of tasks to be processed may be divided into a first group and a second group.
  • tasks in the first group may be processed according to their priorities.
  • a task promotion may be performed in operation 850 .
  • the task promotion has been described above with reference to FIGS. 2 and 3 .
  • the current load rate may be compared with a second threshold.
  • the operations 840 to 870 may be repeated until the processing of all the tasks in the first group is determined to be completed.
  • FIG. 9 further illustrates a flowchart of processing tasks in the first group according to their priorities of FIG. 8 .
  • the tasks in the first group may be processed according to their priorities.
  • operation 920 it may be determined whether the virtual task is currently to be processed.
  • a task pointed to by a next index pointer among the tasks in the second group may be processed in operation 930 .
  • next index pointer may be adjusted to point to another task in the second group.
  • the next index pointer may be adjusted using a fairness scheduling scheme such as Round-Robin scheme, or in a random manner or the like.
  • the above-described embodiments may be recorded in non-transitory computer-readable media including program instructions to implement various operations embodied by a computer.
  • the media may also include, alone or in combination with the program instructions, data files, data structures, and the like.
  • the program instructions recorded on the media may be those specially designed and constructed for the purposes of the embodiments, or they may be of the kind well-known and available to those having skill in the computer software arts.
  • non-transitory computer-readable media examples include magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD ROM disks and DVDs; magneto-optical media such as optical disks; and hardware devices that are specially configured to store and perform program instructions, such as read-only memory (ROM), random access memory (RAM), flash memory, and the like.
  • the computer-readable media may be a plurality of computer-readable storage devices in a distributed network, so that the program instructions are stored in the plurality of computer-readable storage devices and executed in a distributed fashion.
  • the program instructions may be executed by one or more processors or processing devices.
  • the computer-readable media may also be embodied in at least one application specific integrated circuit (ASIC) or Field Programmable Gate Array (FPGA).
  • ASIC application specific integrated circuit
  • FPGA Field Programmable Gate Array
  • Examples of program instructions include both machine code, such as produced by a compiler, and files containing higher level code that may be executed by the computer using an interpreter.
  • the described hardware devices may be configured to act as one or more software modules in order to perform the operations of the above-described embodiments, or vice versa.

Abstract

A computing system, method and computer-readable medium is provided. To prevent a starvation phenomenon from occurring in a priority-based task scheduling, a plurality of tasks may be divided into a priority-based group and other groups. The groups to which the tasks belong may be changed.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application claims the benefit of Korean Patent Application No. 10-2010-0001101, filed on Jan. 7, 2010, in the Korean Intellectual Property Office, the disclosure of which is incorporated herein by reference.
  • BACKGROUND
  • 1. Field
  • Example embodiments of the following description relate to a computing system, a digital TV (DTV), an MPEG Audio Layer-3 (MP3) player, a printer, and a Solid State Disk (SSD), which enable a priority-based task scheduling. More particularly, example embodiments of the following description relate to a method that may prevent occurrence of a starvation phenomenon while maintaining priorities of tasks through task scheduling.
  • 2. Description of the Related Art
  • In a computing system using a Central Processing Unit (CPU), a Direct Memory Access (DMA), and a network, and in a variety of electronic products, several processes or threads (hereinafter, referred to as “tasks”) may be executed. In this instance, there is a demand to schedule tasks to determine an order of processing the tasks using limited resources.
  • Typically, priorities may be respectively set to tasks, and the tasks may be scheduled, so that a higher priority task may be processed first among the tasks having different priorities. This operation is called “priority-based scheduling”.
  • For example, when a task associated with multimedia applications to be processed in real-time is set to have a relatively higher priority, the task may be scheduled to be processed earlier than other tasks.
  • However, priority-based scheduling has a problem of a starvation phenomenon where a lower priority task will never be executed because a higher priority task continues to occupy resources.
  • SUMMARY
  • Accordingly, it is an aspect of example embodiments to provide a computing system, method and computer-readable medium that may prevent a starvation phenomenon of lower priority tasks while maintaining a resource occupancy rate based on task priorities in a priority-based task scheduling.
  • Also, it is another aspect of example embodiments to provide an efficient computing system, method and computer-readable medium that may schedule tasks adaptively depending on whether sufficient resources are available, so that a higher priority task may be executed more frequently.
  • The foregoing and/or other aspects are achieved by providing a computing system, including a task management unit to divide a plurality of tasks to be processed into a first group and a second group, the first group based on a priority and including a virtual task representing tasks in the second group, and a processing unit to process tasks in the first group according to the priority, wherein, when the virtual task is to be processed, the processing unit selects one of the tasks in the second group and processes the selected task.
  • When the virtual task is to be processed, the processing unit may process one task that is selected from the tasks in the second group using a Round-Robin scheme.
  • Also, when the virtual task is to be processed, the processing unit may process one task that is randomly selected from the tasks in the second group.
  • The computing system may further include a load rate measuring unit to measure a rate of a time taken to process the virtual task with respect to a time taken to process the tasks in the first group.
  • When the measured rate is equal to or greater than a first threshold, the task management unit may move a highest priority task among the tasks in the second group to the first group.
  • When the measured rate is equal to or less than a second threshold, the task management unit may move a lowest priority task among the tasks in the first group to the second group.
  • When a new task to be processed is generated in the computing system, and when a priority of the new task is higher than a priority of a lowest priority task among the tasks in the first group, the task management unit may move the new task to the first group. When the priority of the new task is lower than the priority of the lowest priority task, the task management unit may move the new task to the second group.
  • The task management unit may manage a first pointer to point to a lowest priority task among the tasks in the first group. When the measured rate is equal to or greater than the first threshold, the task management unit may move the highest priority task among the tasks in the second group to the first group, and may adjust the first pointer to point to the moved task.
  • The task management unit may manage a second pointer to point to a highest priority task among the tasks in the second group. When the measured rate is equal to or less than the second threshold, the task management unit may move the lowest priority task among the tasks in the first group to the second group, and may adjust the second pointer to point to the moved task.
  • The task management unit may manage a first pointer to point to a lowest priority task among the tasks in the first group, and a second pointer to point to a highest priority task among the tasks in the second group. When a new task to be processed is generated, and when a priority of the new task is higher than a priority of the lowest priority task pointed to by the first pointer, the task management unit may move the new task to the first group. When the priority of the new task is equal to or lower than the priority of the lowest priority task pointed to by the first pointer, the task management unit may move the new task to the second group. When the priority of the new task moved to the second group is compared with a priority of the highest priority task pointed to by the second pointer, the task management unit may adjust the second pointer to point to a highest priority task among the tasks and the new task that are in the second group.
  • The foregoing and/or other aspects are achieved by providing a computing method, including dividing, by a processor, a plurality of tasks to be processed into a first group and a second group, the first group based on a priority and including a virtual task representing tasks in the second group, and processing, by the processor, tasks in the first group according to the priority, wherein the processing includes selecting one of the tasks in the second group and processing the selected task when the virtual task is to be processed.
  • According to another aspect of one or more embodiments, there is provided at least one computer readable medium including computer readable instructions that control at least one processor to implement methods of one or more embodiments.
  • Additional aspects, features, and/or advantages of embodiments will be set forth in part in the description which follows and, in part, will be apparent from the description, or may be learned by practice of the disclosure.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • These and/or other aspects, features, and advantages of embodiments will become apparent and more readily appreciated from the following description, taken in conjunction with the accompanying drawings of which:
  • FIG. 1 illustrates a block diagram of a computing system according to example embodiments;
  • FIG. 2 conceptually illustrates a plurality of tasks grouped by a computing method according to example embodiments;
  • FIG. 3 conceptually illustrates a result of a task promotion performed by a computing method according to example embodiments;
  • FIG. 4 conceptually illustrates an example where a task demotion is demanded, according to example embodiments;
  • FIG. 5 conceptually illustrates a result of a task demotion performed by a computing method according to example embodiments;
  • FIG. 6 conceptually illustrates an example where a new task is input to a computing system according to example embodiments;
  • FIG. 7 conceptually illustrates a result of grouping the tasks including the input new task shown in FIG. 6 by a computing method according to example embodiments;
  • FIG. 8 illustrates a flowchart of a computing method according to example embodiments; and
  • FIG. 9 illustrates a flowchart of an operation of processing tasks contained in a first group in the computing method of FIG. 8.
  • DETAILED DESCRIPTION
  • Reference will now be made in detail to embodiments, examples of which are illustrated in the accompanying drawings, wherein like reference numerals refer to like elements throughout. Embodiments are described below to explain the present disclosure by referring to the figures.
  • FIG. 1 illustrates a block diagram of a computing system 100 according to example embodiments.
  • The computing system 100 of FIG. 1 may include a processing unit 110, a task management unit 120, and a load rate measuring unit 130. The processing unit 110 may process a plurality of tasks. The task management unit 120 may perform scheduling so that the plurality of tasks may be processed by the processing unit 110. Also, the load rate measuring unit 130 may improve scheduling efficiency.
  • The task management unit 120 may divide the plurality of tasks to be processed by the processing unit 110 into a first group and a second group.
  • A priority-based scheduling may be performed in the first group, and may not be performed in the second group. In this instance, the first group may include a virtual task that represents tasks in the second group. The virtual task may have a lowest priority in the first group.
  • Also, the task management unit 120 may perform a task scheduling so that tasks in the first group may be processed sequentially according to their priorities, and that one of the tasks in the second group may be processed when the virtual task of the first group is to be processed.
  • Accordingly, it is possible to process the plurality of tasks according to the priorities, and to prevent a starvation phenomenon. Hereinafter, this operation will be further described with reference to FIG. 2.
  • The load rate measuring unit 130 may periodically or continuously measure a load rate. In other words, a rate of a time taken to process the virtual task with respect to a time taken to process the plurality of tasks may be measured, based on the scheduling performed by the task management unit 120.
  • The measured load rate may be used to perform a task promotion or a task demotion. The task promotion will be further described with reference to FIGS. 2 and 3, and the task demotion will be further described with reference to FIGS. 4 and 5.
  • FIG. 2 conceptually illustrates a plurality of tasks grouped by a computing method according to example embodiments.
  • The plurality of tasks to be processed in the computing system 100 may have their respective priority levels.
  • Referring to FIG. 2, five tasks T0, T2, T3, T4, and T5 are to be processed. The task T0 has a highest priority level, and the tasks T2 to T5 are arranged in a descending priority order.
  • A priority level may be typically determined depending on how many requests to process a task in real-time are received.
  • However, in this instance, when resources are allocated to the tasks T0 to T5 in the descending priority order, a lowest priority task, for example the task T5, may be subjected to the starvation phenomenon where no resources are allocated.
  • Specifically, when a new task with a higher priority than the task T5 is input, resources may be allocated to the new task earlier than the task T5 according to the descending priority order, and accordingly, no resources may be allocated to task T5.
  • To prevent the starvation phenomenon from occurring due to the task scheduling based on only the priority, various conventional methods for equally allocating resources to tasks in task scheduling have been proposed.
  • For example, there is proposed a method of processing a highest priority task for a predetermined time slice and of processing other tasks for other time slices using a Round-Robin scheme.
  • However, in this instance, priorities of tasks other than the highest priority task may be disregarded, and thus, all of the tasks may be processed regardless of the priorities.
  • This conventional method fails to match the original intent of assigning priorities to tasks, even though the starvation phenomenon is prevented. In other words, it is not desirable to use the conventional method in the task scheduling.
  • According to example embodiments, all of the tasks may be divided into at least two groups.
  • During initial setting, the highest priority task T0 is classified in a first group 210, and the other tasks T2 to T5 are classified in a second group 220, as shown in FIG. 2.
  • The first group 210 includes a virtual task Tv representing all of the tasks T2 to T5 in the second group 220.
  • Here, the priority-based task scheduling may be performed in the first group 210, so that the tasks T0 and Tv may be processed according to their priorities.
  • A task selected from the first group 210 may enter a sleep state for a predetermined period of time. When the predetermined period of time elapses, a current state of the selected task may be changed to a ready state and the selected task may be moved to a ready queue where the tasks in the first group 210 are ready to be processed. Accordingly, the selected task may be set as a candidate of the priority-based task scheduling. When another task enters the sleep state, another higher priority task may be selected from the ready queue of the first group 210, and the selected task may be processed.
  • When a highest priority task continues to be processed, rather than entering the sleep state, a task demotion may occur due to a low load rate of the virtual task Tv, and the highest priority task may be moved from the first group 210 to the second group 220. Accordingly, the first group 210 may include only the virtual task Tv, and the second group 220 may include the tasks except for the virtual task Tv. The plurality of tasks may be scheduled using the Round-Robin scheme or a random scheduling scheme, for example.
  • When the load rate of the virtual task Tv increase after a predetermined period of time elapses, a task promotion may occur with respect to a highest priority task in the second group 220, which will be described below.
  • When the virtual task Tv is to be processed after the tasks in the first group 210 are sequentially processed, the task T4 pointed to by a next index pointer 222 may be processed.
  • In other words, the next index pointer 222 may point to a task among the tasks in the second group 220, so that the task may be processed when the virtual task Tv is to be processed.
  • The next index pointer 222 may be adjusted in the second group 220 using the Round-Robin scheme.
  • When the task T4 pointed to by the next index pointer 222 is completely processed, the next index pointer 222 may be adjusted to point to the next task T5. Thus, when the virtual task Tv is to be processed, the task T5 pointed to by the next index pointer 222 may be processed.
  • While the Round-Robin scheme is merely an example in the example embodiments, the example embodiments may be applied to schemes other than the Round-Robin scheme.
  • For example, when the virtual task Tv is to be processed after the tasks in the first group 210 are sequentially processed according to their priorities, a task may be randomly selected from among the tasks in the second group 220, and the selected task may be processed.
  • As described above, the tasks in the first group 210 may be moved to the second group 220, which is referred to as “task demotion”. Alternatively, the tasks in the second group 220 may be moved to the first group 210, which is referred to as “task promotion”.
  • When the task demotion is performed in the first group 210 at a predetermined time, a lowest pointer 211 may point to a task to be moved to the second group 220. The lowest pointer 211 may point to a lowest priority task among the tasks in the first group 210 except for the virtual task Tv.
  • When the task promotion is performed in the second group 220 at a predetermined time, a highest pointer 221 may point to a task to be moved to the first group 210. The highest pointer 221 may point to a highest priority task among the tasks in the second group 220.
  • A time taken to process the virtual task Tv while processing the tasks in the first group 210 may be measured. In other words, a rate of a time taken to process a task selected from the second group 220 with respect to a time taken to process all the tasks in the first group 210 may be measured. The measured rate is referred to as the “load rate”. The load rate may be set to be a value between 0 and 1.
  • A high load rate means that tasks are scheduled almost regardless of the priority. In this instance, the priority is to be more involved in scheduling of all the tasks.
  • When the measured load rate is equal to or greater than a first threshold, the task promotion may be performed to move a task pointed to by the highest pointer 221 in the second group 220 to the first group 210.
  • Accordingly, the task T2 pointed to by the highest pointer 221 may be moved to the first group 210, and such a result of the task promotion will be shown in FIG. 3.
  • FIG. 3 conceptually illustrates a result of a task promotion performed by a computing method according to example embodiments.
  • Referring to FIG. 3, the task T2 is in a first group 310 as a result of the task promotion. The task T2 may have the lowest priority in the first group 310, and thus, a lowest pointer 311 may be adjusted to point to the task T2.
  • Also, a highest pointer 321 may be adjusted to point to a highest priority task, for example, task T3 among the tasks T3, T4, and T5 remaining in a second group 320.
  • The tasks T0, T2, and Tv in the first group 310 may be processed sequentially according to their priorities. As described above, when the virtual task Tv is to be processed after the tasks in the first group 310 are sequentially processed according to their priorities, the task T5 pointed to by a next index pointer 322 may be processed.
  • The first threshold set in the initial setting may remain unchanged, and may be adaptively controlled based on an amount of remaining computing resources.
  • When the task promotion is repeated in such a manner as described above, a number of tasks in the first group 310 may be greater than a number of tasks in the second group 320.
  • Accordingly, a large number of tasks among all the tasks may be scheduled and processed, however, task efficiency may be rather reduced or other unexpected problems may occur.
  • In this instance, the task demotion needs to be performed with respect to a part of the tasks in the first group 310.
  • The task demotion will be described with reference to FIGS. 4 and 5.
  • FIG. 4 conceptually illustrates an example where the task demotion is demanded.
  • In FIG. 4, a first group 410 may include a large number of tasks as a result of the task promotion performed as described above. In this instance, a low load rate may be measured. The load rate refers to a rate of a time taken to process the virtual task Tv with respect to a time taken to process all the tasks in the first group 410.
  • The load rate may be periodically or continuously measured. When the load rate is equal to or less than a second threshold, the task demotion may be performed.
  • During the task demotion, task T4 pointed to by a lowest pointer 411 among the tasks in the first group 410 may be moved to a second group 420.
  • After the task T4 is moved to the second group 420, the lowest pointer 411 may be adjusted to point to a lowest priority task, for example, task T3.
  • The task T4 may have the highest priority in the second group 420, and thus, a highest pointer 421 may be adjusted to point to the task T4.
  • Also, a next index pointer 422 may be adjusted to point to the task T4 moved by the task demotion to the second group 420. While the next index pointer 422 is adjusted in this example embodiment, other example embodiments may be applied to an example where the next index pointer 422 is not adjusted.
  • FIG. 5 conceptually illustrates a result of a task demotion performed by a computing method according to example embodiments.
  • In FIG. 5, the task T4 is moved to a second group 520, as a result of the task demotion performed as described above. Also, a highest pointer 521 and a next index pointer 522 may be adjusted to point to the task T4.
  • A lowest pointer 511 may be adjusted to point to the task T3 in a first group 510.
  • Accordingly, tasks in the first group 510 may be processed in a descending priority order. When the virtual task Tv is to be processed, the task T4 may be processed, and the next index pointer 522 may then be adjusted to point to the task T5.
  • In this instance, when a new task is input, the new task may be input into one of the first group and the second group after a determination. Hereinafter, descriptions regarding the new task will be given with reference to FIGS. 6 and 7.
  • FIG. 6 conceptually illustrates an example where a new task 630 is input to a computing system according to example embodiments.
  • In FIG. 6, a first group 610 contains tasks T0, T2, and Tv, and a lowest pointer 611 currently points to task T2.
  • A second group 620 contains tasks T3, T4, and T5, and a highest pointer 621 and a next index pointer 622 currently point to the task T3 and the task T5, respectively.
  • In this instance, the new task 630 is assumed to have a priority level of 3, which is equal to a priority level of the task T3 in the second group 620.
  • The priority level of the new task 630 may be compared with a priority level of the task T2 pointed to by the lowest pointer 611 in the first group 610.
  • As a result of the comparing, when the priority level of the new task 630 is less than or equal to than the priority of task T2 pointed to by the lowest pointer 611, the new task 630 may be inserted in the second group 620.
  • In this instance, the highest pointer 621 may be adjusted to point to a highest priority task among the tasks T3, T4, and T5 and the new task 630 that are in the second group 620.
  • A result of the above-described operation is shown in FIG. 7.
  • FIG. 7 conceptually illustrates a result of grouping the tasks including the input new task 630.
  • Referring to FIG. 7, a first group 710 contains tasks T0, T2, and Tv, and a lowest pointer 711 currently points to the task T2 in the same manner as the lowest pointer 611 of FIG. 6.
  • A second group 720 further includes the new task 630, and a highest pointer 721 currently points to the new task 630. In other words, two different tasks with the same priority level are in the second group 720.
  • After the plurality of tasks is grouped, the tasks in the first group 710 may be processed according to their priorities. When the virtual task Tv is to be processed, task T5 pointed to by a next index pointer 722 may be processed.
  • FIG. 8 illustrates a flowchart of a computing method according to example embodiments.
  • In operation 810, a plurality of tasks to be processed may be divided into a first group and a second group.
  • In operation 820, tasks in the first group may be processed according to their priorities. In operation 830, it may be determined whether processing of all the tasks in the first group is completed.
  • A load rate may be periodically or continuously measured. As described above, the load rate refers to a rate of a time taken to process the virtual task with respect to a time taken to process all the tasks in the first group. When determining that the processing of all the tasks in the first group is not completed in operation 830, a current load rate may be compared with a first threshold in operation 840.
  • When the current load rate is equal to or greater than the first threshold, a task promotion may be performed in operation 850. The task promotion has been described above with reference to FIGS. 2 and 3.
  • In operation 860, the current load rate may be compared with a second threshold.
  • When the current load rate is less than or equal to the second threshold, a task demotion may be performed in operation 870. The task demotion has been described above with reference to FIGS. 4 and 5.
  • The operations 840 to 870 may be repeated until the processing of all the tasks in the first group is determined to be completed.
  • FIG. 9 further illustrates a flowchart of processing tasks in the first group according to their priorities of FIG. 8.
  • In operation 910, the tasks in the first group may be processed according to their priorities.
  • In operation 920, it may be determined whether the virtual task is currently to be processed. When the virtual task is determined to be processed, a task pointed to by a next index pointer among the tasks in the second group may be processed in operation 930.
  • In operation 940, the next index pointer may be adjusted to point to another task in the second group. In this instance, the next index pointer may be adjusted using a fairness scheduling scheme such as Round-Robin scheme, or in a random manner or the like.
  • The above-described embodiments may be recorded in non-transitory computer-readable media including program instructions to implement various operations embodied by a computer. The media may also include, alone or in combination with the program instructions, data files, data structures, and the like. The program instructions recorded on the media may be those specially designed and constructed for the purposes of the embodiments, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of non-transitory computer-readable media include magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD ROM disks and DVDs; magneto-optical media such as optical disks; and hardware devices that are specially configured to store and perform program instructions, such as read-only memory (ROM), random access memory (RAM), flash memory, and the like. The computer-readable media may be a plurality of computer-readable storage devices in a distributed network, so that the program instructions are stored in the plurality of computer-readable storage devices and executed in a distributed fashion. The program instructions may be executed by one or more processors or processing devices. The computer-readable media may also be embodied in at least one application specific integrated circuit (ASIC) or Field Programmable Gate Array (FPGA). Examples of program instructions include both machine code, such as produced by a compiler, and files containing higher level code that may be executed by the computer using an interpreter. The described hardware devices may be configured to act as one or more software modules in order to perform the operations of the above-described embodiments, or vice versa.
  • Although embodiments have been shown and described, the present disclosure is not limited to the described embodiments. Instead, it should be appreciated by those skilled in the art that changes may be made to these embodiments without departing from the principles and spirit of the disclosure, the scope of which is defined by the claims and their equivalents.

Claims (20)

1. A computing system, comprising:
a task management unit to divide a plurality of tasks to be processed into a first group and a second group, and to manage the tasks, the first group based on a priority and comprising a virtual task representing tasks in the second group; and
a processing unit to process tasks in the first group according to the priority,
wherein, when the virtual task is to be processed, the processing unit selects one of the tasks in the second group and processes the selected task.
2. The computing system of claim 1, wherein, tasks in the first group have higher priorities than tasks in the second group.
3. The computing system of claim 1, wherein, when the virtual task is to be processed, the processing unit processes one task from the tasks in the second group.
4. The computing system of claim 1, wherein, when the virtual task is to be processed, the processing unit processes one task that is selected from the tasks in the second group using a Round-Robin scheme.
5. The computing system of claim 1, wherein, when the virtual task is to be processed, the processing unit processes one task that is randomly selected from the tasks in the second group.
6. The computing system of claim 1, further comprising:
a load rate measuring unit to measure a rate of a time taken to process the virtual task with respect to a time taken to process the tasks in the first group.
7. The computing system of claim 6, wherein, when the measured rate is equal to or greater than a first threshold, the task management unit moves a highest priority task among the tasks in the second group to the first group.
8. The computing system of claim 6, wherein, when the measured rate is equal to or less than a second threshold, the task management unit moves a lowest priority task among the tasks in the first group to the second group.
9. The computing system of claim 6, wherein, when a new task to be processed is generated, and when a priority of the new task is higher than a priority of a lowest priority task among the tasks in the first group, the task management unit moves the new task to the first group, and
when the priority of the new task is equal to or lower than the priority of the lowest priority task, the task management unit moves the new task to the second group.
10. The computing system of claim 7, wherein the task management unit manages a first pointer to point to a lowest priority task among the tasks in the first group, and
when the measured rate is equal to or greater than the first threshold, the task management unit moves the highest priority task among the tasks in the second group to the first group, and adjusts the first pointer to point to the moved task.
11. The computing system of claim 8, wherein the task management unit manages a second pointer to point to a highest priority task among the tasks in the second group, and
when the measured rate is equal to or less than the second threshold, the task management unit moves the lowest priority task among the tasks in the first group to the second group, and adjusts the second pointer to point to the moved task.
12. The computing system of claim 9, wherein the task management unit manages a first pointer to point to a lowest priority task among the tasks in the first group, and a second pointer to point to a highest priority task among the tasks in the second group,
when a new task to be processed is generated, and when a priority of the new task is higher than a priority of the lowest priority task pointed to by the first pointer, the task management unit moves the new task to the first group,
when the priority of the new task is equal to or lower than the priority of the lowest priority task pointed to by the first pointer, the task management unit moves the new task to the second group, and
when the priority of the new task moved to the second group is compared with a priority of the highest priority task pointed to by the second pointer, the task management unit adjusts the second pointer to point to a highest priority task among the tasks and the new task that are in the second group.
13. A computing method, comprising:
dividing, by a processor, a plurality of tasks to be processed into a first group and a second group, the first group based on a priority and comprising a virtual task representing tasks in the second group; and
processing, by the processor, tasks in the first group according to the priority,
wherein the processing comprises selecting one of the tasks in the second group and processing the selected task, when the virtual task is to be processed.
14. The computing method of claim 13, wherein the processing comprises processing one task that is selected from the tasks in the second group using a Round-Robin scheme, when the virtual task is to be processed.
15. The computing method of claim 13, wherein the processing comprises processing one task that is randomly selected from the tasks in the second group, when the virtual task is to be processed.
16. The computing method of claim 13, further comprising:
measuring a rate of a time taken to process the virtual task with respect to a time taken to process the tasks in the first group.
17. The computing method of claim 16, further comprising:
moving a highest priority task among the tasks in the second group to the first group, when the measured rate is equal to or greater than a first threshold.
18. The computing method of claim 16, further comprising:
moving a lowest priority task among the tasks in the first group to the second group, when the measured rate is equal to or less than a second threshold.
19. The computing method of claim 13, further comprising:
when a new task to be processed is generated, and when a priority of the new task is higher than a priority of a lowest priority task among the tasks in the first group, moving the new task to the first group, and
when the priority of the new task is equal to or lower than the priority of the lowest priority task, moving the new task to the second group.
20. At least one non-transitory computer-readable recording medium comprising computer readable instructions that control at least one processor to implement a method, comprising:
dividing a plurality of tasks to be processed into a first group and a second group, the first group based on a priority and comprising a virtual task representing tasks in the second group; and
processing tasks in the first group according to the priority,
wherein the processing comprises selecting one of the tasks in the second group and processing the selected task, when the virtual task is to be processed.
US12/907,639 2010-01-07 2010-10-19 Computing system, method and computer-readable medium for managing a processing of tasks Active 2031-07-10 US8799913B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2010-0001101 2010-01-07
KR1020100001101A KR101644800B1 (en) 2010-01-07 2010-01-07 Computing system and method

Publications (2)

Publication Number Publication Date
US20110167427A1 true US20110167427A1 (en) 2011-07-07
US8799913B2 US8799913B2 (en) 2014-08-05

Family

ID=44225472

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/907,639 Active 2031-07-10 US8799913B2 (en) 2010-01-07 2010-10-19 Computing system, method and computer-readable medium for managing a processing of tasks

Country Status (2)

Country Link
US (1) US8799913B2 (en)
KR (1) KR101644800B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317578A1 (en) * 2011-06-09 2012-12-13 Microsoft Corporation Scheduling Execution of Complementary Jobs Based on Resource Usage
US20160077870A1 (en) * 2014-09-16 2016-03-17 Freescale Semiconductor, Inc. Starvation control in a data processing system
CN109408215A (en) * 2018-11-07 2019-03-01 郑州云海信息技术有限公司 A kind of method for scheduling task and device of calculate node
US20190384637A1 (en) * 2017-09-26 2019-12-19 Mitsubishi Electric Corporation Controller

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424102B2 (en) * 2014-05-14 2016-08-23 International Business Machines Corporation Task grouping by context
CN106991013B (en) * 2017-04-18 2018-09-07 腾讯科技(深圳)有限公司 A kind of method and device that resource request is handled
RU2718215C2 (en) 2018-09-14 2020-03-31 Общество С Ограниченной Ответственностью "Яндекс" Data processing system and method for detecting jam in data processing system
RU2714219C1 (en) 2018-09-14 2020-02-13 Общество С Ограниченной Ответственностью "Яндекс" Method and system for scheduling transfer of input/output operations
RU2731321C2 (en) 2018-09-14 2020-09-01 Общество С Ограниченной Ответственностью "Яндекс" Method for determining a potential fault of a storage device
RU2714602C1 (en) 2018-10-09 2020-02-18 Общество С Ограниченной Ответственностью "Яндекс" Method and system for data processing
RU2721235C2 (en) 2018-10-09 2020-05-18 Общество С Ограниченной Ответственностью "Яндекс" Method and system for routing and execution of transactions
RU2711348C1 (en) 2018-10-15 2020-01-16 Общество С Ограниченной Ответственностью "Яндекс" Method and system for processing requests in a distributed database
RU2714373C1 (en) 2018-12-13 2020-02-14 Общество С Ограниченной Ответственностью "Яндекс" Method and system for scheduling execution of input/output operations
RU2749649C2 (en) 2018-12-21 2021-06-16 Общество С Ограниченной Ответственностью "Яндекс" Method and system for scheduling processing of i/o operations
RU2720951C1 (en) 2018-12-29 2020-05-15 Общество С Ограниченной Ответственностью "Яндекс" Method and distributed computer system for data processing
RU2746042C1 (en) 2019-02-06 2021-04-06 Общество С Ограниченной Ответственностью "Яндекс" Method and the system for message transmission

Citations (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247677A (en) * 1992-05-22 1993-09-21 Apple Computer, Inc. Stochastic priority-based task scheduler
US5623672A (en) * 1994-12-23 1997-04-22 Cirrus Logic, Inc. Arrangement and method of arbitration for a resource with shared user request signals and dynamic priority assignment
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US6341303B1 (en) * 1998-08-28 2002-01-22 Oracle Corporation System and method for scheduling a resource according to a preconfigured plan
US6496871B1 (en) * 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
US20030037091A1 (en) * 2001-08-09 2003-02-20 Kozo Nishimura Task scheduling device
US20040194097A1 (en) * 2003-03-28 2004-09-30 Emulex Corporation Hardware assisted firmware task scheduling and management
US20050050552A1 (en) * 2003-08-29 2005-03-03 Microsoft Corporation System and method for increasing data throughput using thread scheduling
US20050125789A1 (en) * 2002-01-24 2005-06-09 Koninklijke Philips Electronics N.V. Groenewoudseweg 1 Executing processes in a multiprocessing environment
US7047322B1 (en) * 2003-09-30 2006-05-16 Unisys Corporation System and method for performing conflict resolution and flow control in a multiprocessor system
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US7159221B1 (en) * 2002-08-30 2007-01-02 Unisys Corporation Computer OS dispatcher operation with user controllable dedication
US7321965B2 (en) * 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7360219B2 (en) * 2002-12-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for facilitating fair and efficient scheduling of processes among multiple resources in a computer system
US20080115143A1 (en) * 2006-11-10 2008-05-15 International Business Machines Corporation Job Execution Method, Job Execution System, and Job Execution Program
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US7526767B1 (en) * 1998-08-28 2009-04-28 Oracle International Corporation Methods for automatic group switching according to a resource plan
US20090122766A1 (en) * 2007-10-01 2009-05-14 Hughes Timothy J Nested weighted round robin queuing
US7548335B2 (en) * 2005-02-25 2009-06-16 Microsoft Corporation Print job queuing and scheduling systems and methods
US20090217273A1 (en) * 2008-02-26 2009-08-27 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling
US20090300637A1 (en) * 2008-06-02 2009-12-03 Microsoft Corporation Scheduler instances in a process
US7761875B2 (en) * 2005-06-10 2010-07-20 Hewlett-Packard Development Company, L.P. Weighted proportional-share scheduler that maintains fairness in allocating shares of a resource to competing consumers when weights assigned to the consumers change
US7840966B2 (en) * 2005-03-14 2010-11-23 Qnx Software Systems Gmbh & Co. Kg Process scheduler employing adaptive partitioning of critical process threads
US20110161973A1 (en) * 2009-12-24 2011-06-30 Delphix Corp. Adaptive resource management
US8020163B2 (en) * 2003-06-02 2011-09-13 Interuniversitair Microelektronica Centrum (Imec) Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof
US8194658B2 (en) * 2007-01-05 2012-06-05 Samsung Electronics Co., Ltd. Transmitting and receiving method and apparatus in real-time system
US8205205B2 (en) * 2007-03-16 2012-06-19 Sap Ag Multi-objective allocation of computational jobs in client-server or hosting environments
US8561072B2 (en) * 2008-05-16 2013-10-15 Microsoft Corporation Scheduling collections in a scheduler

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263359B1 (en) * 1997-05-22 2001-07-17 International Business Machines Corporation Computer resource proportional utilization and response time scheduling
US6427161B1 (en) * 1998-06-12 2002-07-30 International Business Machines Corporation Thread scheduling techniques for multithreaded servers
US6871011B1 (en) 2000-09-28 2005-03-22 Matsushita Electric Industrial Co., Ltd. Providing quality of service for disks I/O sub-system with simultaneous deadlines and priority
KR100636272B1 (en) 2005-01-10 2006-10-19 삼성전자주식회사 Apparatus for port scheduling and method thereof
US7613904B2 (en) * 2005-02-04 2009-11-03 Mips Technologies, Inc. Interfacing external thread prioritizing policy enforcing logic with customer modifiable register to processor internal scheduler

Patent Citations (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247677A (en) * 1992-05-22 1993-09-21 Apple Computer, Inc. Stochastic priority-based task scheduler
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US5692193A (en) * 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US5623672A (en) * 1994-12-23 1997-04-22 Cirrus Logic, Inc. Arrangement and method of arbitration for a resource with shared user request signals and dynamic priority assignment
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US6496871B1 (en) * 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
US6341303B1 (en) * 1998-08-28 2002-01-22 Oracle Corporation System and method for scheduling a resource according to a preconfigured plan
US7526767B1 (en) * 1998-08-28 2009-04-28 Oracle International Corporation Methods for automatic group switching according to a resource plan
US7120783B2 (en) * 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US20030037091A1 (en) * 2001-08-09 2003-02-20 Kozo Nishimura Task scheduling device
US20050125789A1 (en) * 2002-01-24 2005-06-09 Koninklijke Philips Electronics N.V. Groenewoudseweg 1 Executing processes in a multiprocessing environment
US7159221B1 (en) * 2002-08-30 2007-01-02 Unisys Corporation Computer OS dispatcher operation with user controllable dedication
US7360219B2 (en) * 2002-12-13 2008-04-15 Hewlett-Packard Development Company, L.P. Systems and methods for facilitating fair and efficient scheduling of processes among multiple resources in a computer system
US20040194097A1 (en) * 2003-03-28 2004-09-30 Emulex Corporation Hardware assisted firmware task scheduling and management
US8020163B2 (en) * 2003-06-02 2011-09-13 Interuniversitair Microelektronica Centrum (Imec) Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof
US7321965B2 (en) * 2003-08-28 2008-01-22 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US20050050552A1 (en) * 2003-08-29 2005-03-03 Microsoft Corporation System and method for increasing data throughput using thread scheduling
US7047322B1 (en) * 2003-09-30 2006-05-16 Unisys Corporation System and method for performing conflict resolution and flow control in a multiprocessor system
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US7548335B2 (en) * 2005-02-25 2009-06-16 Microsoft Corporation Print job queuing and scheduling systems and methods
US7840966B2 (en) * 2005-03-14 2010-11-23 Qnx Software Systems Gmbh & Co. Kg Process scheduler employing adaptive partitioning of critical process threads
US7761875B2 (en) * 2005-06-10 2010-07-20 Hewlett-Packard Development Company, L.P. Weighted proportional-share scheduler that maintains fairness in allocating shares of a resource to competing consumers when weights assigned to the consumers change
US20080115143A1 (en) * 2006-11-10 2008-05-15 International Business Machines Corporation Job Execution Method, Job Execution System, and Job Execution Program
US8219997B2 (en) * 2006-11-10 2012-07-10 International Business Machines Corporation Execution the job that is divided into job tasks based on the estimated completion time
US8194658B2 (en) * 2007-01-05 2012-06-05 Samsung Electronics Co., Ltd. Transmitting and receiving method and apparatus in real-time system
US8205205B2 (en) * 2007-03-16 2012-06-19 Sap Ag Multi-objective allocation of computational jobs in client-server or hosting environments
US20090122766A1 (en) * 2007-10-01 2009-05-14 Hughes Timothy J Nested weighted round robin queuing
US20090217273A1 (en) * 2008-02-26 2009-08-27 Microsoft Corporation Controlling interference in shared memory systems using parallelism-aware batch scheduling
US8271741B2 (en) * 2008-02-26 2012-09-18 Microsoft Corporation Prioritization of multiple concurrent threads for scheduling requests to shared memory
US8561072B2 (en) * 2008-05-16 2013-10-15 Microsoft Corporation Scheduling collections in a scheduler
US20090300637A1 (en) * 2008-06-02 2009-12-03 Microsoft Corporation Scheduler instances in a process
US20110161973A1 (en) * 2009-12-24 2011-06-30 Delphix Corp. Adaptive resource management

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317578A1 (en) * 2011-06-09 2012-12-13 Microsoft Corporation Scheduling Execution of Complementary Jobs Based on Resource Usage
US8959526B2 (en) * 2011-06-09 2015-02-17 Microsoft Corporation Scheduling execution of complementary jobs based on resource usage
US20160077870A1 (en) * 2014-09-16 2016-03-17 Freescale Semiconductor, Inc. Starvation control in a data processing system
US9639396B2 (en) * 2014-09-16 2017-05-02 Nxp Usa, Inc. Starvation control in a data processing system
US20190384637A1 (en) * 2017-09-26 2019-12-19 Mitsubishi Electric Corporation Controller
CN109408215A (en) * 2018-11-07 2019-03-01 郑州云海信息技术有限公司 A kind of method for scheduling task and device of calculate node

Also Published As

Publication number Publication date
US8799913B2 (en) 2014-08-05
KR101644800B1 (en) 2016-08-02
KR20110080735A (en) 2011-07-13

Similar Documents

Publication Publication Date Title
US8799913B2 (en) Computing system, method and computer-readable medium for managing a processing of tasks
US8307370B2 (en) Apparatus and method for balancing load in multi-core processor system
US20150295970A1 (en) Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system
US20170255496A1 (en) Method for scheduling data flow task and apparatus
US8627330B2 (en) Workload manager managing a workload of an enterprise data warehouse
US9742869B2 (en) Approach to adaptive allocation of shared resources in computer systems
US8479205B2 (en) Schedule control program and schedule control method
US8875146B2 (en) Systems and methods for bounding processing times on multiple processing units
US8627325B2 (en) Scheduling memory usage of a workload
JP2009245047A (en) Memory buffer allocation device and program
US8505016B2 (en) Enhanced shortest-job-first memory request scheduling
US9047138B2 (en) Apparatus and method for thread scheduling and lock acquisition order control based on deterministic progress index
US10884667B2 (en) Storage controller and IO request processing method
CN110018781B (en) Disk flow control method and device and electronic equipment
US20190286582A1 (en) Method for processing client requests in a cluster system, a method and an apparatus for processing i/o according to the client requests
CN113312323A (en) IO (input/output) request scheduling method and system for reducing access delay in parallel file system
CN106293917A (en) The optimization method of a kind of I O scheduling cfq algorithm and system
US11194619B2 (en) Information processing system and non-transitory computer readable medium storing program for multitenant service
CN117234691A (en) Task scheduling method and device
KR101541156B1 (en) Apparatus and method for multi dimensional time and space deterministic task schedul
CN115202842A (en) Task scheduling method and device
US11294724B2 (en) Shared resource allocation in a multi-threaded microprocessor
CN115269118A (en) Scheduling method, device and equipment of virtual machine
CN106155810B (en) The input/output scheduling device of workload-aware in software definition mixing stocking system
JP2023032163A (en) Information processing apparatus and job scheduling method

Legal Events

Date Code Title Description
AS Assignment

Owner name: SAMSUNG ELECTRONICS CO., LTD., KOREA, REPUBLIC OF

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:YOO, JEONG JOON;LEE, SHI HWA;LEE, SEUNG WON;AND OTHERS;REEL/FRAME:025191/0333

Effective date: 20100927

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551)

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8