Cài đặt swappiness là một điều chỉnh theo cách Linux tính toán các lợi ích / nhược điểm đối với việc hoán đổi trong một kịch bản cụ thể. Khả năng trao đổi cao sẽ không khiến hệ thống hoán đổi khi không cần thiết và khả năng trao đổi thấp, với điều kiện bạn không tắt hoàn toàn việc hoán đổi, sẽ không ngăn hệ thống của bạn hoán đổi khi hoàn toàn phải thay đổi.
Khả năng trao đổi mặc định là 60 hoặc hơn là một sự thỏa hiệp rất tốt đảm bảo hiệu năng tốt cho hệ thống của bạn bằng cách đảm bảo nó không quá khó để phân bổ bộ nhớ cache trong khi có bộ nhớ chương trình được phân bổ không sử dụng.
Hãy nhớ rằng nếu bạn có nhiều RAM cho tất cả các quy trình của mình cộng với bộ đệm, điều này thường xảy ra nếu bạn có nhiều RAM vật lý, việc hoán đổi không phải là vấn đề đối với bạn. Cách ưa thích để khắc phục các sự cố hoán đổi quá nhiều là giảm sử dụng RAM theo quy trình và / hoặc tăng RAM vật lý. Giảm swappiness sẽ có tác động tiêu cực nếu những gì bạn thực sự cần là nhiều RAM hơn.
Tại sao hầu hết mọi người đề nghị giảm swappiness xuống 10-20?
Bởi vì hầu hết đều tin rằng trao đổi = xấu và nếu bạn không giảm bớt sự thay đổi, hệ thống sẽ trao đổi khi thực sự không cần thiết. Cả hai điều đó đều không đúng. Mọi người liên kết trao đổi với thời gian mà hệ thống của họ bị sa lầy - tuy nhiên, chủ yếu là hoán đổi vì hệ thống bị sa lầy, không phải là cách khác. Đúng là có những thời điểm nhất định khi hoán đổi có thể có một hình phạt hiệu năng đáng chú ý, nhưng hệ thống sẽ nhận ra rằng trong quyết định hoán đổi của mình, và quyết định rằng không làm như vậy sẽ có hình phạt tổng thể cao hơn về hiệu suất hoặc tính ổn định của hệ thống. sau này trở nên đáng chú ý. Nhìn chung, các cài đặt mặc định sẽ mang lại hiệu suất và độ tin cậy tổng thể tốt nhất. Tôi khuyên bạn nên để nó ở mặc định.
...
Khi bạn đã sử dụng đủ bộ nhớ mà không còn đủ cho bộ đệm chạy trơn tru, Linux có thể phân bổ lại một số bộ nhớ ứng dụng không sử dụng từ RAM để trao đổi.
Nó không làm điều này theo một giới hạn nhất định mặc dù. Không giống như bạn đạt được một tỷ lệ phân bổ nhất định sau đó Linux bắt đầu hoán đổi. Nó có một thuật toán khá "mờ". Phải mất rất nhiều thứ, điều này có thể được mô tả tốt nhất bằng "có bao nhiêu áp lực để phân bổ bộ nhớ". Nếu có nhiều "áp lực" để phân bổ bộ nhớ mới, thì nó sẽ tăng khả năng một số người sẽ bị tráo đổi để tạo thêm chỗ. Nếu có ít "áp lực" hơn thì sẽ giảm những cơ hội này.
Hệ thống của bạn có cài đặt "swappiness" giúp bạn điều chỉnh cách tính "áp lực" này. Thông thường không nên thay đổi điều này, và tôi chắc chắn sẽ không bao giờ khuyên bạn nên thay đổi nó. Hoán đổi nói chung là một điều rất tốt - bất kỳ hình phạt hiệu suất không thường xuyên nào đều được dự định sẽ được bù đắp bằng mức tăng về khả năng đáp ứng và tính ổn định của hệ thống tổng thể cho một loạt các nhiệm vụ. Nếu bạn giảm độ nhanh, bạn sẽ để dung lượng bộ nhớ cache giảm đi một chút so với mức khác, ngay cả khi nó thực sự hữu ích. Do đó, bạn có nguy cơ làm chậm máy tính nói chung, vì có ít bộ nhớ cache hơn, trong khi bộ nhớ bị chiếm bởi các ứng dụng thậm chí không sử dụng nó. Liệu đây có phải là một sự đánh đổi đủ tốt cho bất kỳ vấn đề cụ thể nào mà bạn gặp phải khi hoán đổi hay không là tùy thuộc vào bạn.
Điều gì đang xảy ra khi hệ thống bị sa lầy và hoán đổi nặng nề?
Rất nhiều thời gian mọi người sẽ nhìn vào hệ thống của họ đang đập đĩa rất nhiều và sử dụng nhiều không gian hoán đổi và đổ lỗi cho việc hoán đổi cho nó. Đó là cách tiếp cận sai. Nếu trao đổi bao giờ đạt đến mức cực đoan này, điều đó có nghĩa là hệ thống của bạn có bộ nhớ cực kỳ thấp và việc hoán đổi là điều duy nhất giữ cho nó không bị sập hoặc giết chết các quá trình một cách ngẫu nhiên. Không trao đổi, trong tình huống này, các quy trình sẽ sụp đổ và chết. Sự hoán đổi là một triệu chứng của một vấn đề sâu sắc hơn. Trong một hệ thống có đủ bộ nhớ cho tất cả các tác vụ của nó, việc hoán đổi chỉ đảm bảo rằng bộ nhớ được sử dụng theo cách hiệu quả, xử lý bộ nhớ vào bộ đệm trong các quá trình không hoạt động nơi nó thấy nó sẽ có giá trị. Trong một hệ thống mà việc hoán đổi không ngừng đập vào đĩa, đó không phải là lỗi của việc hoán đổi.
Khi chọn những gì sẽ được hoán đổi vào đĩa, hệ thống sẽ cố gắng chọn bộ nhớ không thực sự được sử dụng - đọc hoặc ghi từ đó. Nó có một thuật toán khá đơn giản để tính toán cái này mà chọn tốt hầu hết thời gian.
...
Nhưng làm thế nào có thể trao đổi tăng tốc hệ thống của tôi? Không trao đổi những thứ chậm lại?
Hành động chuyển dữ liệu từ RAM sang trao đổi là một hoạt động chậm, nhưng nó chỉ được thực hiện khi hạt nhân khá chắc chắn rằng lợi ích tổng thể sẽ vượt xa điều này. Ví dụ: nếu bộ nhớ ứng dụng của bạn tăng đến mức bạn gần như không còn bộ nhớ cache và I / O của bạn rất kém hiệu quả vì điều này, bạn thực sự có thể lấy tốc độ ra khỏi hệ thống nhiều hơn bằng cách giải phóng một số bộ nhớ, thậm chí sau chi phí ban đầu của việc hoán đổi dữ liệu để giải phóng nó.