12

定期的に(1秒または2秒ごとに)自分自身をフォークしてチェックポイントを取得するアプリケーションがあります。したがって、チェックポイントは元のプロセスのフォークであり、元のプロセスでエラーが発生したときに開始を求められるまでアイドル状態のままになります。

さて、私の質問は、フォークのコピーオンライトメカニズムにどれほどの費用がかかるかということです。コピーオンライトメカニズムにより、元のプロセスに確実にチェックポイントとは異なる物理ページ。

私の意見では、割り込みが発生すると、ページフォールトトラップのオーバーヘッドが非常に高くなる可能性があります。ユーザースペースランドからカーネルスペースランドに移動してから、カーネルからユーザースペースに戻ります。このようなページフォールトトラップから何CPUサイクルを失う可能性がありますか。RAMが十分に大きく、ハードディスクにスワップする必要がないと仮定します。

これよりも効率的なチェックポインティングスキームを想像するのは難しいことを私は知っているので、ページトラップ障害のオーバーヘッドについて心配している理由を言うことができますが、このスキームにはどれくらいのコストがかかるかを知ってもらいたいだけです。

4

1 に答える 1

16

知識に基づいた推測のために、大まかな計算を自分で行うことができます。ディスクアクセスがないと仮定すると(約100億サイクル)、次のことを考慮する必要があります。

  • トラップと復帰に160サイクル(およそ、x86_64で)
  • 妥当性チェック、クォータ、アカウンティング、その他(不明、おそらく数百から数千サイクル)
  • 4096バイトで整列memcpy、約500〜800サイクル
  • TLBの無効化(最初のアクセスで10〜100サイクルを追加)
  • の実装に応じて、他のキャッシュデータの削除または1つの保証されたキャッシュミス(80〜400サイクル)のいずれかmemcpy。どちらが優れているかは、アクセスパターンにとって非常に重要です。

つまり、全体として、約2000サイクルのことを話しているのですが、一部の効果(TLBやキャッシュ効果など)は分散していて、すぐには表示されません。OmondiとSedukhinは、2003年にP-IIIで1700サイクルを報告しました。これは、この推定と一致しています。

2000年のL.Torvaldsのコメントによると、ページがこれまでに書き込まれたことがない場合は、状況が少し異なることに注意してください。ゼロページでのコピーオンライトミスは、プールから別のゼロページをプルします。ゼロをコピーします。ただし、これもキャッシュミスが保証されていることです。

于 2012-04-19T11:56:12.480 に答える