Nếu tôi định cấu hình giá trị swappiness sang giá trị khác, từ ví dụ: 60 đến 0, thì tôi luôn cần khởi động lại máy để thay đổi có hiệu lực? Ngay cả khi sửa đổi với:
sysctl -w vm.swappiness=0
Nếu tôi định cấu hình giá trị swappiness sang giá trị khác, từ ví dụ: 60 đến 0, thì tôi luôn cần khởi động lại máy để thay đổi có hiệu lực? Ngay cả khi sửa đổi với:
sysctl -w vm.swappiness=0
Câu trả lời:
Tất cả mọi thứ được giải thích tốt trong trang Wikipedia bạn đã đưa ra.
# Set the swappiness value as root
echo 10 > /proc/sys/vm/swappiness
# Alternatively, run this as a non-root user
# This does the same as the previous command
sudo sysctl -w vm.swappiness=10
# Verify the change
cat /proc/sys/vm/swappiness
10
Tại thời điểm này, hệ thống sẽ quản lý trao đổi như bạn vừa định cấu hình, NHƯNG nếu bạn khởi động lại NGAY BÂY GIỜ, thay đổi của bạn sẽ bị lãng quên và hệ thống sẽ hoạt động với giá trị mặc định (giả sử là 60, nghĩa là nó sẽ bắt đầu hoán đổi ở mức 40% nghề nghiệp của RAM).
Bạn phải thêm dòng bên dưới vào /etc/sysctl.conf
để giữ thay đổi vĩnh viễn:
vm.swappiness = 10
Hy vọng nó rõ ràng hơn cho bạn bây giờ!
Cần khởi động lại máy để thay đổi có hiệu lực?
Trên thực tế, ngược lại - khởi động lại sẽ thiết lập lại swappiness về giá trị mặc định của nó. Để làm cho nó tồn tại trong suốt quá trình khởi động lại, bạn cần bao gồm một lệnh trong tập lệnh khởi động hoặc sử dụng phương thức được đề xuất trong bài viết trên wikipedia bằng cách thêm:
vm.swappiness = ??
Đến /etc/sysctl.conf
(hoặc một /etc/sysctl.d
tệp), đâu ??
là giá trị bạn muốn sử dụng. Lưu ý rằng chỉ cần thêm điều này sẽ không gây ra bất kỳ thay đổi tại thời điểm đó.
Câu trả lời được chấp nhận là chính xác, nhưng bạn nên sử dụng tệp cấu hình "sysctl" riêng để bạn không vô tình ghi đè lên các cài đặt khác (điều này có thể xảy ra nếu bạn ghi đè lên "sysctl.conf" toàn cầu).
# echo 'vm.swappiness=10' >/etc/sysctl.d/swappiness.conf
Những người đã sửa đổi tệp cấu hình toàn cầu "/etc/sysctl.conf" có thể muốn xóa các dòng xác định giá trị "swappiness" này khỏi tệp đó. Bạn có thể sử dụng lệnh này để xóa các dòng này khỏi tệp cấu hình chung (giữ bình luận):
# sed -i '/^vm.swappiness=/d' /etc/sysctl.conf
Bây giờ, để áp dụng giá trị mới, hãy nói sysctl
để sử dụng nó:
# sysctl -p /etc/sysctl.d/swappiness.conf
Hoặc áp dụng tất cả các cài đặt, bao gồm cả swappiness:
# sysctl -p /etc/sysctl.d/*
Xác minh điều đó:
# sysctl vm.swappiness
vm.swappiness = 10
Tôi thấy rằng trên một máy CentOS , vm.swappiness
thiết bị đã được cài đặt
/usr/lib/tuned/virtual-guest/tuned.conf
.
Xác định vị trí mặc định đang được đặt bằng cách xem qua tuned
các tệp cấu hình :
sudo grep -R swap /usr/lib/tuned | grep swappiness
Sau khi cập nhật mặc định, tính dễ thay đổi hiện tại vẫn có thể được đặt mà không cần khởi động lại :
sudo sysctl vm.swappiness=10
và được kiểm tra bởi:
cat /proc/sys/vm/swappiness
Người dùng thay đổi sysctl
theo quy ước đi vào các tệp có tiền tố 60-
để tên tệp phải là /etc/sysctl.d/60-swappiness.conf
. Thực thi service procps start
với quyền root để buộc đọc lại các giá trị cấu hình (không cần khởi động lại).
-w
tắc được cho là viết thay đổi. Người ta sẽ nghĩ rằng sau khi viết điều đó, việc thêm dòng mặc định trong sysctl.conf là không cần thiết.