Một hiện tượng phổ biến trong việc sử dụng hàng ngày của tôi (và một số khác theo các bài đăng khác nhau trên internet) của OS X, hệ thống dường như trở nên chậm chạp bất cứ khi nào không còn bộ nhớ "Miễn phí". Giả sử, điều này là do hoán đổi, vì hoạt động của đĩa nặng là rõ ràng và vm_stat báo cáo nhiều trang. (Sửa tôi khỏi sai)
Tuy nhiên, lượng ram "Không hoạt động" thường vào khoảng 12,5% -25% của tất cả bộ nhớ khả dụng (^ 1.) Khi trao đổi bắt đầu / xảy ra / kết thúc.
Theo http://support.apple.com/kb/ht1342 :
Bộ nhớ không hoạt động
Thông tin này trong bộ nhớ không được sử dụng tích cực, nhưng gần đây đã được sử dụng.
Ví dụ: nếu bạn đã sử dụng Mail và sau đó thoát nó, RAM mà Mail đang sử dụng được đánh dấu là Bộ nhớ không hoạt động. Bộ nhớ không hoạt động này có sẵn để sử dụng bởi một ứng dụng khác, giống như Bộ nhớ miễn phí. Tuy nhiên, nếu bạn mở Mail trước khi bộ nhớ không hoạt động của nó được sử dụng bởi một ứng dụng khác, Mail sẽ mở nhanh hơn vì bộ nhớ không hoạt động của nó được chuyển đổi sang bộ nhớ hoạt động, thay vì tải Mail từ đĩa cứng chậm hơn.
Danh sách không hoạt động chứa các trang hiện đang tồn tại trong bộ nhớ vật lý nhưng gần đây không được truy cập. Các trang này chứa dữ liệu hợp lệ nhưng có thể được giải phóng khỏi bộ nhớ bất cứ lúc nào .
Vì vậy, về cơ bản: Khi một chương trình đã thoát, bộ nhớ của nó sẽ bị đánh dấu là Không hoạt động và có thể được yêu cầu bất cứ lúc nào. Tuy nhiên, OS X sẽ thích bắt đầu hoán đổi bộ nhớ sang tệp Hoán đổi thay vì chỉ yêu cầu bộ nhớ này, bất cứ khi nào bộ nhớ "Miễn phí" xuống thấp.
Tại sao? Ưu điểm của hành vi này là gì, giả sử, ngay lập tức giải phóng bộ nhớ Không hoạt động và thậm chí không chạm vào tệp hoán đổi? Một số nguồn (^ 2.) Chỉ ra rằng OS X sẽ loại bỏ bộ nhớ "Không hoạt động" để trao đổi trước khi phát hành, nhưng điều đó bây giờ không có nghĩa gì nếu bộ nhớ có thể được giải phóng khỏi bộ nhớ bất cứ lúc nào? Trao đổi là tốn kém, phát hành là rẻ, phải không?
Hành vi này có thể được thay đổi bằng cách sử dụng một số ưu tiên hoặc hack đã biết? (Tốt nhất là không bao gồm việc vô hiệu hóa hoán đổi / Dynamic_pager hoàn toàn và khởi động lại ...)
Tôi đánh giá cao lệnh thanh lọc , cũng như khái niệm Sửa chữa quyền truy cập đĩa để buộc một số Bộ nhớ trống, nhưng đó là những cách để buộc nhiều bộ nhớ Tự do hơn là thực sự sửa lỗi logic quyết định trao đổi / giải phóng ...
Btw một câu hỏi tương tự đã được hỏi ở đây: http://forums.macnn.com/90/mac-os-x/434650/why-does-os-x-swap-when/ và tại đây: http: //hintsforums.macworld .com / showthread.php? t = 87688 nhưng mặc dù các OP đã hỏi lại câu hỏi cốt lõi, không có câu trả lời nào trả lời câu hỏi đó ...
^ 1. CẬP NHẬT 17 tháng 3 năm 2012 Kể từ lần đầu tiên tôi đăng câu hỏi này, tôi đã chuyển từ 4gb sang 8gb ram đã cài đặt, và vấn đề vẫn còn. Lượng ram "Không hoạt động" là 0,5gb-1,0gb trước đây và hiện tại thường khoảng 1,0-2,0 GB khi hoán đổi bắt đầu / xảy ra / kết thúc, có nghĩa là khoảng 12,5% -25% ram được bảo quản là Không hoạt động bởi osx logic hạt nhân.
^ 2. Ví dụ: https://apple.stackexchange.com/questions/4288/what-does-it-mean-if-i-have-lots-of-inactive-memory-at-the-end-of-a-work- ngày :
Khi tất cả bộ nhớ của bạn được sử dụng (bộ nhớ trống là 0), HĐH sẽ ghi bộ nhớ không hoạt động vào bộ trao đổi để tạo thêm không gian trong bộ nhớ hoạt động.
CẬP NHẬT 17 tháng 3 năm 2012
Dưới đây là tổng hợp các phương pháp đã được đề xuất để trợ giúp cho đến nay:
Các thanh trừng lệnh
"Được sử dụng để ước tính các điều kiện khởi động ban đầu với bộ đệm bộ đệm đĩa lạnh để phân tích hiệu suất. Nó không ảnh hưởng đến bộ nhớ ẩn danh được phân bổ thông qua malloc, vm_allocate, v.v.".
Điều này rất hữu ích để ngăn osx hoán đổi bộ đệm đĩa (điều này thật vô lý khi osx thực sự làm như vậy ngay từ đầu), nhưng với nhược điểm là bộ đệm đĩa được giải phóng, có nghĩa là nếu bộ đệm đĩa không bị xóa hoán đổi, người ta chỉ đơn giản là kết thúc với bộ đệm bộ đệm đĩa lạnh, có thể ảnh hưởng tiêu cực đến hiệu suất.
Các ứng dụng FreeMemory và / hoặc sửa chữa cho phép đĩa để buộc một số bộ nhớ miễn phí
Không giúp giải phóng bất kỳ bộ nhớ nào, chỉ chuyển một số gigabyte nội dung bộ nhớ từ ram sang hd. Cuối cùng, điều này gây ra rất nhiều trao đổi khi tôi cố gắng sử dụng các ứng dụng đã mở trong khi giải phóng bộ nhớ, vì rất nhiều vm của nó hiện đang được trao đổi.
Tăng tốc phân bổ trao đổi bằng cách sử dụng Dynamicpagerwrapper
Có vẻ là một điều tốt để làm để tăng tốc độ sử dụng trao đổi, nhưng không giải quyết vấn đề hoán đổi osx ở nơi đầu tiên trong khi vẫn còn bộ nhớ không hoạt động.
Vô hiệu hóa trao đổi bằng cách vô hiệu hóa Dynamicpager và khởi động lại
Điều này sẽ buộc osx không sử dụng trao đổi với giá của hệ thống treo khi tất cả bộ nhớ được sử dụng. Không phải là một sự thay thế khả thi ...
Vô hiệu hóa trao đổi bằng cách sử dụng một Dynamicpager bị hack
Tương tự như vô hiệu hóa tính năng động ở trên, một số trích đoạn từ các bình luận cho bài đăng trên blog cho thấy đây không phải là giải pháp khả thi: "Bộ nhớ không hoạt động cao như bình thường". "khi hệ thống của bạn hết bộ nhớ, toàn bộ hệ thống bị treo ...", "nếu bạn tiêu thụ toàn bộ bộ nhớ của máy Mac, máy có thể sẽ bị treo"
Tóm lại, tôi vẫn không biết cách vô hiệu hóa Mac OS X khỏi sử dụng trao đổi khi vẫn còn bộ nhớ "Không hoạt động". Nếu không thể, ít nhất có thể có một lời giải thích ở đâu đó về lý do tại sao osx thích trao đổi bộ nhớ có thể được giải phóng khỏi bộ nhớ bất cứ lúc nào?