Cloudsimを使用して多次元QoSに基づくリソーススケジューリングアルゴリズムを実装する

Cloudsimを使用して多次元QoSに基づくリソーススケジューリングアルゴリズムを実装する

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パッケージを初期化します。コードは次のとおりです。

  1. Int num_user = 1; // ユーザー数を定義する 
  2. カレンダーcalendar = Calendar.getInstance();
  3. ブール型trace_flag = false ;
  4. CloudSim.init(num_user, calendar, trace_flag); //CloudSim パッケージを初期化します 

(2)データセンターを作成します。コードは以下のとおりです。

  1. データセンター datacenter()=createDatacenter( "Datacenter_0" );

(3)データセンターブローカーを作成します。コードは次のとおりです。

  1. DatacenterBroker ブローカー = createBroker();
  2. ブローカーIDを取得する

(4)仮想マシンを作成します。コードは次のとおりです。

  1. vmlist = new VirtualMachineList(); //仮想マシンリストを作成する 
  2. Vmvm=新しいVm(vmid、brokerld、mips、PesNumber、ram、bw、size、
  3. vmm, new CloudletSchedulerTimeShared()); //仮想マシンを作成する 
  4. vmlist.add(vm); //仮想マシンリストに追加 
  5. broker.submitVMList(vmlist); //仮想マシンリストを送信します 

(5)クラウドタスクを作成します。コードは次のとおりです。

  1. cloudletList = new CloudletList(); //クラウドタスクリストを作成する 
  2. クラウドレット cloudlet = new Cloudlet(id, length, file_size, output_size);
  3. cloudlet.setUserlD(brokerld);
  4. cloudletList.add(cloudlet); //タスクをタスクリストに追加します 
  5. broker.submitCloudletList(cloudletList); // ブローカーにタスクリストを送信します 

(6)リソーススケジューリングアルゴリズムを実行して、タスクの仮想マシンへのマッピングを完了します。コードは次のとおりです。

  1. ブローカー.bindCloudletsToVms();

(7)シミュレーションプログラムを起動します。コードは次のとおりです。

  1. CloudSim.startSimulation();

(8)シミュレーション結果を出力します。コードは次のとおりです。

  1. リスト<Cloudlet> newList = broker.getCloudletReceivedList();
  2. CloudSim.stopSimulation();
  3. CloudletList を print(新しいリスト) します。

注: タスクと仮想マシンのマッピングは、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の組み込みソートアルゴリズムをどうやって克服したか

>>:  ソートアルゴリズムのより詳細な概要

ブログ    
ブログ    
ブログ    

推薦する

OpenAIはAIモデルのトレーニング用データセットを生成するパートナーを募集している

IT Homeは11月10日、OpenAIがAIモデルのトレーニング用にパブリック/プライベートデー...

PythonでChatGPT APIを使用してリアルタイムデータを処理する方法

翻訳者 |李睿レビュー | Chonglou OpenAI が立ち上げた GPT は現在、世界で最も...

ディープラーニングの未来に関する6つの予測

[51CTO.com クイック翻訳] ディープラーニングは複雑な概念であり、その中の各要素は単純では...

GPT-2を使ってGPT-4を監督し、AIが人類を滅ぼすのを防ぐ?OpenAI Ilya Super Alignmentチームの最初の論文が発表される

たった今、OpenAI のチーフサイエンティスト Ilya が率いるスーパーアライメントチームが設立...

2024年の最大の落とし穴は?ディープラーニングに基づくエンドツーエンドの自動運転の最新レビュー

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

ビル・ゲイツ:人工知能に国境を簡単に引いてはいけない

[[260361]]新華社によると、ビル&メリンダ・ゲイツ財団の共同議長ビル・ゲイツ氏は最近スタンフ...

ローコード プラットフォームに関する不完全な推奨事項!

ソフトウェア開発者向けのローコード機能それでは、ソフトウェア開発者に機械学習機能を提供するローコード...

...

中国科学院コンピューティング技術研究所の孫暁明氏:多項式レベルの加速の実現、量子探索アルゴリズムの利点と課題

4月20日、Syncedは「量子コンピューティング」に関するオンライン円卓会議イベントに、中国科学院...

Java で一般的に使用されているいくつかの暗号化アルゴリズムは、最も強力なハッカーでも解読できません。

シンプルな Java 暗号化アルゴリズムは次のとおりです。厳密に言えば、BASE は暗号化アルゴリズ...

2018年のトップ10の技術開発トレンド:人工知能は応用の「爆発期」に入る

情報技術の調査およびコンサルティング会社であるガートナーは最近、2018 年の戦略的技術開発のトレン...

OpenAIがChatGPTに「ドラゴン退治のテクニック」を直接教える!公式のヒントエンジニアリングガイドはこちら

Prompt プロジェクトをどのように説明すればよいでしょうか? ChatGPT を初めて使用する初...

顔認識を法的に規制する方法

[[359388]]政府機関による顔認識技術の利用に対する法的規制に関して、特別ライセンス制度は、顔...

BAT や他の人たちは人工知能に関してどのようなことを話しましたか?

9月17日、上海の西外灘で2018年世界人工知能大会が正式に開幕した。ジャック・マー、ポニー・マー...

Protobufを勉強していたら、良いアルゴリズムを見つけました - ZigZag

[[434311]]もともと Protobuf の原理を勉強したかったのですが、研究の過程で Pr...