//tips
第一回目注射
//基本技術理解
コンピュータシステムの性能評価の指標を確認していく。
・スループット。コンピュータシステムが単位時間あたりに処理できる仕事量。
・応答までにかかる時間であるレスポンスタイム
・ジョブを投入してからその結果がすべて出終わるまでの時間をターンアラウンドタイム。基本的にはCPU処理時間、入出力時間、処理待ち時間となる。
・1秒間の実行可能な命令数を百万単位で表したものをMIPS。1秒間に実行可能な浮動小数点数演算回数をFLOPSという。
ここからは性能の評価方法。
命令ミックスはよく使われる各命令に対してその実行速度と出現頻度に応じて重み付けしたもので、各命令の実行速度に重みを乗じ、その和を取ることで求めるこの命令ミックス値の逆数を取ることでMIPS値を求めることができる。
コンピュータの処理形態をモデル化した標準プログラムを用いて実行時間などを計測し、その結果からコンピュータ性能の評価を行うこと。代表的なベンチマークにSPECとTPCがある。
システム性能の低下を検出するためにはモニタリングが必要で、通常はOSの機能として、プロセスごとの入出力回数やCPU使用時間の計測が行われている。
ソフトウェアのモニタリングは容易にモニタリングができる反面、測定対象の資源を利用しているため誤差が生じやすい。この誤差をなくするためにハードウェアモニタが用いられる。
システムの新規開発や再構築において、ユーザの業務要件や業務処理量、サービスレベルなどからシステムに求められるリソース(CPU性能、メモリ容量、ディスク容量など)を見積もり、経済性および拡張性を踏まえた上で最適なシステム構成を計画することをキャパシティプランニングという。
サーバの負荷が予測される時にはサーバの処理能力を向上させる必要があり、追加サーバの導入によるスケールアウトか、高性能なものに交換するスケールアップの手段が用いられる。
コンピュータでは、処理待ちが頻繁に発生するので確率モデルに基づいた待ち行列理論に対する理解が必要なよう。待ち行列理論をもとに待ち時間を計算するためには、その対象となる現象をモデル化する必要がある。
待ち行列モデルM/M/1は客はランダムに到着し、一人の客がサービスを受ける時間はバラバラで、サービスを行う窓口は一つというモデル。
平均到着間隔=1/平均到着率=1/λ
一分間に5人の客がレジに到着する場合、平均到着率=5人/分、平均到着間隔=12秒。
平均サービス時間=1/平均サービス率=1/μ
一分間に4人の客に対してサービス可能な場合、平均サービス率=4人/分,平均サービス時間=15秒
稼働率は平均故障間隔/(平均故障間隔MTBF+平均修理時間MTTR)で表され、MTBFを長くするかMTTRを短くする方法を模索することになる。
MTBFを長くする方法
・冗長度の高いシステム構成
・予防保守の実行
・自動誤り訂正機のなどの導入
MTTRを短くする方法
・エラーログ情報の採取
・遠隔地保守
・保守センタの分散配置
デュアルシステムやデュプレックスシステムのホットスタンバイ方式はMTTRを短くするシステム構成。
システムの故障率を表す単位の一つにFITがあり、10^9時間に一回の故障が起きる確率となっている。
広義のOSは、制御プログラム(狭義のOS)の中核として、言語プロセッサ、サービスプログラムで構成されている。
制御プログラムは、カーネル、デバイスドライバ、ファイルシステムの3つから構成されている。
カーネルは、主記憶装置上に常駐する制御プログラムモジュール群で、スケジューリング、資源の割り振りなどすべてのプログラムを実行制御する機能を持つ。ジョブ管理、タスク管理、記憶管理、割り込み管理、入出力管理、応用プログラムへのシステムコールなどを実行する。
コンピュータで実行される一塊の処理をジョブといい、ジョブを構成するジョブステップはCPUの割り当てを受ける単位であるタスクまたはプロセスからなる。
タスク管理の役割はCPUの割り当て単位であるタスクを管理し、同時に実行される複数のタスクにCPU効率を考慮した適切な順番でCPU時間を与えること。
プログラムが誤ってOSを壊してしまうのを避けるためCPUにはユーザモードとカーネルモードがある。
ユーザプログラムがファイルへの読み書きを必要とするとき、ユーザモードでは入出力命令を実行できないため、システムコールを呼び出し、カーネル経由でユーザの要求を理解し、権限を持っているか確認した上で要求された処理を実行する。
タスクはCPUから見た処理単位で、処理に必要なCPU、主記憶などのシステム資源を割り当てる単位を指す。
マルチプラグラミング環境では同じプログラムが同時に実行されることがあり、プログラムとCPUが割り当てられるプログラムを区別する必要があり、それぞれに対して異なるタスクとすることで区別する。
プログラムが実行依頼されると、カーネルは実行に必要なシステム資源を調達し、CPU割り当ての単位となるタスクを生成し、その実行をタスク管理に依頼する。
タスク管理プログラムの制御のもと処理を終えて消滅するまで実行可能状態、実行状態、待ち状態を遷移する。
カーネルはタスクが生成されるとTCB(タスク制御ブロック)にタスク情報を登録し、タスクが消滅するまで管理する。
タスク情報にはタスクIDをはじめ、タスクの優先順位、タスクの状態、レジスタ群格納アドレスなどが含まれる。
一つのCPUで複数のタスクを実行するため、CPUが保有する実行中のプログラム情報や主記憶アドレス空間の内容を交互に切り替える必要がある。
実行中のタスクを中断して別のタスクを実行するとき、スケジューラが実行待ち状態のタスクから、優先順位や切り替えのきっかけに応じて選ぶことになる。
ただ、優先順位が低いものが実行されにくくなってしまうので、待ち時間によって優先度を上げたり、あらかじめCPU時間を割り当て、それ以上の時間がかかる場合は飛ばして次のものに進むなどの方法で改善が図られることになる。
複数のタスクが共有する資源に対し、同時に更新処理を行うとエラーとなるので排他制御という、一つのタスクしか実行できないように、ロックをかける。