Cách kiểm soát sử dụng RAM / trao đổi


18

Có cách nào (ứng dụng) để kiểm soát chính sách sử dụng RAM / trao đổi ở cấp ứng dụng.

Tôi có một số ứng dụng mà tôi sử dụng mọi lúc và tôi muốn chúng luôn ở trong RAM và cũng có những ứng dụng mà tôi sử dụng khá hiếm khi và chúng có thể bị ném để trao đổi theo yêu cầu. Tôi biết rằng các cửa sổ được cấu hình mặc định sẽ cho tôi hiệu suất tốt nhất nhưng tôi muốn kiểm tra xem tôi có thể nhận được nhiều hơn không :).

Tôi sử dụng windows 7.


2
+1. Tôi quan tâm đến một phương thức hoạt động cho XP.
Xavierjazz

Câu trả lời:


9

, có chương trình gọi hàm VirtualLock :

Các trang mà một tiến trình đã bị khóa vẫn còn trong bộ nhớ vật lý cho đến khi quá trình mở khóa hoặc chấm dứt chúng. Các trang này được đảm bảo không bị ghi vào trang trong khi chúng bị khóa.

Tôi tin rằng chức năng SetProcessWorkingSetSize cũng có thể hữu ích.


Đối với những người nghĩ rằng tôi là một kẻ dị giáo thậm chí còn cho rằng điều này thể hữu ích:

Lưu ý rằng có thể có những lý do hợp lệ để khóa các trang trong bộ nhớ. Một lý do hợp lệ có thể là người dùng đang chạy trình ghi CD và trình ghi CD liên tục thoát ra và do đó gây ra lỗi bộ đệm, tạo ra một coaster. Trong tình huống đó, sẽ có hiệu lực để khóa bộ đệm bộ nhớ để chúng không bị hỏng, ngay cả khi điều đó có nghĩa là phần còn lại của máy tính chậm để thu thập dữ liệu, bởi vì điều đó vẫn tốt hơn là cung cấp cho người dùng một chiếc tàu lượn. Cũng có thể có những lý do hợp lệ khác - quan điểm của tôi là, trong khi thường không nên khóa các trang trong bộ nhớ, các tình huống hợp lệ vẫn tồn tại và tôi không nghĩ việc giết chết ý tưởng sẽ giúp OP ở đây.


Cập nhật: Hãy xem tùy chọn menu của Process HackerReduce Working Set .


Có lẽ trích dẫn bit này từ bài viết sẽ đặt nó trong ngữ cảnh: "Việc khóa các trang vào bộ nhớ có thể làm giảm hiệu suất của hệ thống bằng cách giảm RAM có sẵn và buộc hệ thống phải trao đổi các trang quan trọng khác sang tệp hoán trang. Mỗi phiên bản Windows có một giới hạn về số lượng trang tối đa mà một quy trình có thể khóa. Giới hạn này là cố ý nhỏ để tránh suy giảm hiệu suất nghiêm trọng. " (Nhấn mạnh của tôi)

1
@Randolph: Tôi không bao giờ khuyến nghị điều đó, tôi chỉ đề cập rằng, không giống như những gì hầu hết những người khác nghĩ, điều đó là có thể . Cá nhân tôi chỉ ghét nói với OP "Hãy giết ý tưởng của bạn" - Tôi nghĩ rằng OP hiểu rằng thực tế là anh ta không nên làm điều này, nhưng nếu anh ta vẫn muốn, tôi nghĩ anh ta có quyền biết làm thế nào. (Có một lý do họ tạo ra các chức năng này và tôi không phải là người đánh giá liệu OP có nên sử dụng chúng hay không.)
Mehrdad

Có rất nhiều mã trong Windows được để lại để tương thích ngược. Nếu có một lý do để có nó, đó sẽ là nó. Người ta có thể so sánh nó với tính năng Shrink trong SQL Server, không nên được sử dụng trong bất kỳ trường hợp nào, nhưng bị bỏ lại vì lý do tương thích. Windows 7 là một hệ điều hành hiện đại với quản lý bộ nhớ phù hợp và không nên xóa tệp trang, cũng như các chương trình cố gắng giữ bộ nhớ ngoài "quy tắc". Đó là thực tiễn rất kém và có thể dẫn đến một hệ thống không ổn định và / hoặc không thể sử dụng.

1
@Randolph: (Tôi thấy bạn đã từ bỏ sự tương tự .:]) Tạo một chương trình nhỏ (không nên quá ~ 10 dòng) để mở quy trình khác và gọi SetProcessWorkingSetSize. Đó là một cách. Nếu tất nhiên, nếu bạn không biết điều đó có nghĩa là gì vì bạn không phải là nhà phát triển, thì rõ ràng bạn không thể làm được gì nhiều. Nhưng điều đó vẫn có thể, và nói rằng điều đó là không thể vẫn không chính xác, nó chỉ đòi hỏi nhiều kiến ​​thức hơn OP có thể có.
Mehrdad

1
@Randolph, bạn có thể tải xuống nhiều ứng dụng phần mềm miễn phí khác nhau để buộc tất cả các ứng dụng đang chạy đến pagefile (bằng cách gọi SetProcessWorkingSetSize trong mỗi quy trình).
Chris O

5

Cách duy nhất tôi tìm thấy là vô hiệu hóa tập tin trang. Tuy nhiên, đây không phải là một giải pháp hoàn hảo: bạn sẽ nhận được thông báo lỗi nếu bạn đến gần hoặc vượt quá giới hạn RAM của mình và nó có thể không lưu các bãi đổ vỡ đúng cách, vì vậy hãy bật lại nếu bạn cần khắc phục sự cố. Ngoài ra, tôi đã sử dụng Win7 mà không có pagefile trong nhiều tháng mà không gặp trở ngại nào.

Kinh nghiệm của tôi: Tôi gặp vấn đề này với một phần mềm piano (sử dụng RAM 1GB) sẽ bị ném vào trao đổi sau khi không được sử dụng trong một thời gian. Chơi một phím đàn piano vài giờ sau đó sẽ dẫn đến một mớ hỗn độn vì trao đổi sẽ không được tải lại đủ nhanh để âm thanh phát ra. (Sau đó tôi sẽ đặt toàn bộ cánh tay của mình lên mỗi phím để buộc tải lại!)

Nếu RAM là một mối quan tâm, tôi khuyên bạn nên mua thêm (ví dụ: 8 đến 12 GB với Windows 7 x64). Đối với những người có ý thức về RAM, việc có nhiều RAM là một ơn trời.

Nhưng trước đây, bạn nên xem xét nhận một ổ SSD và đặt trao đổi của bạn trên nó. Nó sẽ tăng tốc phục hồi trao đổi rất nhiều, cũng như cung cấp nhiều lợi ích hệ thống khác. RAM không cung cấp lợi ích khi không sử dụng.


3
Làm. Không phải. Xóa bỏ. Các. Trang. Tập tin. Không bao giờ.

7
Tôi có. Đã. Sử dụng. Win7. Với. Số trang. Cho. Tháng. Không có. A. Quá giang.
nhạc chuông

1
Tôi cũng sử dụng Win7 mà không có tệp trang mọi lúc, tuy nhiên đối với tôi có vẻ như nó không đủ cho công việc hiện tại của tôi :(
Darqer

3
@Randolph: MS biết họ đang nói về điều gì, vì họ biết rằng khách hàng của họ không chính xác luôn là ưu điểm máy tính. Nhưng đối với những người thực sự biết chính xác những gì pagefile làm và không làm, không có lý do gì để buộc họ vào một thực tiễn mà họ không cần.
Mehrdad

2
@Randolph: Nếu bạn lái xe vượt quá tốc độ mà không có dây an toàn, bạn có thể chết và cũng giết người khác, chưa kể tăng chi phí bảo hiểm cho người khác. Điều tồi tệ nhất có thể xảy ra nếu các trang máy tính của bạn hết bộ nhớ là bạn sẽ chỉ mất một chút thời gian, tùy thuộc vào tình huống. Bạn không thấy điều gì đó hơi sai (đọc: rất nhiều) với sự tương tự ở đây? Ngoài ra, bạn đã sử dụng Linux / Unix chưa? Bạn có bao giờ nhận thấy làm thế nào họ cung cấp cho bạn quá nhiều dây để tự treo mình, không giống như Windows? Mọi người vẫn sử dụng chúng - điều đó giống như lái xe dưới ảnh hưởng hay cái gì đó?
Mehrdad

2

Việc sử dụng tập tin trang phụ thuộc vào rất nhiều yếu tố. Nếu bạn sử dụng nhiều chương trình và không có đủ RAM cho tất cả các chương trình đó cùng một lúc, thì các phần của chúng (hoặc tất cả) có thể được hoán đổi thành tệp trang.

Nếu bạn có 4GB RAM và giả sử có khoảng 3 GB dung lượng do thẻ video và những người dùng tài nguyên khác chặn các phần của 4GB và bạn chỉ sử dụng một vài chương trình không chiếm nhiều bộ nhớ, theo lý thuyết là bạn không bao giờ cần một tập tin trao đổi. Tuy nhiên, Windows Vista và 7 nổi tiếng là hung hăng trong việc hoán đổi các chương trình sang đĩa.

Tôi đã từng có một cài đặt làm giảm tính dễ thay đổi của Windows 7 (swappiness là một thuật ngữ của Linux nhưng nó cũng áp dụng cho Windows, và vì có một cài đặt đăng ký để chế ngự sự hung hăng của Windows, có vẻ như Microsoft đồng ý một cách cộc cằn cách ẩn), nhưng tôi dường như không thể tìm thấy nó nữa. Tìm kiếm nó là cách tôi kết thúc ở đây. Cách thay thế tốt nhất cho cài đặt này mà tôi đã tìm thấy là đảm bảo rằng bạn sử dụng tệp hoán đổi kích thước cố định (tôi sử dụng 4096-4096 trên HĐH 32 bit và 12 GB trên 64 bit vì tôi có 6GB RAM hệ thống) trên một phân vùng chuyên dụng. Có ổ đĩa 200 GB dự phòng 7200 vòng / phút, tôi đặt tất cả các phân vùng trao đổi của mình (windows XP, 7, 7 64-bit và nhiều Linux khác nhau) trên ổ đĩa này. Nó dường như làm việc cho tôi, nhưng YMMV.


1

Đáng nói hơn: khi các cửa sổ phát hiện bạn thường xuyên sử dụng một số ứng dụng nhất định, siêu tải sẽ đưa các ứng dụng đó vào bộ nhớ để chúng tải nhanh hơn. Tôi nghĩ rằng cửa sổ tin tưởng để làm điều đó ở đây.

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.