Kể từ kernel 2.6.28, Linux sử dụng chiến lược thay thế trang Split Least Recent used (LRU). Các trang có nguồn hệ thống tệp, chẳng hạn như văn bản chương trình hoặc thư viện dùng chung thuộc về bộ đệm tệp. Các trang không có sự hỗ trợ của hệ thống tệp được gọi là các trang ẩn danh và bao gồm dữ liệu thời gian chạy như không gian ngăn xếp dành riêng cho các ứng dụng, v.v. Thông thường, các trang thuộc bộ đệm tệp sẽ rẻ hơn khi bị xóa khỏi bộ nhớ (vì chúng có thể được đọc lại từ đĩa khi cần) . Vì các trang ẩn danh không có sự hỗ trợ của hệ thống tập tin, chúng phải nằm trong bộ nhớ miễn là chúng cần cho một chương trình trừ khi có không gian hoán đổi để lưu trữ chúng.
Đó là một quan niệm sai lầm phổ biến rằng một phân vùng trao đổi bằng cách nào đó sẽ làm chậm hệ thống của bạn. Không có phân vùng trao đổi không có nghĩa là kernel sẽ không đuổi các trang khỏi bộ nhớ, điều đó chỉ có nghĩa là kernel có ít lựa chọn hơn liên quan đến trang nào sẽ bị đuổi. Lượng trao đổi có sẵn sẽ không ảnh hưởng đến số tiền được sử dụng.
Linux có thể đối phó với việc không có không gian hoán đổi vì theo mặc định, chính sách kế toán bộ nhớ kernel có thể vượt quá bộ nhớ . Nhược điểm là khi bộ nhớ vật lý là kiệt sức, và hạt nhân không thể trao đổi trang nặc danh vào đĩa, các out-of-nhớ-killer (oom-killer) cơ chế sẽ bắt đầu giết chết bộ nhớ hogging "giả mạo" các quy trình để giải phóng bộ nhớ cho các quá trình khác.
Các vm.swappiness
tùy chọn là một modifier rằng những thay đổi sự cân bằng giữa trao đổi ra các trang file cache ủng hộ trang nặc danh. Bộ đệm tệp được cung cấp một giá trị ưu tiên tùy ý là 200 từ đó vm.swappiness
sửa đổi được khấu trừ ( file_prio=200-vm.swappiness
). Các trang ẩn danh, theo mặc định, bắt đầu với 60 ( anon_prio=vm.swappiness
). Điều này có nghĩa là theo mặc định, các trọng số ưu tiên đứng ở mức vừa phải có lợi cho các trang ẩn danh ( anon_prio=60
, file_prio=200-60=140
). Hành vi được định nghĩa trong mm/vmscan.c
cây nguồn kernel.
Cho một vm.swappiness
số 100
, những ưu tiên sẽ là bằng nhau ( file_prio=200-100=100
, anon_prio=100
). Điều này sẽ có ý nghĩa đối với một hệ thống nặng I / O nếu không muốn các trang từ bộ đệm tệp bị xóa để ủng hộ các trang ẩn danh.
Ngược lại, cài đặt vm.swappiness
thành 0
sẽ ngăn hạt nhân đuổi các trang ẩn danh có lợi cho các trang khỏi bộ đệm tệp. Điều này có thể hữu ích nếu các chương trình thực hiện hầu hết bộ nhớ đệm của chúng, có thể là trường hợp với một số cơ sở dữ liệu. Trong các hệ thống máy tính để bàn, điều này có thể cải thiện khả năng tương tác, nhưng nhược điểm là hiệu năng I / O có thể sẽ bị ảnh hưởng.
Giá trị mặc định rất có thể đã được chọn là một khoảng giữa gần đúng giữa hai thái cực này. Như với bất kỳ tham số hiệu suất nào, việc điều chỉnh vm.swappiness
nên dựa trên dữ liệu điểm chuẩn tương đương với khối lượng công việc thực tế, không chỉ là cảm giác ruột.