WO2012098684A1 - スケジューリング方法およびスケジューリングシステム - Google Patents

スケジューリング方法およびスケジューリングシステム Download PDF

Info

Publication number
WO2012098684A1
WO2012098684A1 PCT/JP2011/051118 JP2011051118W WO2012098684A1 WO 2012098684 A1 WO2012098684 A1 WO 2012098684A1 JP 2011051118 W JP2011051118 W JP 2011051118W WO 2012098684 A1 WO2012098684 A1 WO 2012098684A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
cpu
switching
app
assigned
Prior art date
Application number
PCT/JP2011/051118
Other languages
English (en)
French (fr)
Inventor
宏真 山内
浩一郎 山下
哲夫 平木
康志 栗原
俊也 大友
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2011/051118 priority Critical patent/WO2012098684A1/ja
Priority to JP2012553538A priority patent/JP5737298B2/ja
Publication of WO2012098684A1 publication Critical patent/WO2012098684A1/ja
Priority to US13/946,361 priority patent/US9588817B2/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
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system

Definitions

  • the present invention relates to a scheduling method and a scheduling system.
  • Patent Documents 1 and 2 relate to task switching in a microcomputer
  • Patent Document 3 there is a technique related to power control of a plurality of processor cores (see, for example, Patent Document 3 below).
  • JP 2004-272894 A Japanese Patent Laid-Open No. 10-207717 Japanese Patent No. 4413924
  • an application that can be frequently switched may be assigned to the same CPU at the time of multi-task operation, resulting in an increase in time required for switching the application.
  • An object of the present invention is to provide a scheduling method and a scheduling system capable of speeding up application switching in order to solve the above-described problems caused by the prior art.
  • a scheduler that manages a plurality of processors is configured to execute the first operation based on an application information table.
  • a scheduling method is proposed in which a processor that executes a second application that is not executed simultaneously with one application is detected and the first application is assigned to the processor.
  • a scheduler that manages a plurality of processors starts up the first application, based on the application information table
  • the system includes a plurality of processors and a scheduler that manages the plurality of processors.
  • a startup task is received, based on the application information table, a load for switching a second application executed by at least one of the plurality of processors to the first application is calculated, and based on the load
  • a scheduling system for selecting a first processor that executes the first application is proposed.
  • FIG. 1 is an explanatory diagram (part 1) of an example of the scheduling process according to the embodiment.
  • FIG. 2 is an explanatory diagram (part 2) of an example of the scheduling process according to the embodiment.
  • FIG. 3 is an explanatory diagram of a system configuration example of the multi-core processor system according to the embodiment.
  • FIG. 4 is an explanatory diagram of an example of the contents stored in the use case table.
  • FIG. 5 is a block diagram of a functional configuration of the scheduler according to the embodiment.
  • FIG. 6 is an explanatory diagram of an example of the contents stored in the allocation table.
  • FIG. 7 is an explanatory diagram of an example of application allocation.
  • FIG. 8 is an explanatory diagram of an example of the contents stored in the allocation destination candidate cost table.
  • FIG. 1 is an explanatory diagram (part 1) of an example of the scheduling process according to the embodiment.
  • FIG. 2 is an explanatory diagram (part 2) of an example of the scheduling process according to the embodiment.
  • FIG. 3 is an ex
  • FIG. 9 is an explanatory diagram of an example of the contents stored in the migration destination candidate cost table.
  • FIG. 10 is a flowchart (part 1) illustrating an example of a scheduling process procedure by the scheduler according to the embodiment.
  • FIG. 11 is a flowchart (part 2) illustrating an example of a scheduling process procedure by the scheduler according to the embodiment.
  • FIG. 12 is a flowchart illustrating an example of a specific processing procedure of the migration processing.
  • the scheduling system is a multi-core processor system including a multi-core processor in which a plurality of cores are mounted.
  • the multi-core processor may be a single processor having a plurality of cores as long as a plurality of cores are mounted, or a processor group in which single-core processors are arranged in parallel.
  • a description will be given by taking as an example a processor group in which single-core processors are arranged in parallel.
  • FIG. 1 and FIG. 2 are explanatory diagrams of an example of the scheduling process according to the embodiment. 1 and 2, the multi-core processor system 100 is a scheduling system including a CPU (Central Processing Unit) # 0 and a CPU # 1.
  • a CPU Central Processing Unit
  • CPU # 0 executes OS (Operating System) # 0 and controls the entire multi-core processor system 100.
  • OS # 0 is a master OS, and includes a scheduler 101 that controls which CPU an application is assigned to.
  • CPU # 0 executes the assigned application.
  • CPU # 1 executes OS # 1 and executes an application assigned to OS # 1.
  • OS # 1 is a slave OS. Note that the CPU to which an application (application) is assigned and the OS to which the application is assigned have the same meaning.
  • FIG. 1 the first embodiment of the scheduling process of the multi-core processor system 100 will be described using FIG. 1 as an example when a new application # 5 is activated.
  • the scheduler 101 receives the activation notification of the application # 5.
  • the scheduler 101 refers to the application information table 102, and simultaneously with the newly activated application # 5 among the applications # 0 to # 4 assigned to the CPU # 0 and the CPU # 1. Identify apps that can be run.
  • the application information table 102 includes, for each application, other application information that can be executed simultaneously with the application. For example, if the app # 5 is a game app, a video playback app, a music playback app, etc. are apps that are unlikely to be executed simultaneously. On the other hand, if the app # 5 is a music playback app, an e-mail app, a web browser, and the like are apps that are more likely to be executed simultaneously than the combination of the game app and the video playback app described above.
  • the application information table 102 indicates combinations of apps that are likely to be executed simultaneously, such as a music playback app and an email app.
  • application # 0 and application # 1 are specified as applications that can be executed simultaneously with application # 5. Details of the application information table 102 will be described later with reference to FIG.
  • the scheduler 101 detects a CPU that executes an app that is not executed simultaneously with the app # 5 among the CPUs # 0 and CPU # 1 in the multi-core processor system 100. Specifically, for example, the scheduler 101 detects the CPU # 1 to which the app # 0 and the app # 1 that can be executed simultaneously with the app # 5 are not assigned among the CPU # 0 and the CPU # 1.
  • the scheduler 101 assigns the application # 5 to the CPU # 1.
  • the newly activated app # 5 can be assigned to a CPU # 1 different from the CPU # 0 to which the app # 0 and the app # 1 to which the app # 1 is likely to be executed simultaneously with the app # 5 are assigned. it can.
  • apps that are likely to be executed simultaneously can be assigned to different CPUs.
  • the switching between the application # 5 and the application # 0 (or the application # 1) occurs, it is not necessary to save and load the context information of the application # 5 and the application # 0. , Switching between applications # 0 can be performed at high speed.
  • FIG. 2 a second embodiment of the scheduling process of the multi-core processor system 100 will be described using FIG. 2 as an example when the application # 5 is activated.
  • the scheduler 101 receives the activation notification of the application # 5.
  • the scheduler 101 refers to the application information table 102 and simultaneously with the newly activated app # 5 among the apps # 0 to # 4 assigned to the CPU # 0 and the CPU # 1. Identify apps that can be run.
  • application # 0, application # 1, application # 3, and application # 4 are specified as applications that can be executed simultaneously with application # 5.
  • the application information table 102 includes context load information of the application for each application.
  • the context load information is information related to a load applied when one application being executed is switched to another application.
  • the scheduler 101 switches each application # 3 and application # 4 assigned to the CPU # 1 to the application # 5. Calculate the total.
  • Application # 3 and application # 4 are applications that can be executed simultaneously with application # 5.
  • the scheduler 101 selects a CPU that executes application # 5 from CPU # 0 and CPU # 1, and assigns application # 5. Specifically, for example, the scheduler 101 selects a CPU having the smallest calculated load among the CPUs # 0 and # 1, and assigns the app # 5. Here, CPU # 0 is selected and app # 5 is assigned.
  • the scheduler 101 it is possible to select a CPU as an allocation destination of a newly started application in consideration of a load required for switching between applications. As a result, for example, it is possible to suppress the load when switching between the application # 5 and the application # 0 occurs, and it is possible to increase the switching speed between the applications.
  • the multi-core processor system 100 shown in FIGS. 1 and 2 is an example of a multi-core processor system 300 described below.
  • FIG. 3 is an explanatory diagram of a system configuration example of the multi-core processor system according to the embodiment.
  • a multi-core processor system 300 includes CPUs # 0 to #n, primary caches 301-1 to 301-n, a snoop circuit 302, a secondary cache 303, and an interface (I / F) 304.
  • the secondary cache 303, the I / F 304, and the memory controller 305 are connected via a bus 320.
  • the memory 306 is connected to each unit via the memory controller 305.
  • OS # 0 executes OS # 0 and controls the entire multi-core processor system 300.
  • OS # 0 is a master OS, and includes a scheduler 101 that controls which CPU an application is assigned to.
  • CPU # 0 executes the assigned application.
  • CPU # 1 to CPU #n execute OS # 1 to OS #n, respectively, and execute an application assigned to each OS.
  • OS # 1 to OS # n are slave OSs.
  • CPU # 0 to CPU #n each have a register and a core.
  • Each register includes a program counter and a reset register. Further, each of the CPUs # 0 to #n is connected to each part via the respective primary caches 301-1 to 301-n, the snoop circuit 302, and the secondary cache 303.
  • the primary caches 301-1 to 301-n each have a cache memory and a cache controller.
  • the primary cache 301-1 temporarily stores a writing process from the application executed by the OS # 0 to the memory 306.
  • the primary cache 301-1 temporarily stores data read from the memory 306.
  • the snoop circuit 302 maintains the consistency of the primary caches 301-1 to 301-n accessed by the CPU # 0 to CPU #n. Specifically, for example, when the data shared between the primary caches 301-1 to 301-n is updated in any of the primary caches, the snoop circuit 302 detects the update and Update the primary cache.
  • the secondary cache 303 has a cache memory and a cache controller.
  • the secondary cache 303 stores data evicted from the primary caches 301-1 to 301-n. Specifically, for example, the secondary cache 303 stores data shared by OS # 0 to OS # n.
  • the I / F 304 is connected to a network such as a LAN (Local Area Network), a WAN (Wide Area Network), or the Internet through a communication line, and is connected to another device via the network.
  • the I / F 304 controls a network and an internal interface, and controls input / output of data from an external device.
  • a modem or a LAN adapter may be employed as the I / F 304.
  • the memory controller 305 controls reading / writing of data with respect to the memory 306.
  • the memory 306 is a memory shared by CPU # 0 to CPU #n.
  • the memory 306 includes, for example, a ROM (Read Only Memory), a RAM (Random Access Memory), a flash ROM, and the like.
  • a flash ROM stores a program for each OS
  • a ROM stores an application program
  • a RAM is used as a work area for CPU # 0 to CPU #n.
  • the program stored in the memory 306 is loaded on each CPU, thereby causing each CPU to execute a coded process.
  • the file system 307 stores, for example, application instruction codes and content data such as images and videos.
  • the file system 307 is realized by an auxiliary storage device such as a hard disk or an optical disk, for example.
  • the multi-core processor system 300 may include a display, a keyboard, and the like in addition to a PMU (Power Management Unit) that supplies power to each unit.
  • PMU Power Management Unit
  • the use case table 400 corresponds to the application information table 102 shown in FIGS.
  • the use case table 400 is stored in, for example, the primary cache 301-1, the secondary cache 303, the memory 306, and the like.
  • FIG. 4 is an explanatory diagram showing an example of the contents stored in the use case table.
  • the use case table 400 includes fields for an application name, a context cost, a concurrent execution application, and an expected value.
  • application information for example, application information 400-1 to 400-6 for each application is stored as a record.
  • the application name is a name that identifies the application.
  • the context cost is an index value that represents the load applied to the context switch of the application, and is represented, for example, by the time required to start or stop the application. More specifically, for example, the context cost is represented by the time taken to save the application context information in the memory 306 (or load from the memory 306).
  • the context information is information such as the value of a program counter of each CPU and the value of a general-purpose register that stores the value of a variable in a function.
  • the simultaneous execution application is information for identifying an application that is likely to be executed simultaneously with each application.
  • the expected value indicates the rate at which each application is switched to a simultaneously-executed application.
  • the expected value is represented by the rate at which the application is switched to a simultaneously-executed application while executing each application once.
  • the context cost “100 [us]” of the application # 0 is shown. That is, the time required for saving (or loading) the context information of the application # 0 is 100 [us].
  • a simultaneous execution application “application # 3, application # 4, application # 5” of application # 0 is shown. That is, apps that are likely to be executed simultaneously with app # 0 are app # 3, app # 4, and app # 5.
  • an expected value for each concurrent execution application is shown. Specifically, for example, the ratio of switching from application # 0 to application # 3 during execution of application # 0 is “0.4”. For example, the ratio of switching from application # 0 to application # 4 during execution of application # 0 is “0.6”. For example, the ratio of switching from application # 0 to application # 5 during execution of application # 0 is “0.5”.
  • the context cost of each application in the use case table 400 may be obtained, for example, by measuring the save time of the context information of each application by simulation when designing the multi-core processor system 300.
  • the simultaneous execution application and the expected value of each application in the use case table 400 are updated, for example, when the user uses the application, OS # 0 calculates the expected value of the number of application switching. May be.
  • CPU #i 0, 1,..., n
  • FIG. 5 is a block diagram of a functional configuration of the scheduler according to the embodiment.
  • the scheduler 101 includes a reception unit 501, a specification unit 502, a detection unit 503, an allocation unit 504, a first calculation unit 505, a second calculation unit 506, and a third calculation unit 507. It is the structure containing these.
  • each function unit (reception unit 501 to third calculation unit 507) realizes its function by causing the CPU # 0 to execute the scheduler 101 stored in the memory 306, for example.
  • the processing result of each functional unit is stored in, for example, the register of the CPU # 0, the primary cache 301-1, the secondary cache 303, and the memory 306.
  • the reception unit 501 receives a start notification of a new application (hereinafter referred to as “application #j”). Specifically, for example, the accepting unit 501 accepts the activation notification of the application #j from the OS # 0.
  • the identifying unit 502 refers to the use case table 400 (see FIG. 4) and identifies an application (hereinafter referred to as “app #k”) that can be executed simultaneously with the app #j for which the activation notification is accepted.
  • the specifying unit 502 specifies the application information 400-6 corresponding to the application # 5 from the use case table 400. Then, the specifying unit 502 specifies the application # 0, the application # 1, the application # 3, and the application # 4 that can be executed simultaneously with the application # 5 with reference to the application information 400-6.
  • the detecting unit 503 detects, from the CPUs # 0 to #n in the multi-core processor system 300, a CPU to which an application #k that can be executed simultaneously with the new application #j is not assigned. Specifically, for example, the detection unit 503 refers to the assignment table 600 illustrated in FIG. 6 and detects a CPU to which the application #k is not assigned.
  • the allocation table 600 is information indicating applications assigned to the CPUs # 0 to #n, specifically, applications registered in the queues of the CPUs # 0 to #n.
  • the allocation table 600 is realized by, for example, the primary cache 301-1, the secondary cache 303, the memory 306, and the like. Here, the allocation table 600 will be described.
  • FIG. 6 is an explanatory diagram showing an example of the contents stored in the allocation table.
  • the assignment table 600 shows application names assigned to the CPUs # 0 to #n. Taking CPU # 0 as an example, app # 0, app # 1, and app # 2 are assigned. Note that the contents stored in the allocation table 600 are updated each time a change in the application allocated to each CPU # 0 to CPU #n is made.
  • the assigning unit 504 assigns the app #j to a CPU to which the detected app #k that can be executed simultaneously with the new app #j is not assigned (hereinafter referred to as “CPU #A”). assign. Specifically, for example, the assigning unit 504 registers the application #j in the queue of the CPU #A.
  • the new app #j can be assigned to the CPU #A to which the app #k that is likely to be executed simultaneously is not assigned.
  • the application #j and the application #k it is not necessary to save and load the context information of the application #j and the application #k, so that switching between applications can be performed at high speed. .
  • the first calculation unit 505 calculates the detected load of each CPU when a plurality of CPUs to which the application #k that can be executed simultaneously with the new application #j is not assigned are detected. Specifically, for example, the first calculation unit 505 calculates the load of each CPU based on the number of applications assigned to each detected CPU and the execution time of each application. More specifically, for example, the first calculation unit 505 may calculate the number of apps assigned to each detected CPU as the load of each CPU.
  • the allocation unit 504 selects a CPU #A that is the allocation destination of the new application #j from the detected plurality of CPUs based on the calculated load of each CPU. Specifically, for example, the assigning unit 504 selects a CPU #A that minimizes the calculated load from a plurality of detected CPUs. Then, the assigning unit 504 assigns the application #j to the selected CPU #A.
  • the new application #j can be assigned to the CPU #A having the smallest load among the CPUs to which the application #k that is likely to be executed simultaneously is not assigned.
  • switching between applications can be performed at high speed, and the load of the CPUs # 0 to #n can be distributed to improve the performance of the entire system.
  • the second calculation unit 506 performs the new application #j and the application assigned to the CPU #i.
  • the load hereinafter referred to as “switching cost” when switching to #k is calculated.
  • the second calculation unit 506 determines the context switching time of the app #k assigned to the CPU #i and the expected value of the number of times of switching between the app #k and the new app #j. Based on the above, the switching cost is calculated.
  • the context switching time of the application #k corresponds to the “context cost” in the use case table 400.
  • the expected value of the number of times of switching between the application #j and the application #k corresponds to an “expected value” in the use case table 400.
  • the second calculation unit 506 refers to the use case table 400 and switches the context cost of the app #k assigned to the CPU #i and the app #k to the app #j.
  • the switching cost is calculated by multiplying the expected value indicating the ratio.
  • the switching cost is calculated for each application #k assigned to the CPU #i.
  • the second calculation unit 506 adds the switching cost for each application #k assigned to the CPU #i, and represents the total switching cost for each application #k (hereinafter, “total cost Si”). May be calculated.
  • total cost Si The specific processing content of the second calculation unit 506 will be described later with reference to FIGS.
  • allocation unit 504 selects a CPU to which a new application #j is to be allocated from among CPU # 0 to CPU #n based on the calculated switching cost for each application #k of CPU #i. To do. Specifically, for example, the allocating unit 504 selects a CPU to which a new application #j is to be allocated based on the calculated total costs S0 to Sn for each CPU # 0 to CPU #n. Also good.
  • the assigning unit 504 first specifies the minimum total cost (hereinafter referred to as “total cost S min ”) from the total costs S0 to Sn for each of the CPUs # 0 to CPU #n. To do. Then, assignment unit 504 selects a CPU with a total cost S min (hereinafter referred to as “CPU #B”) from CPU # 0 to CPU #n. Then, the assigning unit 504 assigns the application #j to the selected CPU #B.
  • total cost S min the minimum total cost from the total costs S0 to Sn for each of the CPUs # 0 to CPU #n. To do. Then, assignment unit 504 selects a CPU with a total cost S min (hereinafter referred to as “CPU #B”) from CPU # 0 to CPU #n. Then, the assigning unit 504 assigns the application #j to the selected CPU #B.
  • the app #j can be assigned to the CPU #B that minimizes the load required for switching between apps that occurs in association with the assignment of the newly activated app #j.
  • switching between apps #j and #k is unlikely to occur, and even if switching between apps #j and #k occurs, app #j can be assigned to CPU #B that takes a short time for context switching. And switching between apps can be speeded up.
  • the third calculation unit 507 calculates a switching cost when switching between the application #k that can be executed simultaneously with the newly activated application #j and the application #m assigned to the CPU #i.
  • the app #m is, for example, an app that can be executed simultaneously with the app #k.
  • the third calculation unit 507 determines that the application #k assigned to the CPU #B is different from the CPU #B. The switching cost when switching to the application #m assigned to is calculated.
  • the third calculation unit 507 refers to the use case table 400 and switches the context cost of the app #m assigned to the CPU #i and the app #m to the app #k.
  • the switching cost is calculated by multiplying the expected value indicating the ratio.
  • the switching cost is calculated for each application #m assigned to CPU #i (where i ⁇ B).
  • the third calculation unit 507 adds the switching cost for each application #m assigned to the CPU #i, and represents the total switching cost for each application #m (hereinafter, “total cost S ( i) ”) may be calculated.
  • total cost S ( i) represents the total switching cost for each application #m.
  • the assigning unit 504 assigns the app #k assigned to the CPU #B among the CPUs # 0 to #n based on the calculated switching cost for each app #m of the CPU #i. Select the previous CPU. Specifically, for example, the allocation unit 504 selects a CPU that is an allocation destination of the app #k allocated to the CPU #B based on the calculated total cost S (i) of the CPU #i. It may be.
  • the allocation unit 504 is allocated to the CPU #B.
  • CPU #i is selected as an assignment destination of application #k.
  • the assigning unit 504 migrates (so-called migration) the app #k assigned to the CPU #B to the selected CPU #i. That is, migration of the app #k is performed when the load on the entire system for switching between apps is reduced by transferring the app #k from the CPU #B to another CPU.
  • the total cost S (i) required for switching between the apps #k of the CPU #B that can be executed simultaneously with the newly activated app #j and switching between the apps generated by the allocation of the app #k is the total cost. It can be assigned to a CPU #i less than S min . As a result, it is possible to optimize the load for switching between applications in each CPU #i, and to improve the performance of the entire system.
  • assignment unit 504 assigns CPU #i having calculated total cost S (i) that is minimum and less than total cost S min to CPU #B. It may be selected as an allocation destination of #k. Thereby, it is possible to further optimize the load for switching between applications in each CPU #i, and to improve the performance of the entire system.
  • the second calculation unit 506 multiplies the context cost of the app #k assigned to the CPU #i by the expected value indicating the rate at which the app #k is switched to the app #j.
  • the switching cost is calculated, the present invention is not limited to this.
  • the second calculation unit 506 may calculate the switching cost by multiplying the context cost of the new application #j by the expected value indicating the rate at which the application #j switches to the application #k.
  • the third calculation unit 507 determines the context cost of the app #m assigned to the CPU #i (i ⁇ B) and the expected value indicating the rate at which the app #m is switched to the app #k.
  • the present invention is not limited to this.
  • the third calculation unit 507 multiplies the context cost of the app #k assigned to the CPU #i (i ⁇ B) by the expected value indicating the rate at which the app #k is switched to the app #m. The switching cost may be calculated.
  • FIG. 7 is an explanatory diagram showing an example of application allocation.
  • app # 0, app # 1, and app # 2 are assigned to CPU # 0 in multi-core processor system 100, and app # 3 and app # 4 are assigned to CPU # 1.
  • Application # 5 is a newly activated application.
  • the app # 0 to # 4 are apps that can be executed simultaneously with the newly activated app # 5.
  • the second calculation unit 506 that calculates the total costs S0 and S1 of the CPU # 0 and the CPU # 1 will be described.
  • the second calculation unit 506 refers to the use case table 400, and the context cost “100 [us]” of the app # 0 assigned to the CPU # 0 and the app # 0 are switched to the app # 5.
  • the switching cost is calculated by multiplying the expected value “0.5” indicating the ratio. As a result, as shown in the following formula (1), the switching cost “50 [us]” is calculated.
  • the second calculation unit 506 refers to the use case table 400, and the context cost “1 [ms]” of the application # 1 assigned to the CPU # 0 and the application # 1 becomes the application # 5.
  • the switching cost is calculated by multiplying the expected value “0.1” indicating the switching rate. As a result, as shown in the following equation (2), the switching cost “100 [us]” is calculated.
  • the second calculation unit 506 calculates the total cost S0 by adding the switching costs for the apps # 0 and # 1 assigned to the CPU # 0.
  • the total cost S0 “150 [us]” is calculated.
  • the second calculation unit 506 refers to the use case table 400, and the context cost “500 [us]” of the app # 3 assigned to the CPU # 1 and the app # 3 are switched to the app # 5.
  • the switching cost is calculated by multiplying the expected value “0.25” indicating the ratio.
  • the switching cost “125 [us]” is calculated as shown in the following equation (3).
  • the second calculation unit 506 refers to the use case table 400 and sets the context cost “250 [us]” of the application # 4 assigned to the CPU # 1 and the application # 4 to the application # 5.
  • the switching cost is calculated by multiplying the expected value “0.3” indicating the switching ratio. As a result, as shown in the following formula (4), the switching cost “75 [us]” is calculated.
  • the 2nd calculation part 506 calculates the total cost S1 by adding the switching cost for every application # 3 and application # 4 allocated to CPU # 1. Here, the total cost S1 “200 [us]” is calculated.
  • the calculated total costs S0 and S1 are stored in, for example, the allocation destination candidate cost table 800 shown in FIG.
  • the allocation destination candidate cost table 800 is realized by, for example, the primary cache 301-1, the secondary cache 303, the memory 306, and the like.
  • the allocation destination candidate cost table 800 will be described.
  • FIG. 8 is an explanatory diagram showing an example of the stored contents of the allocation destination candidate cost table.
  • the allocation candidate cost table 800 stores the total costs S0 and S1 for each of the CPUs # 0 and # 1. For example, referring to the allocation destination candidate cost table 800, the allocation unit 504 allocates the application # 5 to the CPU # 0 having the smallest total cost Si among the CPU # 0 and the CPU # 1.
  • the third cost S (1) is calculated for switching to the app #m assigned to the CPU # 1.
  • An example of specific processing contents of the calculation unit 507 will be described.
  • the third calculation unit 507 refers to the use case table 400, and the context cost “500 [us]” of the app # 3 assigned to the CPU # 1 and the app # 3 are switched to the app # 0.
  • the switching cost is calculated by multiplying the expected value “0.4” indicating the ratio. As a result, as shown in the following equation (5), the switching cost “200 [us]” is calculated.
  • the third calculation unit 507 refers to the use case table 400 and sets the context cost “250 [us]” of the application # 4 assigned to the CPU # 1 and the application # 4 to the application # 0.
  • the switching cost is calculated by multiplying the expected value “0.6” indicating the switching ratio. As a result, as shown in the following formula (6), the switching cost “150 [us]” is calculated.
  • the third calculation unit 507 calculates the total cost S (1) by adding the switching costs for each of the apps # 3 and # 4 assigned to the CPU # 1.
  • the total cost S (1) “350 [us]” of application # 0 is calculated.
  • the third calculation unit 507 refers to the use case table 400, and the context cost “500 [us]” of the app # 3 assigned to the CPU # 1 and the app # 3 are switched to the app # 1.
  • the switching cost is calculated by multiplying the expected value “0.5” indicating the ratio. As a result, as shown in the following formula (7), the switching cost “250 [us]” is calculated.
  • the third calculation unit 507 refers to the use case table 400 and sets the context cost “250 [us]” of the application # 4 assigned to the CPU # 1 and the application # 4 to the application # 1.
  • the switching cost is calculated by multiplying the expected value “0.6” indicating the switching ratio. As a result, as shown in the following equation (8), the switching cost “150 [us]” is calculated.
  • the 3rd calculation part 507 calculates the total cost S (1) of application # 1 by adding the switching cost for every application # 3 and application # 4 allocated to CPU # 1.
  • the total cost S (1) “400 [us]” is calculated.
  • the calculated total cost S (1) of the application # 0 and the application # 1 is stored in, for example, the migration destination candidate cost table 900 shown in FIG.
  • the migration destination candidate cost table 900 is realized by the primary cache 301-1, the secondary cache 303, the memory 306, and the like, for example.
  • the migration destination candidate cost table 900 will be described.
  • FIG. 9 is an explanatory diagram showing an example of the storage contents of the migration destination candidate cost table.
  • the migration destination candidate cost table 900 stores the total cost S (1) when transferring the application # 0 and the application # 1 assigned to the CPU # 0 to the CPU # 1.
  • the assigning unit 504 may refer to the migration destination candidate cost table 900 and select a CPU that is an assignment destination of the application # 0 assigned to the CPU # 0.
  • the total cost S min is the above-mentioned total cost S0 “150 [us]”. Therefore, the total cost S (1) “350 [us]” of the application # 0 is larger than the total cost S min .
  • the assigning unit 504 does not change the assignment destination of the app # 0 assigned to the CPU # 0. That is, the migration of application # 0 is not performed.
  • the allocation unit 504 refers to the migration destination candidate cost table 900 and selects a CPU that is an allocation destination of the application # 1 allocated to the CPU # 0.
  • the total cost S (1) “400 [us]” of the application # 1 is larger than the total cost S min .
  • the assignment unit 504 does not change the assignment destination of the application # 1 assigned to the CPU # 0. That is, the migration of application # 1 is not performed.
  • step S1001 the reception unit 501 determines whether or not a new application #j activation notification has been received.
  • step S1001: No After waiting for the activation notification of the new application #j to be accepted (step S1001: No), if accepted (step S1001: Yes), the identification unit 502 refers to the use case table 400 and activates the notification.
  • the application #k that can be executed simultaneously with the received application #j is identified (step S1002).
  • the detection unit 503 detects, from the CPUs # 0 to #n in the multi-core processor system 300, a CPU to which an application #k that can be executed simultaneously with the new application #j is not assigned (step S1003). ).
  • step S1004 determines whether or not a CPU to which an application #k that can be executed simultaneously with the new application #j is not assigned is detected (step S1004). If the CPU is not detected (step S1004: No), the process proceeds to step S1101 shown in FIG.
  • step S1004 determines whether a plurality of CPUs are detected (step S1005).
  • step S1005 determines whether a plurality of CPUs are detected (step S1005).
  • step S1005 assigns the application #j to the detected CPU #A (step S1006), and ends the series of processes according to this flowchart. To do.
  • step S1005 when a plurality of CPUs are detected (step S1005: Yes), the first calculation unit 505 calculates the detected load of each CPU (step S1007). Then, the assigning unit 504 assigns the application #j to the CPU #A having the smallest calculated load from among the plurality of detected CPUs (step S1008), and ends the series of processes according to this flowchart.
  • the second calculation unit 506 calculates a switching cost when switching between the new application #j and the selected application #k (step S1104). Then, the second calculation unit 506 determines whether there is an unselected application #k that is not selected from the applications assigned to the CPU #i (step S1105).
  • step S1105: Yes when there is an unselected application #k (step S1105: Yes), the process returns to step S1103.
  • step S1105: No when there is no unselected application #k (step S1105: No), the second calculation unit 506 calculates a total cost Si representing the total switching cost for each calculated application #k (step S1106).
  • the second calculator 506 increments “i” of the CPU #i (step S1107), and determines whether “i” is greater than “n” (step S1108). If “i” is equal to or less than “n” (step S1108: NO), the process returns to step S1102.
  • step S1108 when “i” is larger than “n” (step S1108: Yes), the allocation unit 504 specifies the minimum total cost S min from the total costs S0 to Sn for each of the CPUs # 0 to ## . (Step S1109). Then, the assigning unit 504 assigns the app #j to the CPU #B having the total cost S min among the CPUs # 0 to #n (step S1110).
  • the assigning unit 504 executes the migration process for the application #k assigned to the CPU #B (step S1111), and ends the series of processes according to this flowchart.
  • the new app #j can be assigned to the CPU #A to which the app #k that is likely to be executed simultaneously is not assigned. If CPU #A does not exist, app #j can be assigned to CPU #B that minimizes the load on switching between apps that occurs with the assignment of newly activated app #j. .
  • FIG. 12 is a flowchart showing an example of a specific processing procedure of the migration process.
  • the third calculator 507 selects an application #k from among the applications assigned to the CPU #B (step S1201). Thereafter, the third calculation unit 507 refers to the use case table 400 to identify an application #m that can be executed simultaneously with the application #k (step S1202).
  • CPU #i is selected from CPU # 0 to CPU #n by third calculation unit 507. (Step S1205). Then, the third calculator 507 selects the app #m from the apps assigned to the CPU #i (step S1206).
  • the third calculation unit 507 calculates a switching cost when switching between the application #k and the selected application #m (step S1207). Then, the third calculation unit 507 determines whether there is an unselected application #m that has not been selected from the applications assigned to the CPU #i (step S1208).
  • step S1208 Yes
  • step S1208 No
  • step S1208 No
  • the allocation unit 504 determines whether or not the total cost S (i) of the CPU #i is less than the total cost S min specified in step S1109 shown in FIG. 11 (step S1210). If the total cost S (i) of the CPU #i is equal to or greater than the total cost S min (step S1210: No), the third calculator 507 increments “i” of the CPU #i (step S1211). ), It is determined whether or not “i” is larger than “n” (step S1212).
  • step S1212: No when “i” is equal to or less than “n” (step S1212: No), the process returns to step S1204. On the other hand, when “i” is larger than “n” (step S1212: Yes), the process proceeds to step S1214.
  • step S1210 If the total cost S (i) of the CPU #i is less than the total cost S min in step S1210 (step S1210: Yes), the assigning unit 504 assigns the app #k assigned to the CPU #B to the CPU # The process proceeds to i (step S1213).
  • the third calculation unit 507 determines whether there is an unselected application #k that is not selected from the applications assigned to the CPU #B (step S1214). If there is an unselected application #k (step S1214: Yes), the process returns to step S1201. On the other hand, when there is no unselected application #k (step S1214: No), a series of processing by this flowchart is complete
  • the application #k of the CPU #B that can be executed simultaneously with the newly activated application #j is transferred to another CPU that minimizes the load on switching between the applications that occurs in association with the assignment of the application #k. Can be assigned.
  • a new app #j can be assigned to a CPU #A to which an app #k that is likely to be executed simultaneously is not assigned.
  • an app #k that is likely to be executed simultaneously is not assigned.
  • a new application #j can be assigned to the CPU #A having the smallest load among the CPUs to which the application #k that is likely to be executed simultaneously is not assigned. As a result, switching between applications can be performed at high speed, and the load of the CPUs # 0 to #n can be distributed to improve the performance of the entire system.
  • the application # is assigned to the CPU #B that minimizes the load applied to switching between applications that occurs in association with the allocation of the newly activated application #j. j can be assigned. As a result, switching between apps #j and #k is unlikely to occur, and even if switching between apps #j and #k occurs, app #j is assigned to CPU #B that takes a short time to switch contexts. And switching between apps can be speeded up.
  • the total cost S () for switching the application #k of the CPU #B that can be executed simultaneously with the newly activated application #j to the application generated by the transition of the application #k. i) can be transferred to the CPU #i whose total cost is less than S min .
  • the CPU #B has the total cost S (i) required for switching between the apps #k generated by the transition of the app #k and the CPU #B having the minimum cost S (i) less than the total cost Smin. i can be transferred. Thereby, it is possible to further optimize the load for switching between applications in each CPU #i, and to improve the performance of the entire system.
  • the scheduling method and the scheduling system it is possible to increase the switching speed of applications as well as to improve performance and reduce power consumption.
  • the scheduling method described in the present embodiment can be realized by executing a program prepared in advance on a computer such as a personal computer or a workstation.
  • the scheduling program is recorded on a computer-readable recording medium such as a hard disk, a flexible disk, a CD-ROM, an MO, and a DVD, and is executed by being read from the recording medium by the computer.
  • the scheduling program may be distributed via a network such as the Internet.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

 スケジューラ(101)は、アプリ(#5)の起動通知を受け付ける。スケジューラ(101)は、アプリケーション情報テーブル(102)を参照して、CPU(#0)およびCPU(#1)に割り当てられているアプリ(#0)~アプリ(#4)のうち、新たに起動されたアプリ(#5)と同時に実行され得るアプリを特定する。スケジューラ(101)は、マルチコアプロセッサシステム(100)内のCPU(#0)およびCPU(#1)のうち、アプリ(#5)と同時に実行され得るアプリ(#0)およびアプリ(#1)が割り当てられていないCPU(#1)を検出する。スケジューラ(101)は、アプリ(#5)をCPU(#1)に割り当てる。これにより、新たに起動されたアプリ(#5)を、アプリ(#5)と同時に実行される可能性が高いアプリ(#0)およびアプリ(#1)が割り当てられていないCPU(#1)に割り当てることができる。

Description

スケジューリング方法およびスケジューリングシステム
 本発明は、スケジューリング方法およびスケジューリングシステムに関する。
 近年、多くの情報機器において、高性能および低消費電力に対する要求は大きく、高性能および低消費電力化を実現するための手段として、マルチコアプロセッサを用いたシステム開発が行われるようになってきた。
 関連する先行技術としては、例えば、マイクロコンピュータにおけるタスクの切り替えに関するものがある(例えば、下記特許文献1,2参照。)。また、複数のプロセッサコアの電力制御に関する技術がある(例えば、下記特許文献3参照。)。
特開2004-272894号公報 特開平10-207717号公報 特許第4413924号公報
 しかしながら、従来のマルチコアプロセッサシステムでは、マルチタスク動作時に、同一CPUに頻繁に切り替えられるアプリケーションが割り当てられる場合があり、アプリケーションの切り替えにかかる時間の増大化を招くという問題があった。
 本発明は、上述した従来技術による問題点を解消するため、アプリケーションの切り替えの高速化を図ることができるスケジューリング方法およびスケジューリングシステムを提供することを目的とする。
 上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサを管理するスケジューラが、第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記第1アプリケーションと同時に実行されることのない第2アプリケーションを実行するプロセッサを検出し、前記プロセッサに前記第1アプリケーションを割り当てるスケジューリング方法が提案される。
 また、上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサを管理するスケジューラが、第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択するスケジューリング方法が提案される。
 また、上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のプロセッサと、前記複数のプロセッサを管理するスケジューラと、を含み、前記スケジューラは、第1アプリケーションの起動タスクを受信したときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択するスケジューリングシステムが提案される。
 本発明の一側面によれば、アプリケーションの切り替えの高速化を図ることができるという効果を奏する。
図1は、実施の形態にかかるスケジューリング処理の一実施例を示す説明図(その1)である。 図2は、実施の形態にかかるスケジューリング処理の一実施例を示す説明図(その2)である。 図3は、実施の形態にかかるマルチコアプロセッサシステムのシステム構成例を示す説明図である。 図4は、ユースケーステーブルの記憶内容の一例を示す説明図である。 図5は、実施の形態にかかるスケジューラの機能的構成を示すブロック図である。 図6は、割当テーブルの記憶内容の一例を示す説明図である。 図7は、アプリケーションの割当例を示す説明図である。 図8は、割当先候補コストテーブルの記憶内容の一例を示す説明図である。 図9は、マイグレーション先候補コストテーブルの記憶内容の一例を示す説明図である。 図10は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャート(その1)である。 図11は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャート(その2)である。 図12は、マイグレーション処理の具体的処理手順の一例を示すフローチャートである。
 以下に添付図面を参照して、この発明にかかるスケジューリング方法およびスケジューリングシステムの実施の形態を詳細に説明する。本実施の形態において、スケジューリングシステムは、コアが複数搭載されたマルチコアプロセッサを含むマルチコアプロセッサシステムである。マルチコアプロセッサは、コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。ただし、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(スケジューリング処理の一実施例)
 図1および図2は、実施の形態にかかるスケジューリング処理の一実施例を示す説明図である。図1および図2において、マルチコアプロセッサシステム100は、CPU(Central Processing Unit)#0と、CPU#1と、を含むスケジューリングシステムである。
 CPU#0は、OS(Operating System)#0を実行し、マルチコアプロセッサシステム100の全体の制御を司る。OS#0は、マスタOSであり、アプリケーションをどのCPUに割り当てるかを制御するスケジューラ101を備えている。また、CPU#0は、割り当てられたアプリケーションを実行する。CPU#1は、OS#1を実行し、OS#1に割り当てられたアプリケーションを実行する。OS#1は、スレーブOSである。なお、アプリ(アプリケーション)が割り当てられているCPUとアプリが割り当てられているOSとは同一の意味である。
 以下、図1を用いて、新たなアプリ#5が起動された場合を例に挙げて、マルチコアプロセッサシステム100のスケジューリング処理の第1の実施例について説明する。
 (1-1)スケジューラ101は、アプリ#5の起動通知を受け付ける。
 (1-2)スケジューラ101は、アプリケーション情報テーブル102を参照して、CPU#0およびCPU#1に割り当てられているアプリ#0~アプリ#4のうち、新たに起動されたアプリ#5と同時に実行され得るアプリを特定する。
 ここで、アプリケーション情報テーブル102は、アプリケーションごとに、該アプリケーションと同時に実行され得る他のアプリケーション情報を含むものである。例えば、アプリ#5をゲームアプリとすると、動画再生アプリや音楽再生アプリなどは、同時に実行される可能性が低いアプリである。一方、アプリ#5を音楽再生アプリとすると、電子メールアプリやウェブブラウザなどは、上述したゲームアプリと動画再生アプリのような組合せに比べて、同時に実行される可能性が高いアプリである。
 アプリケーション情報テーブル102は、音楽再生アプリと電子メールアプリのような、同時に実行される可能性が高いアプリの組合せを示す。図1の例では、アプリ#5と同時に実行され得るアプリとして、アプリ#0およびアプリ#1が特定されている。なお、アプリケーション情報テーブル102の詳細な説明は、図4を用いて後述する。
 (1-3)スケジューラ101は、マルチコアプロセッサシステム100内のCPU#0およびCPU#1のうち、アプリ#5と同時に実行されることのないアプリを実行するCPUを検出する。具体的には、例えば、スケジューラ101が、CPU#0およびCPU#1のうち、アプリ#5と同時に実行され得るアプリ#0およびアプリ#1が割り当てられていないCPU#1を検出する。
 (1-4)スケジューラ101は、アプリ#5をCPU#1に割り当てる。これにより、新たに起動されたアプリ#5を、アプリ#5と同時に実行される可能性が高いアプリ#0およびアプリ#1が割り当てられているCPU#0とは異なるCPU#1に割り当てることができる。
 このように、実施の形態にかかるスケジューラ101によれば、同時に実行される可能性が高いアプリを異なるCPUにそれぞれ割り当てることができる。この結果、例えば、アプリ#5とアプリ#0(またはアプリ#1)との切り替えが発生した際に、アプリ#5,アプリ#0のコンテキスト情報の退避やロードが不要となるため、アプリ#5,アプリ#0間の切り替えを高速に行うことができる。
 つぎに、図2を用いて、アプリ#5が起動された場合を例に挙げて、マルチコアプロセッサシステム100のスケジューリング処理の第2の実施例について説明する。
 (2-1)スケジューラ101は、アプリ#5の起動通知を受け付ける。
 (2-2)スケジューラ101は、アプリケーション情報テーブル102を参照して、CPU#0およびCPU#1に割り当てられているアプリ#0~アプリ#4のうち、新たに起動されたアプリ#5と同時に実行され得るアプリを特定する。図2の例では、アプリ#5と同時に実行され得るアプリとして、アプリ#0、アプリ#1、アプリ#3およびアプリ#4が特定されている。
 (2-3)スケジューラ101は、アプリケーション情報テーブル102を参照して、CPU#0およびCPU#1の少なくとも一のCPUで実行されるアプリを、新たに起動されたアプリ#5に切り替えるときの負荷を計算する。
 ここで、アプリケーション情報テーブル102は、アプリケーションごとに、該アプリケーションのコンテキスト負荷情報を含むものである。コンテキスト負荷情報は、実行中の一のアプリケーションを他のアプリケーションに切り替えるときにかかる負荷に関する情報である。
 具体的には、例えば、スケジューラ101が、新たに起動されたアプリ#5のコンテキスト負荷情報に基づいて、CPU#0に割り当てられているアプリ#0およびアプリ#1を、アプリ#5に切り替えるときの各々の負荷の合計を計算する。アプリ#0およびアプリ#1は、アプリ#5と同時に実行され得るアプリである。
 また、スケジューラ101が、新たに起動されたアプリ#5のコンテキスト負荷情報に基づいて、CPU#1に割り当てられているアプリ#3およびアプリ#4を、アプリ#5に切り替えるときの各々の負荷の合計を計算する。アプリ#3およびアプリ#4は、アプリ#5と同時に実行され得るアプリである。
 (2-4)スケジューラ101は、計算した負荷に基づいて、CPU#0およびCPU#1の中からアプリ#5を実行するCPUを選択して、アプリ#5を割り当てる。具体的には、例えば、スケジューラ101が、CPU#0およびCPU#1のうち、計算した負荷の合計が最小となるCPUを選択して、アプリ#5を割り当てる。ここでは、CPU#0が選択されて、アプリ#5が割り当てられている。
 このように、実施の形態にかかるスケジューラ101によれば、アプリ間の切り替えにかかる負荷を考慮して、新たに起動されたアプリの割当先となるCPUを選択することができる。この結果、例えば、アプリ#5とアプリ#0との切り替えが発生した際の負荷を抑えることができ、アプリ間の切り替えの高速化を図ることができる。
(マルチコアプロセッサシステム300のシステム構成)
 つぎに、実施の形態にかかるマルチコアプロセッサシステム300のシステム構成について説明する。なお、図1および図2に示したマルチコアプロセッサシステム100は、以下に説明するマルチコアプロセッサシステム300の一例である。
 図3は、実施の形態にかかるマルチコアプロセッサシステムのシステム構成例を示す説明図である。図3において、マルチコアプロセッサシステム300は、CPU#0~CPU#nと、1次キャッシュ301-1~301-nと、スヌープ回路302と、2次キャッシュ303と、I/F(InterFace)304と、メモリコントローラ305と、メモリ306と、を有している。マルチコアプロセッサシステム300において、2次キャッシュ303と、I/F304と、メモリコントローラ305とは、バス320を介して接続されている。また、メモリ306は、メモリコントローラ305を介して各部と接続されている。
 CPU#0は、OS#0を実行し、マルチコアプロセッサシステム300の全体の制御を司る。OS#0は、マスタOSであり、アプリケーションをどのCPUに割り当てるかを制御するスケジューラ101を備えている。また、CPU#0は、割り当てられたアプリケーションを実行する。CPU#1~CPU#nは、それぞれOS#1~OS#nを実行し、各OSに割り当てられたアプリケーションを実行する。OS#1~OS#nは、スレーブOSである。
 CPU#0~CPU#nは、それぞれレジスタとコアとを有している。各レジスタには、プログラムカウンタやリセットレジスタがある。また、各CPU#0~CPU#nは、各々の1次キャッシュ301-1~301-nと、スヌープ回路302と、2次キャッシュ303とを介して各部に接続されている。
 1次キャッシュ301-1~301-nは、それぞれキャッシュメモリとキャッシュコントローラとを有している。例えば、1次キャッシュ301-1は、OS#0が実行するアプリケーションからメモリ306への書込処理を一時的に記憶する。1次キャッシュ301-1は、メモリ306から読み出されたデータを一時的に記憶する。
 スヌープ回路302は、CPU#0~CPU#nがアクセスする1次キャッシュ301-1~301-nの整合性を取る。具体的には、例えば、スヌープ回路302は、1次キャッシュ301-1~301-nの間で共有するデータがいずれかの1次キャッシュで更新された場合、該更新を検出して、他の1次キャッシュを更新する。
 2次キャッシュ303は、キャッシュメモリとキャッシュコントローラとを有している。2次キャッシュ303では、各1次キャッシュ301-1~301-nから追い出されたデータを記憶する。具体的には、例えば、2次キャッシュ303は、OS#0~OS#nで共有するデータを記憶する。
 I/F304は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F304は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F304には、例えば、モデムやLANアダプタなどを採用することができる。
 メモリコントローラ305は、メモリ306に対するデータのリード/ライトを制御する。メモリ306は、CPU#0~CPU#nに共有されるメモリである。メモリ306は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有している。
 より具体的には、例えば、フラッシュROMが各OSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU#0~CPU#nのワークエリアとして使用される。メモリ306に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることになる。
 ファイルシステム307は、例えば、アプリケーションの命令コードや、画像および映像などのコンテンツデータを記憶している。ファイルシステム307は、例えば、ハードディスクや光ディスクなどの補助記憶装置により実現される。なお、図示は省略するが、マルチコアプロセッサシステム300は、各部に電源電圧を供給するPMU(Power Management Unit)のほか、ディスプレイやキーボードなどを有することにしてもよい。
(ユースケーステーブル400の記憶内容)
 つぎに、図3に示したスケジューラ101が用いるユースケーステーブル400について説明する。ユースケーステーブル400は、図1および図2に示したアプリケーション情報テーブル102に相当する。ユースケーステーブル400は、例えば、1次キャッシュ301-1、2次キャッシュ303、メモリ306などに記憶されている。
 図4は、ユースケーステーブルの記憶内容の一例を示す説明図である。図4において、ユースケーステーブル400は、アプリ名、コンテキストコスト、同時実行アプリおよび期待値のフィールドを有する。各フィールドに情報を設定することで、アプリごとのアプリケーション情報(例えば、アプリケーション情報400-1~400-6)がレコードとして記憶されている。
 アプリ名は、アプリを識別する名称である。コンテキストコストは、アプリのコンテキストスイッチにかかる負荷を表す指標値であり、例えば、アプリの起動や停止にかかる時間によって表される。より具体的には、例えば、コンテキストコストは、アプリのコンテキスト情報のメモリ306への退避(または、メモリ306からのロード)にかかる時間によって表される。なお、コンテキスト情報とは、各CPUのプログラムカウンタの値や、関数内の変数の値を格納する汎用レジスタの値などの情報である。
 同時実行アプリは、各アプリと同時に実行される可能性が高いアプリを識別する情報である。期待値は、各アプリが同時実行アプリに切り替わる割合を示すものであり、例えば、各アプリを1回実行している間に、該アプリが同時実行アプリに切り替わる割合によって表されている。
 一例として、アプリケーション情報400-1を例に挙げると、アプリ#0のコンテキストコスト『100[us]』が示されている。すなわち、アプリ#0のコンテキスト情報の退避(または、ロード)にかかる時間は100[us]である。また、アプリ#0の同時実行アプリ『アプリ#3、アプリ#4、アプリ#5』が示されている。すなわち、アプリ#0と同時に実行される可能性が高いアプリは、アプリ#3、アプリ#4およびアプリ#5である。また、同時実行アプリごとの期待値が示されている。具体的には、例えば、アプリ#0を実行中に、アプリ#0からアプリ#3に切り替わる割合は『0.4』である。また、例えば、アプリ#0を実行中に、アプリ#0からアプリ#4に切り替わる割合は『0.6』である。また、例えば、アプリ#0を実行中に、アプリ#0からアプリ#5に切り替わる割合は『0.5』である。
 なお、ユースケーステーブル400内の各アプリのコンテキストコストは、例えば、マルチコアプロセッサシステム300の設計時に、シミュレーションによって各アプリのコンテキスト情報の退避時間を測定することにより求めることにしてもよい。また、ユースケーステーブル400内の各アプリの同時実行アプリおよび期待値は、例えば、ユーザがアプリを使用するたびに、OS#0が、アプリの切り替え回数の期待値を計算して更新することにしてもよい。
 なお、以下の説明において、特に指定する場合を除き、マルチコアプロセッサシステム300内のCPU#0~CPU#nのうち任意のCPUを「CPU#i」と表記する(i=0,1,…,n)。
(スケジューラ101の機能的構成例)
 つぎに、スケジューラ101の機能的構成例について説明する。図5は、実施の形態にかかるスケジューラの機能的構成を示すブロック図である。図5において、スケジューラ101は、受付部501と、特定部502と、検出部503と、割当部504と、第1の算出部505と、第2の算出部506と、第3の算出部507と、を含む構成である。各機能部(受付部501~第3の算出部507)は、具体的には、例えば、メモリ306に記憶されたスケジューラ101をCPU#0に実行させることにより、その機能を実現する。なお、各機能部の処理結果は、例えば、CPU#0のレジスタ、1次キャッシュ301-1、2次キャッシュ303およびメモリ306などに記憶される。
 受付部501は、新たなアプリ(以下、「アプリ#j」という)の起動通知を受け付ける。具体的には、例えば、受付部501が、アプリ#jの起動通知をOS#0から受け付ける。
 特定部502は、ユースケーステーブル400(図4参照)を参照して、起動通知が受け付けられたアプリ#jと同時に実行され得るアプリ(以下、「アプリ#k」という)を特定する。
 一例として、アプリ#5の起動通知を受け付けた場合を想定する(j=5)。この場合、特定部502が、ユースケーステーブル400の中から、アプリ#5に対応するアプリケーション情報400-6を特定する。そして、特定部502が、アプリケーション情報400-6を参照して、アプリ#5と同時に実行され得るアプリ#0,アプリ#1,アプリ#3,アプリ#4を特定する。
 検出部503は、マルチコアプロセッサシステム300内のCPU#0~CPU#nの中から、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUを検出する。具体的には、例えば、検出部503が、図6に示す割当テーブル600を参照して、アプリ#kが割り当てられていないCPUを検出する。
 割当テーブル600は、CPU#0~CPU#nにそれぞれ割り当てられているアプリ、具体的には、各CPU#0~CPU#nの待ち行列に登録されているアプリを示す情報である。割当テーブル600は、例えば、1次キャッシュ301-1、2次キャッシュ303およびメモリ306などにより実現される。ここで、割当テーブル600について説明する。
 図6は、割当テーブルの記憶内容の一例を示す説明図である。図6において、割当テーブル600には、各CPU#0~CPU#nに割り当てられているアプリ名が示されている。CPU#0を例に挙げると、アプリ#0,アプリ#1およびアプリ#2が割り当てられている。なお、割当テーブル600の記憶内容は、各CPU#0~CPU#nに割り当てられるアプリの変更に合わせて、その都度更新される。
 図5の説明に戻り、割当部504は、検出された、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPU(以下、「CPU#A」という)にアプリ#jを割り当てる。具体的には、例えば、割当部504が、CPU#Aの待ち行列にアプリ#jを登録する。
 これにより、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPU#Aに割り当てることができる。この結果、アプリ#jとアプリ#kとの切り替えが発生した際に、アプリ#j,アプリ#kのコンテキスト情報の退避やロードが不要となるため、アプリ間の切り替えを高速に行うことができる。
 第1の算出部505は、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUが複数検出された場合、検出された各CPUの負荷を算出する。具体的には、例えば、第1の算出部505が、検出された各CPUに割り当てられているアプリの数や各アプリの実行時間に基づいて、該各CPUの負荷を算出する。より具体的には、例えば、第1の算出部505が、検出された各CPUに割り当てられているアプリの数を、該各CPUの負荷として算出することにしてもよい。
 また、割当部504は、算出された各CPUの負荷に基づいて、検出された複数のCPUの中から、新たなアプリ#jの割当先となるCPU#Aを選択する。具体的には、例えば、割当部504が、検出された複数のCPUの中から、算出された負荷が最小となるCPU#Aを選択する。そして、割当部504は、選択したCPU#Aにアプリ#jを割り当てる。
 これにより、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPUのうち、負荷が最小のCPU#Aに割り当てることができる。この結果、アプリ間の切り替えを高速に行うとともに、CPU#0~CPU#nに負荷を分散してシステム全体の性能を向上させることができる。
 第2の算出部506は、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUが検出されなかった場合、新たなアプリ#jと、CPU#iに割り当てられているアプリ#kとを切り替えるときの負荷(以下、「切替コスト」という)を算出する。
 具体的には、例えば、第2の算出部506が、CPU#iに割り当てられているアプリ#kのコンテキストの切替時間と、該アプリ#kと新たなアプリ#jとの切替回数の期待値とに基づいて、切替コストを算出する。ここで、アプリ#kのコンテキストの切替時間は、ユースケーステーブル400内の「コンテキストコスト」に相当する。また、アプリ#jとアプリ#kとの切替回数の期待値は、ユースケーステーブル400内の「期待値」に相当する。
 より具体的には、例えば、第2の算出部506が、ユースケーステーブル400を参照して、CPU#iに割り当てられているアプリ#kのコンテキストコストと、アプリ#kがアプリ#jに切り替わる割合を示す期待値とを乗算して切替コストを算出する。ここで、上記切替コストは、CPU#iに割り当てられているアプリ#kごとに算出される。
 そこで、第2の算出部506は、CPU#iに割り当てられているアプリ#kごとの切替コストを加算して、アプリ#kごとの切替コストの合計を表すコスト(以下、「合計コストSi」という)を算出することにしてもよい。なお、第2の算出部506の具体的な処理内容については、図7および図8を用いて後述する。
 また、割当部504は、算出された各CPU#iのアプリ#kごとの切替コストに基づいて、CPU#0~CPU#nの中から、新たなアプリ#jの割当先となるCPUを選択する。具体的には、例えば、割当部504が、算出されたCPU#0~CPU#nごとの合計コストS0~Snに基づいて、新たなアプリ#jの割当先となるCPUを選択することにしてもよい。
 より具体的には、例えば、まず、割当部504が、CPU#0~CPU#nごとの合計コストS0~Snの中から、最小の合計コスト(以下、「合計コストSmin」という)を特定する。そして、割当部504が、CPU#0~CPU#nの中から、合計コストSminのCPU(以下、「CPU#B」という)を選択する。そして、割当部504は、選択したCPU#Bにアプリ#jを割り当てる。
 これにより、新たに起動されたアプリ#jの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となるCPU#Bに、アプリ#jを割り当てることができる。この結果、アプリ#j,#k間の切り替えが発生しにくく、たとえアプリ#j,#k間の切り替えが発生してもコンテキストスイッチにかかる時間が短いCPU#Bにアプリ#jを割り当てることができ、アプリ間の切り替えの高速化を図ることができる。
 第3の算出部507は、新たに起動されたアプリ#jと同時に実行され得るアプリ#kと、CPU#iに割り当てられているアプリ#mとを切り替えるときの切替コストを算出する。ここで、アプリ#mは、例えば、アプリ#kと同時に実行され得るアプリである。
 具体的には、例えば、第3の算出部507が、アプリ#jがCPU#Bに割り当てられた結果、CPU#Bに割り当てられているアプリ#kと、CPU#Bとは異なるCPU#iに割り当てられているアプリ#mとを切り替えるときの切替コストを算出する。
 より具体的には、例えば、第3の算出部507が、ユースケーステーブル400を参照して、CPU#iに割り当てられているアプリ#mのコンテキストコストと、アプリ#mがアプリ#kに切り替わる割合を示す期待値とを乗算して切替コストを算出する。ここで、上記切替コストは、CPU#i(ただし、i≠B)に割り当てられているアプリ#mごとに算出される。
 そこで、第3の算出部507は、CPU#iに割り当てられているアプリ#mごとの切替コストを加算して、アプリ#mごとの切替コストの合計を表すコスト(以下、「合計コストS(i)」という)を算出することにしてもよい。なお、第3の算出部507の具体的な処理内容については、図7および図9を用いて後述する。
 また、割当部504は、算出された各CPU#iのアプリ#mごとの切替コストに基づいて、CPU#0~CPU#nの中から、CPU#Bに割り当てられているアプリ#kの割当先となるCPUを選択する。具体的には、例えば、割当部504が、算出されたCPU#iの合計コストS(i)に基づいて、CPU#Bに割り当てられているアプリ#kの割当先となるCPUを選択することにしてもよい。
 より具体的には、例えば、CPU#i(ただし、i≠B)の合計コストS(i)が、上述した合計コストSmin未満の場合、割当部504が、CPU#Bに割り当てられているアプリ#kの割当先としてCPU#iを選択する。そして、割当部504は、CPU#Bに割り当てられているアプリ#kを、選択したCPU#iに移行(いわゆる、マイグレーション)する。すなわち、アプリ#kをCPU#Bから他のCPUに移行することで、アプリ間の切り替えにかかるシステム全体の負荷が少なくなる場合に、アプリ#kのマイグレーションを行う。
 これにより、新たに起動されたアプリ#jと同時に実行され得るCPU#Bのアプリ#kを、アプリ#kの割り当てにともなって発生するアプリ間の切り替えにかかる合計コストS(i)が合計コストSmin未満のCPU#iに割り当てることができる。この結果、各CPU#iにおけるアプリ間の切り替えにかかる負荷を最適化することができ、システム全体の性能を向上させることができる。
 また、割当部504が、CPU#Bとは異なるCPUのうち、算出された合計コストS(i)が、最小かつ合計コストSmin未満のCPU#iを、CPU#Bに割り当てられているアプリ#kの割当先として選択することにしてもよい。これにより、各CPU#iにおけるアプリ間の切り替えにかかる負荷をより最適化することができ、システム全体の性能を向上させることができる。
 なお、上述した説明では、第2の算出部506は、CPU#iに割り当てられているアプリ#kのコンテキストコストと、アプリ#kがアプリ#jに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしたが、これに限らない。例えば、第2の算出部506は、新たなアプリ#jのコンテキストコストと、アプリ#jがアプリ#kに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしてもよい。
 また、上述した説明では、第3の算出部507は、CPU#i(i≠B)に割り当てられているアプリ#mのコンテキストコストと、アプリ#mがアプリ#kに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしたが、これに限らない。例えば、第3の算出部507は、CPU#i(i≠B)に割り当てられているアプリ#kのコンテキストコストと、アプリ#kがアプリ#mに切り替わる割合を示す期待値とを乗算して切替コストを算出することにしてもよい。
(第2の算出部506の具体的な処理内容)
 つぎに、図7および図8を用いて、第2の算出部506の具体的な処理内容について説明する。ここでは、実施の形態にかかるマルチコアプロセッサシステム300の一例として、図1および図2に示したマルチコアプロセッサシステム100を例に挙げて説明する(n=1)。
 図7は、アプリケーションの割当例を示す説明図である。図7において、マルチコアプロセッサシステム100内のCPU#0にアプリ#0,アプリ#1およびアプリ#2が割り当てられ、CPU#1にアプリ#3およびアプリ#4が割り当てられている。アプリ#5は、新たに起動されたアプリである。
 ここで、アプリ#0~アプリ#4のうち、アプリ#0,アプリ#1,アプリ#3およびアプリ#4は、新たに起動されたアプリ#5と同時に実行され得るアプリである。以下、CPU#0,CPU#1の合計コストS0,S1を算出する第2の算出部506の具体的な処理内容の一例について説明する。
・CPU#0の合計コストS0
 まず、第2の算出部506は、ユースケーステーブル400を参照して、CPU#0に割り当てられているアプリ#0のコンテキストコスト『100[us]』と、アプリ#0がアプリ#5に切り替わる割合を示す期待値『0.5』とを乗算して切替コストを算出する。この結果、下記式(1)に示すように、切替コスト『50[us]』が算出される。
 アプリ#0:100[us]×0.5=50[us]   ・・・(1)
 つぎに、第2の算出部506は、ユースケーステーブル400を参照して、CPU#0に割り当てられているアプリ#1のコンテキストコスト『1[ms]』と、アプリ#1がアプリ#5に切り替わる割合を示す期待値『0.1』とを乗算して切替コストを算出する。この結果、下記式(2)に示すように、切替コスト『100[us]』が算出される。
 アプリ#1:1[ms]×0.1=100[us]   ・・・(2)
 そして、第2の算出部506は、CPU#0に割り当てられているアプリ#0,アプリ#1ごとの切替コストを加算して合計コストS0を算出する。ここでは、合計コストS0『150[us]』が算出される。
・CPU#1の合計コストS1
 まず、第2の算出部506は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#3のコンテキストコスト『500[us]』と、アプリ#3がアプリ#5に切り替わる割合を示す期待値『0.25』とを乗算して切替コストを算出する。この結果、下記式(3)に示すように、切替コスト『125[us]』が算出される。
 アプリ#3:500[us]×0.25=125[us]   ・・・(3)
 つぎに、第2の算出部506は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#4のコンテキストコスト『250[us]』と、アプリ#4がアプリ#5に切り替わる割合を示す期待値『0.3』とを乗算して切替コストを算出する。この結果、下記式(4)に示すように、切替コスト『75[us]』が算出される。
 アプリ#4:250[us]×0.3=75[us]   ・・・(4)
 そして、第2の算出部506は、CPU#1に割り当てられているアプリ#3,アプリ#4ごとの切替コストを加算して合計コストS1を算出する。ここでは、合計コストS1『200[us]』が算出される。
 算出された合計コストS0,S1は、例えば、図8に示す割当先候補コストテーブル800に記憶される。割当先候補コストテーブル800は、例えば、1次キャッシュ301-1、2次キャッシュ303およびメモリ306などにより実現される。ここで、割当先候補コストテーブル800について説明する。
 図8は、割当先候補コストテーブルの記憶内容の一例を示す説明図である。図8において、割当先候補コストテーブル800は、CPU#0,CPU#1ごとの合計コストS0,S1を記憶している。上記割当部504は、例えば、割当先候補コストテーブル800を参照して、CPU#0およびCPU#1のうち、合計コストSiが最小のCPU#0にアプリ#5を割り当てる。
(第3の算出部507の具体的な処理内容)
 つぎに、図7および図9を用いて、第3の算出部507の具体的な処理内容について説明する。ここでは、アプリ#5がCPU#0に割り当てられた結果、CPU#0に割り当てられているアプリ#0,アプリ#1を、CPU#1にマイグレーション(移行)するか否かを判断する場合を例に挙げて説明する。
 以下、CPU#0に割り当てられているアプリ#0,アプリ#1ごとに、CPU#1に割り当てられているアプリ#mとの切り替えが行われるときの合計コストS(1)を算出する第3の算出部507の具体的な処理内容の一例について説明する。
・アプリ#0の合計コストS(1)
 まず、第3の算出部507は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#3のコンテキストコスト『500[us]』と、アプリ#3がアプリ#0に切り替わる割合を示す期待値『0.4』とを乗算して切替コストを算出する。この結果、下記式(5)に示すように、切替コスト『200[us]』が算出される。
 アプリ#3:500[us]×0.4=200[us]   ・・・(5)
 つぎに、第3の算出部507は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#4のコンテキストコスト『250[us]』と、アプリ#4がアプリ#0に切り替わる割合を示す期待値『0.6』とを乗算して切替コストを算出する。この結果、下記式(6)に示すように、切替コスト『150[us]』が算出される。
 アプリ#4:250[us]×0.6=150[us]   ・・・(6)
 そして、第3の算出部507は、CPU#1に割り当てられているアプリ#3,アプリ#4ごとの切替コストを加算して合計コストS(1)を算出する。ここでは、アプリ#0の合計コストS(1)『350[us]』が算出される。
・アプリ#1の合計コストS(1)
 まず、第3の算出部507は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#3のコンテキストコスト『500[us]』と、アプリ#3がアプリ#1に切り替わる割合を示す期待値『0.5』とを乗算して切替コストを算出する。この結果、下記式(7)に示すように、切替コスト『250[us]』が算出される。
 アプリ#3:500[us]×0.5=250[us]   ・・・(7)
 つぎに、第3の算出部507は、ユースケーステーブル400を参照して、CPU#1に割り当てられているアプリ#4のコンテキストコスト『250[us]』と、アプリ#4がアプリ#1に切り替わる割合を示す期待値『0.6』とを乗算して切替コストを算出する。この結果、下記式(8)に示すように、切替コスト『150[us]』が算出される。
 アプリ#4:250[us]×0.6=150[us]   ・・・(8)
 そして、第3の算出部507は、CPU#1に割り当てられているアプリ#3,アプリ#4ごとの切替コストを加算して、アプリ#1の合計コストS(1)を算出する。ここでは、合計コストS(1)『400[us]』が算出される。
 算出されたアプリ#0,アプリ#1それぞれの合計コストS(1)は、例えば、図9に示すマイグレーション先候補コストテーブル900に記憶される。マイグレーション先候補コストテーブル900は、例えば、1次キャッシュ301-1、2次キャッシュ303およびメモリ306などにより実現される。ここで、マイグレーション先候補コストテーブル900について説明する。
 図9は、マイグレーション先候補コストテーブルの記憶内容の一例を示す説明図である。図9において、マイグレーション先候補コストテーブル900は、CPU#0に割り当てられているアプリ#0,アプリ#1をCPU#1に移行する場合のそれぞれの合計コストS(1)を記憶している。
 上記割当部504は、マイグレーション先候補コストテーブル900を参照して、CPU#0に割り当てられているアプリ#0の割当先となるCPUを選択することにしてもよい。ここで、合計コストSminは、上述した合計コストS0『150[us]』である。このため、アプリ#0の合計コストS(1)『350[us]』は、合計コストSminより大きい。この場合、割当部504は、CPU#0に割り当てられているアプリ#0の割当先を変更しない。すなわち、アプリ#0のマイグレーションは行われない。
 また、割当部504は、マイグレーション先候補コストテーブル900を参照して、CPU#0に割り当てられているアプリ#1の割当先となるCPUを選択する。ここで、アプリ#1の合計コストS(1)『400[us]』は、合計コストSminより大きい。この場合、割当部504は、CPU#0に割り当てられているアプリ#1の割当先を変更しない。すなわち、アプリ#1のマイグレーションは行われない。
(スケジューラ101によるスケジューリング処理手順)
 つぎに、実施の形態にかかるスケジューラ101によるスケジューリング処理手順について説明する。
 図10および図11は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャートである。図10のフローチャートにおいて、まず、受付部501により、新たなアプリ#jの起動通知を受け付けたか否かを判断する(ステップS1001)。
 ここで、新たなアプリ#jの起動通知を受け付けるのを待って(ステップS1001:No)、受け付けた場合(ステップS1001:Yes)、特定部502により、ユースケーステーブル400を参照して、起動通知が受け付けられたアプリ#jと同時に実行され得るアプリ#kを特定する(ステップS1002)。
 つぎに、検出部503により、マルチコアプロセッサシステム300内のCPU#0~CPU#nの中から、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUを検出する(ステップS1003)。
 このあと、割当部504により、新たなアプリ#jと同時に実行され得るアプリ#kが割り当てられていないCPUが検出されたか否かを判断する(ステップS1004)。ここで、CPUが検出されなかった場合(ステップS1004:No)、図11に示すステップS1101に移行する。
 一方、CPUが検出された場合(ステップS1004:Yes)、割当部504により、複数のCPUが検出されたか否かを判断する(ステップS1005)。ここで、複数のCPUが検出されなかった場合(ステップS1005:No)、割当部504により、検出されたCPU#Aにアプリ#jを割り当てて(ステップS1006)、本フローチャートによる一連の処理を終了する。
 一方、複数のCPUが検出された場合(ステップS1005:Yes)、第1の算出部505により、検出された各CPUの負荷を算出する(ステップS1007)。そして、割当部504により、検出された複数のCPUの中から、算出された負荷が最小となるCPU#Aにアプリ#jを割り当てて(ステップS1008)、本フローチャートによる一連の処理を終了する。
 図11のフローチャートにおいて、まず、第2の算出部506により、CPU#iの「i」を「i=0」とする(ステップS1101)。そして、第2の算出部506により、CPU#0~CPU#nの中からCPU#iを選択する(ステップS1102)。つぎに、第2の算出部506により、CPU#iに割り当てられているアプリの中からアプリ#kを選択する(ステップS1103)。
 このあと、第2の算出部506により、新たなアプリ#jと、選択したアプリ#kとを切り替えるときの切替コストを算出する(ステップS1104)。そして、第2の算出部506により、CPU#iに割り当てられているアプリの中から選択されていない未選択のアプリ#kがあるか否かを判断する(ステップS1105)。
 ここで、未選択のアプリ#kがある場合(ステップS1105:Yes)、ステップS1103に戻る。一方、未選択のアプリ#kがない場合(ステップS1105:No)、第2の算出部506により、算出したアプリ#kごとの切替コストの合計を表す合計コストSiを算出する(ステップS1106)。
 つぎに、第2の算出部506により、CPU#iの「i」をインクリメントして(ステップS1107)、「i」が「n」より大きいか否かを判断する(ステップS1108)。ここで、「i」が「n」以下の場合(ステップS1108:No)、ステップS1102に戻る。
 一方、「i」が「n」より大きい場合(ステップS1108:Yes)、割当部504により、CPU#0~CPU#nごとの合計コストS0~Snの中から、最小の合計コストSminを特定する(ステップS1109)。そして、割当部504により、CPU#0~CPU#nのうち合計コストSminのCPU#Bにアプリ#jを割り当てる(ステップS1110)。
 最後、割当部504により、CPU#Bに割り当てられているアプリ#kのマイグレーション処理を実行して(ステップS1111)、本フローチャートによる一連の処理を終了する。
 これにより、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPU#Aに割り当てることができる。また、CPU#Aが存在しない場合は、新たに起動されたアプリ#jの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となるCPU#Bに、アプリ#jを割り当てることができる。
 つぎに、図11に示したステップS1111のマイグレーション処理の具体的な処理手順について説明する。
 図12は、マイグレーション処理の具体的処理手順の一例を示すフローチャートである。図12において、まず、第3の算出部507により、CPU#Bに割り当てられているアプリの中からアプリ#kを選択する(ステップS1201)。このあと、第3の算出部507により、ユースケーステーブル400を参照して、アプリ#kと同時に実行され得るアプリ#mを特定する(ステップS1202)。
 つぎに、第3の算出部507により、CPU#iの「i」を「i=0」とする(ステップS1203)。そして、第3の算出部507により、CPU#iの「i」がCPU#Bの「B」と同じか否かを判断する(ステップS1204)。ここで、CPU#iの「i」がCPU#Bの「B」と同じ場合(ステップS1204:Yes)、ステップS1211に移行する。
 一方、CPU#iの「i」がCPU#Bの「B」と違う場合(ステップS1204:No)、第3の算出部507により、CPU#0~CPU#nの中からCPU#iを選択する(ステップS1205)。そして、第3の算出部507により、CPU#iに割り当てられているアプリの中からアプリ#mを選択する(ステップS1206)。
 つぎに、第3の算出部507により、アプリ#kと、選択したアプリ#mとを切り替えるときの切替コストを算出する(ステップS1207)。そして、第3の算出部507により、CPU#iに割り当てられているアプリの中から選択されていない未選択のアプリ#mがあるか否かを判断する(ステップS1208)。
 ここで、未選択のアプリ#mがある場合(ステップS1208:Yes)、ステップS1206に戻る。一方、未選択のアプリ#mがない場合(ステップS1208:No)、第3の算出部507により、算出したアプリ#mごとの切替コストの合計を表す合計コストS(i)を算出する(ステップS1209)。
 そして、割当部504により、CPU#iの合計コストS(i)が、図11に示したステップS1109において特定された合計コストSmin未満となるか否かを判断する(ステップS1210)。ここで、CPU#iの合計コストS(i)が合計コストSmin以上の場合(ステップS1210:No)、第3の算出部507により、CPU#iの「i」をインクリメントして(ステップS1211)、「i」が「n」より大きいか否かを判断する(ステップS1212)。
 ここで、「i」が「n」以下の場合(ステップS1212:No)、ステップS1204に戻る。一方、「i」が「n」より大きい場合(ステップS1212:Yes)、ステップS1214に移行する。
 また、ステップS1210において、CPU#iの合計コストS(i)が合計コストSmin未満の場合(ステップS1210:Yes)、割当部504により、CPU#Bに割り当てられているアプリ#kをCPU#iに移行する(ステップS1213)。
 そして、第3の算出部507により、CPU#Bに割り当てられているアプリの中から選択されていない未選択のアプリ#kがあるか否かを判断する(ステップS1214)。ここで、未選択のアプリ#kがある場合(ステップS1214:Yes)、ステップS1201に戻る。一方、未選択のアプリ#kがない場合(ステップS1214:No)、本フローチャートによる一連の処理を終了する。
 これにより、新たに起動されたアプリ#jと同時に実行され得るCPU#Bのアプリ#kを、アプリ#kの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となる他のCPUに割り当てることができる。
 以上説明したように、実施の形態にかかるスケジューラ101によれば、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPU#Aに割り当てることができる。この結果、アプリ#jとアプリ#kとの切り替えが発生した際に、アプリ#j,アプリ#kのコンテキスト情報の退避やロードが不要となるため、アプリ間の切り替えを高速に行うことができる。
 また、スケジューラ101によれば、新たなアプリ#jを、同時に実行される可能性が高いアプリ#kが割り当てられていないCPUのうち、負荷が最小のCPU#Aに割り当てることができる。この結果、アプリ間の切り替えを高速に行うとともに、CPU#0~CPU#nに負荷を分散してシステム全体の性能を向上させることができる。
 また、スケジューラ101によれば、CPU#Aが存在しない場合は、新たに起動されたアプリ#jの割り当てにともなって発生するアプリ間の切り替えにかかる負荷が最小となるCPU#Bに、アプリ#jを割り当てることができる。この結果、アプリ#j,#k間の切り替えが発生しにくく、また、たとえアプリ#j,#k間の切り替えが発生してもコンテキストスイッチにかかる時間が短いCPU#Bにアプリ#jを割り当てることができ、アプリ間の切り替えの高速化を図ることができる。
 また、スケジューラ101によれば、新たに起動されたアプリ#jと同時に実行され得るCPU#Bのアプリ#kを、アプリ#kの移行にともなって発生するアプリ間の切り替えにかかる合計コストS(i)が合計コストSmin未満のCPU#iに移行することができる。この結果、各CPU#iにおけるアプリ間の切り替えにかかる負荷を最適化することができ、システム全体の性能を向上させることができる。
 また、スケジューラ101によれば、CPU#Bのアプリ#kを、アプリ#kの移行にともなって発生するアプリ間の切り替えにかかる合計コストS(i)が最小かつ合計コストSmin未満のCPU#iに移行することができる。これにより、各CPU#iにおけるアプリ間の切り替えにかかる負荷をより最適化することができ、システム全体の性能を向上させることができる。
 これらのことから、本スケジューリング方法およびスケジューリングシステムによれば、高性能化および低消費電力化とともに、アプリケーションの切り替えの高速化を図ることができる。
 なお、本実施の形態で説明したスケジューリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリングプログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本スケジューリングプログラムは、インターネット等のネットワークを介して配布してもよい。
 100,300 マルチコアプロセッサシステム
 101 スケジューラ
 102 アプリケーション情報テーブル
 400 ユースケーステーブル
 501 受付部
 502 特定部
 503 検出部
 504 割当部
 505 第1の算出部
 506 第2の算出部
 507 第3の算出部
 600 割当テーブル
 800 割当先候補コストテーブル
 900 マイグレーション先候補コストテーブル

Claims (10)

  1.  複数のプロセッサを管理するスケジューラが、
     第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記第1アプリケーションと同時に実行されることのない第2アプリケーションを実行するプロセッサを検出し、
     前記プロセッサに前記第1アプリケーションを割り当てること
     を特徴とするスケジューリング方法。
  2.  前記アプリケーション情報テーブルは、
     アプリケーション毎に、前記アプリケーションのコンテキスト情報と、前記アプリケーションと同時に実行され得る他のアプリケーション情報とを含むこと
     を特徴とする請求項1に記載のスケジューリング方法。
  3.  前記第1アプリケーションと同時に実行されることのない第2アプリケーションを実行するプロセッサが複数あるときに、前記複数のプロセッサから負荷が最小であるプロセッサが前記第1アプリケーションに割り当てられること
     を特徴とする請求項1に記載のスケジューリング方法。
  4.  複数のプロセッサを管理するスケジューラが、
     第1アプリケーションが起動されたときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、
     前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択すること
     を特徴とするスケジューリング方法。
  5.  前記第2アプリケーションは、前記第1アプリケーションと同時に実行され得ること
     を特徴とする請求項4に記載のスケジューリング方法。
  6.  前記アプリケーション情報テーブルは、
     アプリケーション毎に、前記アプリケーションのコンテキスト情報と、前記アプリケーションと同時に実行され得る他のアプリケーション情報とを含むこと
     を特徴とする請求項4または請求項5に記載のスケジューリング方法。
  7.  前記負荷は、前記第2アプリケーションのコンテキストの切り替え時間と、前記第2アプリケーションと前記第1アプリケーションとの切り替え回数の期待値とに基づいて算出されること
     を特徴とする請求項4乃至請求項6の何れか一に記載のスケジューリング方法。
  8.  前記少なくとも一のプロセッサは2個以上のプロセッサであり、
     前記2個以上のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、
     複数の前記負荷の中で最小の負荷を有するプロセッサを前記第1プロセッサとして選択すること
     を特徴とする請求項4乃至請求項7の何れか一に記載のスケジューリング方法。
  9.  前記アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第3アプリケーションを前記第2アプリケーションに切り替えるときの負荷を計算し、
     前記負荷に基づいて前記第2アプリケーションを実行する第2プロセッサを選択すること
     を特徴とする請求項4乃至請求項8の何れか一に記載のスケジューリング方法。
  10.  複数のプロセッサと、
     前記複数のプロセッサを管理するスケジューラと、
     を含み、
     前記スケジューラは、
     第1アプリケーションの起動タスクを受信したときに、アプリケーション情報テーブルに基づいて、前記複数のプロセッサの少なくとも一のプロセッサで実行される第2アプリケーションを前記第1アプリケーションに切り替えるときの負荷を計算し、
     前記負荷に基づいて前記第1アプリケーションを実行する第1プロセッサを選択すること
     を特徴とするスケジューリングシステム。
PCT/JP2011/051118 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム WO2012098684A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2011/051118 WO2012098684A1 (ja) 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム
JP2012553538A JP5737298B2 (ja) 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム
US13/946,361 US9588817B2 (en) 2011-01-21 2013-07-19 Scheduling method and scheduling system for assigning application to processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/051118 WO2012098684A1 (ja) 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/946,361 Continuation US9588817B2 (en) 2011-01-21 2013-07-19 Scheduling method and scheduling system for assigning application to processor

Publications (1)

Publication Number Publication Date
WO2012098684A1 true WO2012098684A1 (ja) 2012-07-26

Family

ID=46515335

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/051118 WO2012098684A1 (ja) 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム

Country Status (3)

Country Link
US (1) US9588817B2 (ja)
JP (1) JP5737298B2 (ja)
WO (1) WO2012098684A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018018198A (ja) * 2016-07-26 2018-02-01 富士通株式会社 プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置
JP2020129329A (ja) * 2019-02-12 2020-08-27 日本電気株式会社 情報処理実行制御装置、情報処理実行制御システム、情報処理実行制御方法、及び、情報処理実行制御プログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008077295A (ja) * 2006-09-20 2008-04-03 Fujitsu Ltd 資源ノード決定プログラム、資源ノード制御プログラム、記録媒体、資源ノード決定装置、資源ノード、資源ノード決定方法および資源ノード制御方法
JP2008140120A (ja) * 2006-12-01 2008-06-19 Fujitsu Ltd 計算資源管理プログラム、計算資源管理装置および分散処理システム
WO2010010723A1 (ja) * 2008-07-22 2010-01-28 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3605978B2 (ja) 1997-01-17 2004-12-22 松下電器産業株式会社 マイクロコンピュータ
US7673304B2 (en) 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US20050050310A1 (en) 2003-07-15 2005-03-03 Bailey Daniel W. Method, system, and apparatus for improving multi-core processor performance
US7614055B2 (en) * 2004-06-14 2009-11-03 Alcatel-Lucent Usa Inc. Selecting a processor to run an executable of a distributed software application upon startup of the distributed software application
KR100942740B1 (ko) * 2005-08-09 2010-02-17 후지쯔 가부시끼가이샤 스케줄 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 및 스케줄 제어 방법
JP4629587B2 (ja) * 2006-01-18 2011-02-09 富士通株式会社 予約管理プログラム
US7444449B2 (en) * 2006-02-09 2008-10-28 Sony Ericsson Mobile Communications Ab Method, computer program product and computer system for controlling execution of an interruption routine
TW201009713A (en) * 2008-08-21 2010-03-01 Ind Tech Res Inst Multitasking processor and task switch method thereof
US8005950B1 (en) * 2008-12-09 2011-08-23 Google Inc. Application server scalability through runtime restrictions enforcement in a distributed application execution system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008077295A (ja) * 2006-09-20 2008-04-03 Fujitsu Ltd 資源ノード決定プログラム、資源ノード制御プログラム、記録媒体、資源ノード決定装置、資源ノード、資源ノード決定方法および資源ノード制御方法
JP2008140120A (ja) * 2006-12-01 2008-06-19 Fujitsu Ltd 計算資源管理プログラム、計算資源管理装置および分散処理システム
WO2010010723A1 (ja) * 2008-07-22 2010-01-28 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018018198A (ja) * 2016-07-26 2018-02-01 富士通株式会社 プログラマブルロジックデバイスの制御プログラム、制御方法及び情報処理装置
JP2020129329A (ja) * 2019-02-12 2020-08-27 日本電気株式会社 情報処理実行制御装置、情報処理実行制御システム、情報処理実行制御方法、及び、情報処理実行制御プログラム
JP7259380B2 (ja) 2019-02-12 2023-04-18 日本電気株式会社 情報処理実行制御装置、情報処理実行制御システム、情報処理実行制御方法、及び、情報処理実行制御プログラム

Also Published As

Publication number Publication date
JP5737298B2 (ja) 2015-06-17
US20130312002A1 (en) 2013-11-21
JPWO2012098684A1 (ja) 2014-06-09
US9588817B2 (en) 2017-03-07

Similar Documents

Publication Publication Date Title
KR101366075B1 (ko) 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
JP5516744B2 (ja) スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
US20140033220A1 (en) Process grouping for improved cache and memory affinity
US20100115510A1 (en) Virtual graphics device and methods thereof
JP2004171234A (ja) マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
CN108228482B (zh) 用于管理存储系统中的缓存设备的方法和系统
CN102822801A (zh) 响应于服务水平协议而分配计算系统功率水平
CN102473106A (zh) 虚拟环境中的资源分配
JP5737298B2 (ja) スケジューリング方法およびスケジューリングシステム
JP2007188523A (ja) タスク実行方法およびマルチプロセッサシステム
US9547576B2 (en) Multi-core processor system and control method
JP5321748B2 (ja) マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
US8862786B2 (en) Program execution with improved power efficiency
US20130298132A1 (en) Multi-core processor system and scheduling method
CN111061485A (zh) 任务处理方法、编译器、调度服务器和介质
CN101131654A (zh) 用于分发分派窗内的未使用的处理器循环的方法和系统
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
US10114649B2 (en) Thermal availability based instruction assignment for execution
JP2015036959A (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
JP5776813B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
CN114371911A (zh) 虚拟机调度方法、装置、电子设备和可读存储介质
JP5776776B2 (ja) データ処理システム、およびデータ処理方法
WO2013058396A1 (ja) タスク配置装置及びタスク配置方法
Qiao et al. An online workflow scheduling algorithm considering license limitation in heterogeneous environment
US8316384B2 (en) Input/output broker model

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012553538

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11856339

Country of ref document: EP

Kind code of ref document: A1