Làm cách nào để biết máy chủ Windows của tôi đang tráo đổi?


29

Tôi đang sử dụng Process Explorer để theo dõi máy chủ windows của mình trong khi nó tái tạo lại một số dữ liệu. Đây chủ yếu là một quá trình sử dụng nhiều CPU, nhưng tôi muốn chắc chắn rằng nó không bị tráo đổi. Làm thế nào tôi có thể biết nếu nó đang sử dụng Process Explorer? Dự đoán ban đầu của tôi là trong cửa sổ Thông tin hệ thống, đó là Paging File Write Delta. Vâng? Không? Tôi là một thằng ngốc?

* Ảnh chụp màn hình không phải của máy chủ ... chỉ là một ví dụ.

văn bản thay thế http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg

Câu trả lời:


30

"Số lần nhập / giây của trang là bộ đếm để xem, nhưng bạn không nên lo lắng về việc" hoán đổi "vì các cửa sổ không sử dụng tệp trang như * nixes làm.

Trước tiên, bạn cần hiểu rằng các trang windows không ra ngoài. Tôi sẽ trích dẫn phần có liên quan của bài đăng trên blog của Eric Lipperts (được chỉnh sửa nhẹ) vì tôi không thể tự nói điều đó tốt hơn:

"RAM có thể được xem như là một tối ưu hóa hiệu suất. Truy cập dữ liệu trong RAM, nơi thông tin được lưu trữ trong các điện trường lan truyền gần với tốc độ ánh sáng nhanh hơn nhiều so với truy cập dữ liệu trên đĩa, nơi thông tin được lưu trữ rất lớn, nặng phân tử kim loại màu

Hệ điều hành theo dõi những trang lưu trữ nào từ các quá trình đang được truy cập thường xuyên nhất và tạo một bản sao của chúng trong RAM, để tăng tốc độ. Khi một tiến trình truy cập một con trỏ tương ứng với một trang hiện không được lưu trong bộ nhớ cache trong RAM, hệ điều hành sẽ xảy ra lỗi trang Trang, lỗi đi ra đĩa và tạo một bản sao của trang từ đĩa sang RAM, đưa ra giả định hợp lý rằng nó sẽ sớm được truy cập lại một thời gian nữa.

Hệ điều hành cũng rất thông minh về việc chia sẻ tài nguyên chỉ đọc. Nếu cả hai quá trình đều tải cùng một trang mã từ cùng một DLL, thì hệ điều hành có thể chia sẻ bộ đệm RAM giữa hai quy trình. Vì mã có thể sẽ không bị thay đổi bởi một trong hai quá trình, nên việc lưu trang trùng lặp của RAM bằng cách chia sẻ nó là hoàn toàn hợp lý.

Nhưng ngay cả với việc chia sẻ thông minh, cuối cùng hệ thống bộ nhớ đệm này sẽ hết RAM. Khi điều đó xảy ra, hệ điều hành sẽ đoán xem trang nào ít có khả năng được truy cập lại sớm nhất, ghi chúng ra đĩa nếu chúng đã thay đổi và giải phóng RAM đó để đọc trong thứ gì đó có khả năng được truy cập lại Sớm.

Khi hệ điều hành đoán không chính xác, hoặc, nhiều khả năng, khi đơn giản là không đủ RAM để lưu trữ tất cả các trang được truy cập thường xuyên trong tất cả các quy trình đang chạy, thì máy bắt đầu đập phá ra. Hệ điều hành dành toàn bộ thời gian để viết và đọc bộ lưu trữ đĩa đắt tiền, đĩa chạy liên tục và bạn không hoàn thành công việc nào.

Điều này cũng có nghĩa là việc "hết RAM" hiếm khi dẫn đến lỗi ra khỏi bộ nhớ lỗi. Thay vì một lỗi, nó dẫn đến hiệu suất kém vì toàn bộ chi phí của việc lưu trữ thực sự trên đĩa đột nhiên trở nên có liên quan.

Một cách khác để xem xét điều này là tổng số bộ nhớ ảo mà chương trình của bạn tiêu thụ thực sự không liên quan nhiều đến hiệu suất của nó. Điều liên quan không phải là tổng dung lượng bộ nhớ ảo đã tiêu thụ, mà là, (1) bao nhiêu bộ nhớ đó không được chia sẻ với các quy trình khác, (2) "bộ làm việc" của các trang thường được sử dụng là bao nhiêu và ( 3) liệu các bộ làm việc của tất cả các quy trình hoạt động có lớn hơn RAM có sẵn hay không.

Cho đến bây giờ, rõ ràng là tại sao các lỗi trong bộ nhớ lỗi thường không liên quan gì đến bộ nhớ vật lý của bạn, hoặc thậm chí có bao nhiêu dung lượng lưu trữ. Hầu như luôn luôn là về không gian địa chỉ, mà trên Windows 32 bit tương đối nhỏ và dễ bị phân mảnh. "

Một vài điểm bổ sung:

  1. dlls và các tệp chương trình luôn chỉ được phân trang, không bao giờ thoát ra vì chúng đã có trên đĩa (và thường là các trang đầu tiên được giải phóng khi ram vật lý xuống thấp)
  2. bạn rất muốn chạy ra khỏi các mục trong bảng trang miễn phí hoặc có bộ nhớ bị phân mảnh nhiều hơn bất kỳ vấn đề bộ nhớ nào khác (ngoài hiệu năng tổng thể kém như đã đề cập
  3. ngay cả khi bạn chạy không có tệp trang, bạn vẫn có thể gặp lỗi trang
  4. nói chung, nhìn vào bộ nhớ được cam kết sẽ nói nhiều hơn về cách một quá trình sử dụng bộ nhớ

cho một bức tranh hoàn chỉnh về cách thức quản lý bộ nhớ trong các cửa sổ nhìn thấy

Trình quản lý bộ nhớ ảo trong Windows NT

nếu bạn nghĩ rằng bạn có vấn đề về bộ nhớ, trước tiên tôi khuyên bạn nên xem bản trình bày này về khắc phục sự cố bộ nhớ windows

Đây là một lời giải thích tuyệt vời về lý do tại sao đôi khi bạn bị "hết bộ nhớ" khi bạn không nhờ vào sự phân mảnh bộ nhớ:

Xem thêm Đẩy các giới hạn của Windows: Bộ nhớ vật lý

Thông tin thêm về Bộ nhớ ảo, Phân mảnh và Rò rỉ Bộ nhớ và WOW64

RAM, bộ nhớ ảo, Pagefile và tất cả những thứ đó (hỗ trợ microsoft)

Cập nhật:

Windows 10 làm một cái gì đó hơi khác với bộ nhớ và theo thời gian, bạn sẽ thấy một quá trình gọi là "Hệ thống và bộ nhớ nén" Windows 10 thêm một "kho lưu trữ nén" vào danh sách phân trang. Ram này là bộ nhớ USER được sở hữu bởi hệ thống (thông thường hệ thống chỉ có bộ nhớ kernel) Bộ nhớ này được nén tại chỗ để giảm trung bình xuống còn khoảng 30%. Điều này cho phép nhiều trang được lưu trữ trong bộ nhớ (đối với những bạn làm toán có dung lượng lớn hơn 70%) Lưu ý rằng nếu bộ nhớ vẫn có áp lực thì có thể đặt các trang từ kho lưu trữ (chế độ người dùng Không gian xử lý hệ thống) danh sách (được nén) mà sau đó có thể được ghi vào tệp trang vật lý. Hệ thống sẽ thấy chúng từ không gian chế độ người dùng hệ thống và được nén và sẽ không cố gắng đưa chúng trở lại cửa hàng. Vì vậy, trên các hệ thống windows 10 có vẻ như hệ thống đang hít ram nhưng thực tế nó chỉ đang cố gắng sử dụng ram hiệu quả hơn. Người dùng Mac đã sử dụng một tính năng tương tự kể từ năm 2013 và các phiên bản mới hơn của nhân Linux sử dụng phiên bản nén bộ nhớ. Phương pháp bảo tồn bộ nhớ này không chỉ tốt hơn mà còn phổ biến trong các hệ điều hành khác.


6

Có, các phân vùng phân trang sẽ cung cấp cho bạn một dấu hiệu trực tiếp về số lượng máy chủ đang phân trang (hoặc "tráo đổi"), nhưng chỉ tại thời điểm đó. Để theo dõi kỹ hơn và để xem quan điểm lịch sử, tôi khuyên bạn nên sử dụng Performance Monitor ( perfmon.exe ) để lập biểu đồ hoặc ghi lại các đồng bằng đó (và bất kỳ bộ đếm hiệu suất nào khác có thể giúp tương quan các sự kiện hoặc hoạt động cụ thể với các đột biến trong hoạt động phân trang).


5

Giám sát hiệu suất (perfmon) là bạn của bạn ở đây. Bạn đang tìm kiếm lỗi trang cứng (nghĩa là lỗi trang khi trang bộ nhớ cần thực hiện yêu cầu phải được đọc từ đĩa), do đó, theo dõi cả lỗi trang cứng và mềm là tối ưu.

Xem bộ đếm "Nhập trang / giây" trong đối tượng "Bộ nhớ" bằng perfmon để biết cảm giác có bao nhiêu lỗi trang cứng đang xảy ra.


0

Một nguyên tắc nhỏ là nếu phí cam kết của bạn cao hơn bộ nhớ vật lý, bạn chắc chắn đang phân trang một cái gì đó , nhưng nếu ứng dụng của bạn sử dụng bộ đệm dữ liệu cố định duy nhất luôn được sử dụng, thì nó thường sẽ không được phân trang ra tất cả Có thể có một số độ trễ khi khởi động trong khi bộ nhớ khác được phân trang để tạo khoảng trống cho việc này.


3
mh: Tôi không chắc chắn rằng tôi đồng ý với quy tắc của bạn. Nếu phí cam kết cao hơn bộ nhớ vật lý, điều đó đơn giản có nghĩa là một cái gì đó đã được phân trang tại một số điểm, nhưng hệ thống không nhất thiết vẫn phân trang bất cứ thứ gì. Một cái gì đó sẽ chỉ được phân trang ra khi một lỗi trang xảy ra. Mặt khác, tôi đồng ý rằng việc sử dụng một bộ đệm dữ liệu cố định duy nhất sẽ là tốt nhất, nhưng sau đó tôi nghĩ có lẽ chúng ta đang di chuyển vào vương quốc của stackoverflow.com
Jessica McKinnon

Thật tệ, tôi nên nói rằng "một cái gì đó đã được hoán đổi trong quá khứ và các yêu cầu bộ nhớ trong tương lai cũng sẽ yêu cầu trao đổi".
Maximus Minimus

Điều này không nhất thiết là một ứng dụng chỉ có thể khóa các trang trong bộ nhớ của nó có đặc quyền HĐH đó.
Jim B
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.