2014年3月28日金曜日

技術調査:プロセスのCPU使用率を制御する - プロセスを構成するスレッドの一時停止/再開を繰り返し、目標とするCPU使用率の上限を超えないように制御する

プロセスを構成するスレッドの一時停止/再開を繰り返し、目標とするCPU使用率の上限を超えないように制御する

プロセスに対して、直接的に一時停止/再開を指示するようなドキュメント化されたAPIはありません。(*1)

そこで、一時停止/再開を行いたいプロセスに属するすべてのスレッドに対して一時停止/再開を実施するという方法が考えられます。

メリット


  • スレッドの一時停止/再開は.net frameworkで実装されているので、手軽に実装できる。


デメリット


  • スレッドが停止することを予期していないプロセスの場合(ほとんどのプロセスがそうだと思います)、スレッドの停止順番などにより、プロセスがクラッシュする可能性があるとのことです。



*1:
公式に文書化されていない Windows API である「NtSuspendProcess」を使用すれば、プロセスに対する一時停止/再開ができるようです。

プロセスを一時停止/再開するプログラム
http://d.hatena.ne.jp/UseRNamE/20100109/1263033000

How to suspend/resume a process in Windows? - Stack Overflow
http://stackoverflow.com/questions/11010165/how-to-suspend-resume-a-process-in-windows

関連記事
同じラベルをすべて含む記事を読み込み中...