首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Windows PDH 與 typeperf 命令行效能監控實戰指南

     編輯:關於C語言

前言

Windows 內建的 PDH (Performance Data Helper) API 與命令行工具 typeperf 是無需安裝第三方軟體即可進行系統效能計數器採樣、記錄與分析的利器。本文匯總常用計數器路徑、typeperf 實戰參數與自動化腳本技巧。

核心計數器路徑速查

監控目標計數器路徑說明
各進程 CPU 佔用率\Process(*)\% Processor Time通配符 * 表示所有進程實例
各進程工作集記憶體\Process(*)\Working Set進程當前佔用的物理記憶體頁面
系統提交記憶體使用率\Memory\% Committed Bytes In Use反映虛擬記憶體壓力
指定進程 CPU (完整路徑)\Process(C:\Path\To\chrome.exe)\% Processor Time需完整路徑含副檔名
指定進程名 CPU\Process(chrome)\% Processor Time僅進程名(無副檔名),多實例會聚合

typeperf 實戰參數詳解

typeperf "計數器路徑1" ["計數器路徑2" ...] [選項]
參數功能範例
-sc <N>採樣次數(預設無限)typeperf "\Process(*)\% Processor Time" -sc 10
-si <秒>採樣間隔(預設 1 秒)typeperf "\Memory\Available MBytes" -si 5
-o <檔案>輸出至 CSV/TSV/二進制日誌typeperf "\Process(*)\Working Set" -o perf.csv -f CSV
-f <CSV|TSV|BIN>輸出格式同上
-q查詢本機可用計數器(含實例)typeperf -q "\Process"
-qx查詢所有計數器(含解釋)typeperf -qx > all_counters.txt

實戰場景範例

場景 1:快速抓取當前所有進程 CPU 與記憶體快照

typeperf "\Process(*)\% Processor Time" "\Process(*)\Working Set" -sc 1

輸出 CSV 格式,首行標題,次行數值,可直接導入 Excel 分析。

場景 2:持續監控特定進程 1 分鐘,每 5 秒採樣

typeperf "\Process(xdict)\% Processor Time" "\Process(xdict)\Working Set" -si 5 -sc 12 -o xdict_perf.csv

場景 3:枚舉系統所有可用計數器供離線分析

typeperf -qx > counters_full.txt

場景 4:腳本化監控並觸發告警(PowerShell 片段)

$cpu = (typeperf "\Process(chrome)\% Processor Time" -sc 1)[1].Split(',')[1].Trim('"')
if ([double]$cpu -gt 80) { Send-MailMessage ... }

進階技巧與避坑指南

  • 實例名稱截斷:PDH 實例名稱限長 15 字元,長進程名會被截斷並加後綴 #1、#2,需用 typeperf -q "\Process" 確認實際實例名。
  • 權限需求:讀取系統級計數器需管理員權限;啟動命令提示字元/PowerShell 時選「以系統管理員身分執行」。
  • 本地化問題:中文系統計數器路徑可能為中文(如 \處理器(*)\% 處理器時間),建議統一用英文路徑或用 typeperf -q 確認當前語系下的路徑。
  • 遠端監控:typeperf -s \\RemoteHost "\Processor(_Total)\% Processor Time" 需開啟遠端登錄服務與防火牆規則。

總結

typeperf 是 Windows 原生、零依賴、可腳本化的效能採樣利器。熟練掌握計數器路徑命名規則、採樣參數組合與輸出格式控制,能快速構建輕量級監控、故障複現與容量規劃數據來源,是運維與開發人員的必備技能包。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved