*migration

#contents

**判定のコードの例(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