Bagi siapa pun (seperti saya) yang memiliki masalah yang sama: - Windows Task Manager -> Performance (tab) -> Monitor sumber daya (tombol) - Dan Anda mendapatkan svchost.exe dibagi dengan layanan Pada Windows 7
Oliver
1
@Oliver Resource Monitor menunjukkan CPU per layanan, tetapi pertanyaan ini tentang Memori.
Aidan Ryan
Anda dapat melihat skrip untuk memeriksa memori layanan individual dalam jawaban SO ini .
Rosberg Linhares
@RosbergLinhares skrip ini setara dengan PeterMortensen
Aidan Ryan
@AidanRyan, bagi saya skrip PeterMortensen tidak berfungsi dengan layanan Schedule dan gpsvc.
Rosberg Linhares
Jawaban:
51
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.
Untuk pengguna PowerShell di luar sana: Dapatkan-Layanan | ForEach-Object {C: \ Windows \ System32 \ SC.EXE config $ _. Tipe nama = milik}
Tamara Wijsman
1
Sebenarnya, saya biasanya melihat 3 atau 4 contoh svchost.exepada sistem Windows XP. Yang ini saya lihat 6.
SamB
4
@TomWij: Jadilah sangat berhati-hati ketika menggunakan potongan ini - jika Anda menggunakan EFS (Encrypting File System) dan set ke type= ownmungkin tidak bekerja dengan benar dan Anda akan ditinggalkan tanpa akses ke file yang dienkripsi dengan itu (yang bisa menjadi bencana jika file OS dienkripsi!)
Beau
@Beau: Apakah Anda tahu mengapa secara eksplisit?
Tamara Wijsman
2
@Peter Mortensen: Saya telah membuat alat Pengungkapan Layanan . Ini 1. Menyimpan layanan yang berbagi proses svchost.exe. 2. Mengkonfigurasi layanan untuk dijalankan dalam proses terpisah. 3. Mengembalikan semua layanan yang tersimpan pada langkah # 1 ke satu proses. Komentar dan saran Anda dipersilakan. Terima kasih atas idenya.
Dmytro Ovdiienko
18
Anda dapat menggunakan tasklistperintah bawaan dan memfilter menurut nama layanan ( /fisakelar), misalnya:
tasklist /fi "services eq TermService"
Keluaran:
Nama Gambar Sesi Nama PID Sesi # Penggunaan Mem
========================= ======== ================ = = ========== ============
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-hosting oleh svchost.exe, misalnya:
Layanan tidak dihosting oleh svchost.exe. Jadi, jika Anda tidak dapat menemukan layanan pemfilteran dengan nama file yang mengeksekusi, jalankan saja tasklist /svc. Ini akan menampilkan semua layanan.
Pastikan untuk menjalankan Process Explorer sebagai administrator, klik pada svchost yang ingin Anda periksa, klik View DLLstombol (atau CTRL+D). Klik kanan header di jendela DLL Select Columns...,, lalu centang WS Total Bytes, dan tekan OK.
Sekarang Anda dapat melihat dan mengurutkan penggunaan memori layanan individual (diterapkan oleh dll) di dalam svchost.
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)
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 detail peta proses memori. 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 mencakup opsi baris perintah yang memungkinkan skenario skrip.
Keren! Sekarang apakah ada cara untuk melacak penggunaan blok memori tumpukan ke layanan individu yang memilikinya?
Aidan Ryan
3
Ini masuk ke wilayah stackoverflow, tetapi jika Anda bisa memperoleh statistik memori per-thread, Anda mungkin dapat secara kasar menghubungkannya dengan dll layanan individual dengan mencocokkannya dengan dll yang tercantum dalam tumpukan thread. Terlalu banyak untuk otak sysadmin kecilku.
Jawaban:
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 "="):
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:
Contoh: untuk membuat Instrumentasi Manajemen Windows dijalankan di SVCHOST.EXE yang terpisah:
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):
sumber
svchost.exe
pada sistem Windows XP. Yang ini saya lihat 6.type= own
mungkin tidak bekerja dengan benar dan Anda akan ditinggalkan tanpa akses ke file yang dienkripsi dengan itu (yang bisa menjadi bencana jika file OS dienkripsi!)Anda dapat menggunakan
tasklist
perintah bawaan dan memfilter menurut nama layanan (/fi
sakelar), misalnya:Keluaran:
Jika Anda tidak tahu nama, Anda bisa mencantumkannya dengan menjalankan pernyataan ini:
Ini mencantumkan semua layanan yang di-hosting oleh svchost.exe, misalnya:
Layanan tidak dihosting oleh
svchost.exe
. Jadi, jika Anda tidak dapat menemukan layanan pemfilteran dengan nama file yang mengeksekusi, jalankan sajatasklist /svc
. Ini akan menampilkan semua layanan.sumber
Process explorer memang akan menunjukkan penggunaan memori individual dalam svchost. Pastikan Anda memiliki versi terbaru dari sini http://technet.microsoft.com/en-us/sysinternals/bb896653
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 DLLSelect Columns...
,, lalu centangWS Total Bytes
, dan tekanOK
.Sekarang Anda dapat melihat dan mengurutkan penggunaan memori layanan individual (diterapkan oleh dll) di dalam svchost.
sumber
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 detail peta proses memori. 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 mencakup opsi baris perintah yang memungkinkan skenario skrip.
sumber
Ini masuk ke wilayah stackoverflow, tetapi jika Anda bisa memperoleh statistik memori per-thread, Anda mungkin dapat secara kasar menghubungkannya dengan dll layanan individual dengan mencocokkannya dengan dll yang tercantum dalam tumpukan thread. Terlalu banyak untuk otak sysadmin kecilku.
sumber
Saya menyampaikan jawaban Peter Mortensen di sini. Sebelum memodifikasi jenis layanan, silakan periksa jenis yang ada dengan perintah seperti:
Yang akan menampilkan sebagai berikut:
Jenis apa pun selain "10 WIN32_OWN_PROCESS", "20 WIN32_SHARE_PROCESS" tidak boleh dimodifikasi.
sumber
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):
Berhati-hatilah meskipun layanan mana yang Anda pilih untuk diubah, ada jenis khusus selain "milik" dan "bagi" yang tidak boleh diubah, seperti:
Setelah itu, cukup restart layanan dan Anda akan melihat di ProcessExplorer bahwa sekarang memiliki proses svchost.exe sendiri.
sumber