WO2022168661A1 - Scheduler, scheduling method, and computer-readable storage medium - Google Patents

Scheduler, scheduling method, and computer-readable storage medium Download PDF

Info

Publication number
WO2022168661A1
WO2022168661A1 PCT/JP2022/002541 JP2022002541W WO2022168661A1 WO 2022168661 A1 WO2022168661 A1 WO 2022168661A1 JP 2022002541 W JP2022002541 W JP 2022002541W WO 2022168661 A1 WO2022168661 A1 WO 2022168661A1
Authority
WO
WIPO (PCT)
Prior art keywords
thread
core
threads
worker
scheduler
Prior art date
Application number
PCT/JP2022/002541
Other languages
French (fr)
Japanese (ja)
Inventor
才将 中曽根
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Publication of WO2022168661A1 publication Critical patent/WO2022168661A1/en

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

Definitions

  • This disclosure relates to thread scheduling in multicore.
  • a typical operating system interrupts a user program (user thread) to perform processing. This causes a slight delay in the processing of the user program. This delay builds up on a particular task and causes operating system (OS) jitter.
  • OS operating system
  • Patent Document 1 has two types of cores: a control core that executes an OS and a computational core that executes a user program.
  • the technique of Patent Document 1 avoids OS jitter by providing a mechanism in which the OS on the control core provides the OS function to the calculation core.
  • Signals are a type of interprocess communication, and serve as an interrupt function that notifies other processes that a certain event has occurred. Interruption by a signal may trigger an operation that is not async-signal-safe, such as deallocating memory.
  • a method is conceivable in which a worker thread is created in advance to execute the processing on behalf of the worker thread and is kept on standby, and the signal handler requests activation and processing of the worker thread.
  • a worker is required for each user process if the worker performs process resource control such as memory release. Therefore, if there are multiple user processes, the same number of workers must also exist. When multiple workers are scheduled on the same core, context switches between workers also occur. It is desired to provide a technique for suppressing performance degradation related to context switching in scheduling.
  • An object of the present disclosure is to provide a technology that can suppress performance degradation related to context switching.
  • the scheduler which is one aspect of the present disclosure, assigns a thread to each core, and when there is no free core, the same worker thread to be generated is added to the executable queue or waiting queue of each core among the cores.
  • a selection unit that selects a core in which a thread of the thread group exists; and a determination unit that determines allocation of the worker thread to be generated to the selected core.
  • a scheduling method which is one embodiment of the present disclosure, assigns threads to each core, and when there is no free core, a worker thread to be generated and A core in which threads of the same thread group exist is selected, and it is decided to allocate the worker thread to be generated to the selected core.
  • a program for causing a computer to execute selecting a core in which a thread of the same thread group as a worker thread to be generated exists and deciding to allocate the worker thread to be generated to the selected core is stored.
  • FIG. 4 is a diagram showing a schedule example by a scheduler according to the first embodiment
  • FIG. 3 is a block diagram showing an example of the configuration of a scheduler according to the first embodiment
  • FIG. 7 is a flow chart showing an example of the operation of a scheduler when creating a thread
  • FIG. 11 is a flow chart showing an example of the operation of the scheduler when causing a thread to transition from the waiting state to the ready state
  • FIG. FIG. 11 is a flow chart showing another example of the operation of the scheduler
  • FIG. FIG. 11 is a block diagram showing an example of the configuration of a scheduler according to the second embodiment
  • FIG. FIG. 11 is a flow chart showing an example of the operation of a scheduler according to the second embodiment
  • FIG. It is a figure which shows the hardware constitutions by computer.
  • FIG. 1 is a diagram showing a schedule example by the scheduler according to the first embodiment.
  • the scheduler 1 schedules and allocates threads to each core (cores 0, 1, 2, and 3).
  • the scheduler 1 uses thread management data 2 to schedule threads. Scheduling is the process of determining the execution order of threads or the process of determining which cores to allocate threads to.
  • the thread management data 2 includes information expressing scheduling for each thread associated with each core.
  • the thread management data 2 includes a thread identifier 21 (indicated as ID in the figure), a thread group identifier 22 (indicated as group ID in the figure), priority 23 and worker flag 24 .
  • the scheduler 1 refers to the thread management data 2 to confirm the execution order and dependency of each thread.
  • the thread identifier 21 is information for identifying a thread.
  • the thread group identifier 22 is information for identifying a group of threads forming a process.
  • a thread group can also be said to be a set of threads that constitute a user process.
  • the priority 23 is information indicating the degree of priority between threads in the same thread group. In FIG. 1, two priority levels, high and low, are shown, but the priority level is not limited to this. For example, there may be three or more priority levels.
  • the worker flag 24 is information for determining whether a thread is a worker thread.
  • the worker flag 24 is, for example, a specification that can be finally set by the user by adding or extending an argument in an application interface for generating threads provided by the OS.
  • the third argument intflags (flags specifying thread attributes) is extended to add worker attributes
  • the task_struct structure (thread management data) has a field for determining whether it is a worker or not.
  • the scheduler 1 uses two types of queues that represent the scheduling of threads associated with each core. One is a runnable queue 31 consisting of threads in running or ready state, and the other is a wait queue 32 consisting of threads in waiting state.
  • threads may be managed as one task list.
  • the thread management data 2 exists in either the core's executable queue 31 or the core's standby queue 32, it is assumed that the thread is assigned to the core.
  • the scheduler 1 described in this specification shall have a function as a thread scheduler in the OS. Therefore, a detailed description of the functions of the normal scheduler will be omitted.
  • FIG. 2 is a block diagram showing an example of the configuration of the scheduler according to the first embodiment.
  • a scheduler 1 shown in FIG. 1 is a block diagram showing an example of the configuration of the scheduler according to the first embodiment.
  • the confirmation unit 11 identifies and confirms the core to which the thread is assigned.
  • the confirmation unit 11 refers to the thread management data 2 for each thread and identifies the core to which the thread having the specified thread identifier 21 is assigned.
  • the confirmation unit 11 confirms the type of thread. For example, the confirmation unit 11 confirms whether the thread is a user thread or a worker thread. Specifically, the confirmation unit 11 refers to the thread management data 2 of the thread and confirms the worker flag 24 of the thread.
  • the confirmation unit 11 refers to the executable queue 31 and the standby queue to confirm the allocation status of threads to each core. For example, the confirmation unit 11 confirms whether there is a core with an empty executable queue in each core. Alternatively, the confirmation unit 11 may confirm whether or not an isolated worker exists in the executable queue 31 for threads associated with each core.
  • the selection unit 12 selects a core based on the result of confirmation by the confirmation unit 11, for example. Further, the selection unit 12 selects the free core as a thread allocation destination. Alternatively, the selection unit 12 selects a core in which a thread of the same thread group as that of the isolated worker exists in the executable queue 31 of another core. The selection unit 12 may select a core for which a thread of the same thread group as that of the worker exists in either the executable queue 31 or the standby queue 32 . Alternatively, the selection unit 12 may preferentially select cores having threads of the same thread group in the executable queue 31 . The selection unit 12 may select another core as the allocation destination of the isolated worker.
  • the determining unit 13 determines to allocate threads to the cores selected by the selecting unit 12 . For example, the determining unit 13 determines to allocate threads to the executable queue 31 of the core selected by the selecting unit 12 .
  • the transfer unit 14 migrates threads (user threads, worker threads) for each core. For example, the transfer unit 14 migrates the worker to the executable queue 31 of the core selected by the selection unit 12 . The transfer unit 14 may migrate each thread group of threads.
  • the counting unit 15 counts the number of threads in the thread group.
  • the counting unit 15 refers to the thread management data 2 for each thread and counts the number of threads having the designated thread group identifier 22 .
  • the counting unit 15 may be included in the checking unit 11 .
  • the setting unit 16 sets priorities between threads in the same thread group. For example, the setting unit 16 sets the priority of the worker thread to be higher than the priority of threads belonging to the same thread group as the worker thread.
  • scheduler 1 The operation of the scheduler 1 according to the first embodiment will be explained using the drawings. The scheduling of workers by scheduler 1 is detailed.
  • FIG. 3 is a flow chart showing the operation of the scheduler 1 when creating threads.
  • the confirmation unit 11 confirms the thread management data 2 of the threads related to each core with respect to the executable queue 31 of each core.
  • the confirmation unit 11 confirms whether or not an isolated worker exists in the executable queue 31 for the thread associated with each core (step S101).
  • An isolated worker is one in which the thread is a worker in the executable queue 31 of each core and there is no other thread in the same thread group as the worker.
  • step S101 If there is an isolated worker (Yes in step S101), the selection unit 12 selects a core in which a thread of the same thread group as the isolated worker exists in the executable queue 31 of another core (step S102). The transfer unit 14 migrates the isolated worker to the executable queue 31 of the selected core (step S103).
  • the confirmation unit 11 confirms whether there is a core with an empty executable queue 31 in each core (step S104).
  • a free core is also called a free core.
  • step S104 If there is a free core (Yes in step S104), the selection unit 12 selects the free core as the allocation destination of the generated thread (step S105). The determination unit 13 determines to allocate the generated thread to the executable queue 31 of the core selected in step S105 (step S109).
  • the confirmation unit 11 of the scheduler 1 refers to the thread management data 2 of the thread to be generated and confirms the worker flag 24 (step S106).
  • the setting unit 16 of the scheduler 1 sets the priority of the thread to high. Priority is set to be higher than other threads. For example, the setting unit 16 sets the priority of the worker thread to be higher than the priority of threads belonging to the same thread group as the worker thread. For example, by increasing the priority of a thread, it is possible to guarantee that it will run immediately after being scheduled.
  • the selection unit 12 selects a core that has a thread in the same thread group as the worker in either the executable queue 31 or the standby queue 32 (step S107). Specifically, the selection unit 12 selects the same thread group as the worker thread group (a set of threads forming the user process) from the thread management data 2 of the threads in the executable queue 31 and the standby queue 32 of each core. Pick one thread with identifier 22 . The selection unit 12 selects a core to which the selected thread is assigned. In step S ⁇ b>107 , the selection unit 12 preferentially selects cores having threads of the same thread group in the executable queue 31 . The determination unit 13 determines to allocate the thread to the executable queue 31 of the core selected in step S107 (step S109).
  • step S108 the selection unit 12 selects the allocation destination core based on the normal scheduling function. Finally, the thread is scheduled in the executable queue 31 of the core selected in any of step S108 (step S109).
  • the scheduler 1 performs scheduling according to step S107 when generating workers.
  • FIG. 4 is a flow chart showing an example of the operation of the scheduler 1 when a thread transitions from the waiting state to the ready state.
  • the confirmation unit 11 of the scheduler 1 confirms whether there is an isolated worker in a different thread group in the executable queue 31 for the core to which the thread is assigned (step S201).
  • the transfer unit 14 moves the thread management data 2 of the thread transitioning from the standby state to the executable state from the standby queue 32 to the executable queue 31 (step S206).
  • step S201 If there is an isolated worker (Yes in step S201), the confirmation unit 11 confirms whether there is another core with an empty executable queue (step S202).
  • the selection unit 12 selects the other core as an allocation destination for the isolated worker (step S203).
  • the transfer unit 14 migrates the worker to the executable queue 31 of the other core selected in step S203 (step S205).
  • the selector 12 selects a worker thread group based on the thread management data 2 of the threads in the executable queue 31 of each core. One thread having the same thread group identifier 22 as the identifier 22 is selected.
  • the selection unit 12 selects a core to which the selected thread is assigned (step S204).
  • the transfer unit 14 migrates the worker to the executable queue of the core selected in step S204 (step S205).
  • the transfer unit 14 moves the thread management data 2 of the thread transitioning from the standby state to the executable state from the standby queue 32 to the executable queue 31 (step S206).
  • step S204 may be performed among the operations of the scheduler 1 shown in FIG. 4 in order to reduce the number of migrations.
  • the core to which the thread that transitions from the wait state to the ready state is assigned there must be an isolated worker in a different thread group in the ready queue 31 and no other core with an empty ready queue 31. is the premise.
  • FIG. 5 is a flow chart showing another example of the operation of the scheduler 1.
  • the counting unit 15 of the scheduler 1 counts the number of threads in the thread group in the executable queue 31 for the threads selected for migration. Specifically, the counting unit 15 refers to the thread management data 2 of threads to be migrated, and counts the number of threads having the specified thread group identifier 22 .
  • the confirmation unit 11 refers to the counting result of the counting unit 15 and confirms whether the number of threads in the thread group is 2 (step S301).
  • the scheduler 1 checks whether a worker exists in the thread group of the thread (step S302). If workers exist, perform migration for each thread group. If the number of threads is not 2 (No in step S301), the scheduler 1 terminates the process.
  • the confirmation unit 11 of the scheduler 1 confirms the thread group identifier 22 of the thread to be terminated, and confirms whether the number of threads in the thread group is 2 (step S301).
  • step S301 If the number of threads is 2 (Yes in step S301), the worker flag 24 of the thread that is not in the end process, that is, the remaining thread is checked (step S302). If the remaining thread is a worker (Yes in step S302), the worker also performs termination processing (step S303). After that, the target thread is terminated (step S304).
  • the configuration of the scheduler 1 may be such that at least one of the confirmation unit 11, transfer unit 14, counting unit 15, and setting unit 16 is omitted.
  • the selection unit 12 assigns Select a core that has a thread in the same thread group as the worker thread to be created.
  • the determining unit 13 determines to allocate the worker thread to be generated to the selected core.
  • context switches between user threads that require worker processing and unrelated threads are suppressed.
  • the number of user threads is less than or equal to the number of cores and the number of workers is less than or equal to the number of user processes, there will only be workers on the cores that are woken up by certain user threads and their signal handlers. This prevents context switching between workers when multiple workers are scheduled on the same core. For example, it is possible to provide a scheduler that allows workers to operate while preventing performance degradation on architectures where the cost of context switching is high.
  • the scheduler 1 of the second embodiment schedules and allocates threads to a plurality of cores in the same manner as in the first embodiment.
  • the scheduler 1 of the second embodiment also schedules threads using the thread management data 2 shown in FIG. 1 of the first embodiment.
  • the content of thread management data 2 is the same as in the first embodiment.
  • FIG. 6 is a block diagram showing an example of the configuration of a scheduler according to the second embodiment.
  • a scheduler 1 shown in FIG. 6 includes a selection unit 12 and a determination unit 13 .
  • substantially the same components as those of the first embodiment are denoted by the same reference numerals, and detailed description thereof will be omitted.
  • the scheduler 1 of the second embodiment is assumed to have a function as a scheduler normally possessed by the OS.
  • the following description of the scheduler 1 of the second embodiment is an example of scheduling when worker threads are generated in a state in which threads are assigned to each core and there are no free cores.
  • the selection unit 12 selects cores for which threads of the same thread group as the worker thread to be generated exist in the executable queue of each core.
  • the decision unit 13 decides to allocate the worker thread to be generated to the selected core.
  • FIG. 7 is a flowchart showing the scheduling operation when threads are generated.
  • the selection unit 12 selects a core in which a thread in the same thread group as that of the worker exists in the executable queue 31 (step S401). Specifically, the selection unit 12 selects one thread having the same thread group identifier 22 as the thread group of the worker based on the thread management data 2 of the threads in the executable queue 31 of each core. The selection unit 12 selects a core to which the selected thread is assigned. The selection unit 12 may preferentially select cores for which threads of the same thread group exist in the executable queue 31 .
  • the determining unit 13 schedules the worker threads generated in the executable queue 31 of the core selected in step S401 (step S402).
  • the selection unit 12 assigns Select a core that has a thread in the same thread group as the worker thread to be created.
  • the determining unit 13 determines to allocate the worker thread to be generated to the selected core.
  • the number of user threads is less than or equal to the number of cores and the number of workers is less than or equal to the number of user threads, there will only be workers on the cores that are activated by certain user threads and their signal handlers. That is, no context switch occurs. Therefore, it is possible to schedule workers to operate while preventing performance degradation on architectures where the cost of context switching is high.
  • the selection unit 12 assigns Select a core that has a thread in the same thread group as the worker thread to be created.
  • the determining unit 13 determines to allocate the worker thread to be generated to the selected core.
  • context switches between user threads that require worker processing and unrelated threads are suppressed.
  • the number of user threads is less than or equal to the number of cores and the number of workers is less than or equal to the number of user threads, there will only be workers on the cores that are awakened from certain user threads and their signal handlers. This prevents context switching between workers when multiple workers are scheduled on the same core. For example, it is possible to provide a scheduler that allows workers to operate while preventing performance degradation on architectures where the cost of context switching is high.
  • the scheduler 1 of the first and second embodiments can be applied, for example, to an architecture in which the cost of context switching is high and it is desirable to keep the number of threads below the number of cores in order to avoid performance degradation of the user program.
  • the scheduler 1 can be applied as an operating system scheduler for use in heterogeneous computers, computer systems, and heterogeneous computers in which an accelerator is installed in the host.
  • the scheduler 1 described above is realized by executing a program (software program, computer program) in the CPU 91 (Central Processing Unit) of the computer 90 shown in FIG. Specifically, it can be realized by executing a program as the function of each component in the scheduler 1 according to the first and second embodiments or the operation of the scheduler 1 . These components or operations are performed by the CPU 91 reading a program 94 from a ROM (Read Only Memory) 93 or a storage device 95, and executing the read program, for example, according to the procedures of the flow charts shown in FIGS. It may be realized by executing using a CPU 91 and a RAM (Random Access Memory) 92 as described above.
  • the present disclosure which has been described with the above-described embodiment as an example, is considered to be configured by a computer-readable storage medium storing code representing such a computer program or code representing the computer program. be able to.
  • the computer-readable storage medium is, for example, the storage device 95, a removable magnetic disk medium (not shown), an optical disk medium, a memory card, or the like. Note that the components of each embodiment may be dedicated hardware in the form of integrated circuits.
  • the first and second embodiments described above are exemplary examples.
  • the present disclosure is not limited to the embodiments described above. That is, within the scope of the present disclosure, various aspects that can be understood by those skilled in the art can be applied to the present disclosure.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Factory Administration (AREA)

Abstract

The present invention suppresses a deterioration in performance related to context switching. This scheduler is provided with: a selection unit that selects, when a thread has been allocated to each core and no available cores exist, from the cores, a core having a thread in the same thread group as that of a worker thread to be generated in an executable queue or a standby queue of the core; and a determination unit that determines the allocation, to the selected core, of the worker thread to be generated.

Description

スケジューラ、スケジューリング方法、及び、コンピュータ読み取り可能な記憶媒体Scheduler, scheduling method and computer readable storage medium
 本開示は、マルチコアにおけるスレッドのスケジューリングに関する。 This disclosure relates to thread scheduling in multicore.
 一般的なオペレーティングシステムは、ユーザプログラム(ユーザスレッド)に割り込んで処理を行う。これにより、ユーザプログラムの処理に僅かな遅延が生じる。この遅延が特定のタスクに積み重なることで、OS(Operating System)ジッタが生じる。 A typical operating system interrupts a user program (user thread) to perform processing. This causes a slight delay in the processing of the user program. This delay builds up on a particular task and causes operating system (OS) jitter.
 特許文献1に開示されたアーキテクチャは、OSを実行する制御コアとユーザプログラムを実行する計算コアの2種類のコアを有する。特許文献1の技術では、制御コア上のOSが計算コアにOS機能を提供する仕組みを備えることでOSジッタを回避している。 The architecture disclosed in Patent Document 1 has two types of cores: a control core that executes an OS and a computational core that executes a user program. The technique of Patent Document 1 avoids OS jitter by providing a mechanism in which the OS on the control core provides the OS function to the calculation core.
 一方、特許文献1の技術では、計算コア上にOSが存在しないため、計算コアに対してスケジューリングなどのOS機能を提供するたびに、制御コアと計算コアの間の情報伝達によるオーバーヘッドが加わることになる。特に、コンテキストスイッチのコストは大きくなる。 On the other hand, in the technique of Patent Document 1, since the OS does not exist on the calculation core, every time an OS function such as scheduling is provided to the calculation core, overhead due to information transmission between the control core and the calculation core is added. become. In particular, the cost of context switching increases.
 そのため、性能を重視するプログラムでは、スレッド数は、常にコア数以下としてコンテキストスイッチを抑制することが望まれている。 Therefore, in programs that emphasize performance, it is desirable to keep the number of threads below the number of cores to suppress context switches.
特許第5867482号公報Japanese Patent No. 5867482 国際公開第2012/020478号WO2012/020478 特表2017-506773号公報Japanese Patent Publication No. 2017-506773 特表2016-524238号公報Japanese Patent Publication No. 2016-524238 特開2006-190265号公報JP 2006-190265 A 特開2004-086921号公報Japanese Patent Application Laid-Open No. 2004-086921
 プロセス間通信の一種で、ある事象が起きたことを他のプロセスに知らせる割り込み機能としてシグナルがある。シグナルによる割り込みを契機に、メモリ解放のような非同期シグナル安全(async-signal-safe)ではない処理を実行することがある。この場合、予め処理を代理で実行するためのワーカースレッドを生成して待機させておき、シグナルハンドラが、ワーカースレッドの起動と処理を依頼する方法が考えられる。 Signals are a type of interprocess communication, and serve as an interrupt function that notifies other processes that a certain event has occurred. Interruption by a signal may trigger an operation that is not async-signal-safe, such as deallocating memory. In this case, a method is conceivable in which a worker thread is created in advance to execute the processing on behalf of the worker thread and is kept on standby, and the signal handler requests activation and processing of the worker thread.
 しかし、特許文献1に開示のアーキテクチャのように、コンテキストスイッチのコストが大きい場合、ワーカースレッド(以下、ワーカーとも称す)の起動が、コンテキストスイッチによる性能劣化を引き起こす。例えば、全コア上にユーザスレッドが動いており、あるユーザスレッドがワーカーを起動するためのシグナルを受け取る。シグナルを受けたユーザスレッドはワーカーを起動すると、ワーカーはいずれかのコアにスケジューリングされ、コンテキストスイッチが発生する。この時、一般的なスケジューラでは、コンテキストスイッチの対象は、ワーカーを起動したユーザスレッドとは限らない。 However, as in the architecture disclosed in Patent Document 1, when the cost of context switching is high, activation of worker threads (hereinafter also referred to as workers) causes performance degradation due to context switching. For example, user threads are running on all cores, and one user thread receives a signal to start a worker. When the user thread that receives the signal starts a worker, the worker is scheduled on one of the cores and a context switch occurs. At this time, in a general scheduler, the target of the context switch is not limited to the user thread that started the worker.
 そのため、ワーカーの処理を必要とするユーザスレッドとは無関係(即ち、異なるスレッドグループ)のユーザスレッドの進行が妨げられる。一方でワーカーの処理を必要とするユーザスレッドはCPU(Central Processing Unit)のリソースを持て余すことになる。 Therefore, the progress of user threads unrelated (that is, different thread groups) from user threads that require worker processing is hindered. On the other hand, user threads that require worker processing end up with excessive CPU (Central Processing Unit) resources.
 ワーカーが、メモリ解放のようなプロセスのリソース制御を行う場合、ユーザプロセスごとにワーカーが必要となる。そのためユーザプロセスが複数存在する場合、ワーカーも同数存在する必要がある。複数のワーカーが同じコアにスケジューリングされるとワーカー同士でのコンテキストスイッチも発生する。
 このような、スケジューリングにおけるコンテキストスイッチに関する性能劣化を抑制する技術の提供が望まれている。
A worker is required for each user process if the worker performs process resource control such as memory release. Therefore, if there are multiple user processes, the same number of workers must also exist. When multiple workers are scheduled on the same core, context switches between workers also occur.
It is desired to provide a technique for suppressing performance degradation related to context switching in scheduling.
 本開示の目的は、コンテキストスイッチに関する性能劣化を抑制することができる技術を提供することにある。 An object of the present disclosure is to provide a technology that can suppress performance degradation related to context switching.
 本開示の一態様であるスケジューラは、各コアにスレッドが割り当てられて、空きコアが存在しない場合、前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する選択部と、選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する決定部と、を備える。 The scheduler, which is one aspect of the present disclosure, assigns a thread to each core, and when there is no free core, the same worker thread to be generated is added to the executable queue or waiting queue of each core among the cores. a selection unit that selects a core in which a thread of the thread group exists; and a determination unit that determines allocation of the worker thread to be generated to the selected core.
 本開示の一形態であるスケジューリング方法は、各コアにスレッドが割り当てられて、空きコアが存在しない場合、前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択し、選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する。 A scheduling method, which is one embodiment of the present disclosure, assigns threads to each core, and when there is no free core, a worker thread to be generated and A core in which threads of the same thread group exist is selected, and it is decided to allocate the worker thread to be generated to the selected core.
 本開示の一形態であるコンピュータ読み取り可能な記憶媒体は、各コアにスレッドが割り当てられて、空きコアが存在しない場合、前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択し、選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する、ことをコンピュータに実行させるプログラムを格納する。 In the computer-readable storage medium according to one aspect of the present disclosure, when threads are assigned to each core and there is no free core, A program for causing a computer to execute selecting a core in which a thread of the same thread group as a worker thread to be generated exists and deciding to allocate the worker thread to be generated to the selected core is stored.
 本開示のスケジューラ等によれば、コンテキストスイッチに関する性能劣化を抑制することができる。 According to the scheduler and the like of the present disclosure, performance degradation related to context switching can be suppressed.
第1の実施形態に係るスケジューラによるスケジュール例を示す図である。FIG. 4 is a diagram showing a schedule example by a scheduler according to the first embodiment; FIG. 第1の実施形態に係るスケジューラの構成の例を示すブロック図である。3 is a block diagram showing an example of the configuration of a scheduler according to the first embodiment; FIG. スレッドを生成する場合のスケジューラの動作の例を示すフローチャートである。7 is a flow chart showing an example of the operation of a scheduler when creating a thread; スレッドを待機状態から実行可能状態へ遷移させる場合のスケジューラの動作の例を示すフローチャートである。FIG. 11 is a flow chart showing an example of the operation of the scheduler when causing a thread to transition from the waiting state to the ready state; FIG. スケジューラの動作の他の例を示すフローチャートである。FIG. 11 is a flow chart showing another example of the operation of the scheduler; FIG. 第2の実施形態に係るスケジューラの構成の例を示すブロック図である。FIG. 11 is a block diagram showing an example of the configuration of a scheduler according to the second embodiment; FIG. 第2の実施形態に係るスケジューラの動作の例を示すフローチャートである。FIG. 11 is a flow chart showing an example of the operation of a scheduler according to the second embodiment; FIG. コンピュータによるハードウエア構成を示す図である。It is a figure which shows the hardware constitutions by computer.
 (第1の実施形態)
 第1の実施形態の一態様であるスケジューラについて図面を用いて説明する。
(First embodiment)
A scheduler, which is one aspect of the first embodiment, will be described with reference to the drawings.
 図1は、第1の実施形態に係るスケジューラによるスケジュール例を示す図である。スケジューラ1は、各コア(コア0、1、2、3)に対してスレッドをスケジューリングして割り当てる。スケジューラ1は、スレッド管理データ2を利用して、スレッドをスケジューリングする。スケジューリングとは、スレッドの実行順序を決定する処理、あるいは、スレッドをどのコアに割り当てるかを決定する処理をいう。 FIG. 1 is a diagram showing a schedule example by the scheduler according to the first embodiment. The scheduler 1 schedules and allocates threads to each core ( cores 0, 1, 2, and 3). The scheduler 1 uses thread management data 2 to schedule threads. Scheduling is the process of determining the execution order of threads or the process of determining which cores to allocate threads to.
 なお、第1の実施形態では4つのコアにスレッドをスケジューリングする例で説明するが、コアの数は4つに限られない。 In the first embodiment, an example of scheduling threads to four cores will be described, but the number of cores is not limited to four.
 スレッド管理データ2には、各コアに関連付けられたスレッドごとのスケジューリングを表現する情報が含まれる。例えば、スレッド管理データ2は、スレッド識別子21(図中、IDと示す)、スレッドグループ識別子22(図中、グループIDと示す)、優先度23、ワーカーフラグ24を含む。スケジューラ1は、スレッド管理データ2を参照してスレッドごとの実行順序と依存関係を確認する。 The thread management data 2 includes information expressing scheduling for each thread associated with each core. For example, the thread management data 2 includes a thread identifier 21 (indicated as ID in the figure), a thread group identifier 22 (indicated as group ID in the figure), priority 23 and worker flag 24 . The scheduler 1 refers to the thread management data 2 to confirm the execution order and dependency of each thread.
 スレッド識別子21は、スレッドを識別するための情報である。スレッドグループ識別子22は、プロセスを構成するスレッドのグループを識別するための情報である。スレッドグループは、ユーザプロセスを構成するスレッドの集合とも言える。優先度23は、同一スレッドグループにおけるスレッド間の優先の度合を示す情報である。図1において、優先度のレベルを高、低の2つで示しているが、これに限られない。例えば、優先度のレベルは3つ以上であってもよい。 The thread identifier 21 is information for identifying a thread. The thread group identifier 22 is information for identifying a group of threads forming a process. A thread group can also be said to be a set of threads that constitute a user process. The priority 23 is information indicating the degree of priority between threads in the same thread group. In FIG. 1, two priority levels, high and low, are shown, but the priority level is not limited to this. For example, there may be three or more priority levels.
 ワーカーフラグ24は、スレッドがワーカースレッドであるか否かを判別するための情報である。ワーカーフラグ24は、例えば、OSが提供するスレッドを生成するためのアプリケーションインターフェースにおいて、引数を追加もしくは拡張する形で最終的にユーザー側から設定できる仕様とする。例えば、Linux(登録商標)のclone()であれば、第3引数のint flags(スレッドの属性を指定するフラグ)を拡張してワーカー属性を追加し、かつ、task_struct構造体(スレッドを管理するデータ)にはワーカーか否かを判別するためのフィールドを持たせることで実現可能となる。 The worker flag 24 is information for determining whether a thread is a worker thread. The worker flag 24 is, for example, a specification that can be finally set by the user by adding or extending an argument in an application interface for generating threads provided by the OS. For example, in the case of Linux (registered trademark) clone(), the third argument intflags (flags specifying thread attributes) is extended to add worker attributes, and the task_struct structure (thread management data) has a field for determining whether it is a worker or not.
 また、スケジューラ1は、各コアに関連付けられたスレッドのスケジューリングを表現する2種類のキューを用いる。1つは、実行中または実行可能状態のスレッドからなる実行可能キュー31で、もう1つは、待機状態のスレッドからなる待機キュー32である。 Also, the scheduler 1 uses two types of queues that represent the scheduling of threads associated with each core. One is a runnable queue 31 consisting of threads in running or ready state, and the other is a wait queue 32 consisting of threads in waiting state.
 なお、実装の簡易化のため、2種類のキューを持つ代わりに、1つのタスクリストとしてスレッドを管理してもよい。この場合、コアの実行可能キュー31もしくはコアの待機キュー32のいずれかに、スレッド管理データ2が存在する場合、スレッドが当該コアに割り当てられているということにする。 For ease of implementation, instead of having two types of queues, threads may be managed as one task list. In this case, if the thread management data 2 exists in either the core's executable queue 31 or the core's standby queue 32, it is assumed that the thread is assigned to the core.
 本明細書で説明するスケジューラ1は、OSにおけるスレッドのスケジューラとしての機能を備えるものとする。このため、通常のスケジューラが備える機能に関する詳細な説明は省略する。 The scheduler 1 described in this specification shall have a function as a thread scheduler in the OS. Therefore, a detailed description of the functions of the normal scheduler will be omitted.
 図2は、第1の実施形態に係るスケジューラの構成の例を示すブロック図である。図2に示すスケジューラ1は、確認部11、選択部12、決定部13、移送部14、計数部15、設定部16を備える。 FIG. 2 is a block diagram showing an example of the configuration of the scheduler according to the first embodiment. A scheduler 1 shown in FIG.
 確認部11は、スレッドが割り当てられているコアを特定し、確認する。例えば、確認部11は、スレッドごとのスレッド管理データ2を参照し、指定されたスレッド識別子21を持つスレッドが割り当てられているコアを特定する。 The confirmation unit 11 identifies and confirms the core to which the thread is assigned. For example, the confirmation unit 11 refers to the thread management data 2 for each thread and identifies the core to which the thread having the specified thread identifier 21 is assigned.
 また、確認部11は、スレッドの種別を確認する。例えば、確認部11は、スレッドがユーザスレッド又はワーカースレッドであるか確認する。具体的には、確認部11は、スレッドのスレッド管理データ2を参照してスレッドのワーカーフラグ24を確認する。 Also, the confirmation unit 11 confirms the type of thread. For example, the confirmation unit 11 confirms whether the thread is a user thread or a worker thread. Specifically, the confirmation unit 11 refers to the thread management data 2 of the thread and confirms the worker flag 24 of the thread.
 また、確認部11は、実行可能キュー31、待機キューを参照して、各コアに対するスレッドの割り当て状況を確認する。例えば、確認部11は、各コアにおいて、実行可能キューが空いているコアが存在するか確認する。あるいは、確認部11は、各コアに関連付けられたスレッドに対して、実行可能キュー31に孤立したワーカーが存在するかを確認してもよい。 Also, the confirmation unit 11 refers to the executable queue 31 and the standby queue to confirm the allocation status of threads to each core. For example, the confirmation unit 11 confirms whether there is a core with an empty executable queue in each core. Alternatively, the confirmation unit 11 may confirm whether or not an isolated worker exists in the executable queue 31 for threads associated with each core.
 選択部12は、例えば、確認部11による確認の結果に基づいてコアを選択する。また、選択部12は、スレッドの割り当て先として当該空きコアを選択する。あるいは、選択部12は、他のコアの実行可能キュー31に孤立したワーカーと同一のスレッドグループのスレッドが存在するコアを選択する。選択部12は、実行可能キュー31と待機キュー32のいずれかにワーカーと同一スレッドグループのスレッドが存在するコアを選択してもよい。また、選択部12は、実行可能キュー31の中に同一のスレッドグループのスレッドが存在するコアを優先的に選択してもよい。選択部12は、他のコアを孤立したワーカーの割当先として選択してもよい。 The selection unit 12 selects a core based on the result of confirmation by the confirmation unit 11, for example. Further, the selection unit 12 selects the free core as a thread allocation destination. Alternatively, the selection unit 12 selects a core in which a thread of the same thread group as that of the isolated worker exists in the executable queue 31 of another core. The selection unit 12 may select a core for which a thread of the same thread group as that of the worker exists in either the executable queue 31 or the standby queue 32 . Alternatively, the selection unit 12 may preferentially select cores having threads of the same thread group in the executable queue 31 . The selection unit 12 may select another core as the allocation destination of the isolated worker.
 決定部13は、選択部12が選択したコアにスレッドを割り当てることを決定する。例えば、決定部13は、選択部12が選択したコアの実行可能キュー31にスレッドを割り当てることを決定する。 The determining unit 13 determines to allocate threads to the cores selected by the selecting unit 12 . For example, the determining unit 13 determines to allocate threads to the executable queue 31 of the core selected by the selecting unit 12 .
 移送部14は、コアごとにスレッド(ユーザスレッド、ワーカースレッド)をマイグレーションする。例えば、移送部14は、選択部12が選択したコアの実行可能キュー31にワーカーをマイグレーションする。移送部14は、スレッドのスレッドグループごとマイグレーションしてもよい。 The transfer unit 14 migrates threads (user threads, worker threads) for each core. For example, the transfer unit 14 migrates the worker to the executable queue 31 of the core selected by the selection unit 12 . The transfer unit 14 may migrate each thread group of threads.
 計数部15は、スレッドグループにおけるスレッドの数を計数する。例えば、計数部15は、スレッドごとのスレッド管理データ2を参照し、指定されたスレッドグループ識別子22を持つスレッドの数を計数する。なお、計数部15は、確認部11に含まれていてもよい。 The counting unit 15 counts the number of threads in the thread group. For example, the counting unit 15 refers to the thread management data 2 for each thread and counts the number of threads having the designated thread group identifier 22 . Note that the counting unit 15 may be included in the checking unit 11 .
 設定部16は、同一スレッドグループにおけるスレッド間の優先度を設定する。設定部16は、例えば、ワーカースレッドの優先度を、ワーカースレッドと同一スレッドグループのスレッドの優先度よりも高くなるように設定する。 The setting unit 16 sets priorities between threads in the same thread group. For example, the setting unit 16 sets the priority of the worker thread to be higher than the priority of threads belonging to the same thread group as the worker thread.
 第1の実施形態に係るスケジューラ1の動作について図面を用いて説明する。スケジューラ1によるワーカーのスケジューリングを詳細に述べる。 The operation of the scheduler 1 according to the first embodiment will be explained using the drawings. The scheduling of workers by scheduler 1 is detailed.
 まず、スケジューラ1が、スレッドを生成するときのスケジューリングについて説明する。図3は、スレッドを生成する場合のスケジューラ1の動作を示すフローチャートである。確認部11は、各コアの実行可能キュー31に対して、各コアに関連するスレッドのスレッド管理データ2を確認する。この時、確認部11は、各コアに関連付けられたスレッドに対して、実行可能キュー31に孤立したワーカーが存在するかを確認する(ステップS101)。孤立したワーカーとは、各コアの実行可能キュー31のうち、スレッドがワーカーであって、かつ、当該ワーカーと同一のスレッドグループのスレッドが他に存在していないものをいう。 First, the scheduling when the scheduler 1 generates threads will be described. FIG. 3 is a flow chart showing the operation of the scheduler 1 when creating threads. The confirmation unit 11 confirms the thread management data 2 of the threads related to each core with respect to the executable queue 31 of each core. At this time, the confirmation unit 11 confirms whether or not an isolated worker exists in the executable queue 31 for the thread associated with each core (step S101). An isolated worker is one in which the thread is a worker in the executable queue 31 of each core and there is no other thread in the same thread group as the worker.
 孤立したワーカーが存在する場合(ステップS101のYes)、選択部12は、他のコアの実行可能キュー31に孤立したワーカーと同一のスレッドグループのスレッドが存在するコアを選択する(ステップS102)。移送部14は、孤立したワーカーを、選択したコアの実行可能キュー31にマイグレーションする(ステップS103)。 If there is an isolated worker (Yes in step S101), the selection unit 12 selects a core in which a thread of the same thread group as the isolated worker exists in the executable queue 31 of another core (step S102). The transfer unit 14 migrates the isolated worker to the executable queue 31 of the selected core (step S103).
 次に、確認部11は、各コアにおいて、実行可能キュー31が空きのコアが存在するか確認する(ステップS104)。空きのコアは空きコアとも呼ばれる。 Next, the confirmation unit 11 confirms whether there is a core with an empty executable queue 31 in each core (step S104). A free core is also called a free core.
 空きコアがある場合(ステップS104のYes)、選択部12は、生成するスレッドの割り当て先として当該空きコアを選択する(ステップS105)。決定部13は、ステップS105で選択したコアの実行可能キュー31に生成されたスレッドを割り当てることを決定する(ステップS109)。 If there is a free core (Yes in step S104), the selection unit 12 selects the free core as the allocation destination of the generated thread (step S105). The determination unit 13 determines to allocate the generated thread to the executable queue 31 of the core selected in step S105 (step S109).
 一方、空きコアがない場合(ステップS104のNo)、スケジューラ1の確認部11は、生成するスレッドのスレッド管理データ2を参照してワーカーフラグ24を確認する(ステップS106)。 On the other hand, if there is no free core (No in step S104), the confirmation unit 11 of the scheduler 1 refers to the thread management data 2 of the thread to be generated and confirms the worker flag 24 (step S106).
 ワーカーフラグ24がTrue(真)の場合、すなわち、生成するスレッドがワーカーである場合、スケジューラ1の設定部16は、スレッドの優先度を高に設定する。優先度は、他のスレッドよりも高くなうように設定される。例えば、設定部16は、ワーカースレッドの優先度を、ワーカースレッドと同一スレッドグループのスレッドの優先度よりも高くなるように設定する。例えば、スレッドの優先度を高くすることでスケジューリングされた直後に動作するように保証することが可能となる。 When the worker flag 24 is True, that is, when the thread to be created is a worker, the setting unit 16 of the scheduler 1 sets the priority of the thread to high. Priority is set to be higher than other threads. For example, the setting unit 16 sets the priority of the worker thread to be higher than the priority of threads belonging to the same thread group as the worker thread. For example, by increasing the priority of a thread, it is possible to guarantee that it will run immediately after being scheduled.
 選択部12は、実行可能キュー31と待機キュー32のいずれかにワーカーと同一スレッドグループのスレッドが存在するコアを選択する(ステップS107)。具体的には、選択部12は、各コアの実行可能キュー31、待機キュー32にあるスレッドのスレッド管理データ2から、ワーカーのスレッドグループ(ユーザプロセスを構成するスレッドの集合)と同一のスレッドグループ識別子22を持つスレッドを1つ選ぶ。選択部12は、選択されたスレッドが割り当てられているコアを選択する。なお、ステップS107において、選択部12は、実行可能キュー31の中に同一のスレッドグループのスレッドが存在するコアを優先的に選択する。決定部13は、ステップS107で選択したコアの実行可能キュー31にスレッドを割り当てることを決定する(ステップS109)。 The selection unit 12 selects a core that has a thread in the same thread group as the worker in either the executable queue 31 or the standby queue 32 (step S107). Specifically, the selection unit 12 selects the same thread group as the worker thread group (a set of threads forming the user process) from the thread management data 2 of the threads in the executable queue 31 and the standby queue 32 of each core. Pick one thread with identifier 22 . The selection unit 12 selects a core to which the selected thread is assigned. In step S<b>107 , the selection unit 12 preferentially selects cores having threads of the same thread group in the executable queue 31 . The determination unit 13 determines to allocate the thread to the executable queue 31 of the core selected in step S107 (step S109).
 一方、ワーカーフラグ24がfalse(偽)の場合、選択部12は、通常のスケジューリング機能に基づいて割り当て先のコアを選択する(ステップS108)。最後に、ステップS108のいずれかで選択したコアの実行可能キュー31にスレッドをスケジューリングする(ステップS109)。 On the other hand, if the worker flag 24 is false, the selection unit 12 selects the allocation destination core based on the normal scheduling function (step S108). Finally, the thread is scheduled in the executable queue 31 of the core selected in any of step S108 (step S109).
 なお、スレッド生成時のコア割当のオプションとして、ステップS101、ステップS102、ステップS103、ステップS104、ステップS105の動作を行わないことも考えられる。また、マイグレーションに伴うコストから、マイグレーション回数を減らすべきと判断する場合、スケジューラ1は、ワーカーの生成時はステップS107に従ってスケジューリングする。 As an option for core allocation during thread generation, it is conceivable not to perform the operations of steps S101, S102, S103, S104, and S105. Also, if it is determined that the number of times of migration should be reduced from the cost associated with migration, the scheduler 1 performs scheduling according to step S107 when generating workers.
 次に、スケジューラ1が、あるスレッドを待機状態から実行可能状態へ遷移させる場合の動作について説明する。図4は、スレッドを待機状態から実行可能状態へ遷移させる場合のスケジューラ1の動作の例を示すフローチャートである。 Next, the operation when the scheduler 1 transitions a certain thread from the waiting state to the ready state will be described. FIG. 4 is a flow chart showing an example of the operation of the scheduler 1 when a thread transitions from the waiting state to the ready state.
 スケジューラ1の確認部11は、スレッドが割り当てられているコアについて、実行可能キュー31に異なるスレッドグループで孤立したワーカーがあるか確認する(ステップS201)。 The confirmation unit 11 of the scheduler 1 confirms whether there is an isolated worker in a different thread group in the executable queue 31 for the core to which the thread is assigned (step S201).
 孤立したワーカーがない場合(ステップS201のNo)、移送部14は、待機状態から実行可能状態へ遷移するスレッドについて、当該スレッドのスレッド管理データ2を待機キュー32から実行可能キュー31へ移動する(ステップS206)。 If there is no isolated worker (No in step S201), the transfer unit 14 moves the thread management data 2 of the thread transitioning from the standby state to the executable state from the standby queue 32 to the executable queue 31 ( step S206).
 孤立したワーカーがある場合(ステップS201のYes)、確認部11は、実行可能キューが空いている他のコアがあるか確認する(ステップS202)。 If there is an isolated worker (Yes in step S201), the confirmation unit 11 confirms whether there is another core with an empty executable queue (step S202).
 実行可能キュー31が空いている他のコアがある場合(ステップS202のYes)、選択部12は、孤立したワーカーの割当先として当該他のコアを選択する(ステップS203)。移送部14は、ステップS203で選択した他のコアの実行可能キュー31にワーカーをマイグレーションする(ステップS205)。 If there is another core with an empty executable queue 31 (Yes in step S202), the selection unit 12 selects the other core as an allocation destination for the isolated worker (step S203). The transfer unit 14 migrates the worker to the executable queue 31 of the other core selected in step S203 (step S205).
 一方、実行可能キュー31が空いている他のコアがない場合(ステップS202のNo)、選択部12は、各コアの実行可能キュー31にあるスレッドのスレッド管理データ2に基づき、ワーカーのスレッドグループ識別子22と同じスレッドグループ識別子22を持つスレッドを一つ選ぶ。選択部12は、1つ選んだスレッドが割り当てられているコアを選択する(ステップS204)。移送部14は、ステップS204で選択したコアの実行可能キューにワーカーをマイグレーションする(ステップS205)。 On the other hand, if there is no other core with an empty executable queue 31 (No in step S202), the selector 12 selects a worker thread group based on the thread management data 2 of the threads in the executable queue 31 of each core. One thread having the same thread group identifier 22 as the identifier 22 is selected. The selection unit 12 selects a core to which the selected thread is assigned (step S204). The transfer unit 14 migrates the worker to the executable queue of the core selected in step S204 (step S205).
 移送部14は、待機状態から実行可能状態へ遷移するスレッドについて、当該スレッドのスレッド管理データ2を待機キュー32から実行可能キュー31へ移動する(ステップS206)。 The transfer unit 14 moves the thread management data 2 of the thread transitioning from the standby state to the executable state from the standby queue 32 to the executable queue 31 (step S206).
 なお、スケジューラ1の動作のオプションとして、マイグレーション回数を減らすため、図4に示すスケジューラ1の動作のうち、ステップS204のみとしてもよい。この場合、待機状態から実行可能状態へ遷移するスレッドが割り当てられているコアについて、実行可能キュー31に異なるスレッドグループで孤立したワーカーがあり、実行可能キュー31が空いている他のコアがないことが前提となる。 As an option for the operation of the scheduler 1, only step S204 may be performed among the operations of the scheduler 1 shown in FIG. 4 in order to reduce the number of migrations. In this case, for the core to which the thread that transitions from the wait state to the ready state is assigned, there must be an isolated worker in a different thread group in the ready queue 31 and no other core with an empty ready queue 31. is the premise.
 次に、スケジューラ1が、スレッドのマイグレーション、スレッドの終了、もしくは実行可能状態から待機状態の遷移を行い実行可能キューの空きが生じ、リバランスによるプロセスのマイグレーション動作を説明する。図5は、スケジューラ1の動作の他の例を示すフローチャートである。 Next, the scheduler 1 migrates threads, terminates threads, or transitions from the ready state to the waiting state to create a space in the ready queue and to rebalance process migration operations. FIG. 5 is a flow chart showing another example of the operation of the scheduler 1. FIG.
 スケジューラ1がスレッドをマイグレーションする動作について説明する。スケジューラ1の計数部15は、マイグレーションの対象として選ばれたスレッドに対し、実行可能キュー31におけるスレッドグループのスレッドの数を計数する。具体的には、計数部15は、マイグレーション対象であるスレッドのスレッド管理データ2を参照し、指定されたスレッドグループ識別子22を持つスレッドの数を計数する。 The operation of scheduler 1 to migrate threads will be explained. The counting unit 15 of the scheduler 1 counts the number of threads in the thread group in the executable queue 31 for the threads selected for migration. Specifically, the counting unit 15 refers to the thread management data 2 of threads to be migrated, and counts the number of threads having the specified thread group identifier 22 .
 確認部11は、計数部15の計数結果を参照し、スレッドグループのスレッド数が2であるか確認する(ステップS301)。スレッドグループのスレッド数が2である場合(ステップS301のYes)、スケジューラ1は、当該スレッドのスレッドグループにワーカーが存在するかを確認する(ステップS302)。ワーカーが存在する場合、スレッドグループごとマイグレーションを行う。スレッド数が2でない場合(ステップS301のNo)、スケジューラ1は、処理を終了する。 The confirmation unit 11 refers to the counting result of the counting unit 15 and confirms whether the number of threads in the thread group is 2 (step S301). When the number of threads in the thread group is 2 (Yes in step S301), the scheduler 1 checks whether a worker exists in the thread group of the thread (step S302). If workers exist, perform migration for each thread group. If the number of threads is not 2 (No in step S301), the scheduler 1 terminates the process.
 次に、スケジューラ1が、スレッドを終了する動作について説明する。まず、スケジューラ1の確認部11は、終了させるスレッドのスレッドグループ識別子22を確認し、スレッドグループのスレッド数が2であるか確認する(ステップS301)。 Next, the operation of scheduler 1 to terminate threads will be described. First, the confirmation unit 11 of the scheduler 1 confirms the thread group identifier 22 of the thread to be terminated, and confirms whether the number of threads in the thread group is 2 (step S301).
 スレッド数が2である場合(ステップS301のYes)、終了処理中ではない方、すなわち残存するスレッドのワーカーフラグ24を確認する(ステップS302)。残存するスレッドがワーカーの場合(ステップS302のYes)、ワーカーも終了処理を行う(ステップS303)。その後、目的のスレッドを終了させる(ステップS304)。 If the number of threads is 2 (Yes in step S301), the worker flag 24 of the thread that is not in the end process, that is, the remaining thread is checked (step S302). If the remaining thread is a worker (Yes in step S302), the worker also performs termination processing (step S303). After that, the target thread is terminated (step S304).
 スレッド数が2でない場合(ステップS301のNo)、目的のスレッドを終了させる。 If the number of threads is not 2 (No in step S301), terminate the target thread.
 (変形例)
 実装の簡易化のため、実行可能キュー31と待機キュー32の2つのキューの代わりに1つのタスクリストとして管理してもよい。その場合は、タスクリストに登録されているスレッドを、実行可能キュー31につながっているスレッドとみなすと、本実施形態を適用できる。この場合、待機キュー32はないため、図4に示すスレッドを待機状態から実行可能状態へ遷移させる場合のスケジューラ1の動作は無くなる。
(Modification)
For ease of implementation, instead of two queues, the executable queue 31 and the standby queue 32, one task list may be managed. In that case, if the threads registered in the task list are regarded as threads connected to the executable queue 31, this embodiment can be applied. In this case, since there is no waiting queue 32, there is no operation of the scheduler 1 when the thread shown in FIG. 4 is changed from the waiting state to the ready state.
 また、第1の実施形態において、確認部11、移送部14、計数部15、設定部16の少なくとも1つがないスケジューラ1の構成であってもよい。 Also, in the first embodiment, the configuration of the scheduler 1 may be such that at least one of the confirmation unit 11, transfer unit 14, counting unit 15, and setting unit 16 is omitted.
 以上、第1の実施形態構成について説明したが、本実施形態は上記の例に限られるものではない。 Although the configuration of the first embodiment has been described above, the present embodiment is not limited to the above example.
 第1の実施形態のスケジューラ1によれば、コンテキストスイッチに関する性能劣化を抑制することができる。その理由は、各コアにスレッドが割り当てられて、空きコアが存在しない状態で、ワーカースレッドが生成されたときのスケジューリングにおいて、選択部12は、各コアのうち、各コアの実行可能キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する。決定部13は、選択したコアに、生成するワーカースレッドを割り当てることを決定する。 According to the scheduler 1 of the first embodiment, performance degradation related to context switching can be suppressed. The reason for this is that in scheduling when worker threads are generated in a state in which threads are assigned to each core and there are no free cores, the selection unit 12 assigns Select a core that has a thread in the same thread group as the worker thread to be created. The determining unit 13 determines to allocate the worker thread to be generated to the selected core.
 例えば、ワーカーの処理を必要とするユーザスレッドと無関係なスレッド間のコンテキストスイッチが抑制される。 For example, context switches between user threads that require worker processing and unrelated threads are suppressed.
 あるいは、ユーザスレッドがコア数以下であり、かつ、ワーカーの数がユーザプロセス数以下であれば、コア上にはあるユーザスレッドとそのシグナルハンドラから起床されるワーカーのみが存在することになる。これにより複数のワーカーが同じコアにスケジューリングされるとワーカー同士でのコンテキストスイッチが抑制される。例えば、コンテキストスイッチのコストが大きいアーキテクチャ上で性能劣化を防ぎつつワーカーが動作可能なスケジューラを提供できる。 Alternatively, if the number of user threads is less than or equal to the number of cores and the number of workers is less than or equal to the number of user processes, there will only be workers on the cores that are woken up by certain user threads and their signal handlers. This prevents context switching between workers when multiple workers are scheduled on the same core. For example, it is possible to provide a scheduler that allows workers to operate while preventing performance degradation on architectures where the cost of context switching is high.
 (第2の実施形態)
 次に、第2の実施形態に係るスケジューラ1について図面を用いて説明する。第2の実施形態のスケジューラ1は、第1の実施形態と同様に複数のコアに対してスレッドをスケジューリングして割り当てる例とする。また、第2の実施形態のスケジューラ1も、第1の実施形態の図1に示すスレッド管理データ2を利用して、スレッドをスケジューリングする。第2の実施形態において、スレッド管理データ2の内容は第1の実施形態と同様である。また、第2の実施形態でも各コアに関連付けられたスレッドのスケジューリングを表現するキューとして、実行可能キュー31、待機キュー32があるとする。スレッドのスレッド管理データ2がコアの実行可能キュー31もしくは待機キュー32のいずれかに存在する場合、スレッドがコアに割り当てられているという事にする。
(Second embodiment)
Next, the scheduler 1 according to the second embodiment will be explained using the drawings. The scheduler 1 of the second embodiment schedules and allocates threads to a plurality of cores in the same manner as in the first embodiment. The scheduler 1 of the second embodiment also schedules threads using the thread management data 2 shown in FIG. 1 of the first embodiment. In the second embodiment, the content of thread management data 2 is the same as in the first embodiment. Also in the second embodiment, it is assumed that there are an executable queue 31 and a standby queue 32 as queues representing the scheduling of threads associated with each core. If the thread management data 2 of the thread exists in either the executable queue 31 or the waiting queue 32 of the core, it is said that the thread is assigned to the core.
 第2の実施形態のスケジューラ1の構成について説明する。図6は、第2の実施形態に係るスケジューラの構成の例を示すブロック図である。図6に示すスケジューラ1は、選択部12、決定部13を備える。第2の実施形態の説明において、第1の実施形態と実質的に同様の構成部分については同じ符号を付し、詳細な説明を省略する。なお、第2の実施形態のスケジューラ1は、OSが通常有するスケジューラとしての機能を備えているものとする。 The configuration of the scheduler 1 of the second embodiment will be described. FIG. 6 is a block diagram showing an example of the configuration of a scheduler according to the second embodiment. A scheduler 1 shown in FIG. 6 includes a selection unit 12 and a determination unit 13 . In the description of the second embodiment, substantially the same components as those of the first embodiment are denoted by the same reference numerals, and detailed description thereof will be omitted. Note that the scheduler 1 of the second embodiment is assumed to have a function as a scheduler normally possessed by the OS.
 以下の第2の実施形態のスケジューラ1の説明は、各コアにスレッドが割り当てられて、空きコアが存在しない状態で、ワーカースレッドを生成するときのスケジューリングの例である。 The following description of the scheduler 1 of the second embodiment is an example of scheduling when worker threads are generated in a state in which threads are assigned to each core and there are no free cores.
 選択部12は、各コアのうち、各コアの実行可能キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する。 The selection unit 12 selects cores for which threads of the same thread group as the worker thread to be generated exist in the executable queue of each core.
 決定部13は、選択したコアに、生成するワーカースレッドを割り当てることを決定する。 The decision unit 13 decides to allocate the worker thread to be generated to the selected core.
 第2の実施形態に係るスケジューラ1の動作について図面を用いて説明する。以下の説明において、スケジューラ1によるワーカーに対するスケジューリングを詳細に述べる。 The operation of the scheduler 1 according to the second embodiment will be explained using the drawings. In the following description, the scheduling of workers by scheduler 1 is detailed.
 スケジューラ1が、スレッドを生成するときのスケジューリングを説明する。図7は、スレッド生成時のスケジューリングの動作を示すフローチャートである。 Scheduling when scheduler 1 generates threads will be explained. FIG. 7 is a flowchart showing the scheduling operation when threads are generated.
 選択部12は、実行可能キュー31にワーカーと同一スレッドグループのスレッドが存在するコアを選択する(ステップS401)。具体的には、選択部12は、各コアの実行可能キュー31にあるスレッドのスレッド管理データ2に基づき、ワーカーのスレッドグループと同じスレッドグループ識別子22を持つスレッドを1つ選ぶ。選択部12は、選択されたスレッドが割り当てられているコアを選択する。選択部12は、実行可能キュー31に同じスレッドグループのスレッドが存在するコアを優先的に選択してもよい。 The selection unit 12 selects a core in which a thread in the same thread group as that of the worker exists in the executable queue 31 (step S401). Specifically, the selection unit 12 selects one thread having the same thread group identifier 22 as the thread group of the worker based on the thread management data 2 of the threads in the executable queue 31 of each core. The selection unit 12 selects a core to which the selected thread is assigned. The selection unit 12 may preferentially select cores for which threads of the same thread group exist in the executable queue 31 .
 決定部13は、ステップS401で選択したコアの実行可能キュー31に生成したワーカースレッドをスケジューリングする(ステップS402)。 The determining unit 13 schedules the worker threads generated in the executable queue 31 of the core selected in step S401 (step S402).
 第2の実施形態のスケジューラ1によれば、コンテキストスイッチに関する性能劣化を抑制することができる。その理由は、各コアにスレッドが割り当てられて、空きコアが存在しない状態で、ワーカースレッドが生成されたときのスケジューリングにおいて、選択部12は、各コアのうち、各コアの実行可能キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する。決定部13は、選択したコアに、生成するワーカースレッドを割り当てることを決定する。 According to the scheduler 1 of the second embodiment, performance degradation related to context switching can be suppressed. The reason for this is that in scheduling when worker threads are generated in a state in which threads are assigned to each core and there are no free cores, the selection unit 12 assigns Select a core that has a thread in the same thread group as the worker thread to be created. The determining unit 13 determines to allocate the worker thread to be generated to the selected core.
 これにより、ユーザスレッドとそのワーカースレッドを、無関係なスレッド間のコンテキストスイッチを抑制することができる。 This allows the user thread and its worker threads to suppress context switches between unrelated threads.
 例えば、ユーザスレッドがコア数以下であり、かつ、ワーカーの数がユーザスレッドの数以下であれば、コア上にはあるユーザスレッドとそのシグナルハンドラによって起動されるワーカーのみが存在することになる。すなわち、コンテキストスイッチは発生しない。よってコンテキストスイッチのコストが大きいアーキテクチャ上で性能劣化を防ぎつつ、ワーカーを動作できるスケジューリングが可能となる。 For example, if the number of user threads is less than or equal to the number of cores and the number of workers is less than or equal to the number of user threads, there will only be workers on the cores that are activated by certain user threads and their signal handlers. That is, no context switch occurs. Therefore, it is possible to schedule workers to operate while preventing performance degradation on architectures where the cost of context switching is high.
 第1の実施形態のスケジューラ1によれば、コンテキストスイッチに関する性能劣化を抑制することができる。その理由は、各コアにスレッドが割り当てられて、空きコアが存在しない状態で、ワーカースレッドが生成されたときのスケジューリングにおいて、選択部12は、各コアのうち、各コアの実行可能キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する。決定部13は、選択したコアに、生成するワーカースレッドを割り当てることを決定する。 According to the scheduler 1 of the first embodiment, performance degradation related to context switching can be suppressed. The reason for this is that in scheduling when worker threads are generated in a state in which threads are assigned to each core and there are no free cores, the selection unit 12 assigns Select a core that has a thread in the same thread group as the worker thread to be created. The determining unit 13 determines to allocate the worker thread to be generated to the selected core.
 例えば、ワーカーの処理を必要とするユーザスレッドと無関係なスレッド間のコンテキストスイッチが抑制される。 For example, context switches between user threads that require worker processing and unrelated threads are suppressed.
 あるいは、ユーザスレッドがコア数以下であり、かつ、ワーカーの数がユーザスレッド数以下であれば、コア上にはあるユーザスレッドとそのシグナルハンドラから起床されるワーカーのみが存在することになる。これにより複数のワーカーが同じコアにスケジューリングされるとワーカー同士でのコンテキストスイッチが抑制される。例えば、コンテキストスイッチのコストが大きいアーキテクチャ上で性能劣化を防ぎつつワーカーが動作可能なスケジューラを提供できる。 Alternatively, if the number of user threads is less than or equal to the number of cores and the number of workers is less than or equal to the number of user threads, there will only be workers on the cores that are awakened from certain user threads and their signal handlers. This prevents context switching between workers when multiple workers are scheduled on the same core. For example, it is possible to provide a scheduler that allows workers to operate while preventing performance degradation on architectures where the cost of context switching is high.
 第1、第2の実施形態のスケジューラ1は、例えば、コンテキストスイッチのコストが大きく、ユーザプログラムの性能劣化を避けるためスレッド数をコア数以下に抑える事が望ましいアーキテクチャに適用できる。例えば、スケジューラ1は、ホストにアクセラレータを搭載したヘテロジニアスな計算機、計算機システム、ヘテロジニアスな計算機に用いるにオペレーティングシステムのスケジューラとして適用可能である。 The scheduler 1 of the first and second embodiments can be applied, for example, to an architecture in which the cost of context switching is high and it is desirable to keep the number of threads below the number of cores in order to avoid performance degradation of the user program. For example, the scheduler 1 can be applied as an operating system scheduler for use in heterogeneous computers, computer systems, and heterogeneous computers in which an accelerator is installed in the host.
 (ハードウエア構成)
 前述したスケジューラ1は、プログラム(ソフトウェアプログラム,コンピュータプログラム)が図8に示すコンピュータ90のCPU91(Central Processing Unit)において実行されることにより実現される。具体的には、第1、2の実施形態に係るスケジューラ1における各構成要素の機能、又は、スケジューラ1の動作としてプログラムを実行することにより実現できる。これらの構成要素、又は、動作は、CPU91がROM(Read Only Memory)93あるいは記憶装置95からプログラム94を読み込み、読み込んだプログラムを、例えば図3から図5、図7に示したフローチャートの手順の如くCPU91、及び、RAM(Random Access Memory)92を用いて実行することにより実現されてもよい。そして、このような場合において、上述した実施形態を例に説明した本開示は、係るコンピュータプログラムを表すコードあるいはそのコンピュータプログラムを表すコードが格納されたコンピュータ読み取り可能な記憶媒体によって構成されると捉えることができる。コンピュータ読み取り可能な記憶媒体は、例えば記憶装置95、不図示の着脱可能な磁気ディスク媒体,光学ディスク媒体やメモリカードなどである。なお、各実施形態の構成要素は、集積回路による専用のハードウエアであってもよい。
(Hardware configuration)
The scheduler 1 described above is realized by executing a program (software program, computer program) in the CPU 91 (Central Processing Unit) of the computer 90 shown in FIG. Specifically, it can be realized by executing a program as the function of each component in the scheduler 1 according to the first and second embodiments or the operation of the scheduler 1 . These components or operations are performed by the CPU 91 reading a program 94 from a ROM (Read Only Memory) 93 or a storage device 95, and executing the read program, for example, according to the procedures of the flow charts shown in FIGS. It may be realized by executing using a CPU 91 and a RAM (Random Access Memory) 92 as described above. In such a case, the present disclosure, which has been described with the above-described embodiment as an example, is considered to be configured by a computer-readable storage medium storing code representing such a computer program or code representing the computer program. be able to. The computer-readable storage medium is, for example, the storage device 95, a removable magnetic disk medium (not shown), an optical disk medium, a memory card, or the like. Note that the components of each embodiment may be dedicated hardware in the form of integrated circuits.
 本開示は上述した各実施形態に限定されるものではなく、種々の変更が可能であり、異なる実施形態にそれぞれ開示された構成、動作、処理を適宜組み合わせて得られる実施形態についても本開示の技術的範囲に含まれる。 The present disclosure is not limited to the above-described embodiments, and various modifications are possible. Included in the technical scope.
 上述した第1、2の実施形態は模範的な例である。本開示は、上述した実施形態には限定されない。即ち、本開示は、本開示のスコープ内において、当業者が理解し得る様々な態様を適用することができる。 The first and second embodiments described above are exemplary examples. The present disclosure is not limited to the embodiments described above. That is, within the scope of the present disclosure, various aspects that can be understood by those skilled in the art can be applied to the present disclosure.
 この出願は、2021年2月3日に出願された日本出願特願2021-015377を基礎とする優先権を主張し、その開示の全てをここに取り込む。 This application claims priority based on Japanese Patent Application No. 2021-015377 filed on February 3, 2021, and the entire disclosure thereof is incorporated herein.
  1 スケジューラ
  2 スレッド管理データ
  11 確認部
  12 選択部
  13 決定部
  14 移送部
  15 計数部
  16 設定部
  21 スレッド識別子
  22 スレッドグループ識別子
  23 優先度
  24 ワーカーフラグ
  31 実行可能キュー
  32 待機キュー
1 scheduler 2 thread management data 11 confirmation unit 12 selection unit 13 determination unit 14 transfer unit 15 counting unit 16 setting unit 21 thread identifier 22 thread group identifier 23 priority 24 worker flag 31 executable queue 32 standby queue

Claims (8)

  1.  各コアにスレッドが割り当てられて、空きコアが存在しない場合、
     前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択する選択手段と、
     選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する決定手段と、を備える、
    スケジューラ。
    If threads are assigned to each core and there are no free cores,
    selection means for selecting a core among the cores in which a thread belonging to the same thread group as a worker thread to be generated exists in the executable queue or the standby queue of each core;
    determining means for determining to allocate the generated worker thread to the selected core;
    scheduler.
  2.  前記選択手段は、前記各コアのうち、前記実行可能キューに同一のスレッドグループのスレッドが存在するコアを優先して選択する、
    請求項1に記載のスケジューラ。
    The selection means preferentially selects cores having threads of the same thread group in the executable queue from among the cores.
    A scheduler according to claim 1.
  3.  前記生成するワーカースレッドに対して、同一のスレッドグループにおけるスレッド間の優先の度合を示す優先度を他のスレッドよりも高く設定する設定手段を、更に備える、
    請求項1又は2に記載のスケジューラ。
    further comprising setting means for setting a priority indicating the degree of priority between threads in the same thread group to the worker thread to be generated higher than other threads;
    A scheduler according to claim 1 or 2.
  4.  前記スレッドがユーザスレッド又はワーカースレッドであるか確認する確認手段を、更に備える、
    請求項1から3のいずれか1つに記載のスケジューラ。
    further comprising checking means for checking whether the thread is a user thread or a worker thread;
    A scheduler according to any one of claims 1-3.
  5.  前記確認手段は、前記各コアにおいて前記実行可能キューが空いているコアが存在するか確認する、
    請求項4に記載のスケジューラ。
    The confirming means confirms whether there is a core in which the executable queue is empty in each of the cores.
    A scheduler according to claim 4.
  6.  前記確認手段は、前記生成するワーカースレッドと同一のスレッドグループのスレッドが他に存在していない孤立したワーカースレッドが、前記各コアの前記実行可能キューに存在するか確認する、
    請求項4又は5に記載のスケジューラ。
    The confirming means confirms whether or not an isolated worker thread in which no other thread belongs to the same thread group as the generated worker thread exists in the executable queue of each core.
    A scheduler according to claim 4 or 5.
  7.  各コアにスレッドが割り当てられて、空きコアが存在しない場合、
     前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択し、
     選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する、スケジューリング方法。
    If threads are assigned to each core and there are no free cores,
    Selecting, from among the cores, a core in which a thread of the same thread group as the worker thread to be generated exists in the runnable queue or the wait queue of each core;
    A scheduling method that determines to assign the generated worker threads to the selected cores.
  8.  各コアにスレッドが割り当てられて、空きコアが存在しない場合、
     前記各コアのうち、前記各コアの実行可能キュー又は待機キューに、生成するワーカースレッドと同一のスレッドグループのスレッドが存在するコアを選択し、
     選択した前記コアに、前記生成するワーカースレッドを割り当てることを決定する、ことをコンピュータに実行させるプログラムを格納する、
     コンピュータ読み取り可能な記憶媒体。
    If threads are assigned to each core and there are no free cores,
    Selecting, from among the cores, a core in which a thread of the same thread group as the worker thread to be generated exists in the runnable queue or the wait queue of each core;
    Storing a program that causes a computer to determine to assign the generated worker threads to the selected cores;
    computer readable storage medium;
PCT/JP2022/002541 2021-02-03 2022-01-25 Scheduler, scheduling method, and computer-readable storage medium WO2022168661A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2021-015377 2021-02-03
JP2021015377A JP7188472B2 (en) 2021-02-03 2021-02-03 Computer, scheduling method and program

Publications (1)

Publication Number Publication Date
WO2022168661A1 true WO2022168661A1 (en) 2022-08-11

Family

ID=82741156

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/002541 WO2022168661A1 (en) 2021-02-03 2022-01-25 Scheduler, scheduling method, and computer-readable storage medium

Country Status (2)

Country Link
JP (1) JP7188472B2 (en)
WO (1) WO2022168661A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02109136A (en) * 1988-09-29 1990-04-20 Internatl Business Mach Corp <Ibm> Method of executing dispersion application-program
JP2003029984A (en) * 2001-07-12 2003-01-31 Nec Corp Multithread execution method and parallel processor system
JP2007257097A (en) * 2006-03-22 2007-10-04 Nec Corp Virtual computer system and method and program for reconfiguring physical resource thereof

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4809157A (en) * 1985-09-30 1989-02-28 International Business Machines Corp. Dynamic assignment of affinity for vector tasks
JPH02122365A (en) * 1988-10-31 1990-05-10 Hitachi Ltd Processor assignment system
JP2769367B2 (en) * 1989-09-28 1998-06-25 株式会社日立製作所 Multiprocessor scheduling method
JP4241921B2 (en) 2004-06-10 2009-03-18 株式会社日立製作所 Computer system and its resource allocation method
JP2010287172A (en) 2009-06-15 2010-12-24 Nec Corp Computer node, computer system, process generation method and process generation program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02109136A (en) * 1988-09-29 1990-04-20 Internatl Business Mach Corp <Ibm> Method of executing dispersion application-program
JP2003029984A (en) * 2001-07-12 2003-01-31 Nec Corp Multithread execution method and parallel processor system
JP2007257097A (en) * 2006-03-22 2007-10-04 Nec Corp Virtual computer system and method and program for reconfiguring physical resource thereof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GODA NORITO: "Optimization Problem Calculation by Branch and Bound Method Using Grid Computing", COMMUNICATIONS OF THE OPERATIONS RESEARCH SOCIETY OF JAPAN, vol. 52, no. 10, 1 October 2007 (2007-10-01), JP , pages 639 - 644, XP009538924, ISSN: 0030-3674 *

Also Published As

Publication number Publication date
JP2022118736A (en) 2022-08-16
JP7188472B2 (en) 2022-12-13

Similar Documents

Publication Publication Date Title
US9727372B2 (en) Scheduling computer jobs for execution
EP3425502B1 (en) Task scheduling method and device
US8793695B2 (en) Information processing device and information processing method
US8615765B2 (en) Dividing a computer job into micro-jobs
US7979861B2 (en) Multi-processor system and program for causing computer to execute controlling method of multi-processor system
EP2300910B1 (en) Scheduler instances in a process
JP4345630B2 (en) Information processing apparatus, interrupt processing control method, and computer program
KR100791296B1 (en) Apparatus and method for providing cooperative scheduling on multi-core system
CN107203428B (en) Xen-based VCPU multi-core real-time scheduling algorithm
WO2023246044A1 (en) Scheduling method and apparatus, chip, electronic device, and storage medium
CN115167996A (en) Scheduling method and device, chip, electronic equipment and storage medium
CN114461365A (en) Process scheduling processing method, device, equipment and storage medium
JP6311330B2 (en) Information processing apparatus, information processing method, and program
WO2022168661A1 (en) Scheduler, scheduling method, and computer-readable storage medium
KR101271211B1 (en) Apparatus and method for input/output processing of multi thread
RU2450330C2 (en) Hardware-implemented method of executing programs
JP2000020323A (en) Device and method for scheduling and storage medium
JP2008225641A (en) Computer system, interrupt control method and program
CA2316643C (en) Fair assignment of processing resources to queued requests
WO2007049543A1 (en) Calculating apparatus
US8566829B1 (en) Cooperative multi-level scheduler for virtual engines
JP2003186686A (en) Resource control apparatus, method and recording medium
US20230236906A1 (en) Information processing device, information processing method, and program
CN117472570A (en) Method, apparatus, electronic device and medium for scheduling accelerator resources
JPH01177638A (en) System for scheduling job

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

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

Country of ref document: EP

Kind code of ref document: A1