2012-04-23 19 views
1

Linuxのページフォルトハンドラにコードを追加したいと思っています。特に、copy on writeに使用されているもの、つまりdo_wp_pageを変更することに興味があります。しかし、ジレンマは、アプリケーションをテストしたいマシンが私のコントロール下にないということです。 OSやカーネルは、複数のユーザーが使用する共有マシンであるため、そのマシン上で変更することはできません。独自のページフォルトハンドラを使用する

今私は自分のページフォールトハンドラを定義する方法を探しています。これは、実行しているアプリケーションでのみ使用されます。たぶん私はカーネルモジュールを使うことができました(それについても私はいくつかの管理者権限を求めなければならないかもしれません)、あるいは私はそれをユーザー空間で定義することができます。そして、私はSIGSEGV信号を扱うことを望まないことに気づいてください。だから、mprotectと言ってはいけません。私はページ違反を書き込む際に実際のコピーを扱いたい。私の選択肢は何ですか?

答えて

2

私は、仮想マシンを使用するのが最も簡単な方法を提案します.VMでカーネルレベルの開発をすると、エラーが他のユーザーに問題を引き起こさないことを意味します。

+0

しかし、私はVMで適切にベンチマークできません。私は私のアプリケーションをベンチマークする必要があります。 – pythonic

+2

@ user1018562ベンチマークする必要がある場合は、共有マシンは適切ではありません。他のユーザーは読書にあまりにも多くのノイズを生成します。 –

+3

できます。元のページフォルトハンドラを基準にベンチマークを行うことができます。また、新しいものを開発している間にカーネルがクラッシュするので、共有マシンでもしようとしないでください。 –

0

残念ながら、do_page_faultとdo_wp_pageのアドレスは公開されていないので、あなたの言うことを実際に行う方法はおそらく怒られます。 VM上の共有マシンで開発を行い、ベンチマークを処理するための専用のマシンを入手してください。とにかく他のユーザーのワークロードがあなたに干渉するため、共有されたマシンからは良い読みが得られません。

サイドノート:これを修正する必要があるのは、Linux上のCOWの何が問題なのですか?

+0

COWに何か問題はありません。どのページが複製されているかを知るためのコードを追加するだけです。少なくとも、書き込み時にどのページがコピーされているかを知ることはできますか? – pythonic

+0

私はその時間(少なくとも時間コマンドの特定のバージョン)は、どのくらいのページフォールトが発生し、それらのどれがCOWであるかを教えてくれると確信しています –

+0

私は単なる数字だけでなく、コピーされたページのアドレスも望んでいません。 – pythonic

関連する問題