pengembangan-web-mp-pd.com

Bagaimana menemukan penggunaan memori masing-masing layanan Windows?

Task Manager menunjukkan penggunaan memori svchost.exe secara keseluruhan. Apakah ada cara untuk melihat penggunaan memori layanan individual?


Catatan ini mirip dengan Pelaporan kinerja terdegradasi pada svchost.exe

43
Aidan Ryan

Ada cara mudah untuk mendapatkan informasi yang Anda minta (tetapi itu memang membutuhkan sedikit perubahan pada sistem Anda):

Bagi setiap layanan untuk dijalankan dalam proses SVCHOST.EXE-nya sendiri dan layanan yang menggunakan siklus CPU akan mudah terlihat di Task Manager atau Process Explorer (diperlukan ruang setelah "="):

SC Config Servicename Type= own

Lakukan ini di jendela baris perintah atau letakkan di skrip BAT. Hak administratif diperlukan dan restart komputer diperlukan sebelum mulai berlaku.

Keadaan asli dapat dipulihkan dengan:

SC Config Servicename Type= share

Contoh: untuk membuat Instrumentasi Manajemen Windows dijalankan di SVCHOST.EXE yang terpisah:

SC Config winmgmt Type= own

Teknik ini tidak memiliki efek buruk, kecuali mungkin sedikit meningkatkan konsumsi memori. Dan selain mengamati penggunaan CPU untuk setiap layanan juga memudahkan untuk mengamati kesalahan halaman delta, disk I/O read rate dan disk I/O write rate untuk setiap layanan. Untuk Process Explorer, menu Lihat/Pilih Kolom: tab Process Memory/Page Fault Delta, tab Performance Process/IO Delta Write Bytes, tab Performance Process/IO Delta Read Bytes, masing-masing.


Pada kebanyakan sistem hanya ada satu proses SVCHOST.EXE yang memiliki banyak layanan. Saya telah menggunakan urutan ini (dapat disisipkan langsung ke jendela baris perintah):

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.
51
Peter Mortensen

Anda dapat menggunakan perintah tasklist yang ada di dalamnya dan memfilter menurut nama layanan (/fi beralih), misalnya:

 tasklist /fi "services eq TermService"

Keluaran:

 Nama Gambar Sesi Nama PID Sesi # Mem Penggunaan 
 ========================== ====== == ================ ======================= 
 svchost.exe 2940 Konsol 0 7.096 K 

Jika Anda tidak tahu nama, Anda bisa mencantumkannya dengan menjalankan pernyataan ini:

 tasklist /svc /fi "imagename eq svchost.exe"

Ini mencantumkan semua layanan yang di-host oleh svchost.exe, misalnya:

 Nama Gambar Layanan 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, Browser CryptSvc, 
 Dmserver, EventSystem, helpvc, 
 Lanmanserver, lanmanworkstation, Messenger, 
 Netman, Nla, RasMan, Jadwal, 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 

Layanan tidak selalu dihosting oleh svchost.exe. Jadi, jika Anda tidak dapat menemukan layanan pemfilteran dengan nama file yang sedang dieksekusi, jalankan saja tasklist /svc. Ini akan menampilkan semua layanan.

19
splattne

Process Explorer memang akan menunjukkan kepada Anda penggunaan memori individual dalam svchost Pastikan Anda memiliki versi terbaru dari sini http://technet.Microsoft.com/en-us/sysinternals/bb89665

Pastikan untuk menjalankan Process Explorer sebagai administrator, klik pada svchost yang ingin Anda periksa, klik View DLLs tombol (atau CTRL+D). Klik kanan header di jendela DLL, Select Columns..., lalu periksa WS Total Bytes, dan tekan OK.

Sekarang Anda dapat melihat dan mengurutkan penggunaan memori layanan individual (diterapkan oleh dll) di dalam svchost.

9
Chris T.

Sementara Process Monitor adalah utilitas tujuan umum (yang akan melakukan segalanya kecuali mencuci piring untuk Anda), untuk pertanyaan khusus ini Anda ingin menggunakan VMMap (utilitas SysInternals lain)

http://technet.Microsoft.com/en-us/sysinternals/dd535533.aspx

VMMap adalah utilitas analisis memori virtual dan fisik proses. Ini menunjukkan kerusakan dari jenis memori virtual yang dilakukan suatu proses serta jumlah memori fisik (set kerja) yang ditetapkan oleh sistem operasi untuk jenis-jenis tersebut. Selain representasi grafis dari penggunaan memori, VMMap juga menunjukkan informasi ringkasan dan peta memori proses yang terperinci. Kemampuan penyaringan dan penyegaran yang kuat memungkinkan Anda mengidentifikasi sumber penggunaan memori proses dan biaya memori dari fitur aplikasi.

Selain tampilan fleksibel untuk menganalisis proses langsung, VMMap mendukung ekspor data dalam berbagai bentuk, termasuk format asli yang menyimpan semua informasi sehingga Anda dapat memuat kembali. Ini juga termasuk baris perintah opsi yang memungkinkan skenario skrip.

7
Sean Earp

Ini masuk ke wilayah stackoverflow, tetapi jika Anda bisa mendapatkan statistik memori per-thread, Anda mungkin dapat secara kasar menghubungkannya dengan dll layanan individu dengan mencocokkannya dengan dll yang tercantum dalam tumpukan thread. Terlalu banyak untuk otak sysadmin kecilku.

3
user2278

Saya menyampaikan jawaban Peter Mortensen di sini. Sebelum memodifikasi jenis layanan, silakan periksa jenis yang ada dengan perintah seperti:

sc query wuauserv

Yang akan menampilkan sebagai berikut:

    TYPE               : 20  WIN32_SHARE_PROCESS
    STATE              : 1  STOPPED
    WIN32_EXIT_CODE    : 0  (0x0)
    SERVICE_EXIT_CODE  : 0  (0x0)
    CHECKPOINT         : 0x0
    WAIT_HINT          : 0x0

Jenis apa pun selain "10 WIN32_OWN_PROCESS", "20 WIN32_SHARE_PROCESS" tidak boleh dimodifikasi.

2
sken130

Memisahkan layanan adalah jawaban yang benar, tetapi perintah sc config tidak berfungsi untuk saya (2008 R2).

Anda dapat melakukannya melalui registri, yang berarti mengatur parameter "Jenis" ke 0x00000010 (16 Desember):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<ServiceName>\Type

Berhati-hatilah meskipun layanan mana yang Anda pilih untuk diubah, ada jenis khusus selain "milik" dan "bagi" yang tidak boleh diubah, seperti:

  • inti
  • filesys
  • rek
  • menyesuaikan

Setelah itu, cukup restart layanan dan Anda akan melihat di ProcessExplorer bahwa sekarang memiliki proses svchost.exe sendiri.

1