Linux (hoặc bất kỳ hệ điều hành nào khác) chia bộ nhớ thành các trang (thường là 4Kb). Mỗi trang trong số này đại diện cho một đoạn bộ nhớ. Thông tin sử dụng cho các trang này được duy trì, về cơ bản có chứa thông tin về việc trang đó có miễn phí hay không (một phần của một số quy trình), cho dù nó đã được truy cập gần đây hay không, loại dữ liệu nào chứa (dữ liệu quá trình, mã thực thi, v.v. Các trang này cũng có thể được chia thành hai loại - các trang hệ thống tập tin hoặc bộ đệm trang (trong đó tất cả dữ liệu đọc/ghi vào hệ thống tập tin của bạn cư trú) và các trang thuộc về các tiến trình.
Khi hệ thống sắp hết bộ nhớ, hạt nhân bắt đầu trao đổi các trang dựa trên mức sử dụng của chúng. Sử dụng một danh sách các trang được sắp xếp truy cập w.r.t truy cập là phổ biến để xác định trang nào có thể được hoán đổi (hạt nhân Linux cũng có danh sách như vậy).
Trong khi hoán đổi, hạt nhân Linux cần phải quyết định điều gì sẽ xảy ra khi các trang nuking trong bộ nhớ và gửi chúng sang trao đổi. Nếu nó hoán đổi các trang hệ thống tập tin quá mạnh, nhiều lần đọc được yêu cầu từ hệ thống tập tin để đọc các trang đó khi cần. Tuy nhiên, nếu nó hoán đổi các trang quy trình mạnh hơn, nó có thể làm tổn thương tương tác, bởi vì khi người dùng cố gắng sử dụng các quy trình được hoán đổi, chúng sẽ phải được đọc lại từ đĩa. Xem một cuộc thảo luận tốt đẹp here về điều này.
Bằng cách đặt swappiness = 0, bạn đang yêu cầu hạt nhân Linux không trao đổi các trang thuộc về quy trình. Khi thiết lập swappiness = 100 thay vào đó, bạn yêu cầu hạt nhân hoán đổi các trang thuộc về các tiến trình tích cực hơn. Để điều chỉnh hệ thống của bạn, hãy thử thay đổi tham số swappiness ở các bước 10, theo dõi hiệu suất và các trang được hoán đổi vào/ra tại mỗi cài đặt bằng cách sử dụng lệnh "vmstat". Giữ cài đặt cung cấp cho bạn kết quả tốt nhất. Hãy nhớ làm thử nghiệm này trong giờ cao điểm. :)
Đối với các ứng dụng cơ sở dữ liệu, swappiness = 0 thường được khuyến nghị. (Ngay cả khi đó, hãy kiểm tra các cài đặt khác nhau trên hệ thống của bạn để đạt được giá trị tốt).
Tài liệu tham khảo:
http://www.linuxvox.com/2009/10/what-is-the-linux-kernel-parameter-vm-swappiness/
http://www.pythian.com/news/1913/
Rất nhiều thông tin. Cảm ơn. – Zenil
Đối với hồ sơ, số lượng trao đổi bạn không có mang về mức độ thường xuyên bạn sử dụng nó để trao đổi. –