タスクマネージャには、svchost.exeの全体的なメモリ使用量が表示されます。個々のサービスのメモリ使用量を表示する方法はありますか?
これは svchost.exe の詳細なパフォーマンスレポートに似ていることに注意してください
求めている情報を取得する簡単な方法があります(ただし、システムを少し変更する必要があります)。
各サービスを分割して独自の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プロセスが1つしかありません。私はこのシーケンスを使用しました(コマンドラインウィンドウに直接貼り付けることができます):
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.
組み込みの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、Browser、 CryptSvc、 dmserver、EventSystem、helpsvc、 lanmanserver、lanmanworkstation、Messenger、 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/bb89665
必ず管理者としてProcess Explorerを実行し、検査するsvchostをクリックして、View DLLs
ボタン(または CTRL+D)。 DLLウィンドウでヘッダーを右クリックし、Select Columns...
、次にチェックWS Total Bytes
、OK
を押します。
これで、svchost内の(dllによって実装された)個々のサービスのメモリ使用量を表示およびソートできます。
Process Monitorは汎用のユーティリティです(皿を洗う以外のすべてを実行します)が、この特定の質問ではVMMap(別のSysInternalsユーティリティ)を使用します。
http://technet.Microsoft.com/en-us/sysinternals/dd535533.aspx
VMMapは、プロセスの仮想および物理メモリ分析ユーティリティです。プロセスのコミットされた仮想メモリタイプの内訳と、オペレーティングシステムによってそれらのタイプに割り当てられた物理メモリ(ワーキングセット)の量が表示されます。 VMMapは、メモリ使用量のグラフィック表現に加えて、概要情報と詳細なプロセスメモリマップも表示します。強力なフィルタリングおよびリフレッシュ機能により、プロセスのメモリ使用量の原因とアプリケーション機能のメモリコストを特定できます。
ライブプロセスを分析するための柔軟なビューに加えて、VMMapは複数の形式でのデータのエクスポートをサポートしています。スクリプトシナリオを有効にするオプション
これはstackoverflowテリトリーに入りますが、スレッドごとのメモリ統計を取得できる場合は、スレッドスタックにリストされているdllとそれらを一致させることにより、個々のサービスdllに大まかに関連付けることができる場合があります。ただし、私の小さなシステム管理者の頭脳には大きすぎます。
ここでピーター・モーテンセンの答えを拡張します。サービスのタイプを変更する前に、次のようなコマンドで既存のタイプを確認してください:
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)。
ただし、レジストリを使用して行うことができます。つまり、「Type」パラメーターを0x00000010(12月16日)に設定します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<ServiceName>\Type
変更するサービスを選択する場合は注意が必要です。「own」と「share」の他に、変更してはならない次のような特別なタイプがあります。
その後、サービスを再起動すると、ProcessExplorerに独自のsvchost.exeプロセスがあることがわかります。