ワークロード
ワークロード(英: workload, work-load)とは、一般的に「仕事量」や「作業負荷」などの意味を持つ英単語[1]。情報技術の分野では、コンピュータやシステムにかかる処理の負荷の大きさを指すことが多い[2]。計算機資源の利用状況を示す抽象的な指標としても使われる。
ロードアベレージ
編集UNIXオペレーティングシステムでは、ワークロードの指標に長らくロードアベレージという統計値を採用していた。これは当時、計算機資源に対して要求される資源が大きく、実行中とスケジューラの実行待ち状態にあるプロセスの数を数えることで、ワークロードを推し量ることができた。しかしながらロードアベレージは正確にはワークロードを示している訳ではない。実行待ちにある理由がページフォールトによるものである可能性もあれば、Linux等であれば単にI/O待ちをしている可能性もある。ロードアベレージはシステムがどれだけのワークロードを持っているかを知ることはできるが、個々のワークロードの軽重を示す指標にはならない。当時の技術水準では、その違いは実際の所どうでも良かった。アウトプットを得るのにかかる所要時間はシステム全体の負荷であるロードアベレージで一意に判断できたからである。しかしマイクロプロセッサの性能が向上し、またI/Oサブシステムのインテリジェント化、なにより計算機資源に対して要求される資源が下回るようになってからは、ロードアベレージでワークロードを正確に推し測ることができないことをシステムエンジニアは認識するようになった。それからは、後述のCPU利用率によってワークロードを見積もるようになった。
CPU利用率
編集CPU負荷率、CPU効率ともいわれる。ある一定時間、アイドル時間を消費するためだけのアイドルプロセスと、そうではないプロセスの実行時間の比率である。Windows等ではタスクマネージャーでこの数値を観察することができる(UNIXではtopプログラムがよく使われる)。この数値には、CPUが計算機資源として提供した能力を正確に示し、その数値にはI/Oサブシステムによって消費された時間は指標から外されている。計算機資源に対して要求される資源が下回った現在[いつ?]では、ワークロード、しかも実行しているプログラムがCPU資源をいかに効率的に使っているかを推し量る指標として使われる。CPU利用率はそのコンピュータシステムに対する投資に関する実績そのものだからである。例えば、I/Oサブシステムにアクセスしている間に他の処理を並列して進めるマルチスレッドプログラミングは計算機資源の利用効率を高め、その実績がCPU利用率として反映される。逆をいえば効率の悪いプログラムはCPU利用率の成績が悪く、設計を改めなければならない対象となる。今日[いつ?]マルチプロセッサシステムが当たり前となった時代では、並列性が乏しいソフトウエア設計は投資を無駄にすることが多い。ロードアベレージが1を示し、プロセッサに対して見掛け上の要求した資源が100%であったとしても、CPU利用率ではプロセッサの数で割った値しか示さず、例えばデュアルコアプロセッサでは50%が無駄になってしまうことが良く観察される。これらの問題に対する解決策として、同時に多数のプロセスを実行し、無駄な時間を埋め尽くすという戦略もある。これはトランザクションベースのアプリケーション(例えばウェブサーバ等)などでは有効な戦略であろう。またこのような使い方に特化したプロセッサ(例えばSunのナイアガラアーキテクチャ)等もある。