リソース割り当てとスケジュールの利点・欠点

こうした大規模システムにおける課題は、いかにそれぞれのユーザに適切にスケジューリングを提供して必要なリソースを活用できるようにするかにある。ユーザが要求するスケジュールはさまざまだ。規模の小さいものから大きいものまである。リソース要求のコンテンションは性能の悪化を招くため、なるべく避ける必要がある。

Brooks Davis氏は次の代表的なスケジューリングやリソース制御方法を説明した。

  • ギャングスケジューリング - 数時間単位でのタイムスケジューリング。ほかのジョブの影響を受けることなく処理できるが、処理が完了しないうちに終了することもあるうえ、コンテキストスイッチのコストが高すぎ、さらに一般的な実装が存在しない。また小さいジョブには適していないという問題がある
  • シングルアプリケーション/プロジェクトサブクラスタ - プロジェクトやアプリケーションごとにサブクラスタを割り当てる。完全な独立を実現できるものの、リソース割り当ての単位が大きすぎて小さいジョブの割り当てには適切ではなく、コンテキストスイッチのコストが高すぎ、さらに活用されたリソースをリキャプチャする一般的な方法がないという問題がある
  • 仮想化 - 独立性が高くノードイメージの高速なデプロイが可能、複数のイメージでノードを共有できるという特徴がある。しかしハードウェアを共有するため独立性は完全ではなく、やはり小さいジョブを処理する効率的な方法がないという問題がある。仮想化するため処理速度の低下やメモリ・ディスクをたくさん消費するという欠点もある
  • VPS - NTT/Verioで開発された仮想化機能。Jailにリソース制御機能を追加した仕組みで、仮想化よりもオーバーヘッドが少なく必要な部分だけを仮想化できるという特徴がある。しかし独立性は不完全で仮想化に比べると柔軟性は低くなる
  • リソース制限とパーティション - UNIX互換OSはプロセスレベルでのリソース制限やメモリ、ディスク、プロセッサのパーティショニング機能を提供している。こうしたOSが提供している機能を活用して制御する方法だが、Irix/Solarisを除いて統合されたフレームワークが存在しておらず、しかも典型的にはバンド幅に対する制限がないという問題がある

どの方法にも利点と欠点があるというわけだ。