migration

判定のコードの例(rt.com3.c)

sss_loadbalance

引数は、my_pnidp,migrated_f,mig_type,mig_idの4つ。

1276行目

   case 1:
     if (min_usage < 1000) { /* usageが1000以下の場合 */
       if (my_usage < (min_usage + 5000)) goto leave_loadbalance;
     } else if ((my_usage < (min_usage + 15000)) || (my_usage < 5000)) { 
     leave_loadbalance:
       start_tick = 0;
       return *my_pnidp;
     }
     break;

my_pnidpは、この関数の第1引数。

sss_migration_requestは、1360行目で発動。

mbcf_k_cmp_swap

引数は、target_task,key,target_addr,valの4つ。

pboxに何か数値を入れているのはわかるが、valが非0のときに呼び出してるk_cmpswap_taskdataって何?(valは呼び出し元タスクのIDらしい。主ノードかどうかの差?)

返値は、swap_data

システムコール

sss_migration_request

       int     sss_migration_request(int node,int type);
               nodeはマイグレーション先の物理ノードID(SSS-CORE世界
               のID)を指定する。typeはマイグレーション時の同期,ペー
               ジコピー,MBCFの整合性に関する方式を指定する。
               マイグレーションに成功した場合は返り値として0が返り,
               動作ノードが移動する。マイグレーションに失敗した場合は
               システムコールを実行したノードで動作を続け,返り値として
               -1が返る。
       type    マイグレーションタイプ
               0 : 事前同期なし、eagerページコピー、MBCF事後変更通知なし
       帰り値: -1  エラー (移動していない)
               0   成功

Lab/SSS-PC


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS