PowerShell을 사용하여 시스템 성능 정보 출력
5698 단어 성능 측정PowerShell
소개
PowerShell을 사용하여 시스템 성능 정보를 측정하고 CVS 형식으로 출력하는 방법을 조사하고 구현해 보았습니다.
본 기사는 조사·실장한 것을 비망으로 정리한 것이 됩니다.
실행 환경
OS: Windows 10 Enterprise
PowerShell 버전: 5.1.17763.1490
PowerShell 버전 확인 방법
PowerShell을 시작하고
$PSVersionTable
를 입력하고 Enter를 누르면 PowerShell 버전이 표시됩니다.Get-Counter cmdlet을 사용하여 측정 정보 얻기
Get-Counter cmdlet 설명
Get-Counter cmdlet을 사용하여 측정 정보를 얻을 수 있습니다.
Get-Counter cmdlet 형식
Get-Counter [카운터] [옵션]
다음은 Get-Counter cmdlet의 주요 옵션입니다.
옵션
의미
-Counter
측정할 카운터를 지정합니다. 선택
-ListSet
카운터 세트 정보 얻기
-Continuous
[Ctrl]+[C] 키를 누를 때까지 지속적으로 취득
-MaxSamples
검색할 샘플 데이터의 수 지정
-SampleInterval
측정 간격을 초 단위로 지정
측정할 카운터를 지정하고 CSV 형식으로 출력해보기
참고 사이트를 바탕으로, 측정 대상으로 하는 카운터를 결정해 간다.
이번은 CPU, 메모리, 디스크의 카운터로부터 병목 지표로서 사용할 수 있는 것들을 발췌해 본다.
아래를 PowerShell에서 실행하면 계측 결과가 CSV로 출력된다.
# カウンターの指定
$Counters = @(
'\Processor(_Total)\% Processor Time',
'\System\Processor Queue Length',
'\Memory\Available Mbytes',
'\Memory\Pages/sec',
'\Process(_Total)\Working Set',
'\PhysicalDisk(*)\Avg. Disk Queue Length',
'\LogicalDisk(*)\Avg. Disk Queue Length'
)
# 例:1秒間隔で計測し、1つのカウンターにつき最大5つのデータを取得してCSV形式で出力
Get-Counter -Counter $Counters -MaxSamples 5 -SampleInterval 1 | ForEach {
$_.CounterSamples | ForEach {
[pscustomobject]@{
TimeStamp = $_.TimeStamp
Path = $_.Path
Value = $_.CookedValue
}
}
} | Export-Csv -Path PerfMonCounters.csv -NoTypeInformation
例:CSV出力結果
PerfMonCounters.csv
"TimeStamp","Path","Value"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\processor(_total)\% processor time","24.1294437645353"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\system\processor queue length","1"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\memory\available mbytes","608"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\memory\pages/sec","11.8296868159422"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\process(_total)\working set","3208744960"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\physicaldisk(0 c:)\avg. disk queue length","0.0172272941833824"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\physicaldisk(1 e:)\avg. disk queue length","0"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\physicaldisk(2 f:)\avg. disk queue length","0"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\physicaldisk(_total)\avg. disk queue length","0.0172272941833824"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\logicaldisk(c:)\avg. disk queue length","0.0172832084842202"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\logicaldisk(harddiskvolume4)\avg. disk queue length","0"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\logicaldisk(e:)\avg. disk queue length","0"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\logicaldisk(f:)\avg. disk queue length","0"
"2020/12/16 23:54:04","\\desktop-5gk0ns1\logicaldisk(_total)\avg. disk queue length","0.0172832084842202"
・
・
・
백그라운드 작업에서 성능 측정 수행
성능 측정을 백그라운드 작업으로 실행하는 방법을 생각해보십시오.
배치 처리 실행중의 퍼포먼스 계측을 실시하고 싶은 경우는, 하기의 실장 이미지와 같이 하면 대응 가능이라고 확인할 수 있었다.
# パフォーマンス計測をバックグラウンドジョブとして実行
Start-Job -Name PerfMonCounters -ScriptBlock {
$Counters = @(
'\Processor(_Total)\% Processor Time',
'\System\Processor Queue Length',
'\Memory\Available Mbytes',
'\Memory\Pages/sec',
'\Process(_Total)\Working Set',
'\PhysicalDisk(*)\Avg. Disk Queue Length',
'\LogicalDisk(*)\Avg. Disk Queue Length'
)
Get-Counter -Counter $Counters -MaxSamples 5 -SampleInterval 1 | ForEach {
$_.CounterSamples | ForEach {
[pscustomobject]@{
TimeStamp = $_.TimeStamp
Path = $_.Path
Value = $_.CookedValue
}
}
}
}
-------------------------------------------
~ここで計測対象とするバッチ処理を起動させる~
-------------------------------------------
# バッチ処理が完了したら、パフォーマンス計測結果をCSVへ出力
Receive-Job -Name PerfMonCounters | Export-Csv -Path PerfMonCounters.csv -NoTypeInformation
# パフォーマンス計測ジョブ終了
Stop-Job -Name PerfMonCounters
Remove-Job -Name PerfMonCounters
참고로 한 사이트
Reference
이 문제에 관하여(PowerShell을 사용하여 시스템 성능 정보 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hori-ap099/items/e93b122ac5d738b8e158텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)