Đây là một ý tưởng tồi. Nếu điều này hữu ích, nhân Linux sẽ thực hiện theo cách này. Tôi không tin rằng có một lý do để thay đổi nhiều hơn một vài tham số điều chỉnh, vì một kịch bản shell đơn giản như vậy rất có thể không thông minh hơn các thuật toán của các nhà phát triển kernel.
Về cơ bản bạn có hai trường hợp:
- Các quy trình trong không gian trao đổi không được sử dụng anyway. Tại sao bạn muốn kéo chúng trở lại vào RAM?
- Có ít RAM, vì vậy chúng bị tráo đổi và bạn kéo chúng trở lại vào RAM. Sau đó, hệ thống của bạn sẽ đưa chúng vào trao đổi một lần nữa càng sớm càng tốt.
Vì vậy, có hai điểm chính:
- Đầu tiên, hệ thống của bạn sẽ chậm khi có quá ít RAM để chạy tất cả các chương trình của bạn cùng một lúc. Hoán đổi sẽ giúp bạn chạy nhiều chương trình hơn, nhưng không chuyển nhanh sang chương trình hiếm khi được sử dụng, có thể bị tráo đổi. Không có trao đổi nào có thể khiến một người hiếm khi được sử dụng bị giết hoặc gửi cho người đang sử dụng ngoại lệ hết bộ nhớ.
- Thứ hai, trao đổi là một điều tốt và cũng có những thứ trong trao đổi, vì bạn có RAM miễn phí với chi phí cho các chương trình mà hiện tại bạn không sử dụng.
Mặc dù không gặp phải vấn đề hết bộ nhớ với quá nhiều chương trình, một số chương trình có thể phân bổ bộ nhớ dựa trên RAM hiện tại (có thể trình duyệt của bạn sẽ sử dụng nhiều memcache hơn và bạn có thể duyệt nhanh hơn) và kernel có thể sử dụng RAM miễn phí để lưu vào bộ nhớ cache và tối ưu hóa tương tự. Khi bạn buộc trao đổi của mình trống, kernel sẽ bỏ bộ đệm đọc và ví dụ: bắt đầu một phiên bản Firefox mới sẽ mất nhiều thời gian hơn khi Firefox vẫn còn trong bộ đệm của đĩa.
Nếu bạn muốn điều chỉnh hành vi của kernel, hãy xem tham số swappiness .
Hai nguồn tài nguyên bổ sung đóng góp bởi @ peter-cordes:
Nếu bạn thực sự muốn có trao đổi trống, bạn có thể tắt trao đổi vĩnh viễn. Tôi không thấy lý do tại sao có nó trong một giờ và sau đó làm trống nó có lợi thế hơn là không có trao đổi.