さて、まず第一に、私は運用担当者ではなく開発者であると言っておきます。なので、ここではちょっとした未知の土地に入りますので、ご容赦ください。
Azure仮想マシンを使用して、1.9 GBのZipファイルから50 GBのXMLファイルを抽出したいと思います。したがって、私はAzureでどのインスタンスサイズを使用して、必要以上のコストをかけずに優れたパフォーマンスを実現するかをテストしてきました。
ただし、Azure VMのディスクパフォーマンスは驚くべきものではなく、何か問題を起こしているのが私なのか、それとも期待どおりの結果が得られるのかを知りたいのです。
まず第一に、私は何をテストしてきましたか?カスタムの.NETコンソールアプリケーションがあり、Zipファイルを引数として取り、すぐにZipファイルが存在する同じディレクトリにZipファイルの抽出を開始します。抽出の進行中に、アプリケーションはメガバイト数を計算しますアプリケーションは毎秒ターゲットファイルに書き込み、それを出力します。
私のローカル開発マシンでは、このアプリケーション(160〜210 MB /秒の書き込み)でかなり良いパフォーマンスを得ています。したがって、全体の抽出プロセスには約8分かかります。私のローカルマシンの仕様は、Intel Core i7 950、3 GHz、4コア(8論理)、12 GB RAM、Samsung SSD 830シリーズ250 GBです。
さて、それで私は異なるインスタンスサイズのテストを始めました、そしてこれが私の結果です。
D2およびD1インスタンスでは、ディスクのパフォーマンスはD3の場合よりも劣ります。
そして、これは私を本当に驚かせます。ローカルSSDディスクは、D1、D2、およびD3インスタンスの場合と同様に、どのようにパフォーマンスが悪いのでしょうか。また、ディスクパフォーマンスがD1とD4で大きく異なる理由を誰かが知っていますか?メモリの問題ですか?抽出が進行しているときにタスクマネージャーを見ると、メモリ使用量が急増しています。 Windowsが書き込まれたデータをキャッシュしているためだと思いますが、メモリが不足すると、データをディスクにフラッシュする必要があります。これが発生すると、ディスクのパフォーマンスが低下します。しかし、これはローカルマシンでは発生しないので、なぜこれらのVMでそのような積極的なキャッシュが必要なのでしょうか。
ローカルマシンとAzureでホストされている仮想マシンに違いがあることはわかっていますが、実際に発生しているディスクパフォーマンスは期待どおりですか?
(私が最初に投稿したのは Stackoverflowに関する私の質問 でした。原因はアプリケーションであると疑っていたためです。しかし、もう確信が持てません)
ここのパーティーには少し遅れましたが、Azureに「接続された」SSDの価値があるのは、マシンサイズに基づいてIOPが抑制されているためです。価格のどこにも記載されていませんでしたが、以下のブログ投稿を紹介してくれたときに、テクニカルサポートのチケットとしてこの問題を提起しました。
このリンクを参照してください: http://Azure.Microsoft.com/blog/2014/10/06/d-series-performance-expectations/
多分それは記憶とは関係ありません。 Azureの「物理」ディスクはBlobストレージと呼ばれるものを使用しているため、同様のハードウェアを使用しても、パフォーマンスがローカルコンピューターと同じではありません。この詳細については link を参照してください。これは、ディスクパフォーマンスに大きく依存しているSQL Serverコミュニティでは一般的な問題のようです。私が見つけた記事を引用します
Azure VMにおけるSQL Serverのパフォーマンスガイダンスホワイトペーパーでは、Azure VMではストレージスペースを使用してSQL Serverワークロードのストレージパフォーマンスを向上できると述べています(15および26ページ)。
記憶域スペースはWindows Server 2012の組み込み機能であり、複数の物理ディスクを使用して単一の仮想ディスクを作成できるため、VMディスク自体のI/O制限の回避策として。再度引用:
多数(最大16)の物理ディスクをサポートする大規模なVMでは、ストレージパフォーマンスの大幅な向上が可能です。これにより、単一のAzureディスクのI/Oパフォーマンスによる制約が多すぎるSQLワークロードの実行可能なプラットフォームとしてAzureを有効にすることができます。
これ 記事は、ストレージスペースを作成する手順を示します。
最初にこれを試してください。ストレージサービスはインスタンス自体とは別のサービスであるため、おそらくより小さなインスタンスを使用することもできます。