Windows 上的 DTrace - Windows drivers | Microsoft Learn
DTrace | Microsoft Learn
Download DTrace On Windows from Official Microsoft Download Center 2.0版本下載
GitHub - microsoft/DTrace-on-Windows: Code for the cross platform, single source, OpenDTrace implementation
DTrace
Windows Server 2025 配備了 dtrace
作為本機工具。 DTrace 是一款命令列實用工具,可讓使用者實時監控系統效能並排除故障。 DTrace 允許使用者動態檢測核心和使用者空間程式碼,而無需修改程式碼本身。 此多功能工具支援一系列資料收集和分析技術,如聚合、直方圖和使用者級事件跟蹤。 若要了解詳細資訊,請參閱 DTrace 獲取命令列幫助,參閱 Windows 上的 DTrace 瞭解其他功能。
dtrace
是一個強大的動態追蹤工具,廣泛用於效能分析、除錯和監控系統行為。它允許使用者以低開銷、動態的方式追蹤作業系統、應用程式和核心的執行情況。根據不同的使用場景和功能需求,dtrace
可以分為幾個主要的功能類別:
1. 系統效能分析
dtrace
可以幫助使用者分析系統的效能瓶頸,識別資源消耗大的地方。它透過動態地監控核心、程序、執行緒、檔案系統、網路等子系統的行為,幫助使用者找出系統效能問題。
- CPU 和記憶體效能:監控 CPU 佔用情況,分析記憶體分配和釋放、快取命中率等。
- 系統呼叫追蹤:透過
dtrace
可以追蹤系統呼叫的執行情況,幫助理解系統呼叫的效率及其對效能的影響。 - 應用程式效能:分析應用程式執行過程中的瓶頸,幫助開發人員最佳化程式碼。
2. 動態事件追蹤
dtrace
是基於事件驅動的,透過監控核心和使用者空間的特定事件,幫助開發人員瞭解系統的執行狀態。常見的事件包括函式呼叫、記憶體分配、I/O 操作等。
- 探針機制:
dtrace
使用探針(probe)來捕捉特定事件。每個探針關聯一個事件,可以是函式入口、退出,或者是特定系統呼叫的發生。 - 事件過濾:使用者可以根據需要過濾和定製感興趣的事件,使用條件表示式和操作進行更細粒度的追蹤。
3. 故障診斷與除錯
dtrace
可以幫助開發人員定位系統中的故障和問題,尤其是在動態執行時環境下。它透過提供深入的核心和使用者空間資訊,幫助開發人員理解系統行為並進行除錯。
- 崩潰追蹤:在程式崩潰或系統出現問題時,
dtrace
可以幫助確定崩潰的原因和位置。 - 資源洩漏檢測:透過監控記憶體分配和檔案控制代碼使用情況,
dtrace
能幫助開發人員識別和修復資源洩漏問題。 - 死鎖和競爭條件檢測:分析多執行緒或多程序程式中的死鎖或競態條件。
4. 核心級追蹤
dtrace
具有強大的核心級追蹤能力,能夠直接監控和分析作業系統核心的行為,幫助開發人員理解核心的操作和效能。
- 核心函式呼叫追蹤:可以追蹤核心函式的呼叫情況,分析核心中的效能瓶頸或錯誤。
- 記憶體管理追蹤:分析核心中記憶體分配、釋放和頁面交換的行為,幫助除錯記憶體管理問題。
- 檔案系統追蹤:監控檔案系統操作,如檔案開啟、讀取、寫入等,幫助分析檔案系統的效能或錯誤。
5. 使用者空間追蹤
dtrace
不僅可以追蹤核心級事件,還可以用於監控和分析使用者空間中的程序行為。它能動態地插入探針到執行中的應用程式中,分析其行為。
- 程序/執行緒分析:透過監控程序或執行緒的生命週期,分析其執行狀態、CPU 使用情況和資源消耗。
- 函式級別追蹤:在使用者空間,
dtrace
可以追蹤函式呼叫的入口、出口及引數,幫助開發人員進行精細化除錯和效能分析。
6. 安全性和審計
dtrace
可以作為一種安全審計工具,用於監控系統中的可疑行為,幫助分析潛在的安全問題。
- 異常檢測:監控系統中的異常行為,如未知系統呼叫或非授權的檔案訪問,幫助及時發現潛在的安全漏洞。
- 訪問控制審計:追蹤檔案、網路資源等訪問情況,確保系統的安全性和合規性。
- 攻擊檢測:透過對系統資源使用情況、程序行為等的分析,檢測潛在的攻擊或惡意行為。
7. 自定義指令碼支援
dtrace
提供了強大的指令碼支援,使用者可以編寫自定義指令碼來定義複雜的事件捕獲和分析規則。D 語言是一種專門為 dtrace
設計的語言,用於編寫這些指令碼。
- 指令碼化事件:使用者可以透過 D 語言編寫指令碼,定義在特定事件發生時要執行的操作。
- 複雜事件檢測:透過指令碼,使用者可以定義複雜的邏輯來分析多個事件的組合,甚至基於事件的順序和時延來檢測問題。
8. 可擴充套件性和整合
dtrace
允許與其他工具和系統進行整合,增強其功能和適用範圍。
- 與效能分析工具整合:可以與
perf
、vmstat
、iotop
等工具配合使用,提供更全面的系統效能分析。 - 與日誌系統整合:將追蹤結果整合到日誌管理系統中,進行更長時間的歷史資料分析。
- 支援多種作業系統:
dtrace
不僅支援 Solaris,還支援 macOS 和部分 Linux 發行版,具有較強的跨平臺能力。
總結:
dtrace
的功能可以大致分為以下幾類:
- 系統效能分析:CPU、記憶體、I/O 等資源的效能分析。
- 動態事件追蹤:監控和捕捉系統事件,幫助進行效能調優和故障排查。
- 故障診斷與除錯:定位系統和應用程式中的問題,進行深度除錯。
- 核心級追蹤:對作業系統核心的深入分析和除錯。
- 使用者空間追蹤:對執行中的應用程式進行詳細的監控。
- 安全性和審計:用於安全監控、異常檢測和訪問控制審計。
- 自定義指令碼支援:透過編寫 D 指令碼實現自定義事件捕獲與分析。
- 可擴充套件性和整合:支援與其他工具的整合,增強功能。
這些功能使得 dtrace
成為一個非常強大且靈活的工具,廣泛用於效能調優、故障排查、系統監控等多個領域。
dtrace -V |
Copy Code
引數說明:
總結:
|
dtrace [-P provider [[ predicate ] action ]] predicate -> '/' D-expression '/' -b set trace buffer size |
Windows Server 上進行類似於 dtrace
的操作,可以考慮以下幾個工具:
1. Windows Performance Toolkit (WPT) 和 Windows Performance Recorder (WPR)
Windows 提供了一個強大的效能分析工具集,名為 Windows Performance Toolkit (WPT),其中包括 Windows Performance Recorder (WPR) 和 Windows Performance Analyzer (WPA)。你可以用這些工具來捕獲和分析系統事件和效能瓶頸。
示例:記錄系統效能事件
- 啟動 Windows Performance Recorder(WPR)。
- 選擇 CPU Usage、Disk IO、Memory Usage 等跟蹤選項。
- 點選 Start,然後執行你想要分析的操作。
- 點選 Stop 完成效能取樣,結果會生成一個
.etl
檔案。 - 使用 Windows Performance Analyzer (WPA) 開啟
.etl
檔案進行分析。
2. Process Monitor (ProcMon)
Process Monitor 是另一個非常強大的 Windows 工具,可以用來監控檔案系統、登錄檔、程序、執行緒等事件。它類似於 dtrace
的一種資料捕獲和事件監控工具。
示例:捕獲檔案操作和登錄檔訪問
- 啟動 Process Monitor。
- 配置過濾器,僅捕獲你感興趣的事件(如檔案系統操作、登錄檔訪問等)。
- 開始捕獲資料並執行你需要分析的操作。
- 停止捕獲並分析日誌。
3. Windows Debugging Tools (WinDbg)
WinDbg 是一個高階除錯工具,適用於 Windows 應用程式、核心、驅動程式等。你可以用它來進行低階別的故障排查、堆疊跟蹤和記憶體分析。
示例:使用 WinDbg 捕獲堆疊資訊
- 啟動 WinDbg,並連線到目標系統。
- 使用
!analyze -v
命令來分析崩潰轉儲檔案,或者使用!process
命令檢視程序資訊。 - 除錯核心或應用程式崩潰、效能瓶頸等。
4. ETW (Event Tracing for Windows)
ETW 是 Windows 提供的一個高效的事件跟蹤機制,允許你捕獲系統級別的事件,類似於 dtrace
提供的功能。透過 ETW,你可以收集關於系統、應用程式、硬體的詳細資訊,並進行效能分析。
示例:使用 ETW 跟蹤系統呼叫
你可以透過 logman
或 xperf
等工具來捕獲 ETW 事件。
logman start MyTrace -p "Microsoft-Windows-Sysmon" 0xFFFFFFFF -ets
解釋:
logman
用於啟動 ETW 跟蹤。-p "Microsoft-Windows-Sysmon"
指定跟蹤 Sysmon 提供的事件。0xFFFFFFFF
表示捕獲所有事件級別的資料。
使用 PowerShell 和 ETW:
你還可以使用 PowerShell 指令碼來啟動 ETW 跟蹤。例如,使用 New-EventTrace
命令來建立和啟動事件跟蹤會話。
5. PowerShell Performance Monitoring
Windows 還提供了內建的 PowerShell cmdlet 來進行效能監控和分析,類似於 dtrace
。
示例:監控 CPU 和記憶體使用情況
你可以使用 PowerShell 指令碼來定期收集 CPU 和記憶體使用情況,以下是一個簡單的指令碼:
Get-Counter '\Processor(_Total)\% Processor Time'
Get-Counter '\Memory\Available MBytes'
示例:獲取程序資訊
Get-Process
你可以結合 Get-EventLog
或 Get-WinEvent
等命令,結合 ETW 提供的資訊進行更復雜的效能分析。
6. PerfView
PerfView 是由 Microsoft 提供的一個高階工具,用於分析 Windows 應用程式的效能資料。它利用 ETW 收集的事件資料,可以用來分析應用程式的 CPU 使用、垃圾回收、記憶體分配等。
示例:使用 PerfView 分析 CPU 使用情況
- 下載並啟動 PerfView。
- 選擇 Collect -> Start Collection。
- 執行你的程式,收集 CPU 使用情況。
- 停止收集並檢視分析結果。
7. Xperf (Windows Performance Toolkit的一部分)
Xperf 是 WPT 工具包的一部分,可以用來執行 ETW 事件收集,跟蹤 CPU 效能、記憶體使用、磁碟 I/O 等。你可以使用 Xperf 來生成高效的效能資料包告。
xperf -on latency -stackwalk profile -buffersize 1024 -maxbuffers 1024
解釋:
-on latency
啟動延遲分析。-stackwalk profile
啟用堆疊跟蹤。-buffersize
設定緩衝區大小,-maxbuffers
設定最大緩衝區數。
總結
儘管 Windows 不直接支援 dtrace
,你可以使用以下工具來獲得類似的動態跟蹤和效能分析功能:
- Windows Performance Toolkit (WPT),包括 WPR 和 WPA。
- Process Monitor (ProcMon)。
- WinDbg。
- Event Tracing for Windows (ETW)。
- PowerShell 效能監控 cmdlet。
- PerfView 和 Xperf。
這些工具可以幫助你進行深入的效能分析和故障排查,適用於 Windows Server 系統。