*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]]