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の組み込みソートアルゴリズムをどうやって克服したか
太陽の光、美しさ、ビーチ、他に何が思い浮かびますか?写真にボストンのロボット犬がいると言ったら、想像...
[[391125]]エッジで AI を導入すると、ネットワークの遅延と運用コストを削減できるだけでな...
[[186777]]過去 2 年間、機械学習、特にディープ ニューラル ネットワークのニーズを満たす...
[51CTO.com からのオリジナル記事] スマートカーといえば、真っ先に思い浮かぶのは自動運転で...
最近、2020年中国人工知能産業年次大会が蘇州で開催されました。大会で発表された「中国人工知能発展報...
著者の個人的な理解に基づいて書かれた現在、自動運転の分野では、点群データを収集するためのLIDARセ...
[[348121]]私の印象では、ロボットは火や剣を恐れていないようです。彼らには痛覚はなく、単な...
[[271667]]この記事では、ブラウザ上で動作する顔認識フレームワーク、Face-api.js ...
近年、自然言語処理、コンピュータービジョン、音声処理など、人工知能のさまざまな分野が、ディープラーニ...
組織のエンドユーザーとますますインテリジェントになるソフトウェア ツールとの間の生産的なパートナーシ...