it-swarm-vi.tech

Làm thế nào để tìm cách sử dụng bộ nhớ của các dịch vụ Windows riêng lẻ?

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 được tăng cường trên svchost.exe

43
Aidan Ryan

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

Bạn có thể sử dụng lệnh tasklist tích hợp và lọc theo tên dịch vụ (/fi chuyển), 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 RpcSs [.__.] CryptSvc, [.__.] Dmserver, EventSystem, helpvc, [.__.] Lanmanserver, lanmanworkstation, Messenger, [.__.] Netman, Nla, RasMan, Lịch trình, seclogon, [.__.] SENS, ShellHWDetection, TrkW winmgmt, [.__.] wuauserv, WZCSVC [.__.] svchost.exe 1140 ERSvc [.__.] svchost.exe 1712 RemoteRegistry [.__.] svchost.exe 196 W3SVC [.__.] 2940 TermService [.__.] Svchost.exe 2420 TapiSrv [.__.]

Các 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ụ.

19
splattne

Process Explorer thực sự sẽ cho bạn thấy việc 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/bb89665

Đả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). Nhấp 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.

9
Chris T.

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ớ vật lý và ảo. Nó cho thấy sự cố của 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ớ xử lý 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. tùy chọn cho phép các kịch bản kịch bản.

7
Sean Earp

Đ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.

3
user2278

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.

2
sken130

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ể làm điều đó 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ư:

  • hạt nhân
  • tập tin
  • rec
  • phỏng theo

Sau đó, chỉ cần khởi động lại dịch vụ và bạn sẽ thấy trong ProcessExplorer rằng nó hiện có quy trình svchost.exe của riêng nó.

1
Michael Böckling