計算資源共有利用のための 資源プールの実現 慶応義塾大学 環境情報学部 4年 藤村 浩士 背景・問題意識 高速なネットワークに常時接続される高性 能計算機が急増 しかし、これらの計算機は休祭日中はユー ザに利用されずアイドル状態 (例: SFCの特別教室) 計算資源が有効利用されていないのでは? 背景・問題意識2 計算機の多様化 PC・ワークステーション→高速化 PDA・Wearableコンピュータ→小型化 JavaRing 6K byte RAM 8-16bit Processor 小型コンピュータが高性能コンピュータの 処理能力を利用する方法はないのか? 研究目的 負荷分散による組織内での計算資源の 最適利用 小型携帯端末の計算処理支援 並列計算による処理の高速化 Mebius Space: システムの概要1 z z z supply consume z Supporter z z Client Pool Mebius Space: システムの概要2 Worker Client サブシステムの構成1 M-Pool: サポートホストから提供された計算資 源を集約し、M-Client(後述)に分配する計算資 源プールのデーモン M-Supporter: サポートホスト上でデーモンとし て動作し、自らの計算資源の提供を行う M-Client: Mebius Spaceを利用するアプリ ケーションによってインスタンス化され、M-Pool に対して計算資源を要求する サブシステムの構成2 M-Worker: Mebius Spaceを利用するアプリ ケーションプログラマによって拡張され、分散処 理させたい内容が実装される M-SupporterInfo: サポートホストの状態情報 (ホスト名、OSタイプ、メモリ容量、ベンチマーク 値など)が格納される システムの動作手順1 ーサポートホストの登録と計算資源要求のフェーズー M-Supporter 1 2 M-Supporter M-Client M-Pool M-Supporter 3 M-SupporterInfo Object システムの動作手順2 ー計算資源共有利用のフェーズー User Application 1 Make an instance 6 Notify by Man event Worker M-Supporter M-Client 2 Registration 4 Execution Finish MWorker Queue Remote Method Invocation 5 Return Home 3 Migration システムの特徴1 簡便性 – 遠隔ホストからアプレットによる動的な設定変更が可能 – 複数のM-Supporterを信頼できるM-Poolのアップレットによっ て一括管理することが可能 安全性 – ローカルホスト上の資源(ローカルファイルやシステムプロパティ) へのアクセスを制限することが可能 柔軟性 – M-Supporterは複数の計算資源提供ポリシを選択可能 – 「/tmp以下はアクセスを許可する」、」あるドメイン内のホストには 接続を許可する」など、柔軟にセキュリティレベルを設定すること が可能 ポリシーファイルの記述例 grant signedBy "fuji", codeBase "http://k2.ht.sfc.keio.ac.jp/~fuji/MebiusSpace/" { permission java.io.FilePermission "/tmp/-", "read, write, delete, execute"; permission java.util.PropertyPermission "user.name", "read"; permission java.util.PropertyPermission "user.hom", "read"; }; grant { permission java.net.SocketPermission "*.ht.sfc.keio.ac.jp:1024-", "accept, connect, listen, resolve"; }; grant signedBy "root" { permission java.security.AllPermission; }; システムの特徴2 大規模性 – 複数のM-Poolをツリートポロジで接続し,M-Supporterを分散 協調管理することが可能 位置透過性 – アプリケーションプログラマがM-Workerがリモートで実行される ことを意識する必要なくプログラムすることが可能 未解決の問題 M-Workerのバックアップ、強制退去機能の実現 – 実現するためにはスレッドマイグレーションが できなければならない セキュリティマネジャでも抑制できないものがある (Windowの表示など) M-Workerが消費するCPUリソースを管理する方法 がない コード記述例 サンプルコード – 0から1億までに存在する素数を見つけるプログラム – エラストテネスのふるいのアルゴリズムを使用 – M-Workerインスタンスを10個つくり、0~1000万-1、 1000万~2000万-1というように、それぞれに1000万 単位で素数探索を割り振る – M-Workerはサポートホストに移動し探索を実行する コード記述例1 ―リモートメソッドをMworkerインターフェースの サブクラスにに定義― import jp.ad.wide.sfc.MebiusSpace.*; import java.rmi.*; public interface PrimeNumber extends MWorker{ public String start()throws RemoteException; } コード記述例2 -Mworker_Implサブクラスの実装/** import jp.ad.wide.sfc.MebiusSpace.*; import java.util.Vector; *指定された範囲の素数の探索を開始する. import java.rmi.*; *PrimeNumberインターフェースに定義してあるので *リモートメソッドとしてCallすることができる. /** * *minNumからmaxNumまでの間に存在する *@return 結果が格納されたベクタ *素数を探すクラス. */ */ public Vector start()throws RemoteException{ imp public class PrimeNumber_Impl //minNumからmaxNumまでの間に存在する素数を探し extends MWorker_Impl implements PrimeNumber{ //結果をVectorに格納する. ・・・省略・・・ public PrimeNumber_Impl return result; (String name, int minNum, int maxNum) throws RemoteException { super(name); this.minNum = minNum; this.maxNum = maxNux; } } } コード記述例3 import jp.ad.wide.sfc.MebiusSpace.*; public class Sample implements MWorkerListener{ public void start(){ try{ //MClientのインスタンス化、第1引数にMClientの名前, //第2引数にMClientの設定ファイルのパスを指定する MClient_Impl mci = new MClient_Impl ("MClient", "/home/fuji/MebiusSpace/MClient.conf"); mci.addMWorkerListener(this); //イベントリスナを指定する //MClientのQueueの中にMWorkerを追加 for(int i=0; i<10; i++) mci.addMWorker(new PrimeNumber_Impl ("PrimeNumber_"+i, 10000000*i, (10000000-1)*(i+1))); }catch(java.rmi.RemoteException e){ e.printStackTrace(); System.exit(0); } } コード記述例3 続き /** *MWorkerがリモートホスト上にマイグレーションできたら *MWorkerのリモートハンドラがイベントとして返される. * */ public void mworkerAvailable(MWorker mworker){ try{ Vector result = ((PrimeNumber)mworker).start(); //リモートメソッドをコール }catch(java.rmi.RemoteException e){ e.printStackTrace(); } System.out.println //結果を表示 ("Done!\n"+ " Name : "+mworker.getName()+"\n"+ " Supporter's HostName : "+mworker.getMSupporterHostName()+"\n"+ " I have "+result.size()+" prime numbers"); } public static void main(String argv[]){ Sample sample = new Sample(); sample.start(); } } 実行結果 Done! Name: PrimeNumber_0 Supporter’s HostName: k2.ht.sfc.keio.ac.jp I have 1245233 prime numbers Done! Name: PrimeNumber_3 Supporter’s HostName: wanwan.sfc.wide.ad.jp I have 3495321 prime numbers Done! Name: PrimeNumber_13 Supporter’s HostName: dali.ht.sfc.keio.ac.jp I have 632323 prime numbers Done! Name: PrimeNumber_1 Supporter’s HostName: localhost . . . . まとめ Mebius Spaceの紹介 – システム構成 – 動作手順 – 特徴 未解決の問題点 コード記述例
© Copyright 2024 ExpyDoc