タスクマネージャーは、svchost.exeの全体的なメモリ使用量を表示します。個々のサービスのメモリ使用量を表示する方法はありますか?
これは、svchost.exeのFinegrainedパフォーマンスレポートに似ていることに注意してください。
タスクマネージャーは、svchost.exeの全体的なメモリ使用量を表示します。個々のサービスのメモリ使用量を表示する方法はありますか?
これは、svchost.exeのFinegrainedパフォーマンスレポートに似ていることに注意してください。
回答:
求めている情報を取得する簡単な方法があります(ただし、システムにわずかな変更が必要です)。
各サービスを分割して独自のSVCHOST.EXEプロセスで実行すると、CPUサイクルを消費するサービスがタスクマネージャーまたはプロセスエクスプローラーで簡単に表示されます(「=」の後のスペースが必要です)。
SC Config Servicename Type= own
これをコマンドラインウィンドウで行うか、BATスクリプトに入れます。管理者権限が必要であり、有効にする前にコンピューターの再起動が必要です。
元の状態は次の方法で復元できます。
SC Config Servicename Type= share
例:Windows Management Instrumentationを別のSVCHOST.EXEで実行するには:
SC Config winmgmt Type= own
この手法は、おそらくメモリ消費をわずかに増やすことを除いて、悪影響はありません。また、各サービスのCPU使用率を監視するだけでなく、各サービスのページフォールトデルタ、ディスクI / O読み取り速度、ディスクI / O書き込み速度を簡単に監視できます。プロセスエクスプローラーの場合、[表示] / [列の選択]メニュー:[プロセスメモリ/ページフォールトデルタ]タブ、[プロセスパフォーマンス/ IOデルタ書き込みバイト]タブ、[プロセスパフォーマンス/ IOデルタ読み取りバイト]タブ。
ほとんどのシステムでは、多数のサービスを持つSVCHOST.EXEプロセスのみがあります。このシーケンスを使用しました(コマンドラインウィンドウに直接貼り付けることができます)。
rem 1. "Automatic Updates"
SC Config wuauserv Type= own
rem 2. "COM+ Event System"
SC Config EventSystem Type= own
rem 3. "Computer Browser"
SC Config Browser Type= own
rem 4. "Cryptographic Services"
SC Config CryptSvc Type= own
rem 5. "Distributed Link Tracking"
SC Config TrkWks Type= own
rem 6. "Help and Support"
SC Config helpsvc Type= own
rem 7. "Logical Disk Manager"
SC Config dmserver Type= own
rem 8. "Network Connections"
SC Config Netman Type= own
rem 9. "Network Location Awareness"
SC Config NLA Type= own
rem 10. "Remote Access Connection Manager"
SC Config RasMan Type= own
rem 11. "Secondary Logon"
SC Config seclogon Type= own
rem 12. "Server"
SC Config lanmanserver Type= own
rem 13. "Shell Hardware Detection"
SC Config ShellHWDetection Type= own
rem 14. "System Event Notification"
SC Config SENS Type= own
rem 15. "System Restore Service"
SC Config srservice Type= own
rem 16. "Task Scheduler"
SC Config Schedule Type= own
rem 17. "Telephony"
SC Config TapiSrv Type= own
rem 18. "Terminal Services"
SC Config TermService Type= own
rem 19. "Themes"
SC Config Themes Type= own
rem 20. "Windows Audio"
SC Config AudioSrv Type= own
rem 21. "Windows Firewall/Internet Connection Sharing (ICS)"
SC Config SharedAccess Type= own
rem 22. "Windows Management Instrumentation"
SC Config winmgmt Type= own
rem 23. "Wireless Configuration"
SC Config WZCSVC Type= own
rem 24. "Workstation"
SC Config lanmanworkstation Type= own
rem End.
svchost.exe
、Windows XPシステムで3つまたは4つのインスタンスに気付きます。これに私は6を見ます
type= own
いて、それを設定すると正しく動作しない場合があり、それで暗号化されたファイルにアクセスできなくなりますOSファイルが暗号化されている場合は壊滅的です!)
組み込みtasklist
コマンドを使用して、サービス名(/fi
スイッチ)でフィルター処理できます。次に例を示します。
tasklist /fi "services eq TermService"
出力:
イメージ名PIDセッション名セッション番号メモリ使用量 ================================================= ========== ============= svchost.exe 2940コンソール0 7.096 K
名前がわからない場合は、次のステートメントを実行してリストできます。
tasklist /svc /fi "imagename eq svchost.exe"
svchost.exeによってホストされているすべてのサービスがリストされます。次に例を示します。
イメージ名PIDサービス ================================================= =========================== svchost.exe 632 DcomLaunch svchost.exe 684 RpcSs svchost.exe 748 Dhcp、Dnscache svchost.exe 788 LmHosts、W32Time svchost.exe 804 AeLookupSvc、AudioSrv、ブラウザ、CryptSvc、 dmserver、EventSystem、helpsvc、 lanmanserver、lanmanworkstation、メッセンジャー、 Netman、Nla、RasMan、Schedule、seclogon、 SENS、ShellHWDetection、TrkWks、winmgmt、 wuauserv、WZCSVC svchost.exe 1140 ERSvc svchost.exe 1712 RemoteRegistry svchost.exe 196 W3SVC svchost.exe 2940 TermService svchost.exe 2420 TapiSrv
サービスは必ずしもでホストされているわけではありませんsvchost.exe
。そのため、実行中のファイル名でフィルタリングするサービスが見つからない場合は、単に実行しtasklist /svc
ます。すべてのサービスが表示されます。
プロセスエクスプローラーは実際にsvchost内の個々のメモリ使用量を表示します。ここから最新バージョンを入手していることを確認してくださいhttp://technet.microsoft.com/en-us/sysinternals/bb896653
管理者としてProcess Explorerを実行し、検査するsvchostをクリックして、View DLLs
ボタン(またはCTRL+D)をクリックしてください。[DLL]ウィンドウでヘッダーを右クリックし、Select Columns...
チェックしてWS Total Bytes
、を押しますOK
。
これで、svchost内の個々のサービス(dllで実装)のメモリ使用量を表示およびソートできます。
プロセスモニターは汎用ユーティリティ(皿洗い以外のすべてを実行します)ですが、この特定の質問では、VMMap(別のSysInternalsユーティリティ)を使用します
http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx
VMMapは、プロセス仮想および物理メモリ分析ユーティリティです。プロセスのコミットされた仮想メモリタイプの内訳と、オペレーティングシステムによってそれらのタイプに割り当てられた物理メモリ(ワーキングセット)の量が表示されます。メモリ使用量のグラフィック表示に加えて、VMMapは要約情報と詳細なプロセスメモリマップも表示します。強力なフィルタリングおよび更新機能により、プロセスのメモリ使用量のソースとアプリケーション機能のメモリコストを特定できます。
ライブプロセスを分析するための柔軟なビューに加えて、VMMapは、すべての情報を保存して読み込むことができるネイティブ形式など、複数の形式でのデータのエクスポートをサポートします。スクリプトシナリオを有効にするコマンドラインオプションも含まれます。
ピーターモーテンセンの答えをここで拡張します。サービスのタイプを変更する前に、次のようなコマンドで既存のタイプを確認してください。
sc query wuauserv
以下が出力されます:
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
「10 WIN32_OWN_PROCESS」、「20 WIN32_SHARE_PROCESS」以外のタイプは変更しないでください。
サービスを分離するのは正しい答えですが、sc configコマンドは機能しませんでした(2008 R2)。
ただし、レジストリ経由で行うことができます。つまり、「タイプ」パラメーターを0x00000010(12月16日)に設定します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<ServiceName>\Type
変更するサービスを選択する際には注意してください。「所有」と「共有」以外にも、変更すべきではない特別なタイプがあります。
その後、サービスを再起動するだけで、ProcessExplorerに独自のsvchost.exeプロセスがあることがわかります。