共用方式為


[電子報封存 ^][ Volume 4, Number 1] [<Volume 4, Number 3 >]

Systems Internals 電子報第 4 卷第 2 期

http://www.sysinternals.com
Copyright (C) 2002 Mark Russinovich


8 月 12 日 - 本期內容:

  1. 社論

  2. SYSINTERNALS 最新動向

    • TCPView v2.21
    • LiveKd v2.0
    • PsInfo v1.33|
    • PsList v1.21
    • BgInfo v3.0
    • PageDefrag v2.2
    • Regmon v4.34 for Win64/Itanium
    • PC World 雜誌中的 Sysinternals
    • Microsoft 的 Sysinternals
  3. INTERNALS 資訊

    • 倫敦中的 Mark and David Solomon Teach Internals
    • Windows NT 內部開發
    • 變更未計數時
    • .NET Server RC1
    • WMI 指令碼的載入
    • 使用 BootVis 來分析開機程序
  4. 未來動態

    • 損毀傾印分析的快速簡介

贊助者:WINTERNALS SOFTWARE

Sysinternals 電子報由 Winternals Software 贊助,該公司的網址為 http://www.winternals.com. Winternals Software 是一家領先的開發公司,提供了諸多適用於 Windows NT/2K/XP 的先進系統工具。 Winternals Software 產品包括 FAT32 for Windows NT 4.0、NTFSDOS Professional Edition (適用於 DOS 的讀取/寫入 NTFS 驅動程式) 以及 Remote Recover。 Winternals 自豪地宣佈 Defrag Manager 2.0 版上市,這是最快速且最徹底的企業級重組工具。 現在,只需一個簡單的 MMC 嵌入式管理單元即可管理企業級 Windows 的磁碟重組排程,甚至不需要在 NT 或 Windows 2000 系統上安裝任何用戶端軟體。 如需詳細資訊,或要求免費 30 天試用版,請造訪 http://www.winternals.com/es。

大家好,

歡迎閱讀 Sysinternals 電子報。 本電子報目前有 35,000 名訂閱者。

您可能聽說過 AMD 即將推出的 Hammer 處理器 (現在正式公告為 "Opteron") 要在今年年底發行。 使用 Hammer,AMD 將會從 32 位元領域向 64 位元領域與 Intel 開戰。 我認為 Intel 應該害怕,而且我將告訴您原因。

Itanium 是 Intel 進入 64 位元空間的入口,並且包括 x86 二進位相容性,可簡化移轉。 Itanium 已經在市集近兩年,但未能有所進展,即使 HP-UX、Linux、Windows XP 64 位元版本和 Windows Advanced Server 64 位元版本予以支援也是一樣。 業內人士估計 Itaniums 專案只售出了幾千台,而我猜測最近發行的 Itanium II 不會提高部署率。

Itanium 到目前為止令人沮喪的原因是什麼? 我相信主要因素是 Itanium 和 Intel 的整個 64 位元策略是以新的 RISC 類型架構為基礎,而且除了其附加的 x86 二進位相容性之外,Itanium 只是 Alpha、PA-RISC、Sparc64 和 PowerPC 中的另一個 64 位元處理器。 雖然 Itanium 支援現有的 x86 32 位元應用程式,但相較於原生 64 位元應用程式,這些應用程式效能會大幅降低。 這表示,您需要確定想要在 Itanium 上以合理效能執行的任何應用程式都要移植至 64 位元。

另一方面,Hammer 是一種進化,可自然地將 x86 架構和指令設定為 64 位元。 其可以在幾乎相同的效能層級上並存執行 32 位元應用程式和 64 位元應用程式。 此外,您還可以將 Hammer 開機到完整 32 位元模式,使其成為能夠執行 32 位元 OS 的標準 x86 系統。 不僅如此,Hammer 也支援 x86 16 位元模式,而且即使您開機到 64 位元作業系統,還是可以使用標準 32 位元 x86 BIOS 程式碼。 這表示您可以將具有 32 位元 OS 的雙開機系統作為一個選項,而 64 位元 OS 作為另一個選項。

我相信 AMD 的方式針對 Intel 對 Itanium 所採用的方向提供巨大的優勢。 如果客戶可能還未準備好進入 64 位元,或只有一個可利用 64 位元機器的應用程式,則 AMD 可以在其可使用 Hammer 時盡快開始進行銷售。 32 位元應用程式可以充分利用 AMD 放入 Hammer 的效能創新,而且,如果 AMD 將 Hammer 的價格定得接近 32 位元 CPU 價格,則購買決策可能不用想也知道。 這應該允許 AMD 使用其 64 位元處理器以從低端滲透到市集。 這與 Intel 的高階方式形成對比;此策略可能風險更大,而且需要更長的時間。 我相信 Hammer 給了 AMD 潛入的機會,並且會成為實際 64 位元平台。

透過 AMD x86-64 提供 Intel 可能宣告 Itanium「全新」明確平行指令運算 (EPIC) 架構的效能邊緣會怎麼樣? 我們必須等待並確認,但 AMD 到目前為止已經提供 Intel 在 32 位元競技場執行的本錢。 而且,如果您查看 Itanium II 與最佳 x86 處理器 (請參閱 www.spec.org) 的比較方式,則會發現其在整數效能上相當平均地相符,而且 Itanium 的浮點領先 50-75%。 儘管如此,Itanium 大約還是貴了兩倍。 例如,來自 Hewlett Packard 的低端 Itanium II 系統成本為 5865 美元,而在同等設定中以 2GHz 執行的 Hewlett Packard Pentium IV 系統成本僅為 2385 美元。

AMD 可以在何處擴充 x86 架構,而不是將具有 x86 相容性的新架構定義為功能? Intel 移至 32 位元世界時,作法是擴充 16 位元 x86 架構和指令集來建立也可執行 16 位元應用程式的 32 位元版本。 因此,32 位元 x86 處理器可以執行 16 位元和 32 位元作業系統。 不過,Intel 未搭配使用此方式與其 64 位元策略。 原因可能是,在 90 年代中期,因設計複雜性而快速接近 x86 的效能上限,而且覺得全新的設計在未來可以走得更遠。 現今,Intel 和 AMD 都已透過其驚人的 x86 時脈速度來證明此假設錯誤;Intel 已經示範以 4 GHz 執行的 Pentium IV。 Intel 可能會為他們的誤判付出代價。

請將電子報轉發給您認為可能對其內容感興趣的朋友。

感謝您!

-標記

SYSINTERNALS 最新動向

TCPVIEW V2.21

TCPView 是已在 Sysinternals 網站上數年的應用程式,但直到最近的 2.0 更新,才不只是 Windows netstat 命令列工具的 GUI 版本。 這個主要修訂帶來大量強大的功能,其中最重要的功能是程序之 NT 4、Windows 2000 和 Windows XP 上的顯示,而此程序擁有每個 TCP 和 UDP 端點。 您也可以檢視程序的版本資料和可執行路徑,以及終止 Rogue 程序。 如果您想要停止應用程式使用特定連接埠,則將會發現有一個功能十分有用,就是能夠即時關閉連線,而不需要終止程序。

在 UI 區域中,最新版本會以可選取的間隔和差異醒目提示來引進自動重新整理。 差異醒目提示可協助您在活動發生時將其放大,並描述新項目和已刪除項目的色彩醒目提示,這是我從程序總管所傳遞的內容。

下載 TCPView v2.21,網址為
http://www.sysinternals.com/ntw2k/source/tcpview.shtml

LIVEKD V2.0

David Solomon 和我在我們書籍《Windows 2000 內部》CD 上所包括的其中一個工具 (請參閱 http://www.sysinternals.com/insidew2k.shtml) 是 LiveKd。 LiveKd 是 Microsoft 核心偵錯工具的前端,可讓您執行偵錯工具以與即時系統互動。 使用偵錯工具來查看系統,而不需要使用第二部電腦和序列偵錯連線,即可輕鬆探索內部,甚至可以作為疑難排解協助工具。 第一版 LiveKd 僅支援 NT 4 和 Windows 2000-LiveKd 2.0 版可在 Windows XP 上運作。

雖然 Microsoft 會追蹤我的潛在客戶,並將即時核心偵錯功能新增至 Windows XP,但在即時系統上執行時,有幾個偵錯命令無法運作,這就是為什麼我無法更新 LiveKd 以在 Windows XP 上運作的原因。

其中一個範例是 !process 或 !thread 命令的堆疊輸出。 LiveKd 會顯示完整核心堆疊,而使用內建 XP 即時偵錯功能則否。 另一個範例是 !stacks 命令,您可以用來查看執行緒目前正在執行的位置,以及其可能已開始執行的位置。 當您要偵錯涉及系統執行緒的問題而且想要判斷其用途時,!stacks 命令十分有用;知道執行緒執行所在的驅動程式可能是修正問題所需的線索。

下載 LiveKd v2.0 修補程式,網址為
http://www.sysinternals.com/insidew2k.shtml
請注意,您將需要一份來自書籍 CD 且要套用修補程式的 LiveKd。

PSINFO V1.33

PsInfo 是構成命令列、遠端功能、Windows NT/2000/XP 系統管理工具的 PsTools 套件的十幾個工具中的其中一個,會根據使用者意見反應來持續演進。 1.33 版新增可列出已安裝 Hotfix 和應用程式的能力,以及報告電腦磁碟區的標籤、大小和使用量資料的能力。

下載 PsInfo v1.33,網址為
http://www.sysinternals.com/ntw2k/freeware/psinfo.shtml
下載整個 PsTools 套件,網址為
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

PSLIST V1.21

如果您想要使用命令列或想要取得電腦 (本機或遠端) 的程序清單與 CPU 使用量資料,則會對最新版本的 PsList 感興趣,而這是 PsTools 套件的另一個成員。 PsList v1.2 引進命令列參數,可在命令視窗的工作管理員模式中執行,並會以可設定的間隔更新,並顯示 CPU 使用量。 另一個新的參數讓 PsList 使用縮排來顯示程序父子關聯性,這有時有助於瞭解您無法識別之程序的目的。

下載 PsList v1.21,網址為
http://www.sysinternals.com/ntw2k/freeware/pslist.shtml
下載整個 PsTools 套件,網址為
http://www.sysinternals.com/ntw2k/freeware/pstools.shtml

BGINFO V3.0

管理多個系統通常表示必須處理使用自黏便箋或開啟系統資訊公用程式來判斷系統規格和設定的煩惱。 BgInfo 是一個公用程式,可顯示您在桌面上指定的標準和自訂系統資訊,讓您一目了然地瞭解您視為重要的所有資料。

BgInfo 已是多用途,可讓您指定任何一組預先定義的值,或指示 BgInfo 從登錄或檔案取得值。 BgInfo v3.0 引進對 Visual Basic 指令碼的支援來新增更多自訂功能,讓您可以製作可擷取自訂組態設定的指令碼,並將其報告給 BgInfo 以供呈現。

下載 BgInfo v3.0,網址為
http://www.sysinternals.com/ntw2k/freeware/bginfo.shtml

PAGEDEFRAG V2.2

您是否發現分頁檔、登錄檔案或事件記錄檔越來越分散? 內建重組工具不會處理這些檔案,因為它們必須先在開機時重組,再執行作業系統。 PageDefrag 是輕量級重組工具,其單一用途是重組這些重要系統檔案。

PageDefrag 2.2 版包括 Windows XP 支援,並可讓您指定 PageDefrag 在重組之前所顯示的倒數計時器。 計時器的運作方式就像 chkdsk 所實作的計時器,其中在倒數計時期間按任何按鍵都會中止重組。

下載 PageDefrag v2.2,網址為
http://www.sysinternals.com/ntw2k/freeware/pagedefrag.shtml

REGMON V4.34 for WIN64/ITANIUM

Microsoft 去年將 Itanium 系統借給我,讓我可以將 Sysinternals 工具移植至 Win64。 並非所有工具都需要移植,因為大部分的 32 位元應用程式都會在執行 Windows XP 64 位版本的 Itanium 上執行,而不需要進行變更,方法是使用 Itanium 的 32 位元二進位相容性支援。 不過,Windows XP 64 位元版本將不會載入 32 位元驅動程式,這表示任何具有驅動程式元件的 Sysinternals 工具都至少必須將驅動程式移植至 64 位元。

我移植的第一個公用程式是 Filemon。 Filemon 的移植相當簡單,因為它只需要變更驅動程式和 GUI 來源以符合 64 位元資料類型規則後重新編譯即可。 我在最後一份新聞稿中描述了移植程式。 Regmon 的移植包括相同的資料類型問題,但還包括讓其更難移植的其他問題。

Regmon 依賴驅動程式,而驅動程式使用 Regmon 攔截常式來修補核心中的系統呼叫表格,以監視登錄活動。 長話短說,Itanium 上的系統呼叫介面具有處理器相依特性,會讓我在 32 位元驅動程式中使用的方式無法使用。 因此,我必須使用一些困難的編碼來取得系統呼叫攔截,才能在 64 位元 XP 上工作。

幸運的是,Microsoft 已在 Windows .NET Server 核心中實作登錄活動回呼介面,因此不需要 Regmon 用來監看登錄活動的技術。 尋找可示範新 Windows .NET Server API 的近期 Regmon 更新以及電子報中 API 的描述。

下載 Regmon v4.34,網址為
http://www.sysinternals.com/ntw2k/source/regmon.shtml

PC WORLD 雜誌中的 SYSINTERNALS

Regmon 和 Filemon 在 8 月發行的 PC World (一本高流通的電腦雜誌) 中都得到不錯的推薦,可作為建議的疑難排解工具。 在 http://www.pcworld.com/features/article/0 深入閱讀,協助,101750,00.asp

WWW.MICROSOFT.COM 上的 SYSINTERNALS

以下是自上期電子報以來發行的 Microsoft 知識庫 (KB) 文章中的最新 Sysinternals 參考設置。 這讓 KB 中對 Sysinternals 的參考總次數達到 38 次。

  • 如何:在 Windows 2000 中建立自訂系統管理範本
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;q323639

  • 如果未授與原則檔案的 Oplock,則慢速連結會有登入延遲
    http://support.microsoft.com/default.aspx?scid=kb;EN-US;q319440

  • XCON:MTA 程序將會因高控制碼計數而流失記憶體 http://support.microsoft.com/default.aspx?scid=kb;EN-US;q313735

此外,Microsoft 已將 Sysinternals 視為目前精選的 Windows XP Embedded 社群網站! 請檢查 http://www.microsoft.com/windows/embedded/community/default.asp

INTERNALS 資訊

倫敦中的 MARK AND DAVID SOLOMON TEACH INTERNALS

參加我和 David Solomon 在倫敦 9 月 23 日至 25 日的 3 天 Windows 2000/XP/.NET Server 內部課程 (下一個課程是在德克薩斯州奧斯丁 12 月 9 日至 11 日)。 它以「在 Windows 2000,第三版內部」為基礎,涵蓋重要系統元件和機制的核心架構與相互關聯,例如系統線程、系統呼叫分派、中斷處理,以及啟動和關機。 說明的主要子系統內部包括進程和線程、線程排程、記憶體管理、安全性、I/O 系統、NTFS 和快取管理員。 您可以瞭解 OS 的內部運作方式,以更有效率地利用平台,而且更有效率地對問題進行偵錯和疑難排解。

如需詳細資訊,請參閱 http://www.sysinternals.com/seminar.shtml

WINDOWS NT 內部開發

此簡報已有一些年份,但 Windows NT 3.1 到 Windows 2000 的開發歷程記錄還是十分有趣。 Mark Lucovsky 是其中一位原始 NT 軟體工程師,2000 年在 USENIX 年度技術會議上發表簡報。 他描述開發小組的大小、缺陷率 (針對其所撰寫的程式碼,而不是成員)、原始檔控制系統和小組開發挑戰。

請參閱 Mark Lucovsky 對 NT 開發歷程記錄的談話,網址為 http://www.usenix.org/events/usenix-win2000/invitedtalks/lucovsky_html/

在相關注意事項上,以下是 Microsoft 自己從 Window 1.0 到 Windows .NET Server 的 Windows 歷程記錄:http://www.microsoft.com/windows/WinHistoryIntro.asp

變更未計數時

Windows 會追蹤檔案和目錄的數個時間戳記。 其中包括建立、上次存取和上次修改。 記錄上次寫入檔案的時間時,會記載上次修改時間戳記。 不幸的是,依賴此為真的應用程式將會極度震驚。

如果應用程式使用 CreateFile API 來開啟檔案,然後透過 WriteFile 或其變體寫入其中,則上次修改時間會確實反映檔案最近修改時間。 如果應用程式使用 CreateFileMappingMapViewOfFile 來開啟檔案以進行記憶體對應的 I/O,然後變更對應的內容來修改檔案,則記憶體管理員最終會將資料寫回檔案,並修改磁碟上版本。 問題是,檔案系統驅動程式不會更新因記憶體對應寫入而進行修改的檔案上次修改時間。

為什麼呢? 我假設開發人員為了提升效能而捨棄某個項目,但未記載此行為,因此我只能進行推測。 我猜測未平等建立所有寫入。

.NET SERVER RC 1

Windows .NET Server RC 1 已出貨,而且 Microsoft 有機會將其新伺服器 OS 的 RTM (發行至製造) 組建縮短到年底 (大約與在同一年被蛇和鯊魚咬傷的機會相同)。 從核心的觀點來看,Windows XP 沒有重大可見的變更。 沒有任何主要的新核心子系統、Win32 或核心 API - 只是進行調校,以增強大型系統以及讓現有 API 集更加完善之少數 API 的效能。

不過,使用者空間具有重大變更。 最大的變更當然是 .NET Framework,但也有新的伺服器導向服務。 利用 Windows XP 中引進以進行備份的磁碟區陰影複製服務,以讓用戶端使用者可以將伺服器共用上的檔案復原至舊版本。 不需要系統管理員互動,因為使用者只要選取新總管檔案屬性索引標籤內所顯示檔案歷程記錄清單中的所需項目即可。

伺服器網路增強功能是 Winsock Direct,這種基礎結構允許具有特殊化網路互連 (稱為系統區域網路 (SAN) 的設定) 之多層設定的伺服器上的應用程式直接與網路硬體通訊,並略過 TCP/IP 堆疊和核心。

尋找 David Solomon 和我即將發行的文章,其中描述 .NET Server 系統層級變更。 我們也會在將於明年春天發佈的《Windows 2000 內部》修訂中涵蓋 .NET Server,稱為 Windows Internals。

WMI 指令碼的載入

如果您想要來自 Sysinternals 的 PsTools 套件,則您可能是指令碼愛好者,而且,如果您的系統正在執行 Windows 2000 或 XP,或已安裝 NT 4 WMI 核心元件,則您應該前往 Microsoft 的 TechNet 網站,並抓取他們在那裡張貼的免費 WMI 範例指令碼。 有一個大型集合劃分為「電腦管理」和「網路」這類類別,而且您可以個別或同時下載。

取得免費的範例 WMI 指令碼,網址為 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/scrip tcenter/sampscr.asp

針對 Microsoft 的免費資源,您可以找到張貼以供下載的 Windows 2000 Resource Kit 工具子集。 請瀏覽 http://www.microsoft.com/windows2000/techinfo/reskit/en-us/default.asp

使用 BOOTVIS 來分析開機程序

我定期取得開發 Sysinternals 工具的要求,而此工具監視開機程序,讓使用者可以判斷可能造成延遲的原因。 幸運的是,我等待夠長的時間,而 Microsoft 擊敗了我。 他們所撰寫的工具稱為 BootVis,而且它在針對 Windows XP 所實作的開機效能最佳化中扮演重要角色。 您可以從 http://www.microsoft.com/HWDEV/PLATFORM/performance/fastboot/BootVis.asp 進行下載。 BootVis 只會在 Windows XP 上執行,並使用 XP 的 WMI 核心追蹤設備來收集開機程序的詳細追蹤,包括 CPU 使用量、磁碟 I/O、程序啟動和驅動程式 I/O。 呼叫 BootVis terse 隨附的說明檔十分容易,因此我將會逐步引導您瞭解如何使用此工具。

如果您想要能夠精確地查看哪些具有驅動程式和模組的函數考慮 CPU 時間,則請開啟 [工具] | [選項] 對話方塊,並將 BootVis 指向已安裝的 Windows XP 符號。 接下來,選取 [追蹤] | [下一次開機] + [驅動程式延遲],以讓 BootVis 擷取下一次開機的追蹤,包括驅動程式延遲。 BootVis 將會倒數計時,然後重新啟動您的系統。

啟動系統之後,請登入,並再次執行 BootVis。 選取 [追蹤] | [停止追蹤],就會擷取從核心收集到的追蹤,並將其儲存至檔案,然後將其載入以供顯示。 您將會看到四份圖表。 在 [CPU 使用量] 中,您會看到開機取用多少 CPU 處理的追蹤。 磁碟 I/O 長條圖會顯示每秒發生的磁碟讀取次數 (紅色) 和寫入次數 (藍色)。 在驅動程式延遲圖中,您將會看到代表驅動程式 I/O 的矩形,而驅動程式 I/O 的持續時間大於預設 BootVis 截斷 100 毫秒;這類延遲會視為重大。 最後,[程序建立] 圖會顯示已啟動程序的已標示矩形。

BootVis 不一定會顯示啟動時收集到的所有追蹤資料,因此除非您開始查看圖形化資料的右邊緣,否則請使用縮小按鈕。 請現在查看每個圖形。 如果您看到 CPU 或磁碟突增,或想要放大程序啟動活動,則請使用放大工具列按鈕。 請注意,當您放大時,所顯示的開始時間將會維持 0,因此,在手動縮放之後,請在 [顯示時間] 編輯方塊中輸入接近您感興趣活動的時間。

[CPU 使用量]、[磁碟 I/O] 和 [驅動程式延遲] 圖形可讓您檢視比立即可見更多的資訊。 移動游標,並按住滑鼠左鍵,然後拖曳,以選取感興趣圖形中的區域。 然後按一下滑鼠右鍵以取得功能表。 [CPU 使用量] 圖形中的有趣功能表選項是可彈出對話方塊的 [顯示摘要],而此對話方塊會依所選取時間間隔的 CPU 使用量程序來列出明細。 如果您按兩下其中一個程序,則會開啟另一個對話方塊,以依模組來顯示 CPU 使用量明細 (例如程序中的 DLL)。 如果您已設定符號,則甚至可以按兩下模組,並取得對話方塊,其中依函數來顯示該模組的 CPU 使用量明細。

當您以滑鼠右鍵按一下 [磁碟 I/O] 圖形中選取的區域時,會出現兩個功能表項目:[顯示摘要表格] 和 [顯示詳細資料圖形]。 選取 [顯示摘要表格],以查看間隔期間發生之所有 I/O 的會計 (依模組細分)。 選擇 [顯示詳細資料圖形] 以顯示折線圖,而此折線圖代表磁碟內在該間隔所存取的實際磁區。 詳細資料圖形甚至會將 I/O 與執行它們的程序產生關聯,並可讓您在左側清單中將其取消選取以篩選出程序。 您可以按一下滑鼠右鍵並選取產生的功能表項目,以選取詳細資料圖形內的區域,以及存取該子間隔的另一個摘要圖。

從 [驅動程式延遲] 圖形的捷徑功能表中選擇 [顯示摘要表格] 會顯示所選取區域中顯示的 I/O 清單,其中包括已執行 I/O 的驅動程式名稱、每個 I/O 的開始、結束和總時間,以及已執行的 I/O 函數。

這會將我帶回我 BootVis 教學課程的結尾。 雖然這不是最好的工具,但在使用 BootVis 一段時間之後,您將會同意我,其圖形可檢視的詳細程度十分驚人。 下一次您有長的開機而且想要知道負責的內容時,您將知道在何處轉換答案。

未來動態

損毀傾印分析的快速簡介

Microsoft 最近對其核心偵錯工具的增強已讓損毀傾印分析變得容易。 下次我將顯示如何在一小時內成為傾印分析專家。


感謝您閱讀 Sysinternals 電子報。

發佈時間:2002 年 8 月 12 日星期一下午 7:00,發佈者:ottoh

[電子報封存 ^][ Volume 4, Number 1] [<Volume 4, Number 3 >]