2011-07-06 26 views
14

Trong biểu đồ Bộ nhớ có sẵn trong Process Explorer, biểu đồ trên cùng hiển thị Lịch sử cam kết. Điều này thực sự chỉ ra ở cấp hệ điều hành?Trình khám phá quy trình: Biểu đồ Lịch sử cam kết hiển thị thông tin gì?

Để thử nghiệm nếu đây là bộ nhớ được phân bổ trên heap bởi một quá trình, tôi đã viết một chương trình nhỏ mà từng bước malloc-ed 100 MB nhiều lần. Biểu đồ Commit History tăng lên trong một thời gian (tối đa 1,7 GB cấp phát bộ nhớ) và không phát triển sau đó mặc dù bộ nhớ malloc-ing của chương trình.

Vậy biểu đồ này cho biết điều gì? Làm thế nào thông tin này có thể được sử dụng để hiểu/phân tích trạng thái của Windows?

Trả lời

20

Mức Cam kết là lượng không gian địa chỉ ảo ẩn danh được phân bổ cho tất cả các quy trình trong hệ thống. (Nó không bao gồm bất kỳ không gian địa chỉ ảo được hỗ trợ tệp nào, ví dụ: từ tệp mmap'd.) Trong trình khám phá quy trình, biểu đồ 'Lịch sử Cam kết' hiển thị kích thước của giá trị này theo thời gian.

Do cách thức bộ nhớ ảo được cấp phát và chuyển đi (RAM thực tế sao lưu một trang không gian địa chỉ ảo không nhất thiết được phân bổ cho đến lần chạm đầu tiên), mức 'cam kết' hiện tại đại diện cho trường hợp xấu nhất (tại thời điểm) của bộ nhớ mà hệ thống có thể phải đưa ra. Không giống như Linux, Windows sẽ không đưa ra lời hứa (không gian địa chỉ) cho RAM, nó không thể xuất hiện hoặc giả mạo (thông qua tệp hoán trang). Vì vậy, khi mức cam kết đạt đến giới hạn cho hệ thống (khoảng RAM + kích thước tệp trang), phân bổ không gian địa chỉ mới sẽ thất bại (nhưng việc sử dụng mới các vùng không gian địa chỉ ảo hiện tại sẽ không thành công).

Một số kết luận về hệ thống của bạn mà bạn có thể rút ra từ giá trị này:

  • Nếu giá trị này nhỏ hơn RAM hiện tại của bạn (trừ hạt nhân và hệ thống chi phí), sau đó hệ thống của bạn là rất khó có khả năng trao đổi (sử dụng tệp hoán trang) vì trong trường hợp xấu nhất, mọi thứ phải phù hợp với bộ nhớ.
  • Nếu giá trị này lớn hơn nhiều so với mức sử dụng bộ nhớ vật lý, thì một số chương trình phân bổ rất nhiều không gian địa chỉ ảo nhưng chưa sử dụng.
  • Thoát khỏi ứng dụng sẽ giảm mức sử dụng bộ nhớ đã cam kết vì tất cả không gian địa chỉ ảo của nó sẽ được dọn sạch.

Thử nghiệm của bạn đã xác thực điều này. Tôi nghi ngờ bạn chạy vào giới hạn không gian địa chỉ (32-bit quy trình trong cửa sổ là limited to 2GB ... có lẽ 300MB biến mất để phân mảnh, thư viện và văn bản?).

+2

Khi bạn nói ở trên "Nếu giá trị này lớn hơn nhiều so với mức sử dụng bộ nhớ vật lý, thì một số chương trình phân bổ nhiều không gian địa chỉ ảo nhưng chưa sử dụng." có cách nào để cô lập chương trình nào phân bổ tất cả không gian địa chỉ ảo không? Trong kịch bản của tôi, tôi có 8 GB RAM nhưng tôi thấy 12.2 là hệ thống cam kết và 6.4 RAM vật lý được sử dụng. Hộp của tôi chậm lại khi tôi nhìn vào quá trình thám hiểm có rất ít hoặc không có I/O (không có gì cranking trên đĩa) và có rất ít hoặc không sử dụng CPU mà làm cho tôi những thứ nó là một vấn đề RAM sẵn có. –

Các vấn đề liên quan