Apakah perubahan swappiness memerlukan reboot?

14

Jika saya mengonfigurasi nilai swappiness ke yang lain, dari ex .: 60 hingga 0, maka saya selalu perlu me-reboot mesin agar perubahan diterapkan? Bahkan saat memodifikasi dengan:

sysctl -w vm.swappiness=0
evachristine
sumber

Jawaban:

25

Semuanya dijelaskan dengan baik di halaman Wikipedia yang Anda berikan.

# 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

Pada titik ini, sistem akan mengelola swap seperti yang baru saja Anda konfigurasikan, TETAPI jika Anda mem-boot ulang SEKARANG, perubahan Anda akan dilupakan dan sistem akan bekerja dengan nilai default (dengan asumsi 60, artinya daripada mulai menukar dengan 40% pekerjaan RAM).

Anda harus menambahkan baris di bawah ini /etc/sysctl.confuntuk menjaga perubahan Anda secara permanen:

vm.swappiness = 10

Semoga ini lebih jelas untuk Anda sekarang!

tisc0
sumber
Sangat menarik bahwa -wswitch seharusnya menulis perubahan. Orang akan berpikir bahwa setelah menulis itu, menambahkan baris default di sysctl.conf tidak perlu.
WEBjuju
Hai WEBjuju, Anda benar, saklar masih tidak bekerja untuk saya (fedora 25 atau centos 7). Itu tidak diperlukan, karena mengubah nilai langsung dalam file / proc dilakukan tanpa.
tisc0
7

perlu me-reboot mesin agar perubahan diterapkan?

Sebaliknya, pada kenyataannya - reboot akan mengatur ulang swappiness ke nilai default. Untuk membuatnya bertahan di seluruh reboot, Anda perlu memasukkan arahan dalam skrip boot atau menggunakan metode yang direkomendasikan dalam artikel wikipedia dengan menambahkan:

vm.swappiness = ??

Ke /etc/sysctl.conf(atau /etc/sysctl.dfile), di mana ??nilai yang ingin Anda gunakan. Perhatikan bahwa hanya menambahkan ini tidak akan menyebabkan perubahan apa pun pada saat itu.

goldilocks
sumber
1

Jawaban yang diterima benar, tetapi disarankan untuk menggunakan file konfigurasi "sysctl" yang terpisah sehingga Anda tidak secara tidak sengaja menimpa pengaturan lain (yang mungkin terjadi jika Anda menimpa global "sysctl.conf").

# echo 'vm.swappiness=10' >/etc/sysctl.d/swappiness.conf

Mereka yang telah memodifikasi file konfigurasi global "/etc/sysctl.conf" mungkin ingin menghapus baris yang mendefinisikan nilai "swappiness" ini dari file itu. Anda bisa menggunakan perintah ini untuk menghapus baris-baris ini dari file konfigurasi global (menyimpan komentar):

# sed -i '/^vm.swappiness=/d' /etc/sysctl.conf

Sekarang, untuk menerapkan nilai baru, katakan sysctluntuk menggunakannya:

# sysctl -p /etc/sysctl.d/swappiness.conf

Atau terapkan semua pengaturan, termasuk swappiness:

# sysctl -p /etc/sysctl.d/*

Verifikasi itu:

# sysctl vm.swappiness
vm.swappiness = 10
basic6
sumber
Setuju, ini adalah praktik terbaik, menjadikan segalanya lebih jelas dan aman. Kebiasaan baik juga saat menggunakan alat manajemen konfigurasi.
tisc0
1

Saya menemukan bahwa pada mesin CentOS , vm.swappinesssedang diatur dalam /usr/lib/tuned/virtual-guest/tuned.conf.

Tentukan di mana default sedang diatur dengan melihat melalui tunedfile konfigurasi :

sudo grep -R swap /usr/lib/tuned | grep swappiness

Setelah memperbarui default, swappiness saat ini masih dapat diatur tanpa me-reboot :

sudo sysctl vm.swappiness=10

dan diuji oleh:

cat /proc/sys/vm/swappiness
WEBjuju
sumber
1
/etc/tuned/tuned-main.conf (RHEL7) memiliki pengaturan yang memungkinkan /etc/sysctl.conf, /etc/sysctl.d, dll., untuk mengganti pengaturan yang diterapkan oleh tuned (yaitu reapply_sysctl = 1). Setidaknya pada instal saya, ini adalah default.
kbulgrien
0

Pengguna mengubah sysctldengan konvensi pergi ke file dengan awalan 60-sehingga nama file seharusnya /etc/sysctl.d/60-swappiness.conf. Jalankan service procps startsebagai root untuk memaksa membaca ulang nilai konfigurasi (tidak perlu reboot).

Doug Munch
sumber