ตัวจัดการงานแสดงการใช้งานหน่วยความจำโดยรวมของ svchost.exe มีวิธีดูการใช้หน่วยความจำของแต่ละบริการหรือไม่
หมายเหตุสิ่งนี้คล้ายกับการรายงานประสิทธิภาพ Finegrained ใน svchost.exe
ตัวจัดการงานแสดงการใช้งานหน่วยความจำโดยรวมของ svchost.exe มีวิธีดูการใช้หน่วยความจำของแต่ละบริการหรือไม่
หมายเหตุสิ่งนี้คล้ายกับการรายงานประสิทธิภาพ Finegrained ใน svchost.exe
คำตอบ:
มีวิธีที่ง่ายในการรับข้อมูลที่คุณขอ (แต่มันต้องการการเปลี่ยนแปลงเล็กน้อยในระบบของคุณ):
แยกแต่ละบริการเพื่อเรียกใช้ในกระบวนการ SVCHOST.EXE ของตนเองและบริการที่ใช้รอบ CPU จะสามารถมองเห็นได้ง่ายในตัวจัดการงานหรือ Process Explorer (ต้องการพื้นที่หลัง "="):
SC Config Servicename Type= own
ทำสิ่งนี้ในหน้าต่างบรรทัดคำสั่งหรือใส่ไว้ในสคริปต์ BAT จำเป็นต้องมีสิทธิ์ระดับผู้ดูแลระบบและต้องรีสตาร์ทคอมพิวเตอร์ก่อนจึงจะมีผล
สถานะเดิมสามารถคืนค่าได้โดย:
SC Config Servicename Type= share
ตัวอย่าง: เพื่อให้ Windows Management Instrumentation ทำงานใน SVCHOST แยกต่างหาก:
SC Config winmgmt Type= own
เทคนิคนี้ไม่มีผลกระทบใด ๆ ยกเว้นอาจเพิ่มการใช้หน่วยความจำเล็กน้อย และนอกเหนือจากการสังเกตการใช้งาน CPU สำหรับแต่ละบริการแล้วยังทำให้สามารถสังเกตความผิดพลาดของหน้าเดลต้าอัตราการอ่านดิสก์ I / O และอัตราการเขียนดิสก์ I / O สำหรับแต่ละบริการ สำหรับ Process Explorer, เมนูมุมมอง / เลือกคอลัมน์: แท็บประมวลผลหน่วยความจำ / เพจฟอลต์ความผิดพลาด, แท็บกระบวนการประสิทธิภาพ / IO เขียนเดลต้า 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 ในอันนี้ฉันเห็น 6.
type= own
มันอาจทำงานไม่ถูกต้องและคุณจะถูกทิ้งไว้โดยไม่ต้องเข้าถึงไฟล์ใด ๆ ที่เข้ารหัสด้วย (ซึ่งสามารถ เป็นความหายนะถ้าไฟล์ระบบปฏิบัติการที่มีการเข้ารหัส)!
คุณสามารถใช้tasklist
คำสั่งในตัวและตัวกรองตามชื่อบริการ ( /fi
สวิตช์) ตัวอย่างเช่น:
tasklist /fi "services eq TermService"
เอาท์พุท:
รูปภาพชื่อ PID ชื่อเซสชันเซสชัน # Mem การใช้งาน ========================= ======== ================ = ========== ============ 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, helpvc, lanmanserver, lanmanworkstation, Messenger, Netman, Nla, RasMan, กำหนดการ, 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
ดังนั้นถ้าคุณไม่สามารถหาบริการกรองตามชื่อไฟล์การดำเนินการเรียกใช้เพียง มันจะแสดงบริการทั้งหมด
Process explorer จะแสดงการใช้งานหน่วยความจำส่วนบุคคลให้คุณภายใน svchost ตรวจสอบให้แน่ใจว่าคุณมีเวอร์ชันล่าสุดจากที่นี่http://technet.microsoft.com/en-us/sysinternals/bb896653
ตรวจสอบให้แน่ใจว่าได้เรียกใช้ Process Explorer ในฐานะผู้ดูแลระบบคลิกที่ svchost ที่คุณต้องการตรวจสอบคลิกView DLLs
ปุ่ม (หรือCTRL+D) คลิกขวาที่ส่วนหัวในหน้าต่างที่กำลัง, Select Columns...
แล้วตรวจสอบและตีWS Total Bytes
OK
ตอนนี้คุณสามารถดูและเรียงลำดับการใช้หน่วยความจำของแต่ละบริการ (ถูกใช้งานโดย dlls) ภายใน svchost
ในขณะที่ Process Monitor เป็นยูทิลิตี้เอนกประสงค์ (ที่จะทำทุกอย่างยกเว้นล้างจานให้คุณ) สำหรับคำถามเฉพาะนี้ที่คุณต้องการใช้ VMMap (ยูทิลิตี้ SysInternals อื่น)
http://technet.microsoft.com/en-us/sysinternals/dd535533.aspx
VMMap เป็นยูทิลิตี้การวิเคราะห์หน่วยความจำเสมือนจริงและกระบวนการ มันแสดงให้เห็นถึงการแบ่งประเภทของหน่วยความจำเสมือนที่มุ่งมั่นของกระบวนการรวมทั้งจำนวนหน่วยความจำกายภาพ (ชุดการทำงาน) ที่กำหนดโดยระบบปฏิบัติการให้กับประเภทเหล่านั้น นอกจากการใช้หน่วยความจำแบบกราฟิกแล้ว VMMap ยังแสดงข้อมูลสรุปและแผนที่หน่วยความจำกระบวนการโดยละเอียด ความสามารถในการกรองและรีเฟรชที่มีประสิทธิภาพช่วยให้คุณสามารถระบุแหล่งที่มาของการใช้หน่วยความจำกระบวนการและต้นทุนหน่วยความจำของฟีเจอร์แอปพลิเคชัน
นอกจากมุมมองที่ยืดหยุ่นสำหรับการวิเคราะห์กระบวนการถ่ายทอดสด VMMap ยังสนับสนุนการส่งออกข้อมูลในหลายรูปแบบรวมถึงรูปแบบดั้งเดิมที่เก็บรักษาข้อมูลทั้งหมดเพื่อให้คุณสามารถโหลดกลับมาได้อีกทั้งยังมีตัวเลือกบรรทัดคำสั่งที่เปิดใช้งานสถานการณ์การสคริปต์
นี่คือการเข้าสู่อาณาเขตของสแต็คโอเวอร์โฟลว์ แต่ถ้าคุณสามารถเก็บสถิติหน่วยความจำต่อเธรดได้คุณอาจสามารถเชื่อมโยงกับบริการของแต่ละบุคคลได้ แม้ว่าจะมากเกินไปสำหรับสมองดูแลระบบเล็ก ๆ ของฉัน
ฉันขยายคำตอบของ Peter Mortensen ที่นี่ ก่อนที่จะแก้ไขประเภทของบริการโปรดตรวจสอบประเภทที่มีอยู่ตามคำสั่งเช่น:
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 (ธันวาคม 16):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<ServiceName>\Type
โปรดระวังว่าบริการใดที่คุณเลือกที่จะแก้ไขมีประเภทพิเศษนอกเหนือจาก "เจ้าของ" และ "แบ่งปัน" ที่ไม่ควรเปลี่ยนแปลงเช่น:
หลังจากนั้นเพียงแค่เริ่มบริการใหม่และคุณควรเห็นใน ProcessExplorer ว่าตอนนี้มีกระบวนการ svchost.exe ของตัวเอง