パフォーマンスについて
パフォーマンスの改善についてのメモです。
使い方周り
- SQL Serverの負荷が高い? -> 悪いと言えば悪いが、そこまでっぽい
- クエリの実行で表領域が大きくなることでパフォーマンスの低下が見られている。
- クエリのパフォーマンスを見直すべきだが、主な要因でないかもしれない。
- やるべきことは以下
- クエリの見直し
- indexが適切に運用されているか確認(断片化されてないかとか、、)
- McAfee マカフィー製品をインストールしたパソコンでCPUの使用率やディスクの使用率が急激に上昇した場合
- Acronis,ManicTimeの負荷が高い? そこまで高くは見えなかった。(もしかしてバックアップ作成中は高い?)
PCの設定等
- 電源モードが低パフォーマンスになっている? 「start」右クリック->「電源option」-> “高パフォーマンス“に変更 ベンダー環境で設定されてた
-
スタートアップ アプリが多い? 減らせ -> そんなことはないはず。
- 負荷のかかる設定は無効になっているか?
- Windows Updateの自動更新
サービスを無効にする手順
サービス/スタートアップの種類
- 自動 :Windows の起動時に自動的に起動 「自動(遅延開始)」を選択した場合は、 Windows の起動後に少しだけ待ってから起動
- 手動 :「手動」にした場合は自動では起動せずに手動で起動したり他のサービスから起動されるまで開始しません。
- 無効 :「自動」や「手動」に切り替えるまでを起動することができません。
-
配信の最適化 やってないが、問題ないか確認する -> いらないと思う、 配信の最適化とは、別のPCにローカルネットワーク、またはインターネット経由で更新プログラムやアプリを配信します。 更新プログラムやアプリが必要なPCは、ネットワーク上から既にデータを取得したPCを検出して、データをダウンロードすることができます。
off
にするには- [スタート] 、[設定] 、[更新とセキュリティ] 、[詳細オプション]、[配信の最適化] の順に選択します。 [他の PC からダウンロードを許可する] の下のトグルをオフ
- Windows Updateの自動更新
サービスを無効にする手順
サービス/スタートアップの種類
- 今一番重そうだったプロセスは?
以下が重そうだった(他の処理稼働中の状況は未確認)
- system
Troubleshoot High CPU usage by the “System” process
Process Explorer
でSystem
プロセスの重い処理を確認できる
- sql server
- lsass.exe
Lsass.exe が重い場合のトラブルシューティング
- ActiveDirectryで使用するプロセスらしい
- svchost svchost.exe の CPU 高負荷およびメモリー使用量増加の調査
- system
Troubleshoot High CPU usage by the “System” process
パフォーマンス ログ収集
パフォーマンス ログ収集(Microsoft Support)
ログのローテート方法(cmd)
@echo off
setlocal
set LOGDIR="C:\Users\testuser\Documents\test"
forfiles /P "%LOGDIR%" /M *.log /C "cmd /C Del /S @path" /D -14
exit /B 0
rem /s フォルダにファイル,ディレクトリがあっても削除する
rem /q 警告を表示しない
rd /s /q <フォルダ>
rem フォルダの削除もできるらしい
rem D:\〇〇〇 パス
forfiles /P D:\〇〇〇 /d -365 /C "cmd /c IF @isdir==TRUE rmdir /S /Q @file"
rem 圧縮はこんな感じ(圧縮対象は複数指定可)
rem -sdel オプションで圧縮後のdeleteができる
rem -mx=0 は無圧縮オプション(mx=0~9で高いほど高圧縮になる)(なしでデフォルトの圧縮がされる)
rem -mmt=on マルチスレッドオプション
7z.exe a 圧縮結果.zip 圧縮対象
rem 文字列操作
set V=ABCDEFGHI
echo %V:~2,3% #(0から数えて2番目の文字から3文字取得)
>> "CDE" が出力される
echo %V:~-2,3% #(末尾から数えて2番目の文字から3文字取得)
>> "HI" が出力される
echo %V:~-2,-1% #(末尾から数えて2番目の文字から末尾1文字削除)
>> "H" が出力される
echo %V:AB=ab% #(変数内の文字t1を、文字t2に置換)
>> "abCDEFGHI" が出力される
systemプロセスの動作が重い場合の対処
まず、systemプロセスが重い場合、以下の原因が考えられる。
- サービスの負荷が高い
- I/O負荷が高い
- ハードウェアドライバが調子悪い
- ハードウェアドライバ: ハードウェア↔︎OS間の通信ソフトウェア
- デバイスドライバ: 特定のハードウェアデバイスを制御するソフトウェア
- デバイスドライバの一覧とsysファイルがどのドライバかは以下で確認できる。
ドライバの負荷が高い場合の対象
1~3はデバイスマネージャがやってくれる。
- ドライバの更新
- ドライバの再インストール
- アンインストール後、デバイスを検出すればOSがインストールするらしい
-
ドライバの無効化
- ウイルスの場合には、スキャン、、
※ infファイル、sysファイルの違い
- infファイル ドライバのインストールに使うファイル
- sysファイル ドライバの本体
rem /fo [table,csv,list]
rem 🌟 /v でsysファイルなどの詳細が確認できる
driverquery /v /fo [任意] > driverlist.txt
rem 🌟 /SI でinfファイルなどの詳細が確認できる
driverquery /SI /fo [任意] > driverlist.txt
rem ドライバのアンインストール
pnputil /delete-driver ドライバーのINFファイル名
pnputil /add-driver ドライバーのINFファイル名
rem infファイル名は以下で確認できる、、
pnputil /enum-drivers
ドライバなどの負荷が高い場合の確認方法と対策
ProcessExplore
- System を右クリック -> プロパティをクリック
- Threads
- CPU負荷の高いスレッドを特定する。
suspend
でスレッドを一時停止し、resume
で再開できる。 (正しい確認方法は下らしい、、、)
Windows Performance Toolkit(Windows SDK)
WPRUI.exe
を実行- First Level選択
- CPU usage 選択
- click on start.
- CPU使用時間のキャプチャが記録される
- 十分記録したら
save
をクリックanalyze the generated ETL file
とか言うのが生成されるらしい。 (ファイルが作られるから、確認は別PCでもできる?)Windows Performance Analyzer
で確認できるとか、、
- 負荷の高いやつの判定はめんどそうなので、後日書く