Tuning
病み上がりです。今回はチューニングというわけではありませんが、チューニングに必要なログ取得について書きたいと思います。 IIS 8.0 ( Windows Server 2012 ) から、IIS 8.5 ( Windows Server 2012R2 )になって、ログの取得方法が大きく変更されています…
IIS8.0からアプリケーションプールのCPU使用率が閾値を超えた場合の動作として、『Throttle』『ThrottleUnderLoad』を設定可能になりました。ここに説明が記載されています。複数のアプリケーションプールに対して『Throttle』『ThrottleUnderLoad』設定する…
IIS のチューニングをそろそろ開始しなければいけません。しかし、IIS のチューニング自体まじめにやった経験がありません。Windows Azure に Windows Server 2012 R2 でも作って、色々調査してみます。ふと、思ったんですが、仮想マシンの作成やたら高速に…
RyuJIT ってなんでしょう? RyuJIT とは The next-generation JIT compiler for .NET です。ここのブログを参照しました。 The world is moving to 64-bit computing even though it isn’t always faster or more efficient than 32-bit. A lot of programs …
MPGO とは、Managed Profile-Guided Optimaization の略です。Visual Studio 2012 と CLR 4.5 で導入されたツールです。実行中のアプリケーションの状態をプロファイリング、情報を生成し、その情報をアセンブリに埋め込みます。Ngen はこのプロファイリング…
実行プランを取得する方法として、SQL Server Management Studio で取得する方法、DMVで取得する方法以外に、SQL Server Profiler で取得する方法があります。 まず、SQL Server Profiler を起動します。 イベントの選択タブをクリックし、すべてのイベント…
『 SQL Server の実行プランを少しだけ詳しく説明したみた 』で Nested Loop に関して説明しました。今回は、 Hash , Merge について説明します。 ※関係ないですけど、新幹線の移動中はブログを書くのにもってこいの環境です。 それでは本題に戻ります。まず…
SQL Server Management Studio の知っておいたほうが良い機能について挙げてみる - その3 - で使用していた SQL を検証がしやすいよう下記のように変更したいと思います。( NESTED LOOPS をわざと発生するようにしています。) USE AdventureWorks2012SET STA…
今回は、.NETFramework の GC の種類に関する記事です。ここの記事が参考になります。これは全く知見がありませんでした。下記のような種類があるそうです。 ワークステーション/コンカレント実行なし ―― メモリ割り当てに責任を持つマネージスレッドにおい…
SQL Server のチューニングについてまとめていこうかと思います。まずは、インデックスを使用していないクエリの抽出方法です。SQL Server のチューニングには、dm_* で始まる動的管理ビューを多用します。今回は、主に以下の3テーブルを使用して、インデッ…
ExactSpelling 属性は名前の文字列が完全に一致する時のみ利用可能とするかの属性です。ExactSpelling = true とすることで、完全に一致した関数のみとなります。ExactSpelling = false とすると、部分一致した関数を検索します。以下はサンプルです。 publi…
ConcurrentDictionary は、スレッド数と初期容量を設定することで若干高速化されます。スレッドセーフなクラスなので、Parallel クラスで処理することも可能です。ソースコードは以下の通りです。 //ConcurrentDictionaryへの要素追加に関する計測 var lisw …
.NET アプリケーションの高速化について探し始めてみた - その4 - で取り上げた ConcurrentDictionary のパフォーマンスを計測してみたいと思います。検証しようかと思ったら、仮想環境を格納してある外付けハードディスクを忘れてしまいました...こんな時は…
Dictionary をスレッドセーフにするには、自前で Monitor などを使用してそれぞれのメソッドをロックする必要がありました。.NET 4.0 より ConcurrentDictionary というクラスが追加されています。(今更?) 複数のスレッドから同時にアクセスできるキーと値…
SuppressUnmanagedCodeSecurityAttribute() って知ってますか?ネットをぼーと探していたら見つけたのですが、ここにこの属性の説明が記載されています。 ※下記はMSDNから抜粋 // SuppressSecurity.cs using System; using System.Security; using System.Se…
昔々、dll の Load 時に配置アドレスの競合が発生してしまうと、再度配置場所を探す必要があり、少なからずレスポンスに影響が出ていました。それを未然に防止するため、予めベースアドレスを指定します。Visual Studio 2012 では下記のように設定します。 …
今月・来月は、.NET アプリケーションの高速化について色々調査したいと思います。コードの最適化、NGEN等といった一般的な高速化手法があります。今回はネットで調べ物していた時に見つけたものを少し紹介したいと思います。RPX ( Rugland Packer for ( .Ne…