スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SQL Serverが使用するCPUをaffinity maskとaffinity I/O maskを使って制限する

とある事でSQL Serverが使用するCPU数またはCPU使用率を制限する方法を調べる必要がありました。
アプリケーションのつくりに問題があるのが原因だと思うのだけど、CPU使用率100%の状態が長く続き、その結果サーバーのOSが不安定になり、業務に支障が出てしまう状況。
それならいっそSQL Serverが使用するCPU数(またはCPU使用率)を制限して、OSやその他のアプリケーションが動作する余裕を確保するのが目的。
その分SQL Serverのスループットが落ちるかもしれないが、OSが停止するほど不安定になるよりは遥かにマシなので。

いろいろ調べると、SQL Server 2008以降では、リソースガバナーと呼ばれる機能があるので、それを使用するのがいいみたい。
しかしリソースガバナーはSQL Server Enterpriseエディション以上で使用できる機能のため、Standardエディションでは使用できない。

そのため今回はaffinity maskとaffinity I/O maskと呼ばれる機能を使用して、SQL Serverが使用するCPUをマスクして制限する方法を試してみた。

(写真1)SQL Server Management Studioでサーバーのプロパティ
Management Studioでサーバーのプロパティを表示
薄いグレーでプロセッサ数が4と表示されているが、これは変更できない。

(写真2)SQL Server Management Studioでプロセッサの規定値
affinity maskの既定値
既定値では以下の2つのチェックボックスがオンになっている。
「すべてのプロセッサに対して自動的にプロセッサ関係マスクを設定する」
「すべてのプロセッサに対して自動的に I/O 関係マスクを設定する」

(写真3)プロセッサの設定が規定値でのCPU負荷をかけた状態その1
affinity mask既定値での負荷その1
既定値の設定のまま、CPUをひたすら使用する処理を多重度を上げて実行すると、当然だけど4CPUのすべてが100%の状態になる。(この例では6多重)

(写真4)プロセッサの設定が規定値でのCPU負荷をかけた状態その2
affinity mask既定値での負荷その2
タスクマネージャーでプロセスを見ると、sqlserver.exeが70%から80%程度を使用している。
その他のプロセスを足すと、計100%程度となる。

(写真5)SQL Server Management Studioでプロセッサをマスクする
affinity maskの設定を変更
「すべてのプロセッサに対して自動的に~」の2つのチェックを外し、手動でCPUのマスクを設定します。
今回は以下のように設定した。
  プロセッサ関係 I/O関係
CPU0   ■     □
CPU1   ■     □
CPU2   □     ■
CPU3   □     □

SQL ServerによるディスクI/O処理のみCPU2に割り当て、SQL Serverのそれ以外の処理はCPU0とCPU1に割り当てた。
CPU3はSQL Server以外のために空けておく設定とした。

(写真6)プロセッサをマスクした上でCPU負荷をかけた状態その1
affinity mask変更後の負荷その1
SQL ServerでCPUに負荷をかける処理を6多重で実行しても、今回はタスクマネージャーでは左側2つのCPUだけが100%になっている。
右側2つのCPUも思ったよりも使用率が上がっているが、それでも4CPU全体では使用率が65%程度に収まっている。

(写真7)プロセッサをマスクした上でCPU負荷をかけた状態その2
affinity mask変更後の負荷その2
タスクマネージャーでプロセスを見ると、sqlserver.exeはちょうど50%になっている。

今回の検証環境は
Windows 8.1 Hyper-Vホスト
Windows Server 2008 R2 SP1ゲスト(4CPU、メモリ2GB)
SQL Server 2008 R2(サービスパック無し)

CPUに負荷をかけるために実行したコマンド
SQLCMD
DECLARE @i int = 0
WHILE (0=0)
SET @i += 1
GO


今回はこんな感じでSQL Serverが使用するCPUを制限する事が出来た。
affinity maskが「プロセッサ関係」で、affinity I/O maskが「I/O関係」を意味している。

SQL ServerのCPUマスク機能を使用する場合、affinity maskとaffinity I/O maskを同じCPUに割り当てる事は「絶対にやってはいけない」らしい。(後述のSQL Server Japan Support Team Blogの記事を参照)
私が試した限りでは、SQL Server 2008 R2のManagement StudioのGUIではaffinity maskとaffinity I/O maskの両方を同じCPUに割り当てる事は出来なかったけど。

また同じくSQL Server Japan Support Team Blogの記事によると、affinity I/O maskはaffinity maskと共に使用する事とか、これらの設定は特殊な操作で高度なオプションであるなどの注意もあります。
テスト環境で十分な検証を行ったうえで本番環境に適用する必要があります。

リソースガバナーに関する参考情報

https://msdn.microsoft.com/ja-jp/library/bb933866%28v=sql.105%29.aspx
リソース ガバナを使用した SQL Server ワークロードの管理
https://msdn.microsoft.com/ja-jp/library/cc645993%28v=sql.105%29.aspx
SQL Server 2008 R2 の各エディションがサポートする機能


CPUマスクに関する参考情報

https://technet.microsoft.com/ja-jp/library/ms186255%28v=sql.105%29.aspx
関係マスクを構成する方法 (SQL Server Management Studio)
https://technet.microsoft.com/ja-jp/library/ms187104%28v=sql.105%29.aspx
affinity mask オプション
https://technet.microsoft.com/ja-jp/library/ms189629%28v=sql.105%29.aspx
affinity I/O mask オプション
http://blogs.msdn.com/b/jpsql/archive/2012/02/27/do-s-amp-dont-s-14-cpu-affinity-mask-affinity-i-o-mask-on.aspx
DO’s&DONT’s #14: 絶対にやってはいけないこと - ひとつの CPU に対して affinity mask と affinity I/O mask の両方を ON にする - Microsoft SQL Server Japan Support Team Blog - Site Home - MSDN Blogs


例によっていつも頼りになるムッシュのブログです。
これではPROCESS AFFINITYと呼ばれる機能でSQL Serverが使用するCPUをマスクしています。
また今回私が使用したCPUに負荷をかけるコマンドは、この記事にコピペです(^^ゞ

http://blog.engineer-memo.com/2012/02/05/sql-server-%E3%81%AE-process-affinity-%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
SQL Server の PROCESS AFFINITY の設定について at SE の雑記

関連記事

テーマ : データベース
ジャンル : コンピュータ

コメントの投稿

非公開コメント

テスト中

全ての記事を表示する

ブロとも申請フォーム

ブログ検索
プロフィール

norimaki2000

norimaki2000のブログにようこそ
・2013/01/05テンプレートをsantaからhouseに変更
・2012/10/29テンプレートをsweet_donutsからsantaに変更
Follow norimaki2000 on Twitter気軽に話しかけてね

ニューヨーク・マンハッタン(タイムズスクェア)180×135

千葉県在住で東京都内に勤務。SE歴20年超えました。

昔々はオフコンで販売管理などのアプリケーション開発してた。
ファミリーレストランの無線オーダリングやPOS、キッチンプリンタの全国展開なんかもやっていました。
数年前まではWindows上のアプリケーション展開が多かったかな。
ここ数年はWindowsサーバーを中心としたサーバーインフラの提案・構築・保守を中心にやってます。
主な取り扱い製品は、
・Windows 2000 Server以降 (もちろんNT3.5やNT4.0も知っていますが)
・Active Directory (今で言うAD DS)
・Symantec Backup Exec
・Symantec System Recovery
・CA ARCserve Backup for Windows
・CA ARCserve Replication
・CA ARCserve D2D
・EMC RepliStor
・VMware vSphere
・某メーカーのクラスタソフトウェア

どれもこれも中途半端な知識と技術力ですが、なんとかやっています。
私自身は技術や製品を担当する立場ではなく、特定業種のお客さん(ユーザ企業)の対応窓口となるSEの役割りですから、必要であれば詳しい知識や経験豊富な別のSEを探してきてプロジェクトメンバに加えます。

もちろん小さな物件では自分で提案、インストール、お客さんへの導入、アフターサポートまでやります。
大きな物件では提案はやりますが、構築部分は専門部隊に依頼します。
その場合でもアフターサポート窓口は私がやりますので、お客さんに対しては一貫して窓口SEとなります。

サーバの世界の大きなトレンドは統合・仮想化。
2007年はVirtual Server 2005 R2によるサーバ仮想化も、2つのお客さんで本稼動させた。
2008年はVMware ESX 3.5を2セット構築。単純なローカル起動と、SANブート/VMotion/DRS/HA/VCBのフル装備もやった。
2009年はぜひHyper-Vの仮想環境を構築したいな。と思っていたが、なかなか機会に恵まれなかった。
2010年はVMware ESX 4.0でHA/VMotion/VCBバックアップを進行中。

そのほかにも、ドメインコントローラやファイルサーバの全国展開とデータ移行、特定のアプリケーションの実行基盤となるサーバ群のOS・バックアップ・DBクラスタなどインフラ部分の構築などをやっています。


2011年のポイントも引き続き、【ご利用は計画的に】。
今まで長年に渡って仕事も私生活も行き当たりばったりなので、少しでも物事を計画的に進められるようにしたい。
いつも計画性の無さが災いして多くの人に迷惑をかけています。
自分自身も計画的な仕事ができないため、いつもいろいろ苦労しています。
今年はさらに計画的に仕事をするようにしなきゃ。

それと若手を上手に使うようにならなきゃならん。
若手の育成はもちろんだけど、僕自身も仕事を上手に他の人に振ることができるようになりたい。
仕事の種類のせいなのか性格なのか、どうしても一人で抱え込んでしまうから。

【Twitter】2010年の元旦から始めました。平均して1日あたり10ツィート程度です。
仕事関連の呟きが少し、くだらない呟きがほとんどかな。
Follow norimaki2000 on Twitter
・norimaki2000 on Twitter

Follow norimaki2000 on Twitter
・norimaki2000 on Twilog


オンライン上ではあるけれど、今まで知らなかった人たちと交流する機会を得ることになり、非常に刺激を受けます。
仕事でも私生活でも、いろんな人のつぶやきは息抜きにもなり、また助けられたり、あるいは「もっとがんばんなきゃ」と励みになったりします。
Twitterを考え出した人の発想、システムとして作り上げた努力と情熱はすごい!!


【好きな音楽】ベテランの皆さんなら浜田省吾、尾崎豊、エコーズ、若手なら鬼束ちひろ、平原綾香、現在注目の若手はいきものがかり

【好きなアイドル】千葉県柏市を中心に活動する地元アイドルの「コズミック☆倶楽部」を激推し中です。

【好きな飲み物】シャンパンはご存知モエ・エ・シャンドン ブリュット アンペリアル、ビールはキリン ブラウマイスター、水ならビッテル、お茶ならキリン生茶

【好きなTVドラマ】Xファイル、24、ミレニアム、ER、CSI:科学捜査班シリーズ、NCIS:ネイビー犯罪捜査班、ザ・プラクティス、ボストン・リーガル



パソコン困り事相談もよろしく


最近の記事
最近のコメント
カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
カテゴリー
FC2カウンター
キーワード

Windows_Server VMware_ESX VMware vCenter_Server VMware_Player PowerShell PowerCLI vSphere_Client VirtualCenter Active_Directory vStorage_API Converter Windows 文音 Hyper-V Microsoft_Security_Essentials コズミック☆倶楽部 Windows_8 Backup_Exec VMware_Converter vSphere sora カラオケ なるみん あいひょん SQL_Server Windows_Server_2012 System_Center VCB Red_Hat_Enterprise_Linux Tech_Fielders メモリダンプ System_Recovery ESX ARCserve_Backup Internet_Explorer VMware_vSphere RHEL ジン子 マークス vSphere_CLI VMware_HA Exec Directory Firefox vMotion Oracle Active Symantec Server Backup Sysinternals NTFS Twitter Oracle_Database vCenter_Converter wevtutil コズミック倶楽部 DMC-FZ1000 schtasks XenServer キリン 若手 remi 麗美 Recovery Visual_Studio Windows_Update Office System SE Vista DRS 氷結 スリムス フィット グランダム 掃除 セルシオ 洗濯 のどごし生 洗車 サッポロ ロッキー おやつカンパニー カルディ スパークリングウォーター ベビースター おとなのおつまみ 白石美帆 経済産業省 えびしお corega セキュリティ ついにステップワゴンを契約してしまった 糖質 一番搾り食物繊維 スタローン 東京国際フォーラム スパリゾートハワイアンズ サクセス カーナビ ラガー 人口甘味料 コロン ブラックホーク・ダウン ジョシュ・ハートネット ハワイ 神戸 北野 献血 けんけつちゃん シャンプー台のむこうに デュポン 映画 東京タワー 写真 マッハ ムエタイ はばたき福祉事業団 ワイヤーアクション お茶のチューハイ バルボア キャンプ 万座温泉 夏休み 草津 鬼押し出し園 カーポート 高原 バーベキュー 関西空港 羽田 グレープフルーツ ウォーター ポケモン・スタンプラリー 伊藤園 日本赤十字社  サーバ 雨どい Resource ARCserve_D2D ARCserve_Replication VMFS バックアップ Virtual_Infrastructure SkyDrive vStorag_API OpenOffice.org ジャンプフェスタ XP Word Uptime.exe ULPC OEM ITIL DSP グループポリシー Apache 浜田省吾 Linux VMware_ESXi OneDrive HUAWEI れみ GR5 IP38X/N500 NVR500 バッチ Tween OpenOffice iStorage Windows_Azure AWS robocopy USB2.0 USB CDRW-AB24JL CD CAB CG CR-V DVD CoolMax Brio ATAPI 破損 2008 オレッツァ 修復 圧縮 0x0000007B コマンドライン Gathers Hyperion STOPエラー SAP Paper.li SUPPLEX SweetGrass Tools Thunderbird Replication PCI Kit IZZE IDE NR-7900A NetBackup PC-Success OREZZA エイドリアン 

月別アーカイブ
リンク
RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。