locked
NGENを実行するインストールの監視 RRS feed

  • 質問

  • お世話になっています。

    Hiroyuki_Kです。

     

    App-V4.6にてシーケンスを行っています。

    インストール中にNGENを実行するインストールをApp-Vシーケンサで監視する場合、インストールの監視はNGENが全て完了するまで待ってから終了するべきなのでしょうか?

    そもそも、NGENが監視対象になるのかどうかが?なのですが...。

    情報をお持ちの方がいらっしゃいましたら助言をお願いいたします。

    2011年2月7日 7:16

すべての返信

  • どうもです。

    4.5SP2の情報です、
    NGENは、シーケンス時には止めとくほうが良いみたいです。
    http://technet.microsoft.com/ja-jp/library/ff699130.aspx


    >.NET Framework のシーケンス処理中のパフォーマンスの改善

    >Microsoft .NET Framework のシーケンス処理を行うときに、システムのパフォーマンスが低下することがあります。これは、.NET >Framework NGEN サービスが、バックグラウンドでアセンブリをプリコンパイルしようとするからです。
    >回避策   .NET Framework のシーケンス処理を行うときに、監視フェーズの完了後に .NET Framework NGEN サービス (mscorsvw.exe) >を無効にします。App-V Sequencer の [仮想サービス] タブを使用し、スタートアップの種類を [無効] に変更する必要があります。


    シーケンス時のパフォーマンスの問題だけで止めたほうが良いという事みたいですが、
    理想としては、NGENでコンパイルされた.netアプリが仮想化されて配信されて
    初回起動からコンパイル済で高速化されたイイ感じですよね。

    そのあたりは、全く触れられていないので、コンパイルされた物が
    有効にならないで、またクライアント環境でNGENされてしまうから
    止めとく方が良いんですかね。試し方がわからないので、予想ですが実際はどうなんだろう。。。



    tune
    2011年2月7日 14:54
  • Hiroyuki_Kです。

    tunemicky さん、レスありがとうございます。

     

    >4.5SP2の情報です、
    >NGENは、シーケンス時には止めとくほうが良いみたいです。
    >http://technet.microsoft.com/ja-jp/library/ff699130.aspx

    これについては私も見たのですが、これは .NET Framework のインストールをシーケンスする時の話で今回のことには関係ないと思っていました。

    しかし、NGENを実行するとシーケンスに時間がかかるのは事実で試してみると確かにその通りなんですが、その見返りとしてクライアントで高速化されるのであればNGENを実行した方がいいと考えています。

     

    >シーケンス時のパフォーマンスの問題だけで止めたほうが良いという事みたいですが、
    >理想としては、NGENでコンパイルされた.netアプリが仮想化されて配信されて
    >初回起動からコンパイル済で高速化されたイイ感じですよね。
    >
    >そのあたりは、全く触れられていないので、コンパイルされた物が
    >有効にならないで、またクライアント環境でNGENされてしまうから
    >止めとく方が良いんですかね。試し方がわからないので、予想ですが実際はどうなんだろう。。。

     

    試しにインストール+NGEN実行するインストーラをシーケンスしてみましたが、NGENの実行がシーケンスログに残っていました。

    また、「ツール」-「診断」-「コマンドウィンドウ」メニューにて NGEN display コマンドを試してみたらNGENは行われていたのでクライアント環境でもロード時に高速化済みのアセンブリが読み込まれるのではないかと期待しています。

    インストーラで NGEN display を実行するバッチファイルとそのショートカットを作成するようににして試してみます。

     

    2011年2月8日 5:04
  • NGEN の実行結果は環境依存だと認識しています。
    NGEN で生成されたバイナリはほかの環境で実行できないか、パフォーマンスの低下を招く恐れがあります。

    App-V でシーケンス処理が不勉強でわからないのですが、生成されたバイナリを展開する可能性があるのであれば、それは避けるべきです。
    逆に、NGEN を展開先環境で個別に実行するように作れるのであれば、可能性はあるかもしれません。ただ、パフォーマンス面で効果があるかは何とも言いかねます。
    (そのどちらになるのかの判断は、私にはできません。すみません)

    http://msdn.microsoft.com/ja-jp/library/6t9t5wcf.aspx
    http://social.msdn.microsoft.com/forums/ja-JP/vsfeedbackja/thread/9aea8779-c4fa-4af0-831b-fde114a45341/


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2011年2月8日 14:10
  • Hiroyuki_Kです。

    Azuleanさん、レスありがとうございます。

    返信が遅くなってしまって申し訳ありません。

     

    >App-V でシーケンス処理が不勉強でわからないのですが、生成されたバイナリを展開する可能性があるのであれば、それは避けるべきです。
    >逆に、NGEN を展開先環境で個別に実行するように作れるのであれば、可能性はあるかもしれません。ただ、パフォーマンス面で効果があるかは何とも言いかねます。
    >(そのどちらになるのかの判断は、私にはできません。すみません)

    NGENを実行したシーケンスで作成したApp-Vイメージを実際に配信して試してみました。
    配信後に十分に時間が経ってから配信先の仮想ディレクトリ内で NGEN display コマンドを実行したところ、「StatusPending(Pre1)」となっていました。
    また、シーケンス後に「ファイル」タブの中身を探してもキャッシュされたファイルは見つかりませんでした。
    「仮想レジストリ」タブにはNGENに関わっていそうなレジストリ項目がいくつかありました。
    もしかしたら配信先で個別にNGENが実行されているのではないかと推察しているんですが....どうなんでしょう??

    どちらにしろ、今の私では判断ができない状況です...。
    もう少しドキュメントを漁ってみます。
    2011年2月9日 11:42