Cloudsim は、グリッドコンピューティングシミュレーションソフトウェア Gridsim のプログラミングモデルを継承し、クラウドコンピューティングの研究開発をサポートするオープンソースのクラウドコンピューティングシミュレーションソフトウェアです。これは、データ センター、サービス エージェント、スケジューリングおよび割り当て戦略をサポートし、大規模なクラウド コンピューティング インフラストラクチャのモデリングとシミュレーションをサポートし、Windows と Linux 上でクロスプラットフォームで実行できる自己完結型のプラットフォームです。 この記事では、Cloudsim クラウド シミュレーション プラットフォームを使用してリソース スケジューリング アルゴリズムをシミュレートする方法について説明します。これには、Cloudsim 環境の構成、リソース スケジューリング アルゴリズムの埋め込み、シミュレーション結果の分析が含まれます。 1. Cloudsim環境を構成する 1. まず、Cloudsim環境の構成を紹介します 1.1. Cloudsimを実行するにはJava環境が必要なので、JDKとCloudsimをダウンロードする必要があります。 java: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html クラウドシム: http://code.google.com/p/cloudsim/downloads/ 1.2. JDKのインストールと設定 http://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html インストール パスに中国語の文字を含めないように注意してください。そうしないと、プログラムの実行時に不明なエラーが発生する可能性があります。 1.3. Cloudsimのインストールと設定 ダウンロードした Cloudsim を解凍し、解凍パスに中国語の文字を含めないでください。たとえば、D:\program files\ などです。 D:\program files\cloudsim-3.0.3\jars\cloudsim-3.0.3.jar を環境変数 ClassPath に追加します。 D:\program files\cloudsim-3.0.3\jars\cloudsim-examples-3.0.3.jar; D:\program files\cloudsim-3.0.3\jars\cloudsim-3.0.3-sources.jar; D:\program files\cloudsim-3.0.3\jars\cloudsim-examples-3.0.3-sources.jar; ここまでで、Cloudsimの設定は完了です。 1.4. Eclipseをインストールし、CloudsimプラットフォームをEclipseにインポートする 解凍されたファイルは Java プロジェクト、つまり Cloudsim シミュレーション プラットフォームです。 CloudSim はオープンソースなので、すべてのソースコードが提供されます。 Cloudsim をニーズに合わせて変更し、再コンパイルして、ニーズを満たす独自のシミュレーション プラットフォームを取得できます。 Eclipse ツールを使用すると開発が容易になります。 Eclipse のインストールプロセスについては詳しく説明しません。この記事では、Cloudsim のインポート プロセスについてのみ簡単に説明します。 Eclipse を開き、新しい Java プロジェクトを作成します。 「デフォルトの場所を使用する」オプションのチェックを外します。 cloudsimのパスを追加します。 「完了」をクリックします。以下のように表示されます。 この時点で、CloudSim のすべてのプロジェクト コードが新しいプロジェクトにインポートされています。CloudSim にはいくつかのサンプル プログラムが付属しています。いずれかを選択して実行すると、プログラムの実行ステータスがコンソール ウィンドウに表示されます。設定にエラーがなければ、次の図が表示されます。 この時点で、Cloudsim 環境がセットアップされました。次のステップは、Cloudsim プラットフォームに独自のリソース スケジューリング アルゴリズムを実装することです。 #p# 2. 多次元QoSに基づくリソーススケジューリングアルゴリズムの実装 1.Cloudsimのアーキテクチャとコアクラス CloudSim は、オーストラリアのメルボルン大学の Grid Laboratory と Gridbus プロジェクトによって 2009 年にリリースされたクラウド コンピューティング シミュレーション ソフトウェアです。Windows および Linux システムでクロスプラットフォームで実行できる関数ライブラリです。CloudSim のアーキテクチャは、図 1 に示すように、主に 4 つのレベルに分かれています。 図1 Cloudsimアーキテクチャ Cloudsim シミュレーション レイヤーは、仮想マシンのインターフェイス、メモリ、容量、帯域幅など、クラウド コンピューティングの仮想データ センター環境の構成とシミュレーションをサポートします。このレイヤーは、仮想マシンにホストを割り当てる戦略を検討するために使用され、コア仮想マシン スケジューリング機能を拡張することによって実装されます。 Cloudsim の最上位層はユーザー コード層であり、ホスト、アプリケーション、仮想マシン、ユーザー数とアプリケーション タイプ、エージェントのスケジュール戦略などの基本的なエンティティを提供します。これらのエンティティを拡張することで、クラウド アプリケーション開発者は、このレイヤーでさまざまなユーザー需要分布、アプリケーション構成、クラウド可用性シナリオなどのアプリケーション スケジューリング テクノロジを開発し、Cloudsim でサポートされるクラウド構成の堅牢なテストを実行できます。 Cloudsim が提供する基本機能を拡張することで、研究者は特定の環境と構成に基づいてテストを実施し、主要なクラウド コンピューティング テクノロジの開発と研究を完了することができます。 CloudSim は GridSim を継承し、クラウド コンピューティングの研究開発をサポートします。CloudSim のすべてのコンポーネント ツールはオープン ソースです。 CloudSim には 2 つの独自の機能があります。 ***、ユーザーがデータセンター内のノード上で独立した共同仮想化サービスを確立および管理できるようにする仮想化エンジンを提供します。 2 つ目は、仮想化サービスに処理コアを割り当てるときに、時間共有と空間共有を柔軟に切り替えることができることです。 CloudSim 関数ライブラリには、表 1 に示すように、いくつかの主要なコア クラスがあります。 表1 Cloudsimの主なコアクラス 2. Cloudsimの動作モデル クラウド データ センターでは、特定のアプリケーション用の仮想マシンのホストへの割り当ては、仮想マシン割り当てコントローラ (VmAllocationPolicy) によって完了します。Cloudsim は、ホスト層と仮想マシン層の両方で、時間共有とスペース共有に基づくスケジュール戦略を実装します。 通常、異なるユーザーからのタスクは比較的独立しています。m 人のユーザー User={User1、User2、…、Userm}、n 個のタスク Task={t1、t2、…、tn}、n 個の仮想化リソース VM={VM1、VM2、…VMn}、p 個のデータセンター Datacenter={Datacenter1、Datacenter2、…Datacenterp} があるとします。Cloudsim の動作モデルを図 2 に示します。 図2 Cloudsimの動作モデル その中で、CIS (Cloud Information Service) はユーザー要求を適切なクラウド サービス プロバイダーにマッピングし、DatacenterBroker は SaaS プロバイダー エージェントをシミュレートして、QoS 要件に基づいてリソースとサービスの割り当て戦略をネゴシエートします。 VmScheduler は、ホスト コンポーネントを実装し、仮想マシンの割り当てとスケジュール戦略をシミュレートする抽象クラスです。この抽象クラスを拡張すると、プロセッサ共有戦略を調整できます。 VmAllocationPolicy は、仮想マシンをホストに割り当てるために使用される仮想マシン モニターのスケジュール ポリシーを表します。 3. 多次元QoSに基づくリソーススケジューリングアルゴリズムを実装する シミュレーションを開始するときは、まずデータセンターを作成し、次にデータセンター内にCPUやメモリなどのリソースを作成する必要があります。このとき、リソース情報をプロキシセンターに登録するだけで、ユーザーはデータセンターのリソースをシミュレーションに使用できます。 シミュレーションリソース割り当て実験における手順と各手順のコードは次のとおりです。 (1)Cloudsimパッケージを初期化します。コードは次のとおりです。
(2)データセンターを作成します。コードは以下のとおりです。
(3)データセンターブローカーを作成します。コードは次のとおりです。
(4)仮想マシンを作成します。コードは次のとおりです。
(5)クラウドタスクを作成します。コードは次のとおりです。
(6)リソーススケジューリングアルゴリズムを実行して、タスクの仮想マシンへのマッピングを完了します。コードは次のとおりです。
(7)シミュレーションプログラムを起動します。コードは次のとおりです。
(8)シミュレーション結果を出力します。コードは次のとおりです。
注: タスクと仮想マシンのマッピングは、DatacenterBroker クラスの bindCloudletsToVms() 関数によって実装されます。この関数は、さまざまな戦略に従ってタスク マッピングを実装します。 Liu Peng が書いたクラウド コンピューティングの例では、2 つのマッピング アルゴリズムが提供されています。1 つはジョブを順次割り当てるアルゴリズムであり、もう 1 つは最短の合計完了時間によってガイドされる貪欲アルゴリズムです。私の目標は、多次元 QoS に基づくリソース スケジューリング アルゴリズムを開発することなので、Cloudlet クラスをオーバーロードし、リソース要件、QoS 要件、ジョブの優先度などの QoS 関連の属性をクラスに追加しました。次に、リソース割り当て機能では、これらの属性の値に応じて割り当て戦略が選択され、仮想マシンへのタスクのマッピングが完了します。さらに、個人的には、リソース スケジューリング レベルでは、QoS の各次元の具体的なソースと具体的な意味を指定する必要はなく、マッピング アルゴリズムでは、対応する操作を実行するためのパラメーターとして使用するだけでよいと考えています。 ブログソース: http://blog.csdn.net/hanchaoqi/article/details/36043879 http://blog.csdn.net/hanchaoqi/article/details/36199299 |
<<: Javaの組み込みソートアルゴリズムをどうやって克服したか
[[423901]]画像ソース: https://pixabay.com/images/id-601...
人工知能 (AI) ツールは、自動運転車から医療画像解釈まで、さまざまなアプリケーションで使用される...
TensorFlow は長い間、使いにくいと批判されてきました。 TensorFlow 2.0 のリ...
[[189866]]私たちは皆、検証コードに精通しています。reCAPTCHA は、人間と機械を区別...
[[247070]]液体ロボットといえば、誰もが真っ先に思い浮かべるのは映画「ターミネーター」のT1...
いつからか、「人工知能」という言葉はテクノロジー界で徐々に広まり、今では現在のテクノロジー製品や業界...
北京、12月30日:インテリジェントな要素がエッジに向かって動いています。データ収集速度が向上するに...
AI 競争が始まっており、世界中の企業が AI ベースのイノベーションにおける世界的優位性を求めて競...
最近、ファーウェイの創業者任正非氏はインタビューで、自分が最も関心を持っている問題は基礎科学研究と教...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
海外メディアの報道によると、1月31日、イタリアの規制当局は、OpenAIの人工知能チャットボット「...