JP5345990B2 - Method and computer for processing a specific process in a short time - Google Patents
Method and computer for processing a specific process in a short time Download PDFInfo
- Publication number
- JP5345990B2 JP5345990B2 JP2010190752A JP2010190752A JP5345990B2 JP 5345990 B2 JP5345990 B2 JP 5345990B2 JP 2010190752 A JP2010190752 A JP 2010190752A JP 2010190752 A JP2010190752 A JP 2010190752A JP 5345990 B2 JP5345990 B2 JP 5345990B2
- Authority
- JP
- Japan
- Prior art keywords
- logical
- priority
- clock
- boost
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 417
- 230000008569 process Effects 0.000 title claims abstract description 369
- 238000012545 processing Methods 0.000 title claims description 46
- 238000004590 computer program Methods 0.000 claims description 13
- 238000013461 design Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 230000007423 decrease Effects 0.000 description 3
- 230000002155 anti-virotic effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000004886 process control Methods 0.000 description 2
- 238000007616 round robin method Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002040 relaxant effect Effects 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Landscapes
- Power Sources (AREA)
Abstract
Description
本発明は、特定のプロセスを短時間に処理する技術に関し、さらに詳細には、クロック・ブーストの可能なマルチ・プロセッサ環境で特定のプロセスを短時間に処理する技術に関する。 The present invention relates to a technique for processing a specific process in a short time, and more particularly to a technique for processing a specific process in a short time in a multi-processor environment capable of clock boosting.
マルチ・タスクのオペレーティング・システム(OS)は、スレッドに一度に連続して中央演算処理装置(CPU)を利用できる時間であるクォンタム(タイムスライス)を付与する。CPUにディスパッチされたスレッドは与えられたクォンタムからクロック・サイクルごとに一定の値を減算し、与えられたクォンタムが0になると実行可能キューの最後に配置され、それに代わって実行可能キューに登録された他のスレッドがディスパッチされる。このときスケジューラは各スレッドの優先度レベルを比較してディスパッチするスレッドを決定する。したがって優先度レベルが高いスレッドほど所定時間内におけるCPUの割り当て時間が長くなり早期に処理が完了する。 A multi-task operating system (OS) gives a thread a quantum (time slice) that is a time during which a central processing unit (CPU) can be used continuously at a time. The thread dispatched to the CPU subtracts a certain value from the given quantum every clock cycle, and when the given quantum reaches 0, it is placed at the end of the runnable queue and registered in the runnable queue instead. Other threads are dispatched. At this time, the scheduler compares the priority level of each thread to determine a thread to be dispatched. Therefore, the higher the priority level, the longer the CPU allocation time within a predetermined time and the earlier the processing is completed.
プロセスは、ユーザが操作しているウインドウを生成するフォアグラウンドのプロセスとその他のすべてのプロセスであるバックグラウンドのプロセスに分けることができる。ユーザは、システムがバックグラウンドのプロセスよりもフォアグラウンドのプロセスに対してすばやく応答することを望んでいる。OSは、フォアグラウンドのプロセスの優先度レベルを上げてバックグラウンドのプロセスよりも短時間で処理できるようにスケジューラを操作することができる。また、プロセスを生成するプログラムがスケジューラを操作して特定のプロセスの優先度レベルを上げることもできる。 The process can be divided into a foreground process that creates the window that the user is operating on and a background process that is all other processes. Users want the system to respond more quickly to foreground processes than to background processes. The OS can operate the scheduler so that the priority level of the foreground process can be increased and processing can be performed in a shorter time than the background process. In addition, a program for generating a process can operate the scheduler to increase the priority level of a specific process.
しかし、優先度レベルが上昇したプロセスは、他のプロセスの優先度レベルとの関係で相対的にCPUの割り当て時間が増加するだけであり、実行可能キューに登録されたバックグラウンドのプロセスの優先度レベルが同等またはそれ以上の場合はフォアグラウンドのプロセスの割り当て時間は増加しない。また、他のプロセスの優先度レベルが低い場合は、優先度レベルを上げたフォアグラウンドのプロセスによってCPUが独占されてしまい、他のプロセスにCPUが割り当てられるまでの時間が長くなってしまうといういわゆる飢餓状態の問題が発生する。プロセスの優先度レベルの操作による処理時間の短縮は、あくまで他のプロセスとの相対的な関係で有効になるためフォアグラウンドのプロセスをシステムに障害を与えないで確実に短時間で処理する方法としては十分ではない。 However, a process whose priority level has been increased only increases the CPU allocation time relative to the priority level of other processes, and the priority of background processes registered in the executable queue. If the level is equal or higher, the foreground process allocation time does not increase. In addition, when the priority level of other processes is low, the CPU is monopolized by the foreground process whose priority level has been raised, and so-called starvation that the time until the CPU is assigned to another process becomes longer. A state problem occurs. The reduction in processing time due to the operation of the process priority level is effective only in relation to other processes, so there is no way to ensure that foreground processes are processed in a short time without damaging the system. Not enough.
フォアグラウンドのプロセスにバックグラウンドのプロセスより多くのクォンタムを与えて短時間で処理する方法として、タイムスライス・ブーストまたはクォンタム・ブーストという手法がある。タイムスライス・ブーストでは、プロセスが保有するウインドウがフォアグラウンドに切り換わったときに当該プロセスの優先度レベルを上げてタイムスライスを増加させる。しかし、タイムスライス・ブーストは、当該CPUにおける他のプロセスより多くのクォンタムが与えられるというだけのもので、バックグラウンドのプロセスに対する相対的なレスポンス・タイムの改善であり、フォアグラウンドのプロセスの絶対的なレスポンス・タイムの改善につながるものではない。たとえば、実行可能キューにスレッドが1つしかない場合は、処理時間はそのスレッドを実行するCPUの動作周波数で決まり、それ以上は短縮することができない。 There is a technique called time slice boost or quantum boost as a method of giving a foreground process more quantum than a background process and processing in a short time. In time slice boost, when a window held by a process is switched to the foreground, the priority level of the process is increased to increase the time slice. However, time-slice boost is only given more quantum than other processes on the CPU, is an improvement in response time relative to background processes, and is an absolute foreground process. It does not lead to improved response time. For example, if there is only one thread in the executable queue, the processing time is determined by the operating frequency of the CPU that executes the thread and cannot be shortened beyond that.
特許文献1は、マルチプロセッシングの環境において、一層のパフォーマンスの向上および消費電力の低減を図る技術を開示する。同文献には、いずれのスレッド・ユニットが復帰時間の短いパワー・ステートに遷移しているかを示すシステム・パワー・ステート・フィルターを利用して所定のタスクに関するCPUアフィニティ・マスクを書き換え、スケジューラが当該所定のタスクをより復帰時間の短いパワー・ステートに遷移しているスレッド・ユニットに割り当てるようにしている。
特許文献2は、マルチ・コア・プロセッサにおいて、コア全部で集団的に走っているスレッドの統計的な予測に基づいてプロセッサの電圧および周波数の動作点を選択して、パフォーマンスを向上させる技術を開示する。具体的には、同時にアクティブになるコアの数を制限して全体としては電力制約条件に従いながら動作するコアの動作周波数を向上させている。 Patent Document 2 discloses a technique for improving performance by selecting operating points of processor voltage and frequency based on statistical prediction of threads collectively running in all cores in a multi-core processor. To do. Specifically, the number of cores that are simultaneously active is limited to improve the operating frequency of the core that operates while complying with the power constraint conditions as a whole.
非特許文献1は、マルチ・コア・プロセッサのいずれかのコアがアイドル状態のときであって、かつ電力、電流および温度に関する仕様の限界未満で動作している場合には、自動的に定格の動作周波数より高い周波数で動作させる技術を開示する。非特許文献2は、特定のプロセスを特定のプロセッサに割り当てることによりパフォーマンスを最適化するハード・アフィニティの手法を開示する。
Non-Patent
マルチ・プロセッサ・システムに対応するOSでは、複数のCPUを使用して同時に複数のプロセスを実行することができる。対象型マルチ・プロセッサ・システムでは、OSは各論理CPUを各プロセスに対して等価に扱う。OSはスケジューリングの際に全体として最も効率が高くなるようにプロセスを各CPUに関連付ける。このような特定のプロセスとCPUの関連性をプロセッサ・アフィニティまたはプロセッサ親和性という。プロセッサ・アフィニティには、同一条件のスレッドやプロセスをなるべく同じCPUに割り当てるようにスケジューリングするソフト・アフィニティという手法と能動的に特定のCPUに割り当てるハード・アフィニティという手法が存在する。 In an OS corresponding to a multiprocessor system, a plurality of processes can be executed simultaneously using a plurality of CPUs. In the target multiprocessor system, the OS treats each logical CPU equivalently for each process. The OS associates a process with each CPU so that the overall efficiency is highest during scheduling. Such an association between a specific process and the CPU is called processor affinity or processor affinity. There are two methods for processor affinity: soft affinity, which schedules threads and processes with the same condition to be assigned to the same CPU as much as possible, and hard affinity, which is actively assigned to a specific CPU.
ソフト・アフィニティによれば、L2キャッシュのデータやNUMA(Non-Uniform Memory Access )というアーキテクチャで使用するメモリのデータなどを有効に活用できるので、OSは一般的にスレッドにソフト・アフィニティを採用して最後に実行したのと同じCPUを割り当てるようにしている。これに対しハード・アフィニティの採用は、システムの性能をテストする場合やキャッシュのヒット率を特に高めた処理をする必要があるアプリケーションを実行する場合などのように、明らかにソフト・アフィニティを採用したOSのアルゴリズムよりも優れたパフォーマンスが期待できることが判明している場合に限定される。 According to soft affinity, L2 cache data and memory data used in the NUMA (Non-Uniform Memory Access) architecture can be used effectively, so the OS generally adopts soft affinity for threads. The same CPU as that executed last is assigned. On the other hand, adopting hard affinity obviously adopted soft affinity, such as when testing system performance or executing an application that requires processing with a particularly high cache hit rate. This is limited to cases where it is known that a performance superior to that of the OS algorithm can be expected.
ところで、インテル社ではマルチ・コアCPUにおいて、アイドルのコアCPUが存在する場合に他のコアCPUを基準動作周波数よりも高い周波数で動作させるターボ・ブースト・テクノロジーを導入している。ターボ・ブースト・テクノロジーでは、CPUは温度または消費電力などの条件が成立したときに一部のCPUコアの動作周波数が上昇するが、スケジューラはCPUコアの動作周波数を認識することなく所定のアルゴリズムでプロセスをスケジューリングする。よって、ターボ・ブースト・テクノロジーを採用したときには、動作周波数が上昇するCPUコアには任意のプロセスが割り当てられ、スケジューラにより偶然にそのCPUに割り当てられたプロセスだけが高い動作周波数で実行される。したがって、ターボ・ブースト・テクノロジーを採用しただけでは、フォアグラウンドのプロセスの処理時間を確実に短縮することができない。 By the way, in the multi-core CPU, Intel has introduced turbo boost technology that operates other core CPUs at a frequency higher than the reference operating frequency when an idle core CPU exists. In Turbo Boost Technology, the operating frequency of some CPU cores rises when conditions such as temperature or power consumption are met, but the scheduler uses a predetermined algorithm without recognizing the operating frequency of the CPU core. Schedule the process. Therefore, when the turbo boost technology is adopted, an arbitrary process is assigned to the CPU core whose operating frequency increases, and only the process that is accidentally assigned to the CPU by the scheduler is executed at a high operating frequency. Therefore, the processing time of the foreground process cannot be reliably shortened only by adopting the turbo boost technology.
そこで本発明の目的は、マルチ・プロセッサ環境で特定のプロセスの処理時間を短縮する方法を提供することにある。さらに本発明の目的はフォアグラウインドのプロセスをバックグラウンドのプロセスよりも高い動作周波数の論理CPUで実行する機会を増大する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することにある。 Therefore, an object of the present invention is to provide a method for reducing the processing time of a specific process in a multi-processor environment. It is a further object of the present invention to provide a method that increases the chances of executing a foreground process on a logical CPU having a higher operating frequency than a background process. A further object of the present invention is to provide a computer program and a computer that realize such a method.
本発明にかかるコンピュータは、所定の条件が成立したときに一時的に動作周波数を上昇させるクロック・ブーストが可能な複数の論理プロセッサを備える。制御プログラムは複数の論理プロセッサのいずれかにクロック・ブーストの設定をする。クロック・ブーストの設定をする論理プロセッサは、単数であっても複数であってもよい。また、複数の論理プロセッサは複数のプロセッサで実現してもよいし、1つのプロセッサをソフトウエアで仮想化することで実現してもよい。クロック・ブーストの設定がされた論理プロセッサは、所定の条件が成立している間に限り基本動作周波数よりも高い動作周波数で動作し、所定の条件が成立しない状態になると基本動作周波数に戻る。基本動作周波数よりも高い動作周波数は、段階的に設定することができる。 The computer according to the present invention includes a plurality of logical processors capable of clock boosting that temporarily increases the operating frequency when a predetermined condition is satisfied. The control program sets the clock boost to one of the plurality of logical processors. There may be one or more logical processors for setting the clock boost. The plurality of logical processors may be realized by a plurality of processors, or may be realized by virtualizing one processor with software. The logic processor for which the clock boost is set operates at an operating frequency higher than the basic operating frequency only while the predetermined condition is satisfied, and returns to the basic operating frequency when the predetermined condition is not satisfied. An operating frequency higher than the basic operating frequency can be set in stages.
所定の条件は、アイドル状態の論理プロセッサの存在、消費電力、消費電流、および温度に基づいて設定することができる。さらに複数の論理プロセッサは、消費電力が小さい状態が継続するような場合は、アイドル状態の論理プロセッサが存在しない状態、電流が基準値を超えた状態、または消費電力が基準値を超えた状態であっても、温度が基準値を超えない限り高い動作周波数で動作するものであってもよい。このように消費電力が一時的に消費電力の基準値を超えた状態でプロセッサを動作させると、動作周波数を一層高くすることができるため、より短時間でプロセスを処理することができる。 The predetermined condition can be set based on the presence of an idle logical processor, power consumption, current consumption, and temperature. In addition, if multiple logic processors continue to have low power consumption, there are no idle logical processors, current exceeds the reference value, or power consumption exceeds the reference value. Even if it exists, it may operate at a high operating frequency as long as the temperature does not exceed the reference value. When the processor is operated in a state where the power consumption temporarily exceeds the power consumption reference value in this way, the operating frequency can be further increased, so that the process can be processed in a shorter time.
制御プログラムは、コンピュータに生成された複数のプロセスの中から短時間で処理することが要求されているプロセスを優先プロセスとして選択する。優先プロセスは、ウインドウを生成するプロセス、高いスケジューリングの優先度が設定されているプロセス、高いディスクI/O処理の優先度が設定されているプロセスとすることができる。制御プログラムはOSと協働して、優先プロセスをクロック・ブーストの設定がされた単数または複数の論理プロセッサだけにディスパッチして優先実行する。 The control program selects, as a priority process, a process that is required to be processed in a short time from among a plurality of processes generated by the computer. The priority process may be a process for generating a window, a process for which high scheduling priority is set, or a process for which high disk I / O processing priority is set. In cooperation with the OS, the control program dispatches the priority process to only one or a plurality of logical processors for which clock boost is set and executes the priority process.
クロック・ブーストの設定がされた論理プロセッサは、条件が成立したときには動作周波数が増大するため、そこで実行されるいかなるプロセスも未設定の論理プロセッサよりも処理時間が短縮されるので優先プロセスがディスパッチされるまでの待ち時間が短縮される。さらに優先プロセスは、クロック・ブーストの設定がされた論理プロセッサだけにスケジューリングされるため、実際にクロック・ブーストされた状態の論理プロセッサで実行される確率が高くなり一層処理時間が短縮される。本発明の手法はプロセスの優先度レベルを変える手法とは異なり、論理プロセッサが一時的に高い動作周波数で動作する特性を利用するものであるため、優先プロセスの絶対的な処理時間を短縮することができる。また、優先度レベルの低い他のプロセスを飢餓状態に陥らせることがない。 A logical processor with a clock boost setting will increase its operating frequency when the condition is met, so any process executed there will have a shorter processing time than an unconfigured logical processor, and a priority process will be dispatched. Waiting time is shortened. Furthermore, since the priority process is scheduled only to the logical processor set with the clock boost, the probability that it is executed by the logical processor in the actual clock boosted state is increased, and the processing time is further reduced. Unlike the method of changing the priority level of the process, the method of the present invention uses the characteristic that the logical processor temporarily operates at a high operating frequency, so that the absolute processing time of the priority process is shortened. Can do. Also, other processes with lower priority levels are not starved.
クロック・ブーストの設定がされた論理プロセッサとのアフィニティに基づいてスケジューリングするために、制御プログラムはOSがディフォルトで作成したアフィニティ・マスクまたはプロセスを生成するプログラムが書き換えたアフィニティ・マスクのようなオリジナルのアフィニティ・マスクのビット・パターンを、クロック・ブーストの設定状態に基づいて書き換えることができる。具体的には、アフィニティ・マスクは、オリジナルのアフィニティ・マスクと複数の論理プロセッサのそれぞれに対するクロック・ブーストの設定状態を示すマスク・ビットを論理積演算して書き換えることができる。 In order to schedule based on the affinity with the logical processor with the clock boost setting, the control program can create an original mask such as an affinity mask created by the OS or an affinity mask rewritten by the program that generates the process. The bit pattern of the affinity mask can be rewritten based on the setting state of the clock boost. Specifically, the affinity mask can be rewritten by performing an AND operation on the original affinity mask and a mask bit indicating the setting state of the clock boost for each of the plurality of logical processors.
論理積演算をすることで、優先プロセスをプログラムが指定した論理プロセッサ以外の論理プロセッサで優先実行するような事態を排除することができる。また、いずれの論理プロセッサも当該プロセスに対して等価であることが判明しているような場合は、アフィニティ・マスクを、クロック・ブーストの設定がされた論理プロセッサだけを指定するように書き換えてもよい。このように書き換えることで、優先プロセスを確実にクロック・ブーストの設定がされた論理プロセッサだけで実行することができるようになる。 By performing an AND operation, it is possible to eliminate a situation in which the priority process is preferentially executed by a logical processor other than the logical processor designated by the program. If any logical processor is found to be equivalent to the process, the affinity mask can be rewritten to specify only the logical processor with the clock boost setting. Good. By rewriting in this way, the priority process can be executed only by the logical processor in which the clock boost is set reliably.
本発明の手法は、新たに生成されるプロセスに対してその都度適用することができる。制御プログラムは、クロック・ブーストの設定がされた論理プロセッサの使用率を取得し、新たに生成された優先プロセスについては、使用率が所定値未満のときにだけ優先実行されるようにアフィニティ・マスクを書き換えることができる。使用率が所定値以上のときは、プロセス・スケジューラが、クロック・ブーストの設定がされた論理プロセッサだけでなく、未設定の論理プロセッサも含めてディスパッチするようにアフィニティを緩和した方が短時間で処理できる確率が高くなる場合があるからである。 The method of the present invention can be applied to a newly generated process each time. The control program obtains the usage rate of the logical processor for which clock boost is set, and the affinity mask is set so that the newly generated priority process is preferentially executed only when the usage rate is less than the predetermined value. Can be rewritten. When the usage rate is equal to or higher than the specified value, it is faster to relax the affinity so that the process scheduler dispatches not only logical processors with clock boost settings but also unconfigured logical processors. This is because the probability of being able to be processed may increase.
さらに制御プログラムは、論理プロセッサの温度を取得し、新たに生成された優先プロセスについては、温度が所定値未満のときにだけ優先実行されるようにアフィニティ・マスクを書き換えることができる。論理プロセッサの温度が高いときは、クロック・ブーストの設定がされていても実際に高い動作周波数で動作する確率が低いので、プロセス・スケジューラがクロック・ブーストの設定がされた論理プロセッサだけで実行するよりも他の論理プロセッサも含めて実行する論理プロセッサを選択した方が短時間で処理できる確率が高くなる場合があるからである。 Further, the control program can acquire the temperature of the logical processor, and the affinity mask can be rewritten so that the newly generated priority process is preferentially executed only when the temperature is lower than a predetermined value. When the logic processor is hot, the process scheduler runs only on the logic processor with the clock boost setting because the probability of actually operating at a high operating frequency is low even if the clock boost setting is set. This is because the probability of processing in a shorter time may be higher when a logical processor to be executed including other logical processors is selected.
クロック・ブーストの設定がされている論理プロセッサは非優先プロセスも実行し、また、各プロセスが論理プロセッサに与える負荷も時間的に変化する。クロック・ブーストの設定がされている論理プロセッサの使用率が所定値以上のときは、さらにクロック・ブーストの設定が可能な論理プロセッサが存在するか否かを判断することができる。そして、クロック・ブーストの設定がされている論理プロセッサの使用率が所定値以上でかつクロック・ブーストの設定が可能な論理プロセッサが存在するときに、新たな論理プロセッサにクロック・ブーストの追加的な設定をすることで、負荷の分散を図ることができる。 A logical processor in which clock boost is set also executes a non-priority process, and a load applied to the logical processor by each process also changes with time. When the usage rate of the logical processor for which clock boost is set is greater than or equal to a predetermined value, it can be determined whether or not there is a logical processor that can be further set for clock boost. Then, when the usage rate of the logical processor with the clock boost setting exceeds a predetermined value and there is a logical processor capable of setting the clock boost, an additional clock boost is added to the new logical processor. The load can be distributed by setting.
このとき優先実行されている優先プロセスおよび優先実行されていない優先プロセスまたはいずれか一方について、追加的にクロック・ブーストの設定がされた論理プロセッサも含めてディスパッチされるようにアフィニティ・マスクを書き換えることができる。優先プロセスの中には、生成されたときの論理プロセッサの使用率または論理プロセッサの温度などの条件により、優先実行されないものが存在する。クロック・ブーストの設定がされた論理プロセッサの使用率が所定値未満になったときに優先実行されない優先プロセスが存在する場合には、当該優先プロセスが優先実行されるようにアフィニティ・マスクを書き換えることができる。したがって、プロセスが生成されたときの使用率や温度の条件で一旦は優先実行されないことになった優先プロセスをその後の論理プロセッサの動作状態に基づいて優先実行されるようにすることができる。 At this time, rewrite the affinity mask so that the priority process that is preferentially executed and / or the priority process that is not preferentially executed are dispatched including the logical processor that is additionally set with clock boost. Can do. Some priority processes are not preferentially executed due to conditions such as the usage rate of the logical processor or the temperature of the logical processor when it is created. If there is a priority process that is not preferentially executed when the usage rate of a logical processor for which clock boost is set falls below a predetermined value, the affinity mask is rewritten so that the priority process is preferentially executed. Can do. Therefore, it is possible to preferentially execute a priority process that has not been preferentially executed once under the conditions of use rate and temperature when the process is generated, based on the subsequent operation state of the logical processor.
クロック・ブーストの設定をする論理プロセッサの数を増大させると、現実にクロック・ブーストする論理プロセッサに対する優先プロセスのアフィニティが薄れてしまい非優先プロセスとの差が少なくなっていく。したがって、全体の論理プロセッサの中でクロック・ブーストの設定ができる論理プロセッサの数には実質的な限界がある。よって、クロック・ブーストの設定がされた論理プロセッサの使用率が所定値以上まで上昇したときに、クロック・ブーストの追加的な設定が可能な論理プロセッサが存在しない場合がある。このとき、クロック・ブーストが未設定の論理プロセッサの使用率が所定値未満のときには、制御プログラムはクロック・ブーストが未設定の論理プロセッサでも優先プロセスが実行されるようにアフィニティ・マスクを書き換えて優先プロセスのアフィニティを緩和することができる。 When the number of logical processors for setting clock boost is increased, the affinity of the priority process with respect to the logical processor that actually performs the clock boost is reduced, and the difference from the non-priority process is reduced. Thus, there is a substantial limit to the number of logical processors that can be set for clock boost among the overall logical processors. Therefore, when the usage rate of the logical processor for which the clock boost is set increases to a predetermined value or more, there may be no logical processor that can additionally set the clock boost. At this time, if the usage rate of the logical processor for which clock boost is not set is less than the predetermined value, the control program rewrites the affinity mask so that the priority process is executed even for the logical processor for which clock boost is not set. Process affinity can be relaxed.
本発明により、マルチ・プロセッサ環境で特定のプロセスの処理時間を短縮する方法を提供することができた。さらに本発明によりフォアグラウンドのプロセスをバックグラウンドのプロセスよりも高い動作周波数の論理CPUで実行する機会を増大する方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することができた。 The present invention has provided a method for reducing the processing time of a specific process in a multi-processor environment. Furthermore, the present invention can provide a method for increasing the chance that a foreground process is executed by a logical CPU having a higher operating frequency than a background process. Further, according to the present invention, it is possible to provide a computer program and a computer that realize such a method.
[コンピュータ・システムの構成]
図1は、本実施の形態にかかるコンピュータ・システム10の主要なハードウエア構成を示す機能ブロック図である。コンピュータ・システム10は、それぞれバス23に接続されたCPUパッケージ11、メイン・メモリ13、入力デバイス15、ハード・ディスク・ドライブ(HDD)17、液晶表示装置(LCD)19、およびBIOS_ROM21などを含んでいる。CPUパッケージ11は、複数のCPUコアを1つのパッケージに収めたマルチ・コア・プロセッサで、一例としてインテル社のターボ・ブースト・テクノロジーをサポートしている。
[Computer system configuration]
FIG. 1 is a functional block diagram showing a main hardware configuration of a
ターボ・ブースト・テクノロジーは、CPUパッケージ11に熱的な余裕があるときにいずれかのCPUコアの動作周波数を一時的に上昇させてパフォーマンスを向上させながら、熱設計消費電力(TDP)の範囲に収めるという手法である。CPUパッケージ11は、OSが一時的なパフォーマンスの増大を要求し、さらに直近の所定時間の間測定した消費電力および電流の平均値がTDPなどの所定値以下ならびにCPUパッケージの温度が所定値以下の場合に、何らかの契機を捕らえていずれかのCPUコアの動作周波数を上昇させる。また条件が満たされなくなったときには、CPUコアの動作周波数を基本動作周波数に戻す。
Turbo Boost Technology is within the range of thermal design power consumption (TDP) while improving the performance by temporarily increasing the operating frequency of any CPU core when
このように一時的にCPUコアの動作周波数が上昇することをクロック・ブーストといい、クロック・ブーストするための消費電力、消費電流、および温度をブースト条件ということにする。クロック・ブーストする際には、特定のCPUコアが段階的に動作周波数を上昇させたり、クロック・ブーストするCPUコアを追加的に増やしたりすることができる。クロック・ブーストした高い動作周波数から基本動作周波数に戻るときはその逆の手順で行うことができる。 Such a temporary increase in the operating frequency of the CPU core is referred to as clock boost, and power consumption, current consumption, and temperature for clock boost are referred to as boost conditions. When performing clock boost, a specific CPU core can gradually increase the operating frequency, or the number of CPU cores to be clock boosted can be increased. When returning to the basic operating frequency from the clock-boosted high operating frequency, the reverse procedure can be used.
クロック・ブーストをさせる契機としては、一部のCPUコアのアイドル状態を検知する方法、環境温度の変化を利用する方法、およびプラットフォーム温度の変化を利用する方法などがある。またインテル社の新世代のターボ・ブースト・テクノロジーでは、CPUパッケージの周囲のプラットフォームまたはCPUパッケージの消費電力や温度が低下しているときに、消費電力や温度が上限に到達しない限り一時的にTDPを越えて動作周波数を上昇させる。 The trigger for clock boost includes a method of detecting an idle state of some CPU cores, a method of using a change in environmental temperature, and a method of using a change in platform temperature. In addition, Intel's new generation of turbo-boost technology will temporarily make TDP when the power consumption or temperature of the platform surrounding the CPU package or the CPU package is low, unless the power consumption or temperature reaches the upper limit. Increase the operating frequency beyond.
このような新世代のターボ・ブースト・テクノロジーでは、プラットフォームの消費電力や温度が低い状態のときに高負荷のアプリケーションを実行すると、それまでのヘッドルームを利用して実際の消費電力や温度が基準値に上昇するまでの短時間だけ以前のターボ・ブースト・テクノロジーよりも一層高い動作周波数で動作させることができるのでレスポンス・タイムを大幅に短縮できるという利点がある。旧世代および新世代のいずれのターボ・ブースト・テクノロジーでも、特定のプロセスを短時間で処理する目的で利用するためには、特定のプロセスが常にクロック・ブーストするCPUコアにスケジューリングされる必要がある。 With these new generations of turbo boost technology, if you run high-load applications when the platform power consumption and temperature are low, the actual power consumption and temperature will be used as a reference using the previous headroom. Since it can be operated at a higher operating frequency than the previous turbo boost technology only for a short time until it rises to the value, there is an advantage that the response time can be greatly shortened. Both old and new generation turbo boost technologies require a specific process to be scheduled on a CPU core that always clock boosts in order to use that specific process for a short time. .
なお、本発明はインテル社のターボ・ブースト・テクノロジーをサポートするマルチ・プロセッサ・システムに限定するものではなく、同等のクロック・ブーストを実行できる他のマルチ・プロセッサ・システムに適用することも可能である。さらに、本発明は1つのコンピュータ・システムにシングル・コアのCPUパッケージを複数設けて、その一部のCPUパッケージだけをクロック・ブーストするような場合にも適用できる。また、インテル社のハイパー・スレッディング(商標)という技術では、1つのプロセッサ・コアをOSに対して複数のプロセッサ・コアのように動作させる。本発明は、このような仮想化されたマルチ・プロセッサに適用することもできる。 Note that the present invention is not limited to multi-processor systems that support Intel's turbo boost technology, but can be applied to other multi-processor systems that can perform equivalent clock boost. is there. Further, the present invention can be applied to a case where a plurality of single core CPU packages are provided in one computer system and only a part of the CPU packages are clock boosted. In addition, in the technology called Intel's Hyper-Threading (trademark), one processor core is caused to operate like a plurality of processor cores with respect to the OS. The present invention can also be applied to such virtualized multiprocessors.
さらに、インテル社のインテル(登録商標)VTやAMD社のAMD−Vなどのようなソフトウエアで仮想化することでマルチ・プロセッサ環境を実現するシステムに適用することもできる。したがって、以後、クロック・ブーストの対象となるマルチ・プロセッサの単位を、ハードウエアおよびソフトウエアのいずれで実現する場合も含める意味で論理CPUということにする。BIOS_ROM21は、ACPI規格に適合するBIOSを格納している。
Furthermore, the present invention can be applied to a system that realizes a multi-processor environment by virtualizing with software such as Intel (registered trademark) VT of Intel Corporation or AMD-V of AMD Corporation. Therefore, hereinafter, the multi-processor unit that is the target of clock boosting will be referred to as a logical CPU in the sense that it includes both hardware and software. The
[優先プロセス]
本実施の形態では、プロセスまたはその実行単位であるスレッドを優先順位が高く高速処理が要求されるフォアグラウンドのプロセス(以下、優先プロセスという。)をそれ以外のバックグラウンドのプロセス(以下、非優先プロセスという。)から区分する。すべてのプロセスは最低1つのスレッドを保有しており1つまたは複数のスレッドがCPUパッケージ11に対するスケジューリングの対象となって実行される。したがって、プロセスの実行といった場合はそのプロセスに含まれるスレッドを実行することを意味し、プロセスに対する設定はそれがスレッドに引き継がれる場合はスレッドに対する設定をも意味する。
[Priority process]
In this embodiment, a foreground process (hereinafter referred to as a priority process) in which a process or a thread that is an execution unit of the process has a high priority and a high-speed process is required is referred to as another background process (hereinafter referred to as a non-priority process). And so on. All processes have at least one thread, and one or more threads are executed as scheduling targets for the
コンピュータ・システムを利用するユーザにとってユーザ・インターフェースのプロセスには短いレスポンス・タイムを期待するのが一般的である。したがって、優先プロセスの第1のグループは、ウインドウを作成しかつ実際にそれをLCD19に表示させるユーザ・インターフェースのプロセスとして定義する。なお、ユーザ・インターフェースのプロセスの中で、ウインドウを一番手前に表示しているフォアグラウンドのウインドウを表示しているプロセスをさらに優先度が高い優先プロセスとして定義することもできる。
It is common for a user using a computer system to expect a short response time for the user interface process. Thus, the first group of priority processes is defined as the user interface process that creates the window and actually displays it on the
OSのスケジューラは、スレッドの優先度レベルを基準にして論理CPUにディスパッチするスレッドを選択する。スレッドの優先度レベルは、プロセスの優先度クラスと当該プロセス内のスレッドに割り当てられた相対優先度によって決まる。プログラムは、プロセスを生成するときに優先度クラスを設定し、スレッドを生成するときに相対優先度を設定することができる。優先度レベルの高いスレッドは、優先度レベルの低いスレッドよりも優先的にディスパッチされるので所定時間における論理CPUの割り当て時間が長くなり短い時間で処理することができる。ユーザは優先度クラスの高いスレッドが短時間で処理されることを期待しているので、優先プロセスの第2のグループは優先度クラスまたは優先度レベルの高いプロセスとして定義する。 The OS scheduler selects a thread to be dispatched to the logical CPU based on the priority level of the thread. The priority level of a thread is determined by the priority class of the process and the relative priority assigned to the threads in the process. A program can set a priority class when creating a process and set a relative priority when creating a thread. Since a thread with a high priority level is dispatched with a higher priority than a thread with a low priority level, the allocation time of a logical CPU in a predetermined time becomes longer and can be processed in a shorter time. Since the user expects a thread with a high priority class to be processed in a short time, the second group of priority processes is defined as a priority class or a process with a high priority level.
プロセッサの動作周波数が上昇することに伴いディスクI/Oがボトルネックになる場合が生じてくる。これを解決するために、たとえば、Windows Vista(登録商標)では、バックグラウンドで実行するウイルス対策プログラム、デフラグメンテーションのプログラム、またはメールの送受信プログラムなどのプロセスがフォアグラウンドのプロセスに影響を与えないように、バックグラウンドのプロセスのI/O処理優先度を下げることができる。したがって、優先プロセスの第3のグループはディスクI/O優先度の高いスレッドとして定義する。さらに、第1のグループから第3のグループのいずれにも属さないがユーザの個別の事情で優先プロセスの対象にする必要があるコンパイラやウイルス対策プログラムなどのプロセスを第4のグループの優先プロセスとして定義する。 As the operating frequency of the processor increases, the disk I / O may become a bottleneck. In order to solve this problem, for example, in Windows Vista (registered trademark), a process such as an anti-virus program, a defragmentation program, or a mail sending / receiving program running in the background is not affected. The I / O processing priority of the background process can be lowered. Therefore, the third group of priority processes is defined as a thread with a high disk I / O priority. Furthermore, a process such as a compiler or an anti-virus program that does not belong to any of the first group to the third group but needs to be a target of a priority process due to individual circumstances of the user is set as a priority process of the fourth group Define.
[優先プロセス処理システムの構成]
図2は、コンピュータ10において実現する優先プロセス処理システムのハードウエアおよびソフトウエアの構成を示す機能ブロック図である。優先プロセス処理システム100は、主として制御プログラム101、OS150、ACPIインターフェース170およびCPUパッケージ11で構成することができる。ただし、ソフトウエアがCPUパッケージ11で実行されて機能を発揮するためにはメイン・メモリ13およびバス23などの他のデバイスを利用する必要があるが、本発明の説明には特に必要がないので図2からは除いている。
[Configuration of priority process processing system]
FIG. 2 is a functional block diagram showing a hardware and software configuration of the priority process processing system realized in the
CPUパッケージ11は、4つの論理CPU61、63、65、67とダイの温度を検出する温度センサ(図示せず)を含んでいる。CPUパッケージ11は、ACPIインターフェース170からCPUパッケージ11のブースト条件に関するデータおよびPステートを受け取って所定のアルゴリズムで1つまたは複数の論理CPUに対して自律的にクロック・ブーストの制御をすることができる。すなわち、CPUパッケージ11によるクロック・ブーストの制御は、OS150によるスケジューリングからは独立して行われる。また、OS150はCPUパッケージ11の中でいずれがクロック・ブーストの設定がされた論理CPUであるか、および現在実際にクロック・ブーストしているか否かを認識しない。
The
制御プログラム101は、優先プロセスをCPUパッケージ11において短時間で処理するためにOS150と協働して主体的な処理をする。具体的な処理の内容は、図3〜図6のフローチャートによる優先処理の手順において説明する。ホワイト・リスト103は、制御プログラム101が特定することができない第4のグループの優先プロセスを生成するプログラムの識別子を記録する。あるいは第1のグループから第3のグループの優先プロセスを制御プログラム101が特定しないで、ホワイト・リストにすべての優先プロセスを生成するプログラムの識別子を登録してもよい。ユーザはあらかじめ制御プログラム101が提供するインターフェースを通じてホワイト・リスト103にそのようなプログラムの識別子を登録することができる。
The
パフォーマンス・フィルタ105は、論理CPU61、63、65、67の数に対応する4ビットのマスク・ビットで、ブースト条件が成立したときにクロック・ブーストする論理CPUの識別子を登録する。制御プログラム101は、動作を開始したときにシステム・コール関数を呼び出してOS150またはACPIインターフェース170から有効な論理CPUの識別子を取得し、その中の一部の論理CPUをクロック・ブーストの対象として選択してパフォーマンス・フィルタ105にビット・パターンを設定する。制御プログラム101がパフォーマンス・フィルタ105にクロック・ブーストの対象として設定した論理CPUに対応するACPIレジスタにPステートを設定することで、当該論理CPUに対するクロック・ブーストの設定が有効になる。
The performance filter 105 is a 4-bit mask bit corresponding to the number of
クロック・ブーストの対象になった論理CPUは、ブースト条件が成立したときに限り一時的に動作周波数が増大するが、クロック・ブーストの設定がされた複数の論理CPUが実際にすべて同時にクロック・ブーストすることが保証されているわけではない。クロック・ブーストの設定をした論理CPUの数が増えるほど、実際にクロック・ブーストする時間的な割合が低下する論理CPUが増加する。そのような論理CPUが割り当てられた優先プロセスは、クロック・ブーストの恩恵を受けることができない。すべての論理CPUにクロック・ブーストの設定をすれば、優先プロセスと非優先プロセスのプロセッサ・アフィニティには差がなくなる。 The logical CPU that is the target of clock boosting temporarily increases its operating frequency only when the boost condition is satisfied, but the multiple logical CPUs that are set to clock boost are actually all at the same time. It is not guaranteed to do. As the number of logical CPUs for which clock boost is set increases, the number of logical CPUs for which the time ratio for actual clock boosting decreases increases. A priority process that is assigned such a logical CPU cannot benefit from clock boost. If clock boost is set for all logical CPUs, there is no difference in processor affinity between the priority process and the non-priority process.
したがって、全体の論理CPUの数に対してクロック・ブーストを設定する論理CPUの数の割合は適切に選定する必要がある。制御プログラム101は、一例として最初にディフォルトとして全体の50%の数の論理CPUまたは最低の数の論理CPUをクロック・ブーストの対象に選定し、その後、クロック・ブーストの対象になった論理CPUのCPU使用率が所定値以上のときに追加したり、所定値未満になったときに減らしたりして最適なクロック・ブーストの設定をすることができる。
Accordingly, it is necessary to appropriately select the ratio of the number of logical CPUs for setting the clock boost to the total number of logical CPUs. As an example, the
プロセス・リスト107は、優先プロセスについて作成されたアフィニティ・マスクのビット・パターンを登録する。制御プログラム101はシステム・コール関数を呼び出して、その時点で生成されているプロセスをエニュメレーションしたりあるいは新たに生成されるプロセスをフックしたりして、各プロセスが優先プロセスであるか否かを判断し、さらにそのアフィニティ・マスクのビット・パターンをプロセス・リスト107に登録する。
The
制御プログラム101は、プロセス・リスト107に、優先プロセスについてOS150がディフォルトで設定したアフィニティ・マスクのビット・パターン、および当該プロセスを生成したプログラムがディフォルトのアフィニティ・マスクを書き換えた後のビット・パターンを登録する。以後、この2種類のアフィニティ・マスクをオリジナルのアフィニティ・マスクという。プロセス・リスト107にはさらに、制御プログラム101がオリジナルのアフィニティ・マスクを書き換えたあとのビット・パターンも登録する。
The
CPU使用率メータ151は、各論理CPU61、63、65、67のCPU使用率を測定する。CPU使用率Yは、アイドル・プロセスのユーザ・モード時間をUi、アイドル・プロセスのカーネル・モード時間をKi、経過時間をEtとしたときに次の式で所定のプログラムが計算することができる。
Y=(1−(Ui+Ki)/Et)×100%
The CPU
Y = (1− (Ui + Ki) / Et) × 100%
プロセス・スケジューラ153は、アフィニティ・マスク155に基づいて所定のアルゴリズムでスレッドを割り当てる論理CPU61、63、65、67を決定し実行可能キュー161、163、165、167からディスパッチする。プログラムは、プロセスを生成する際にプロセスの優先度クラスを設定し、さらに、スレッドの相対優先度を設定することができる。OS150は優先度クラスと相対優先度に基づいて、スレッドの優先度レベルを決定する。プロセス・スケジューラ153は、各スレッドの優先度レベルに基づいてスレッドをディスパッチする順序を決定する。
The
アフィニティ・マスク155は、OS150がプロセスごとに生成するマスク・ビットで、ビット数は論理CPU61、63、65、67の数に対応する。アフィニティ・マスク155はオリジナルが維持されたものであったり、制御プログラム101によって書き換えられたものであったりする。アフィニティ・マスク155のビット・パターンは当該プロセスのプロセッサ・アフィニティを示し、当該プロセスが実行される論理CPUを指定する。あるプロセスについて生成されたアフィニティ・マスク155のビット・パターンは、そのプロセスに帰属するスレッドにも引き継がれる。したがって、アフィニティ・マスク155はプロセスに対応すると同時に配下のスレッドにも対応する。アフィニティ・マスク155および優先度レベルは、プロセス・スケジューラ153が実行可能キューに登録してスケジューリングをする対象となるデータ構造体の一部となる。
The
プロセス・スケジューラ153は、アフィニティ・マスク155のビット・パターンに基づいて各スレッドについてディスパッチする論理CPUを決める。アフィニティ・マスク155に複数のビットが設定されている場合は、プロセス・スケジューラ153は設定されている論理CPUのいずれかにラウンド・ロビン方式などの所定のアルゴリズムに基づいてディスパッチする。実行可能キュー157には、実行可能状態になったスレッドのデータ構造体が登録される。各実行可能キュー161、163、165、167は、各論理CPU61、63、65、67に対応する。
The
プロセス・スケジューラ153は、ディフォルトで用意した所定のクォンタムを付与したスレッドのデータ構造体を実行可能キュー157に登録する。さらに、アフィニティ・マスク155のビット・パターンにより指定された論理CPUに対応する実行可能キュー161、163、165、167のいずれかに登録する。実行可能キュー161、163、165、167のいずれかに登録されたスレッドは、他のスレッドとの優先度レベルに応じてやがて対応する論理CPU61、63、65、67にディスパッチされる。
The
たとえば、論理CPU61にディスパッチされたスレッドは与えられたクォンタムを消費すると対応する実行可能キュー161の最後に登録される。また、実行の途中で実行可能キュー161により優先度レベルの高いスレッドが登録されるとクォンタムをすべて消費する前であってもプリエンプトされて実行可能キュー161の先頭に登録される。I/O待ちなどのために待機状態に入ったスレッドは、再度実行可能キュー157に登録されその後実行可能キュー161、163、165、167を経由していずれかの論理CPU61、63、65、67にディスパッチされる。
For example, when a thread dispatched to the
ACPIインターフェース170は、BIOSおよびACPIレジスタ(図示せず。)で構成される。BIOSは、ACPIレジスタにPステートを設定することでCPUパッケージ11のクロック・ブーストを制御することができる。BIOSは、ACPIレジスタに_PSS(Performance Supported States)、_PSD(P-State Dependency)、および_PPC(Performance Present Capabilities)という3つのオブジェクトを設定することで、所定の論理CPUを所定の動作周波数にクロック・ブーストすることができる。
The
一例では_PPCに0を設定されたP0ステートの論理CPUはブースト条件が成立したときにクロック・ブーストして_PSSに設定された動作周波数を上限の動作周波数として動作する。_PPCに1が設定されたP1ステートの論理CPUはブースト条件が成立してもクロック・ブーストしないで基本動作周波数を上限の動作周波数として動作する。制御プログラム101は、パフォーマンス・フィルタ105のビット・パターンをACPIインターフェース170のACPIレジスタを通じてクロック・ブーストの対象となる論理CPUにPステートとして設定する。ACPIインターフェース170は、さらにCPUパッケージ11にブースト条件の判断に必要な消費電力、電流、および温度などのデータを提供する。
In one example, a logical CPU in the P0 state in which _PPC is set to 0 operates with the operating frequency set to _PSS as the upper limit operating frequency by clock boosting when the boost condition is satisfied. A logical CPU in the P1 state in which 1 is set to _PPC operates with the basic operating frequency as the upper limit operating frequency without clock boosting even if the boost condition is satisfied. The
図2に示した、各ソフトウエアはHDD17に格納され、ブート段階でメイン・メモリ13にロードされる。各ソフトウエアは、主としてCPUパッケージ11およびメイン・メモリ13で実行されたときに、ハードウエアと協働してコンピュータ10に所定の機能を発揮させるハードウエアとして捕らえることもできる。また、OS150はマルチ・プロセッサ・システムおよびマルチ・タスクに対応するものであれば、特に限定する必要はない。また、本発明は、既存のOSおよびクロック・ブーストのアルゴリズムを修正しないでも実現することができる。
Each software shown in FIG. 2 is stored in the
[優先プロセスを処理する手順]
図3、図4、図5、図6は、優先プロセス処理システム100で優先プロセスを実行する手順を示すフローチャートである。図3は、制御プログラム101が動作を開始するまでに生成されているプロセスおよび新たに生成されるプロセスを処理する手順を示す。図4は、クロック・ブーストの設定がされた論理CPUのCPU使用率に応じて、ダイナミックにクロック・ブーストの設定を変更する手順を示す。
[Procedure for processing priority processes]
3, 4, 5, and 6 are flowcharts illustrating a procedure for executing a priority process in the priority
図5は、プロセスを生成したときのCPU使用率と温度の条件で、優先実行されない優先プロセスをその後のCPU使用率の低下に応じて優先実行する手順を示す。図6はクロック・ブーストの設定をした論理CPUのCPU使用率が上昇したときに優先プロセスのプロセッサ・アフィニティを緩和する手順を示す。図7はアフィニティ・マスク155とパフォーマンス・フィルタ105のデータ構造および論理積演算の方法を説明する図である。
FIG. 5 shows a procedure for preferentially executing a priority process that is not preferentially executed according to a subsequent decrease in the CPU usage rate under the conditions of the CPU usage rate and temperature when the process is generated. FIG. 6 shows a procedure for relaxing the processor affinity of the priority process when the CPU usage rate of the logical CPU for which the clock boost is set increases. FIG. 7 is a diagram for explaining the data structure of the
ブロック201でコンピュータ10が起動しHDD17に格納されたプログラムがブートを開始する。ブート・ファイルが順番にメイン・メモリ13にロードされて実行を開始するとブロック203でそれぞれのプログラムがプロセスを生成する。OS150またはACPIインターフェース170は、CPUパッケージ11に実装されている有効な論理CPUを調べる。ここでは、4つの論理CPU61、63、65、67がすべて有効になっているものとする。OS150はACPIインターフェース170を通じて論理CPU61、63、65、67にディフォルトで保有している_PSS、_PSD、_PPCのメソッドを設定する。
In
ディフォルトのPステートでは、OS150は一例として論理CPU61だけをP0ステートに設定し、その他の論理CPU63、65、67をP1ステートに設定する。この場合、CPUパッケージ11は、ブースト条件が成立すれば論理CPU61の動作周波数だけを基本動作周波数よりも上昇させ、ブースト条件が成立しなくなったときには基本動作周波数に戻す。OS150は、生成されたプロセスのそれぞれに対してディフォルトのアフィニティ・マスク155を作成する。
In the default P state, for example, the
ディフォルトのアフィニティ・マスク155は、有効な論理CPU61、63、65、67のいずれにもディスパッチできるようにアフィニティ・マスク155の各ビットが1になっている。この様子を図7(A)のアフィニティ・マスク155aとして示す。また、プロセスを生成するプログラムはシステム・コール関数を呼び出してディフォルトで設定されたアフィニティ・マスク155を書き換えることができる。
Each bit of the
一例として論理CPU65、67だけが割り当てられるようにプログラムがディフォルトのアフィニティ・マスク155を書き換えた様子を、図7(B)のアフィニティ・マスク155cとして示す。アフィニティ・マスク155a、155cは、いずれもオリジナルのアフィニティ・マスクに相当する。プロセス・スケジューラ153がスケジューリングするのはプロセスではなくプログラムによりプロセスの実行単位として生成されたスレッドである。プロセスのアフィニティ・マスク155aは当該プロセスの内部で生成されるスレッドのアフィニティ・マスクに引き継がれている。なお、スレッドを生成するプログラムおよび制御プログラム101は、スレッドのアフィニティ・マスクを書き換えることもできる。
As an example, a state where the program rewrites the
プロセス・スケジューラ153は、アフィニティ・マスク155aに基づいて任意の論理CPU61、63、65、67にスレッドを自由に割り当てることができる。プロセス・スケジューラ153はまたアフィニティ・マスク155cに基づいて論理CPU65または論理CPU67のいずれかにスレッドを割り当てることができる。ただし、スケジューラ153はいわゆるソフト・アフィニティという手法に基づいてスレッドが論理CPU間を頻繁に移動しないように同一条件のスレッドを最後に実行した論理CPUに割り当てるようにスケジューリングすることもできる。
The
CPUパッケージ11は、プロセス・スケジューラ153からは独立して論理CPU61の動作周波数を制御する。そして論理CPU61が割り当てられたスレッドは実行可能キュー161に登録されている間に当該論理CPU61が偶然にもクロック・ブーストすれば、実行可能キュー163、165、167に登録されたスレッドよりも短い待ち時間でディスパッチされる。また、論理CPU61にディスパッチされたスレッドは、当該論理CPU61が偶然にもそのときにクロック・ブーストすれば、実行可能キュー161に登録された他のスレッドよりも短い時間で処理される。アフィニティ・マスク155aを備えるいずれのスレッドも、クロック・ブーストした論理CPU61にディスパッチされる機会はあるがその確率は1/4で、さらに、論理CPU61にディスパッチされた時点で、論理CPU61がクロック・ブーストするとは限らない。ここまでは、従来の方法によるプロセスの制御手順である。
The
制御プログラム101もブート・ファイルの一部を構成しておりブロック205で制御プログラム101が動作を開始する。制御プログラム101が、ブートの初期段階で動作を開始することによりそれ以後のブート段階でブート・ファイルの優先プロセスを短時間で処理することができるようになる。たとえば、メールに関するアプリケーションを起動後できるだけ早く動作させてメールを受信したいという場合は、そのアプリケーションが生成するプロセスを優先プロセスに選定してブート中にできるだけ早く実行させることができる。あるいは、制御プログラム101はブートの最終段階またはブートが完了した後に動作を開始するようにしてもよい。
The
制御プログラム101は、パフォーマンス・フィルタ105に、論理CPU61、63に対応するビットを1に設定し、論理CPU65、67に対応するビットを0に設定する。制御プログラム101は、ブロック207でパフォーマンス・フィルタ105に基づいてACPIインターフェース170にPステートを設定する。BIOSは論理CPU61、63をP0ステートに設定し、論理CPU65、67をP1ステートに設定する。このときのパフォーマンス・フィルタ105を、図7(A)、図7(B)のパフォーマンス・フィルタ105aとして示す。
The
その結果、CPUパッケージ11は論理CPU65、67が基本動作周波数を最大の動作周波数として動作し、論理CPU61、63はブースト条件が成立したときには基本動作周波数よりも高い動作周波数で動作し、ブースト条件が成立しないときは基本動作周波数を最大の動作周波数として動作する。CPUパッケージ11はブースト条件が成立したときは、同時に論理CPU61、63をクロック・ブーストしてもよいし、先に論理CPU61だけをクロック・ブーストし、さらに熱的な余裕がある場合には論理CPU63を追加的にクロック・ブーストするように動作周波数を制御してもよい。なお、各論理CPU61、63、65、67は、アイドル状態のときに基本動作周波数よりも低い動作周波数で動作してもよい。
As a result, in the
ブロック209で、制御プログラム101はシステム・コール関数を呼び出してその時点で生成されているプロセスの中から優先プロセスを特定する。最初に現時点で生成されているすべてのプロセスをエニュメレーションしてプロセス・ハンドルを取得し、その中でウインドウを生成しかつ実際に表示しているプロセスを第1のグループに分類される優先プロセスとして特定する。つぎに制御プログラム101は、システム・コール関数を呼び出して第1のグループの優先プロセスを除いた残りのプロセスのそれぞれの優先度クラスまたは優先度レベルを取得して優先度クラスまたは優先度レベルが所定レベル以上のプロセスを第2のグループに分類される優先プロセスとして特定する。
In
たとえば、Windows(登録商標)では、アプリケーションはプロセスを生成するときにシステム・コール関数を呼び出してReal-time、High、Above Normal、Normal、Below Normal、Idleのいずれかの優先度クラスを指定することができる。アプリケーションはスレッドを生成するときにシステム・コール関数を呼び出してスレッドの相対優先度を設定することができる。Windows(登録商標)は指定された優先度クラスと相対優先度に基づいて、スレッドの優先度レベルを決定する。このとき制御プログラム101は、Above Normal以上の優先度クラスを指定したプロセスを第2のグループに分類される優先プロセスとすることができる。
For example, in Windows (registered trademark), when a process is created, an application calls a system call function to specify a priority class of Real-time, High, Above Normal, Normal, Below Normal, or Idle. Can do. When an application creates a thread, it can call a system call function to set the relative priority of the thread. Windows (registered trademark) determines the priority level of the thread based on the specified priority class and relative priority. At this time, the
さらに制御プログラム101は、システム・コール関数を呼び出して第1のグループと第2のグループの優先プロセスを除いた残りのプロセスのそれぞれのディスクのI/O処理の優先度を取得し、I/O処理の優先度が所定レベル以上のプロセスを第3のグループに分類される優先プロセスとして特定する。具体的にはアプリケーションは、ディスクに対するI/O処理優先度をCritical、High、Normal、Low、Very Lowの5段階に設定することが可能でこれらのデータは、OSのI/OマネージャがI/Oドライバと通信するIRP(I/O Request Packet)にフラグとして設定される。このとき制御プログラム101は、High以上のI/O処理優先度を指定したプロセスを第3のグループに分類される優先プロセスとすることができる。
Further, the
最後に制御プログラム101はシステム・コール関数を呼び出して第1のグループから第3のグループの優先プロセスを除いた残りのプロセスの中で、ホワイト・リストに登録されているプログラムが生成する優先プロセスがあればそれを第4のグループの優先プロセスとして特定する。制御プログラム101は、優先プロセスを特定するたびにシステム・コール関数を呼び出して当該プロセスまたはスレッドに対応するオリジナルのアフィニティ・マスク155a、155cを書き換える。
Finally, the
制御プログラム101は各プロセスについて、ブロック203において作成されたオリジナルのアフィニティ・マスク155a、155cのビット・パターンを取得し、パフォーマンス・フィルタ105aのビット・パターンと論理積演算を行い、図7(A)、図7(B)に示すマスク・ビット171a、171bを計算する。そして図7(A)の場合は、オリジナルのアフィニティ・マスク155aのビット・パターンをマスク・ビット171aのビット・パターンで書き換えてアフィニティ・マスク155bを作成する。
For each process, the
その結果、プロセス・スケジューラ153は当該プロセスが生成したスレッドをアフィニティ・マスク155bに基づいてスケジューリングするため、スレッドは論理CPU61または論理CPU63にだけディスパッチされ、論理CPU65、67では実行されないようになる。このときプロセス・スケジューラ153は、アフィニティ・マスク155bを有するスレッドを論理CPU61と論理CPU63の間でラウンド・ロビン方式によりスケジューリングすることができる。このようにクロック・ブーストの設定がされた論理CPU61、63だけで実行される優先プロセスを、優先実行される優先プロセスということにする。
As a result, since the
論理CPU61、63には、オリジナルのアフィニティ・マスク155aを備える非優先プロセスのスレッドもディスパッチされる。書き換えられたアフィニティ・マスク155bを備える優先プロセスのスレッドは、他の優先プロセスおよび非優先プロセスとの優先度レベルの上下関係に基づいて、実行可能キュー161、163から論理CPU61、63にディスパッチされる順序が決定される。しかし、論理CPU61、63は、クロック・ブーストするといずれのスレッドがディスパッチされていても論理CPU65、67よりも短時間で処理することができるので、優先プロセスの実行可能キュー161、163におけるディスパッチまでの待ち時間は短くなる。
The
しかも、優先実行される優先プロセスのスレッドは、クロック・ブーストされる論理CPU61、63にだけディスパッチされるため、当該スレッドが実行されるときに実際にクロック・ブーストされる確率は高くなる。この2つの理由で論理CPU61、63だけにプロセッサ・アフィニティを有する優先プロセスは、非優先プロセスよりも短時間で処理されるようになる。
In addition, since the priority process thread that is preferentially executed is dispatched only to the
図7(B)の場合は、オリジナルのアフィニティ・マスク155cのビット・パターンとパフォーマンス・フィルタ105aのビット・パターンを論理積演算すると、マスク・ビット・171bのようにすべてのビットが0になる。この場合は、制御プログラム101はディフォルトで設定されたアフィニティ・マスク155cを書き換えない。したがって、そのような優先プロセスは、クロック・ブーストしない論理CPU65、67にだけディスパッチされることになる。このようにクロック・ブーストの設定がされていない論理CPU65、67だけで実行される優先プロセスを、優先実行されない優先プロセスということにする。
In the case of FIG. 7B, if the bit pattern of the
上記のように、優先プロセスであっても強制的にクロック・ブーストの設定がされた論理CPU61、63だけで実行しないのは、プログラムが指定した論理CPUを変更しないようにするためである。なお、当該プログラムにとっていずれの論理CPU61、63、65、67も等価であることが明らかな場合は、制御プログラム101は、パフォーマンス・フィルタ105aのビット・パターンで直接アフィニティ・マスク155cを書き換えることもできる。その場合は、オリジナルのアフィニティ・マスク155cのビット・パターンがいかなるものであっても、そのスレッドを必ずクロック・ブーストする論理CPU61、63だけにディスパッチすることができる。
As described above, the reason why the
ブロック211では、制御プログラム101は、プロセス・リスト107に優先プロセスの識別子とそれに対応するアフィニティ・マスク155のビット・パターンを登録する。制御プログラム101は、オリジナルのアフィニティ・マスクと制御プログラム101により書き換えられたアフィニティ・マスクのそれぞれのビット・パターンを登録する。図8にプロセス・リスト107のデータ構造の一例を示す。図8では、制御プログラム101により書き換えられたアフィニティ・マスク155aのオリジナルのビット・パターンは省略している。
In
優先プロセス1、2、3、4は、優先実行される優先プロセスのアフィニティ・マスクのビット・パターンを示す。優先プロセス1、2は、OS150がすべてのビットを1にするようにディフォルトで作成したオリジナルのアフィニティ・マスクを書き換えたビット・パターンを示し、優先プロセス3、4はプロセスを生成するプログラムが、OS150がディフォルトで作成したアフィニティ・マスクを書き換えたビット・パターンを示している。優先プロセス1、2の配下にあるスレッドは論理CPU61または論理CPU63にだけディスパッチされる。優先プロセス3の配下にあるスレッドは論理CPU61にだけディスパッチされ、優先プロセス4の配下にあるスレッドは論理CPU63にだけディスパッチされる。
The priority processes 1, 2, 3, and 4 indicate the bit pattern of the affinity mask of the priority process to be preferentially executed. The priority processes 1 and 2 indicate a bit pattern in which the original affinity mask created by default so that all bits are set to 1 by the
したがって、優先プロセス1、2、3、4は、常にクロック・ブーストする論理CPU61、63だけで実行される。優先プロセス11、12、13は、プロセスを生成するプログラムが、OS150がディフォルトで作成したアフィニティ・マスクを書き換えたアフィニティ・マスクのビット・パターンを示しており、優先プロセス11、12、13の配下にあるスレッドは、クロック・ブーストしない論理CPU65または論理CPU67にだけディスパッチされるため優先実行されない。
Therefore, the priority processes 1, 2, 3, and 4 are always executed only by the
ブロック213では、新たなプロセスが生成される。制御プログラム101はDLLインジェクションを利用して、新たに生成されるプロセスをフックする。制御プログラム101は、システム・コール関数を呼び出して、ブロック209と同じ手順で当該プロセスが優先プロセスであるか否かを判断する。優先プロセスでないと判断した場合は、プロセス・スケジューラ153は当該非優先プロセスをオリジナルのアフィニティ・マスク155a、155cに基づいてディスパッチし、ブロック213に戻ってつぎの新たなプロセスを処理する。
At
ブロック215で制御プログラム101が新たなプロセスが優先プロセスであると判断した場合はブロック217に移行する。制御プログラム101は、ACPIインターフェース170を通じてCPUパッケージ11または各論理CPU61、63、65、67の温度を取得し、CPUパッケージ11の温度が所定値未満かまたはすべての論理CPU61、63、65、67の温度が所定値未満か否かを調べ、所定値未満の場合は温度条件が成立したと判断する。
If the
さらに、制御プログラム101はCPU使用率メータ151からクロック・ブーストの対象となっている論理CPU61および論理CPU63のCPU使用率を取得して所定値未満か否かを調べ、いずれも所定値未満の場合は使用率条件が成立したと判断する。温度条件または使用率条件のいずれかが成立しない場合は、制御プログラム101はブロック221に移行して新たに生成されたプロセスを優先プロセスとして登録し、オリジナルのアフィニティ・マスク155a、155cは書き換えない。
Further, the
スケジューラ153は当該優先プロセスに帰属するスレッドを、オリジナルのアフィニティ・マスク155a、155cに基づいてディスパッチする。この場合の優先プロセスの一例を図8の優先プロセス21、22、23として示している。このように、温度条件または使用率条件によりクロック・ブーストの設定がされた論理CPU61、63とクロック・ブーストの設定がされていない論理CPU65、67のいずれでも実行される可能性がある優先プロセス21、22、23も優先実行されない優先プロセスということにする。
The
なお、温度条件または使用率条件が成立しない場合でも、プロセスを生成するプログラムが論理CPU61、63だけを指定するようにアフィニティ・マスクを書き換えた場合は、オリジナルのアフィニティ・マスクとして採用されて優先実行される優先プロセスとなるが、そのような状態は本発明のプロセス制御の範囲から外れる。プロセス・スケジューラ153は、優先プロセス21、22、23の配下にあるスレッドを論理CPU61、63、65、67のいずれかにディスパッチする。ブロック221でプロセス・リスト107への登録が終了すると制御プログラム101はブロック213に戻って新たなプロセスの生成を待つ。
Even if the temperature condition or usage rate condition is not satisfied, if the affinity mask is rewritten so that the process generation program specifies only the
ブロック217の手順では、優先プロセスであっても、クロック・ブーストの対象となる論理CPU61、63のその時点でのCPU使用率が高い場合は優先実行されない。その理由は論理CPU61、63のCPU使用率が高い場合は、多くの優先プロセスおよび非優先プロセスまたは負荷の大きなプロセスがそこで実行されているため、新たな優先プロセスは他の論理CPU65、67も実行先に含めた方が短時間で処理できる可能性が高い場合があるからである。
In the procedure of
また、温度が高い場合は、論理CPU61、63が実際にクロック・ブーストする頻度が少ないと考えられ、同様に他の論理CPU65、67も実行先に含めた方が短時間で処理できる可能性が高い場合があるからである。なお、クロック・ブーストの設定がされた論理CPU61のCPU使用率が高く論理CPU63のCPU使用率が低い場合は、制御プログラム101が新たな優先プロセスに論理CPU63だけを割り当てるようにアフィニティ・マスク155を書き換えてもよい。
Also, when the temperature is high, it is considered that the frequency of the
ブロック217で温度条件と使用率条件のいずれも成立した場合には、ブロック219に移行してブロック209で説明した方法で制御プログラム101は当該プロセスに対するアフィニティ・マスク155を書き換える。さらに、当該プロセスをプロセス・リスト107に登録する。ブロック217〜221の手順では、新たなプロセスが生成されるたびにCPUパッケージ11の温度条件と使用率条件に基づいて優先プロセスを優先実行するか否かを制御した。
When both the temperature condition and the usage rate condition are satisfied in
論理CPU61、63には非優先プロセスもディスパッチされ、また、それらの負荷も時間的に変化する。本実施の形態では優先プロセスの優先度クラスおよびスレッドの優先度レベルは変更しないため、論理CPU61、63の実行可能キュー161、162に登録されるスレッドの数が多くなると論理CPU61、63のCPU使用率が大きくなって優先プロセスがディスパッチされるまでの待ち時間が長くなる可能性がある。
Non-priority processes are also dispatched to the
この状態を解消するために図3のブロック219に続く図4のブロック301では、制御プログラム101は定期的にCPU使用率メータ151から各論理CPU61、63、65、67のCPU使用率を取得する。ブロック303では、クロック・ブーストの設定がされた論理CPU61、63のCPU使用率がいずれも所定値以上であるか否かを判断する。いずれかの論理CPUのCPU使用率が所定値未満の場合は図5のブロック401に移行し、いずれの論理CPU61、63のCPU使用率も所定値以上の場合はブロック305に移行する。なお、ブロック303のCPU使用率の閾値はブロック217のCPU使用率の閾値よりも大きくすることができる。
In order to eliminate this state, in
ブロック305では、制御プログラム101は、パフォーマンス・フィルタ105を参照してさらにクロック・ブーストの設定が可能な論理CPUが存在するか否かを判断する。すでに全体の論理CPUの数に対するクロック・ブーストの設定を許容する論理CPUの数の割合が所定値を越えている場合は、それ以上他の論理CPUにクロック・ブーストの設定をすることができないので、図6のブロック421に移行する。
In
たとえば、論理CPU65に対して追加的にクロック・ブーストの設定が可能な場合はブロック307に移行する。ブロック307では制御プログラム101はパフォーマンス・フィルタ105のビット・パターンを論理CPU65に対応するビットが1になるように追加的に書き換える。さらに書き換えたビット・パターンに基づいてACPIインターフェース170を通じて論理CPU65を追加的にP0ステートに変更する。
For example, when the clock boost can be additionally set for the
ブロック309では、制御プログラム101はシステム・コール関数を呼び出して、図8のプロセス・リスト107から選択した優先プロセスのアフィニティ・マスク155のビット・パターンを書き換える。書き換えの対象として選択する優先プロセスは、優先実行される優先プロセス1、2、3、4のグループ、プログラムが指定したアフィニティの条件で優先実行されない優先プロセス11、12、13、14のグループまたは使用率条件または温度条件により優先実行されない優先プロセス21、22、23のグループのいずれかとすることができる。
In
あるいは制御プログラム101は、プロセス・リスト107に登録されたすべての優先プロセスを書き換えの対象として選択することができる。制御プログラム101は、選択した優先プロセスのアフィニティ・マスク155を、図3のブロック209で行ったようにパフォーマンス・フィルタ105と、オリジナルのアフィニティ・マスク155a、155cとの論理積演算を行う方法で書き換えることができる。
Alternatively, the
その結果、論理CPU65に対応するビットが1のオリジナルのアフィニティ・マスクを有する優先プロセス1、2のような優先プロセスは、論理CPU65でも優先実行されるようにアフィニティ・マスクが書き換えられる。オリジナルのアフィニティ・マスクが論理CPU61、63を指定していないが論理CPU65を指定していた優先プロセス11、13のような優先プロセスは、始めて優先実行されるようになる。さらに、ブロック217の使用率条件または温度条件で優先実行されない優先プロセス21、22、23も優先実行されるようになる。ブロック311では、アフィニティ・マスク155を書き換えたプロセスについてプロセス・リスト107を更新する。
As a result, the affinity mask is rewritten so that the priority processes such as
前述のようにプロセス・スケジューラ153のスケジュール制御とCPUパッケージ101のクロック・ブースト制御は非同期で行われ、クロック・ブーストの設定をしても実際にクロック・ブーストする頻度はそのときのシステムの状態により変化する。そして、クロック・ブーストする論理プロセッサの数を増加するほど、優先プロセスと非優先プロセスの差が少なくなる。クロック・ブーストする論理プロセッサの最適な数は、すべての優先プロセスの平均的な処理時間が最小になるときの数であるといえる。
As described above, the schedule control of the
したがって、クロック・ブーストした論理プロセッサのCPU使用率が低下したような場合は、クロック・ブーストする論理プロセッサの数を減らして、優先プロセスがディスパッチされる論理プロセッサがクロック・ブーストする頻度を増大させたほうが効果的である。ブロック313では、制御プログラム101はクロック・ブーストの設定をした論理プロセッサのCPU使用率が所定値よりも低下したときには、ブロック307に戻って、Pステートを変更してクロック・ブーストする論理プロセッサの数を減らすことができる。そしてブロック309で図3のブロック209の手順に基づいてアフィニティ・マスク155を書き換えブロック311でプロセス・リスト107を更新する。ブロック313でCPU使用率が所定値以上の場合は図3のブロック213に戻る。
Therefore, in cases where the CPU utilization of a clock-boosted logical processor has decreased, the number of logical processors to be clock-boosted has been reduced to increase the frequency with which the logical processor to which the priority process is dispatched is clock-boosted. Is more effective. In
図3のブロック217で論理CPU61、63のCPU使用率が一旦は所定値を越えても、その後のプロセスの状態が変化して、それらのCPU使用率が下がる可能性がある。一方、ブロック217では、温度条件または使用率条件により優先実行されない優先プロセスが発生している。論理CPU61、63に余裕がでた場合には、優先実行されない状態の優先プロセスをいち早く優先実行される状態に移行させることが望ましい。
Even if the CPU usage rates of the
ブロック303に続く図5のブロック401では、制御プログラム101はクロック・ブーストの対象となる論理CPU61、63のCPU使用率がいずれも所定値未満であるか否かを判断する。ブロック401の所定値はブロック303の所定値よりも小さい。いずれかの論理CPUのCPU使用率が所定値以上の場合は図3のブロック213に戻る。いずれの論理CPUもCPU使用率が所定値未満の場合は、ブロック403に移行する。
In
ブロック403では制御プログラム101はプロセス・リスト107を参照し、クロック・ブーストの対象となる論理CPU61、63とともに対象外の論理CPU65、67も割り当てられていることで優先実行されない優先プロセス21、23、25があるか否かを判断する。なお、クロック・ブーストの対象とならない論理CPU65、67だけが割り当てられていることで優先実行されない優先プロセス11、12、13は、プロセスを生成するプログラムが論理CPU61、63での実行を指定していないので移行の対象から除外する。
In
対象となる優先実行されない優先プロセスがない場合はブロック213に戻る。対象となる優先プロセスがある場合は、ブロック405に移行して制御プログラム101は図3のブロック209で採用したオリジナルのアフィニティ・マスク155aとパフォーマンス・フィルタ105の論理積演算を行う方法を用いて、オリジナルのアフィニティ・マスク155を書き換える。ブロック427では制御プログラム101は、アフィニティ・マスク155を書き換えたプロセスについて、プロセス・リスト107を更新する。
If there is no priority process that is not subject to priority execution, the process returns to block 213. If there is a target priority process, the process proceeds to block 405, and the
クロック・ブーストの設定がされた論理CPU61、63のCPU使用率が上昇したときに、追加的にクロック・ブーストの設定ができる論理CPUが存在しない場合でも、クロック・ブーストの設定がされていない論理CPU65、67のCPU使用率が低い場合は、プロセッサ・アフィニティを緩和して優先プロセスを優先実行しないようにした方が早く処理できる場合がある。図4のブロック305に続く図6のブロック421では、制御プログラム101はクロック・ブーストの対象でない論理CPU65、67のCPU使用率が所定値未満であるかどうかを調べる。
When the CPU usage rate of the
論理CPU65、67のいずれかのCPU使用率が所定値以上の場合は、クロック・ブーストの対象となる論理CPU61、63の負荷を他の論理CPU65、67に分散することはできないと判断して図3のブロック213に戻る。論理CPU65、67の両方のCPU使用率が所定値未満の場合はブロック423に移行して、制御プログラム101はプロセス・リスト107を参照し、優先実行されている優先プロセスの中から所定数のプロセスを抽出して、オリジナルのアフィニティ・マスクのビット・パターンに戻す。
When the CPU usage rate of either of the
あるいは当該プロセスにとってすべての論理CPU61、63、65、67が等価であることが明らかな場合は、制御プログラム101はそのような優先プロセスが論理CPU61、63、65、67に分散してディスパッチされるように、アフィニティ・マスク155を図7(A)のオリジナルのアフィニティ・マスク155aのように書き換える。あるいは制御プログラム101は、それらのプロセスが論理CPU65、67だけにディスパッチされるようにアフィニティ・マスク155を書き換える。ブロック425では、制御プログラム101はアフィニティ・マスク155を書き換えた優先プロセスについてプロセス・リスト107を更新し、ブロック213に戻る。
Alternatively, when it is clear that all the
これまで、優先プロセスは4つのグループのいずれかに属していればすべて同等に扱ってきた。優先プロセスの中には他の優先プロセスより短時間で処理したいものがある。たとえば、ウインドウを有するプロセスの中でもフォアグラウンドのウインドウについては、ユーザはより短時間で応答を得ることを期待する。また、ACPIインターフェースは論理CPUを、同じPステートであっても異なる動作周波数に設定することができる。この特質を利用すれば、優先プロセスの中でより短時間で処理する必要のある最優先プロセスがより高い動作周波数の論理CPUだけで動作するようにアフィニティ・マスクを書き換えることができる。 So far, priority processes have been treated equally if they belong to one of four groups. Some priority processes want to be processed in a shorter time than other priority processes. For example, for a foreground window among processes with windows, the user expects to get a response in a shorter time. The ACPI interface can set the logical CPU to different operating frequencies even in the same P state. By using this characteristic, the affinity mask can be rewritten so that the highest priority process that needs to be processed in a shorter time in the priority process operates only with a logical CPU having a higher operating frequency.
すべての優先プロセスの平均的な処理時間を最短にするために、最適なクロック・ブーストの設定をする論理CPUの数は、システムの動作状態で常に変化する。図4ではCPU使用率に基づいてダイナミックにPステートおよびアフィニティ・マスクを変更する方法を説明したが、論理CPUの数を制御するために、各論理CPUだけにディスパッチされるダミー・プロセスを生成してその処理時間を測定する方法もある。 In order to minimize the average processing time of all priority processes, the number of logical CPUs with optimal clock boost settings always changes with the operating state of the system. In FIG. 4, the method of dynamically changing the P-state and the affinity mask based on the CPU usage rate has been described. However, in order to control the number of logical CPUs, a dummy process that is dispatched only to each logical CPU is generated. There is also a method for measuring the processing time.
たとえば、各論理CPU61、63、65、67でそれぞれ中間的な優先度レベルのダミー・プロセスを実行させ、その処理時間に基づいて実際のクロック・ブーストの状況を把握して、Pステートを変更することもできる。あるいは、ACPIインターフェース170から直接各論理CPUがクロック・ブーストした頻度またはクロック・ブーストしている時間を取得してPステートを変更することもできる。さらに、ACPIインターフェース170測定した各論理CPUの温度や平均消費電力に基づいて制御プログラム101がダイナミックにPステートの変更をすることも可能である。
For example, each
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。 Although the present invention has been described with the specific embodiments shown in the drawings, the present invention is not limited to the embodiments shown in the drawings, and is known so far as long as the effects of the present invention are achieved. It goes without saying that any configuration can be adopted.
10…コンピュータ
11…CPUパッケージ
100…優先プロセス処理システム
101…制御プログラム
150…オペレーティング・システム
DESCRIPTION OF
Claims (14)
前記複数の論理プロセッサのいずれかに前記クロック・ブーストの設定をするステップと、
新たに生成されるプロセスがフォアグラウンドのウインドウを表示する優先プロセスか否かを判断するステップと、
前記クロック・ブーストの設定がされた論理プロセッサの使用率を取得するステップと、
前記使用率が所定値未満のときに前記優先プロセスのアフィニティ・マスクを書き換え、前記優先プロセスを前記クロック・ブーストの設定がされた論理プロセッサだけにディスパッチして優先実行するステップと
を有する処理を実行させるコンピュータ・プログラム。 In a computer comprising a plurality of logical processors capable of clock boosting that temporarily increases the operating frequency of some logical processors based on conditions related to the magnitude of the load ,
Setting the clock boost to any of the plurality of logical processors;
Determining whether the newly created process is a preferred process that displays a foreground window;
Obtaining a usage rate of a logical processor in which the clock boost is set;
Rewriting the affinity mask of the priority process when the usage rate is less than a predetermined value, and dispatching the priority process only to the logical processor for which the clock boost is set to execute the processing. Computer program to let you.
前記アフィニティ・マスクをさらに前記温度が所定値未満のときに書き換える請求項1から請求項3のいずれかに記載のコンピュータ・プログラム。 Obtaining a temperature of the logical processor;
The computer program according to any one of claims 1 to claim 3 wherein the temperature is al the affinity mask rewrites when less than the predetermined value.
前記クロック・ブーストが未設定の論理プロセッサが存在しかつ前記クロック・ブーストの設定がされた論理プロセッサの使用率が所定値以上のときに、前記未設定の論理プロセッサに前記クロック・ブーストの追加的な設定をするステップと
を有する請求項1から請求項4のいずれかに記載のコンピュータ・プログラム。 Determining whether there is a logical processor for which the clock boost is not set;
When there is a logical processor for which the clock boost is not set and the usage rate of the logical processor for which the clock boost is set is equal to or higher than a predetermined value, the clock boost is added to the non-set logical processor. The computer program according to any one of claims 1 to 4 , further comprising a step of making an appropriate setting.
前記優先実行されない優先プロセスが優先実行されるように前記アフィニティ・マスクを書き換えるステップと
を有する請求項1から請求項6のいずれかに記載のコンピュータ・プログラム。 When the usage rate of the logical processor for which the clock boost is set is less than a predetermined value, it is determined whether there is a priority process that is dispatched to the logical processor for which the clock boost is not set and is not preferentially executed. Steps,
The computer program according to claim 1 , further comprising a step of rewriting the affinity mask so that the priority process that is not preferentially executed is preferentially executed.
前記クロック・ブーストの設定がされた論理プロセッサの使用率が所定値以上でかつ前記クロック・ブーストが未設定の論理プロセッサの使用率が所定値未満のときに前記優先プロセスが前記クロック・ブーストが未設定の論理プロセッサでも実行されるように前記アフィニティ・マスクを書き換えるステップと
を有する請求項1から請求項7のいずれかに記載のコンピュータ・プログラム。 Obtaining a utilization of a logical processor for which the clock boost is not set ;
When the usage rate of the logical processor to which the clock boost is set is equal to or higher than a predetermined value and the usage rate of the logical processor to which the clock boost is not set is less than the predetermined value, the priority process is not set to the clock boost. The computer program according to claim 1 , further comprising a step of rewriting the affinity mask so as to be executed by a setting logical processor.
負荷の大きさに関連する条件に基づいて一時的に一部の論理プロセッサの動作周波数を上昇させるクロック・ブーストが可能な複数の論理プロセッサと、
前記複数の論理プロセッサのいずれかに前記クロック・ブーストの設定をする設定手段と、
新たに生成されるプロセスがフォアグラウンドのウインドウを表示する優先プロセスか否かを判断する判定手段と、
前記クロック・ブーストの設定がされた論理プロセッサの使用率を取得する使用率取得手段と、
前記使用率が所定値未満のときに前記優先プロセスのアフィニティ・マスクを書き換え、前記優先プロセスを前記クロック・ブーストの設定がされた論理プロセッサだけにディスパッチして優先実行する実行手段と
を有するコンピュータ。 A computer with a multi-processor system,
A plurality of logical processors capable of clock boosting to temporarily increase the operating frequency of some logical processors based on conditions associated with the magnitude of the load ;
Setting means for setting the clock boost to any of the plurality of logical processors;
Determining means for determining whether or not the newly generated process is a priority process for displaying a foreground window;
Usage rate acquisition means for acquiring a usage rate of a logical processor in which the clock boost is set;
Execution means for rewriting the affinity mask of the priority process when the usage rate is less than a predetermined value, and dispatching the priority process only to the logical processor for which the clock boost is set to execute the priority process. Having a computer.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010190752A JP5345990B2 (en) | 2010-08-27 | 2010-08-27 | Method and computer for processing a specific process in a short time |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010190752A JP5345990B2 (en) | 2010-08-27 | 2010-08-27 | Method and computer for processing a specific process in a short time |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012048545A JP2012048545A (en) | 2012-03-08 |
JP5345990B2 true JP5345990B2 (en) | 2013-11-20 |
Family
ID=45903322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010190752A Active JP5345990B2 (en) | 2010-08-27 | 2010-08-27 | Method and computer for processing a specific process in a short time |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5345990B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11768702B2 (en) | 2020-02-07 | 2023-09-26 | Samsung Electronics Co., Ltd. | Electronic device for scheduling based on heterogeneous multi-processor and operating method thereof |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8910177B2 (en) * | 2011-04-14 | 2014-12-09 | Advanced Micro Devices, Inc. | Dynamic mapping of logical cores |
US8793515B2 (en) * | 2011-06-27 | 2014-07-29 | Intel Corporation | Increasing power efficiency of turbo mode operation in a processor |
JP5915406B2 (en) * | 2012-06-22 | 2016-05-11 | 富士通株式会社 | Control method of portable terminal device, control program, and portable terminal device |
WO2015196343A1 (en) * | 2014-06-24 | 2015-12-30 | Intel Corporation | Virtual machine power management |
US9779058B2 (en) * | 2015-07-13 | 2017-10-03 | Google Inc. | Modulating processsor core operations |
JP6569185B1 (en) | 2018-06-14 | 2019-09-04 | レノボ・シンガポール・プライベート・リミテッド | Information processing apparatus, information processing apparatus control method, and program |
JP6767548B1 (en) * | 2019-07-26 | 2020-10-14 | レノボ・シンガポール・プライベート・リミテッド | Information processing equipment, control methods and programs |
CN113009999A (en) * | 2019-12-20 | 2021-06-22 | 华为技术有限公司 | Power adjustment method and device for processor |
Family Cites Families (6)
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 |
JPH10143380A (en) * | 1996-11-07 | 1998-05-29 | Hitachi Ltd | Multiprocessor system |
US7412353B2 (en) * | 2005-09-28 | 2008-08-12 | Intel Corporation | Reliable computing with a many-core processor |
WO2007098424A2 (en) * | 2006-02-17 | 2007-08-30 | Qualcomm Incorporated | System and method for multi-processor application support |
JP2009069921A (en) * | 2007-09-11 | 2009-04-02 | Hitachi Ltd | Multiprocessor system |
JP5053964B2 (en) * | 2008-09-12 | 2012-10-24 | レノボ・シンガポール・プライベート・リミテッド | Information processing apparatus, window processing method thereof, and computer-executable program |
-
2010
- 2010-08-27 JP JP2010190752A patent/JP5345990B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11768702B2 (en) | 2020-02-07 | 2023-09-26 | Samsung Electronics Co., Ltd. | Electronic device for scheduling based on heterogeneous multi-processor and operating method thereof |
Also Published As
Publication number | Publication date |
---|---|
JP2012048545A (en) | 2012-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5345990B2 (en) | Method and computer for processing a specific process in a short time | |
JP6646114B2 (en) | Dynamic virtual machine sizing | |
JP5433837B2 (en) | Virtual computer system, virtual computer control method, and program | |
Sridharan et al. | Adaptive, efficient, parallel execution of parallel programs | |
US11181970B2 (en) | System and method for performing distributed power management without power cycling hosts | |
US8296773B2 (en) | Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance | |
CN108549574B (en) | Thread scheduling management method and device, computer equipment and storage medium | |
EP2885707B1 (en) | Latency sensitive software interrupt and thread scheduling | |
US20090172428A1 (en) | Apparatus and method for controlling power management | |
JP5385347B2 (en) | Method and computer for enlarging free memory in main memory | |
TWI489266B (en) | Instruction that specifies an application thread performance state | |
US20090320031A1 (en) | Power state-aware thread scheduling mechanism | |
JP2009093665A (en) | Apparatus and method for multi-threaded processors performance control | |
JP5200085B2 (en) | Method and computer for starting computer in a short time | |
US20120284720A1 (en) | Hardware assisted scheduling in computer system | |
US12079612B2 (en) | Firmware boot task distribution to enable low latency boot performance | |
US20130191839A1 (en) | Information processing apparatus, control method therefor, and computer-readable storage medium | |
KR20240150909A (en) | Electronic system and method for task scheduling | |
TW201243618A (en) | Load balancing in heterogeneous computing environments | |
Polanczyk | Extending the semantics of scheduling priorities |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120106 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130424 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130507 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130612 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130813 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130815 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5345990 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R360 | Written notification for declining of transfer of rights |
Free format text: JAPANESE INTERMEDIATE CODE: R360 |
|
R371 | Transfer withdrawn |
Free format text: JAPANESE INTERMEDIATE CODE: R371 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |