2407
3.1.1 カーネル引数
2408
McKernelのカーネル引数を表??に示す。
2409
Table 3.1: McKernelのカーネル引数
引数 説明
hidos IKCを有効にする。
dump level=
<dump level>
Linuxのpanicハンドラ経由でダンプを行った場合の、ダンプ対象とするメモリ
領域の種類を<dump level>に設定する。設定可能な値は以下の通り。
0 IHKがMcKernelに割り当てたメモリ領域を出力する。
24 カーネルが使用しているメモリ領域を出力する。
指定がなかった場合は24が用いられる。
allow oversubscribe McKernelに割り当てられたCPU数より大きい数のスレッドまたはプロセスの生成
を許可する。この引数が指定されない場合に、CPU数より大きい数のスレッドまた はプロセスをclone(), fork(), vfork()などで生成しようとすると、当該システ ムコールがEINVALエラーを返す。
3.1.2 ブートスクリプト
2410
書式
2411
mcreboot.sh [-c <cpulist>] [-r <ikcmap>] [-m <memlist>] [-f <facility>] [-o
2412
<chownopt>] [-i <mon interval>] [-k <redirct kmsg>] [-q <irq>] [-t] [-d <dump level>]
2413
[-O]
2414
オプション
2415
2416
オプション 説明
-c <cpulist> McKernelに割り当てるCPUのリストを指定する。フォーマットは以下の通り。<CPU logical id>[,<CPU logical id>...] または<CPU logical id>-<CPU logical id>[,<CPU logical id>-<CPU logical id>...]または両者の混合。
-r <ikcmap> McKernelのCPUがIKC メッセージを送るLinux CPU を指定する。フォーマ ットは以下の通り。<CPU list>:<CPU logical id>[+<CPU list>:<CPU logical id>...] <CPU list>のフォーマットは-c オプションにおけるものと同じであ る。各<CPU list>:<CPU logical id>は<CPU list>で示されるMcKernelのCPU が<CPU logical id>で示されるLinuxのCPUにIKCメッセージを送信すること を意味する。
-m <memlist> McKernelに割り当てるメモリ領域を指定する。フォーマットは以下の通り。〈サイ
ズ〉@〈NUMA-node番号〉[,〈サイズ〉@〈NUMA-node番号〉...]。
-f <facility> ihkmond が 使 用 す る syslog プ ロ ト コ ル の facility を 指 定 す る 。デ フォル ト は LOG LOCAL6。
-o <chownopt> IHKのデバイスファイル (/dev/mcd*, /dev/mcos*) のオーナーとグループの値 を<user>[:<group>]の形式で指定する。デフォルトはmcreboot.shを実行した ユーザ。
-i <mon interval> ihkmondがハングアップ検知のためにOS状態を確認する時間間隔を秒単位で指定す る。-1が指定された場合はハングアップ検知を行わない。指定がない場合はハング アップ検知を行わない。
-k <redirect kmsg> カーネルメッセージの/dev/logへのリダイレクト有無を指定する。0が指定された場 合はリダイレクトを行わず、0以外が指定された場合はリダイレクトを行う。指定が ない場合はリダイレクトを行わない。
-q <irq> IHKが使用するIRQ番号を指定する。指定がない場合は64-255の範囲で空いてい
るものを使用する。
-t (x86 64アーキテクチャ固有)Turbo Boostをオンにする。デフォルトはオフ。
-d <dump level> Linuxのpanicハンドラ経由でダンプを行った場合の、ダンプ対象とするメモリ 領域の種類を<dump level>に設定する。設定可能な値は以下の通り。
0 IHKがMcKernelに割り当てたメモリ領域を出力する。
24 カーネルが使用しているメモリ領域を出力する。
指定がなかった場合は24が用いられる。
-O McKernelに割り当てられたCPU数より大きい数のスレッドまたはプロセスの生成
を許可する。指定がない場合は許可しない。すなわち、CPU数より大きい数のスレッ ドまたはプロセスを生成しようとするとエラーとなる。
説明
2417
2418
McKernel関連カーネルモジュールをinsmodし、<cpulist>で指定されたCPUと<memlist>で
2419
指定されたメモリ領域からなるパーティションを作成し、IKC mapを<ikcmap>に設定し、前
2420
記パーティションにMcKernelをブートする。
2421
戻り値
2422
0 正常終了
0以外 エラー
3.1.3 シャットダウンスクリプト
2423
書式
2424
mcstop+release.sh
2425
オプション
2426
なし
2427
説明
2428
McKernelをシャットダウンし、McKernel用パーティションを削除し、関連カーネルモ
2429
ジュールをrmmodする。
2430
戻り値
2431
0 正常終了
0以外 エラー
3.1.4 プロセス起動コマンド
2432
インターフェイスは第??節に記載する。
2433
3.1.5 統計情報取得
2434
バッチジョブスケジューラは、IHKの関数ihk os getrusage()を呼ぶことでジョブの統計
2435
情報を取得できる(インターフェイスは”IHK Specifications”参照)。
2436
ihk os getrusage()はvoid *rusageという引数で結果を返す。McKernelではrusage
2437
の実際の型はstruct mckernel rusage型で、以下のように定義される。
2438
struct mckernel_rusage {
2439
unsigned long memory_stat_rss[IHK_MAX_NUM_PGSIZES];
2440
/* ユーザのぺージサイズごとのanonymousページ使用量現在値(バイト単位) */}
2441
unsigned long memory_stat_mapped_file[IHK_MAX_NUM_PGSIZES];
2442
/* ユーザのページサイズごとのfile-backedページ使用量現在値(バイト単位) */}
2443
unsigned long memory_max_usage;
2444
/* ユーザのメモリ使用量最大値(バイト単位) */
2445
unsigned long memory_kmem_usage;
2446
/* カーネルのメモリ使用量現在値(バイト単位) */
2447
unsigned long memory_kmem_max_usage;
2448
/* カーネルのメモリ使用量最大値(バイト単位) */
2449
unsigned long memory_numa_stat[IHK_MAX_NUM_NUMA_NODES];
2450
/* NUMAごとのユーザのメモリ使用量現在値(バイト単位) */
2451
unsigned long cpuacct_stat_system;
2452
/* システム時間(USER_HZ単位) */
2453
unsigned long cpuacct_stat_user;}
2454
/* ユーザ時間(USER_HZ単位) */
2455
unsigned long cpuacct_usage;}
2456
/* ユーザのCPU時間(ナノ秒単位) */
2457
unsigned long cpuacct_usage_percpu[IHK_MAX_NUM_CPUS];
2458
/* コアごとのユーザのCPU時間(ナノ秒単位)*/
2459
int num_threads;
2460
/* スレッド数現在値 */
2461
int max_num_threads;
2462
/* スレッド数最大値 */
2463
};
2464
memory stat rssおよびmemory stat mapped fileのインデックスはサイズによるペー
2465
ジ種であり、x86 64アーキでは以下のように定義される。
2466
#define IHK_OS_PGSIZE_4KB 0
2467
#define IHK_OS_PGSIZE_2MB 1
2468
#define IHK_OS_PGSIZE_1GB 2
2469
3.1.6 ダンプ解析コマンド
2470
インターフェイスは第??節に記載する。
2471
3.1.7 ダンプ形式変換コマンド
2472
インターフェイスは第??節に記載する。
2473