Trình quản lý tác vụ hiển thị mức sử dụng bộ nhớ tổng thể của svchost.exe. Có cách nào để xem việc sử dụng bộ nhớ của các dịch vụ riêng lẻ không?
Lưu ý điều này tương tự như báo cáo hiệu suất Finegrained trên svchost.exe
Trình quản lý tác vụ hiển thị mức sử dụng bộ nhớ tổng thể của svchost.exe. Có cách nào để xem việc sử dụng bộ nhớ của các dịch vụ riêng lẻ không?
Lưu ý điều này tương tự như báo cáo hiệu suất Finegrained trên svchost.exe
Câu trả lời:
Có một cách dễ dàng để có được thông tin bạn yêu cầu (nhưng nó yêu cầu một chút thay đổi đối với hệ thống của bạn):
Tách từng dịch vụ để chạy trong quy trình SVCHOST.EXE của riêng nó và dịch vụ tiêu thụ chu kỳ CPU sẽ dễ dàng hiển thị trong Trình quản lý tác vụ hoặc Trình khám phá quy trình (không gian sau "=" là bắt buộc):
SC Config Servicename Type= own
Làm điều này trong một cửa sổ dòng lệnh hoặc đặt nó vào một tập lệnh BAT. Đặc quyền quản trị là bắt buộc và khởi động lại máy tính là cần thiết trước khi nó có hiệu lực.
Trạng thái ban đầu có thể được khôi phục bằng cách:
SC Config Servicename Type= share
Ví dụ: để làm cho Thiết bị quản lý Windows chạy trong một SVCHOST.EXE riêng biệt:
SC Config winmgmt Type= own
Kỹ thuật này không có hiệu ứng xấu, ngoại trừ có thể tăng tiêu thụ bộ nhớ một chút. Và ngoài việc quan sát việc sử dụng CPU cho từng dịch vụ, nó còn giúp bạn dễ dàng quan sát lỗi trang delta, tốc độ đọc I / O của đĩa và tốc độ ghi I / O của đĩa cho mỗi dịch vụ. Đối với Process Explorer, menu Xem / Chọn Cột: tab Bộ nhớ xử lý / Lỗi trang Delta, tab Hiệu suất xử lý / IO Delta Viết byte, tab Hiệu suất xử lý / IO Delta Đọc byte tương ứng.
Trên hầu hết các hệ thống chỉ có một quy trình SVCHOST.EXE có rất nhiều dịch vụ. Tôi đã sử dụng trình tự này (nó có thể được dán trực tiếp vào cửa sổ dòng lệnh):
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
trên các hệ thống Windows XP. Trên cái này tôi thấy 6.
type= own
nó có thể không hoạt động chính xác và bạn sẽ bị bỏ lại mà không truy cập vào bất kỳ tệp nào được mã hóa với nó (có thể sẽ là thảm họa nếu các tệp hệ điều hành được mã hóa!)
Bạn có thể sử dụng tasklist
lệnh và bộ lọc tích hợp theo tên dịch vụ ( /fi
công tắc), ví dụ:
tasklist /fi "services eq TermService"
Đầu ra:
Tên hình ảnh Tên phiên phiên Phiên # Sử dụng Mem ========================= ======== ================ = ========== ============ Svchost.exe 2940 Bảng điều khiển 0 7.096 K
Nếu bạn không biết tên, bạn có thể liệt kê chúng bằng cách chạy câu lệnh này:
tasklist /svc /fi "imagename eq svchost.exe"
Nó liệt kê tất cả các dịch vụ được lưu trữ bởi svchost.exe, ví dụ:
Tên hình ảnh Dịch vụ PID ========================= ======== ================= =========================== svchost.exe 632 DcomLaunch svchost.exe 684 RpcS svchost.exe 748 Dhcp, Dnscache svchost.exe 788 Lmhosts, W32Time svchost.exe 804 AeLookupSvc, AudioSrv, Trình duyệt, CryptSvc, dmserver, EventSystem, helpvc, lanmanserver, lanmanworkstation, Messenger, Netman, Nla, RasMan, Lịch trình, 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
Dịch vụ không nhất thiết phải được lưu trữ bởi svchost.exe
. Vì vậy, nếu bạn không thể tìm thấy dịch vụ lọc theo tên tệp thực thi, chỉ cần chạy tasklist /svc
. Nó sẽ hiển thị tất cả các dịch vụ.
Trình thám hiểm quy trình thực sự sẽ hiển thị cho bạn sử dụng bộ nhớ cá nhân trong svchost Đảm bảo bạn có phiên bản mới nhất từ đây http://technet.microsoft.com/en-us/sysi INTERNals / bb896653
Đảm bảo chạy Process Explorer với tư cách quản trị viên, nhấp vào svchost bạn muốn kiểm tra, nhấp vào View DLLs
nút (hoặc CTRL+D). Bấm chuột phải vào các tiêu đề trong cửa sổ DLL Select Columns...
, sau đó kiểm tra WS Total Bytes
và nhấn OK
.
Bây giờ bạn có thể xem và sắp xếp việc sử dụng bộ nhớ của các dịch vụ riêng lẻ (được thực hiện bởi dlls) trong svchost.
Mặc dù Process Monitor là một tiện ích cho mục đích chung (sẽ làm mọi thứ trừ rửa chén cho bạn), nhưng đối với câu hỏi cụ thể này, bạn muốn sử dụng VMMap (một tiện ích SysIternals khác)
http://technet.microsoft.com/en-us/sysiternals/dd535533.aspx
VMMap là một tiện ích phân tích bộ nhớ ảo và vật lý quá trình. Nó cho thấy sự cố về các loại bộ nhớ ảo đã cam kết của một quá trình cũng như dung lượng bộ nhớ vật lý (bộ làm việc) được hệ điều hành gán cho các loại đó. Bên cạnh các biểu diễn đồ họa của việc sử dụng bộ nhớ, VMMap cũng hiển thị thông tin tóm tắt và bản đồ bộ nhớ quy trình chi tiết. Khả năng lọc và làm mới mạnh mẽ cho phép bạn xác định các nguồn sử dụng bộ nhớ quá trình và chi phí bộ nhớ của các tính năng ứng dụng.
Bên cạnh các chế độ xem linh hoạt để phân tích các quy trình trực tiếp, VMMap hỗ trợ xuất dữ liệu dưới nhiều hình thức, bao gồm cả định dạng gốc lưu giữ tất cả thông tin để bạn có thể tải lại. Nó cũng bao gồm các tùy chọn dòng lệnh cho phép các kịch bản lệnh.
Điều này đang xâm nhập vào lãnh thổ stackoverflow, nhưng nếu bạn có thể nắm giữ các số liệu thống kê bộ nhớ trên mỗi luồng, bạn có thể tương quan gần với điều đó với các dll dịch vụ riêng lẻ bằng cách khớp chúng với các dll được liệt kê trong ngăn xếp luồng. Mặc dù vậy, quá nhiều cho bộ não sysadmin nhỏ bé của tôi.
Tôi mở rộng câu trả lời của Peter Mortensen ở đây. Trước khi sửa đổi loại dịch vụ, vui lòng kiểm tra loại hiện có bằng lệnh như:
sc query wuauserv
Mà sẽ xuất ra các nội dung sau:
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Bất kỳ loại nào khác ngoài "10 WIN32_OWN_PROCESS", "20 WIN32_SHARE_PROCESS" không nên được sửa đổi.
Tách các dịch vụ là câu trả lời đúng, nhưng lệnh sc config không hoạt động với tôi (2008 R2).
Bạn có thể thực hiện thông qua sổ đăng ký, điều đó có nghĩa là đặt tham số "Loại" thành 0x00000010 (ngày 16 tháng 12):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\<ServiceName>\Type
Hãy cẩn thận mặc dù bạn chọn dịch vụ nào để sửa đổi, có những loại đặc biệt ngoài "sở hữu" và "chia sẻ" không nên thay đổi, như:
Sau đó, chỉ cần khởi động lại dịch vụ và bạn sẽ thấy trong ProcessExplorer rằng giờ đây nó có quy trình svchost.exe của riêng nó.