none
SQL Server 2012 Entで64コアなのに100%使用と0%使用のコアが存在するのはなぜ? RRS feed

  • 質問

  • こんにちは、お世話になります。

    環境は、Windows Server 2012R2 Stn + SQL Server 2012 Ent (パッチは常に最新適応済み)、

    ハイパースレッドが有効で64コア、メモリーは64GBです。

    並列処理のコストしきい値は30、並列処理の最大限度は32に設定されています。

    プロセッサ関連マスクとI/O関連マスクに対するプロセッサ設定は両方とも自動です。

    ワーカースレッドの最大数は0指定、SQL Serverの優先度を上げるはOFF、Windowsファイバーを使用するはOFFです。

    このような環境のSQL ServerをWebサービスで使用しており、Webページで表示させるための抽出対象となるレコードの

    更新頻度は1秒間に1レコード以上と言う状態です。このような状況のなか気付いたのですが、64コアのうち10コア分は100%の

    使用率で、10コア分は90%から80%前後、24コア分は70%以下1%以上、20コア分は0%と言う状態でした。

    このようなコアの使い方と言うのは、Webサービスで使用しているSQL Serverでは普通でしょうか?

    何か設定が足りていない、または設定が適切ではない、ために起きている現象なのでしょうか?

    (個人的には、並列処理のコストしきい値は30、並列処理の最大限度は32と言う設定が問題だと思うのですが・・・)

    このような状況ですので、色々な視点からご意見を頂けると助かります。

    また、解決方法があれば、ぜひ、教えて頂けると助かります。

    以上、宜しくお願い致します。

    2019年2月1日 4:01

すべての返信

  • miniHORIさん

    僕も以前、同じような事象に遭遇したことがあります。こちらの記事が参考になるかと思います。

    https://dba.stackexchange.com/questions/49930/sql-server-not-using-all-cpu-cores-threads


    select cpu_count from sys.dm_os_sys_info

    ↑のクエリを実行して、40が返ってくればおそらく同一の事象です。

    SQLServerのエラーログを確認していただき、以下の文章が出力されていませんでしょうか?

    「using 40 logical processors based on SQL Server licensing. This is an informational message; no user action is required.」

     

    その場合、下記のマイクロソフトの文献から、ほぼ確実に今回の事象の原因であろう記述がございます。

    https://blogs.msdn.microsoft.com/saponsqlserver/2012/06/15/sql-server-2012-enterprise-editions/

     

        SQL Server EE is no longer being offered under the Server + CAL (Client Access License) licensing model. For customers with Software Assurance on existing SQL EE Server licenses (or access to them under their current Enterprise Agreements during term) a version of Enterprise Edition was created to enable them to upgrade to SQL Server 2012. This version has technical restrictions limiting an instance to using only 20 processor cores (40 CPU threads with Hyperthreading).. Customers must still have the proper version of the CAL and additional physical and virtual use right restrictions of this SKU (Stock Keeping Unit) apply. Please refer to the three documents listed above for additional details.
        An Enterprise Edition which is licensed per core and which does not have limits on the # of cores usable on a server (within the absolute limits supported). This Enterprise Edition does reflect the new licensing model for SQL Server Enterprise Edition.

     

    以上の結果から、物理的には最大20コアしか使えないライセンスであると推測されます。

    インストール時に、異なるライセンスのEnterprise Editionをインストールされている可能性が高いです。

    参考になりましたら幸いです。
    2019年2月4日 8:55
  • お話を頂いた、「select cpu_count from sys.dm_os_sys_info」で早速、確認を行なってみた結果、64が

    返ってきましたので、ライセンス的には問題ないようです。 チョットあせりました(笑)

    ご協力、感謝致します。

    2019年2月4日 9:25
  • 最近、なんとなく、プロセッサの使い方の制約かなと思い始めています。

    プロセッサは、「プロセッサの関係」と「I/O関係」で使われると言う事ですが、

    色々な記事を読んでいると、「プロセッサの関係」と「I/O関係」は同じプロセッサを普通使用しない

    と読み取ったのですが、これは間違いでしょうか・・・?

    だとすると、使用率が高いのと低いのが存在するのは「プロセッサの関係」と「I/O関係」と言う使われ方の

    違いからでしょうか? 

    あとは、昔、DBファイルの格納先ドライブが1ドライブだと同時処理は1つ的な記事を読んだ気がします。

    今探しても見付からないので、ほんとうかどうか判断できませんが、そんな事も関係しているのでしょうか・・・?

    あいまいで、不確定な情報ばかりとなりますが、上記内容で何かピーンとくる事がありましたら、

    本件に対する何かしらのヒントになるかもしれませんので、教えて頂けないでしょうか?

    以上、宜しくお願い致します。

    2019年2月4日 9:35