Cam kết phí đầy đủ 100% nhưng bộ nhớ vật lý chỉ là 60% khi không sử dụng tệp trang


25

Tôi đã vô hiệu hóa tệp trang trong hệ thống của mình (đĩa cứng quá chậm, không thể mua một cái mới ngay lập tức, không thể di chuyển tệp trang sang phân vùng khác). Khi tôi nhìn vào Resource Monitor, sử dụng các ứng dụng yêu cầu bộ nhớ, hệ thống cho thấy phí cam kết đã gần đầy 100%. Thật vậy, nếu tôi cứ đòi hỏi nhiều bộ nhớ hơn, các chương trình bắt đầu gặp sự cố khi phí cam kết đạt hiệu quả 100%.

Trong khi đó, hệ thống cho biết tôi chỉ sử dụng 50-60% bộ nhớ vật lý và có sẵn khoảng 1GB bộ nhớ (miễn phí + ở chế độ chờ).

Nếu phí cam kết là tổng bộ nhớ thực sự được yêu cầu, tại sao hệ thống lại nói quá nhiều bộ nhớ là miễn phí? Là bộ nhớ vật lý không được sử dụng bởi Windows? Là đồ thị bộ nhớ sai? Tui bỏ lỡ điều gì vậy?

Biểu đồ phí cam kết so với biểu đồ bộ nhớ vật lý Quản lý công việc


2
Một câu trả lời hay khác về chủ đề là ở đây: brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7 .
cnst

@cnst Bài viết rất hay. Nó giúp tôi hiểu rõ hơn vấn đề này. Tại sao bạn không đăng nó như một phản hồi?
Jason Oviedo

2
Vui lòng không vô hiệu hóa tập tin trang của bạn. Đây là một ý tưởng ngu ngốc
Milney

@Milney Tôi đồng ý, người ta thường không nên vô hiệu hóa tập tin trang. Tại thời điểm của câu hỏi, nó có ý nghĩa đối với tôi vì đĩa quá chậm, đến nỗi nó làm tê liệt hệ thống của tôi. Nó thực sự khá hữu ích, ngoài việc đặt ra câu hỏi này, khả năng đáp ứng chung của hệ thống được cải thiện nhiều lần.
Jason Oviedo

@JasonOviedo Điều đó không nên xảy ra và chỉ ra điều gì đó rất sai. Cung cấp cho hệ thống nhiều tùy chọn hơn KHÔNG nên làm cho nó chậm hơn. Hệ thống không phải sử dụng tệp trang chỉ vì nó có một. (Điều này có nghĩa đây có thể là một câu hỏi XY. Câu hỏi đúng là chính xác lý do tại sao tệp trang làm cho hệ thống của bạn chậm hơn.)
David Schwartz

Câu trả lời:


26

Hết hạn mức cam kết trong khi bạn vẫn còn rất nhiều RAM có sẵn không phải là bất thường. Cả giới hạn cam kết cũng như phí cam kết đều không liên quan trực tiếp đến RAM miễn phí hoặc có sẵn.

Giới hạn cam kết = kích thước tệp trang hiện tại + kích thước RAM.

Vì bạn không có tệp trang, nên giới hạn cam kết sẽ nhỏ hơn nếu bạn có tệp trang. Nó không quan trọng bao nhiêu RAM là miễn phí . Đối với giới hạn cam kết, chỉ có dung lượng RAM được cài đặt . Bạn có thể hết giới hạn cam kết ngay cả với 90% RAM miễn phí hoặc có sẵn.

Cam kết phí là một bộ nhớ ảo, không phải vật lý. Giả sử chương trình của tôi yêu cầu 2 GB đã cam kết, nhưng sau đó nó chỉ truy cập 0,5 GB của nó. 1,5 GB còn lại không bao giờ bị lỗi, không bao giờ được gán cho RAM, vì vậy việc sử dụng RAM không phản ánh 2 GB, chỉ 0,5 GB.

Tuy nhiên, "cam kết hệ thống" tăng thêm 2 GB vì hệ thống đã "cam kết" rằng SILL có một nơi để giữ 2 GB của tôi, nếu tôi thực sự cần tất cả. Thực tế là trên bất kỳ chương trình nào, tôi sẽ không nhất thiết phải cố gắng sử dụng tất cả. Tôi đã yêu cầu 2 GB và tiền lãi thành công từ cuộc gọi đó cho tôi biết rằng HĐH "đã cam kết" - tức là đã hứa - rằng tôi có thể sử dụng nhiều không gian địa chỉ ảo đó. HĐH không thể thực hiện lời hứa đó trừ khi có một số nơi để giữ tất cả.

Vì vậy: đặt lại trang của bạn trở lại, thêm RAM hoặc chạy ít thứ hơn cùng một lúc. Hoặc một số kết hợp của ba. Đây là những lựa chọn duy nhất của bạn để tránh các lỗi "thiếu bộ nhớ" và "hết bộ nhớ".

Xem thêm câu trả lời của tôi ở đây (lâu hơn) và ở đây (lâu hơn nhiều).


3
Cụ thể, trước khi Windows sẽ phân bổ bộ nhớ, nó muốn có thể đảm bảo rằng nó có thể đáp ứng các phân bổ này khi chúng được sử dụng. Ngay cả khi phân bổ không được sử dụng đầy đủ, Windows sẽ từ chối phân bổ nhiều hơn nếu không thể đảm bảo. Một tệp trang, cho dù được sử dụng hay không, cung cấp lưu trữ sao lưu bổ sung.
Bob

4

Như bài kiểm tra phân bổ bộ nhớ trong bài viết tại http://brandonlive.com/2010/02/21/measuring-memory-usage-in-windows-7/ minh họa, Windows là một loại hệ thống sẽ thất bại trong việc cấp phát bộ nhớ lớn nếu phân bổ như vậy, cùng với tất cả các phân bổ trước đó (khái niệm Microsoft gọi là "cam kết"), sẽ đưa tổng số "cam kết" lên trên tổng của cả bộ nhớ vật lý và tổng của tất cả các tệp trang (hoán đổi).

Hãy xem xét rằng việc phân bổ tự nó không sử dụng bất kỳ bộ nhớ thực tế nào (không phải vật lý cũng như trao đổi), trước khi đọc hoặc ghi diễn ra trong không gian địa chỉ ảo của quy trình cho phân bổ đã nói ở trên. Ví dụ: phân bổ 2GB tự nó sẽ chỉ ảnh hưởng đến các số "Cam kết" (trong cuộc nói chuyện với Windows 7), để lại "Bộ nhớ vật lý" (cho đến khi đọc / ghi trong phân bổ đã nói).

Theo như thiết kế hệ điều hành, cách tiếp cận thay thế sẽ là luôn cho phép phân bổ bất kỳ kích thước nào (trừ khi bộ nhớ khả dụng đã hoàn toàn cạn kiệt), và sau đó để các ứng dụng thất bại khi đọc / ghi thay thế. Xem /cs/42877/when-theres-no-memory-should-malloc-or-read-write-fail để biết thêm chi tiết.


2
Vâng. Đối số cho cách tiếp cận của Windows: thật hợp lý khi mong đợi các lập trình viên kiểm tra trạng thái của một malloc (hoặc, trong Win32, VirtualAlloc). Khi cuộc gọi đó thành công, chương trình có thể tin tưởng rằng các vas được phân bổ là có thể sử dụng được và sẽ duy trì như vậy cho đến khi miễn phí hoặc VirtualFree tương ứng. Một cách khác, bộ nhớ thông thường đọc và ghi (tức là hội thảo về con trỏ) có thể nâng cao ngoại lệ truy cập bộ nhớ. Nhưng không có lập trình viên nào mong muốn phải kiểm tra trạng thái sau mỗi lần bổ nhiệm con trỏ. Dù sao họ cũng không trả lại trạng thái, vì vậy nó sẽ phải được thực hiện với một trình xử lý ngoại lệ. Xấu xí.
Jamie Hanrahan

2

Bộ nhớ khả dụng không phải là những gì bạn nghĩ. Nó không sử dụng nó thực sự là một bộ đệm tệp của các quá trình bị chấm dứt gần đây hoặc các quy trình đã bị buộc phải từ bỏ một số bộ nhớ cho các quy trình khác. Họ có thể được gọi trở lại mục đích ban đầu. xem để biết thêm chi tiết

http://support.microsoft.com/kb/312628

Như không có một tập tin trang này là rất xấu. Windows xuống cấp kém mà không có một. Hãy nhớ các tệp thực thi thậm chí được sử dụng làm tệp hoán đổi khi không có tệp trang. Ngay cả khi ổ đĩa chậm, tốt hơn là có một tệp trang cho đến khi bạn nhận được tối đa 8 đến 16 hợp đồng bộ nhớ. Một số người nghĩ Ngay cả windows 7 cũng có thể chạy mà không cần một cái nào.

Tôi thường xuyên tăng sức mạnh cho máy cũ bằng cách làm một vài điều. Dọn dẹp ổ cứng càng nhiều càng tốt. Sao chép bất cứ thứ gì bạn có thể tạm thời loại bỏ khỏi ổ đĩa vào bản sao lưu. Xóa các ứng dụng bạn không cần. Xóa ứng dụng có thể cài đặt lại.

Khi tất cả đã được thực hiện chống phân mảnh đĩa cứng của bạn. Tại thời điểm đó tạo lại tập tin trang của bạn. Nó sẽ là gần nhất với mặt trước của ổ đĩa càng tốt. Tạo một kích thước cố định khoảng 1,5 lần bộ nhớ. Đó là quy tắc của tôi, thông thường tôi đã thấy kích thước trong khoảng từ 1 đến 3 lần bộ nhớ. Điều này sẽ giúp nó tăng tốc một chút so với những nơi thông thường mà nó sẽ được đặt.

Tôi sử dụng trình chống phân mảnh auslogic miễn phí (mặc dù quảng cáo cho nhiều công cụ hơn). Có những cái khác cũng làm điều này. Kiểm tra các trình chống phân mảnh tại portabl Ứng dụng.com. Nó tối ưu hóa đĩa bằng cách đặt các tệp được truy cập gần đây gần mặt trước của ổ đĩa để truy cập nhanh hơn. Nó cho thấy nơi tập tin trang được đặt để bạn có thể xem nếu bạn đã di chuyển nó vào 25% ổ đĩa hàng đầu.

Sau đó cài đặt lại ứng dụng và sao chép lại dữ liệu của bạn.

Tôi muốn nói rằng bạn được tăng 10 hoặc 20%. Nhưng giá trị chính là rất nhiều sự do dự biến mất để có trải nghiệm mượt mà hơn.


3
Sử dụng một số thử nghiệm, tôi thấy rõ rằng khi đĩa quá chậm, không có tệp trang thực sự sẽ tăng tốc hệ thống. Tôi có thể nói sự khác biệt của nhiều giây trong các tác vụ đơn giản là chuyển đổi ứng dụng.
Jason Oviedo

@Mark Bạn nhầm rồi. Phần lớn các hệ thống Windows chạy với một pagefile (vì đó là cách Windows chạy theo mặc định, vì lý do chính đáng và đầy đủ) và hầu hết tất cả chúng đều sử dụng các đĩa có tốc độ tương tự. Và hầu như không ai trong số họ cho thấy bất kỳ vấn đề như vậy. Vấn đề không phải là "the pagefile", mà là bạn không có đủ RAM. Xin lưu ý rằng việc loại bỏ pagefile không loại bỏ phân trang vào và ra khỏi đĩa - nó chỉ loại bỏ một trong hàng trăm tệp thường có liên quan đến phân trang.
Jamie Hanrahan
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.