0

oprofileを使用して、サーバー クラスターのパフォーマンスの問題を追跡しようとしています。ただし、問題のサーバーには読み取り専用のファイル システムがあり、書き込み可能なディレクトリは /var/tmp だけです。

OProfile は、実行するたびに と の 2 つのディレクトリを作成しようとし/root/.oprofileます/var/lib/oprofileが、ファイルシステムが読み取り専用であるため作成できません。コマンド ライン オプションを使用して、--session-dir以外の場所にログを書き込むこと/var/libができますが、 以外のディレクトリを使用するようにするオプションが見つかりません/root/.oprofile

ファイルシステムは書き込み不可のメディア上にあるため読み取り専用であり、アクセス許可のためではありません。つまり、スーパーユーザーでさえそれらのディレクトリに書き込むことはできません。ファイルシステムの新しい ROM イメージをクックすることはできますが (これは明らかに oprofile をインストールした方法です)、スーパーユーザーであるかどうかにかかわらず、実行時プログラムが /root に書き込む方法はありません。

ROM に /root/.oprofile -> /var/tmp/oprofile を指すシンボリック リンクを作成しようとしましたが、どうやら oprofile はこのシンボリック リンクをディレクトリとして認識せず、実行時に失敗します。

redacted@redacted:~$ sudo opcontrol --no-vmlinux --start --session-dir=/var/tmp/oprofile/foo
mkdir: cannot create directory `/root/.oprofile': File exists
Couldn't mkdir -p /root/.oprofile

この特定のシステムでプロファイラーを実行する必要があります。調査しようとしているパフォーマンスの問題は、開発サーバーでアプリをビルドして実行すると明らかにならないからです。プログラマーのワークステーションでテストを実行し、そこでアプリをプロファイリングすることはできません。問題は発生しないからです。

oprofile を使用しないように設定する方法はあります/rootか?

4

2 に答える 2

0

opcontrolこのディレクトリがbash スクリプトにハードコードされていることが判明しました。

  # location for daemon setup information
    SETUP_DIR="/root/.oprofile"
    SETUP_FILE="$SETUP_DIR/daemonrc"

これらの行を編集すると、多かれ少なかれ機能するように見えました。

于 2011-11-02T01:50:43.553 に答える
0

HOME 環境変数をオーバーライドするのと同じくらい簡単なはずです。

HOME=/tmp/fakehome sudo -E opcontrol --no-vmlinux --start --session-dir=/var/tmp/oprofile/foo

それがうまくいかない場合は、見てみることができます

  • ユニオンズ
  • aufs

書き込み可能なオーバーレイを作成します。tmpfs/root またはそのような単純なものにマウントすることもできます。

于 2011-11-01T23:56:28.620 に答える