Mona におけるプロセス起動コストの話

MoshMona に移植したら遅い。よくよく計測してみるとプロセスの起動が遅い。遅かった理由と改善方法のメモ。自作 OS の人は参考になるかもしれない。

  • demand paging が遅い。1ページずつ page frame を割り当てていたら 必要なメモリサイズ / ページサイズ の回数だけ page fault が走る。特に KVM の場合 PTE の書き換えでホストに制御が戻るのでコスト高い。
    • →メモリ全領域を使う事が分かっている場合はあらかじめメモリを貼り付けておく。
    • ページフォルト時に隣接 N ページも投機的に割り当てる
  • メモリのコピーが遅い。
    • →出来るだけゼロコピーを目指す。プロセスロード時にユーザー空間からカーネルへ共有メモリハンドルを渡す
  • メモリ操作が遅い
  • CFLAGS
    • 可能な限り O3
  • プロセスロード情報の取得が遅い
    • キャッシュする