หากฉันกำหนดค่าswappinessให้เป็นแบบอื่นจากตัวอย่าง: 60 ถึง 0 ดังนั้นฉันต้องรีบูตเครื่องเป็นการเปลี่ยนแปลงเพื่อให้มีผลเสมอ แม้เมื่อแก้ไขด้วย:
sysctl -w vm.swappiness=0
หากฉันกำหนดค่าswappinessให้เป็นแบบอื่นจากตัวอย่าง: 60 ถึง 0 ดังนั้นฉันต้องรีบูตเครื่องเป็นการเปลี่ยนแปลงเพื่อให้มีผลเสมอ แม้เมื่อแก้ไขด้วย:
sysctl -w vm.swappiness=0
คำตอบ:
ทุกอย่างอธิบายได้ดีในหน้า Wikipedia ที่คุณให้
# 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
ณ จุดนี้ระบบจะจัดการการแลกเปลี่ยนเช่นเดียวกับที่คุณเพิ่งกำหนด แต่ถ้าคุณรีบูตตอนนี้การเปลี่ยนแปลงของคุณจะถูกลืมและระบบจะทำงานกับค่าเริ่มต้น (สมมติว่า 60 ซึ่งหมายความว่าจะเริ่มแลกเปลี่ยนที่ 40% อาชีพของ RAM)
คุณต้องเพิ่มบรรทัดด้านล่าง/etc/sysctl.conf
เพื่อให้การเปลี่ยนแปลงของคุณเป็นแบบถาวร:
vm.swappiness = 10
หวังว่ามันชัดเจนสำหรับคุณตอนนี้!
ต้องรีบูตเครื่องเพื่อให้การเปลี่ยนแปลงมีผลหรือไม่
ในความเป็นจริงตรงกันข้าม - การรีบูตเครื่องจะรีเซ็ต swappiness ให้เป็นค่าเริ่มต้น เพื่อให้ยังคงมีอยู่ในการรีบูตคุณต้องรวมคำสั่งในสคริปต์การบูตหรือใช้วิธีการที่แนะนำในบทความวิกิพีเดียโดยการเพิ่ม:
vm.swappiness = ??
ถึง/etc/sysctl.conf
(หรือ/etc/sysctl.d
ไฟล์) ซึ่ง??
เป็นค่าที่คุณต้องการใช้ โปรดทราบว่าการเพิ่มสิ่งนี้จะไม่ทำให้เกิดการเปลี่ยนแปลงในเวลานั้น
คำตอบที่ยอมรับนั้นถูกต้อง แต่ขอแนะนำให้ใช้ไฟล์กำหนดค่า "sysctl" แยกต่างหากเพื่อที่คุณจะไม่เขียนทับการตั้งค่าอื่น ๆ โดยไม่ตั้งใจ (ซึ่งอาจเกิดขึ้นได้หากคุณเขียนทับ "sysctl.conf" ทั่วโลก)
# echo 'vm.swappiness=10' >/etc/sysctl.d/swappiness.conf
ผู้ที่เคยแก้ไขไฟล์ global config "/etc/sysctl.conf" อาจต้องการลบบรรทัดที่กำหนดค่า "swappiness" นี้จากไฟล์นั้น คุณสามารถใช้คำสั่งนี้เพื่อลบบรรทัดเหล่านี้ออกจากไฟล์กำหนดค่าส่วนกลาง (เก็บความคิดเห็น):
# sed -i '/^vm.swappiness=/d' /etc/sysctl.conf
ตอนนี้เมื่อต้องการใช้ค่าใหม่บอกsysctl
ให้ใช้:
# sysctl -p /etc/sysctl.d/swappiness.conf
หรือใช้การตั้งค่าทั้งหมดรวมถึงความรวดเร็ว:
# sysctl -p /etc/sysctl.d/*
ตรวจสอบมัน:
# sysctl vm.swappiness
vm.swappiness = 10
ฉันพบว่าบนเครื่อง CentOSที่ชุดเป็นอยู่ในvm.swappiness
/usr/lib/tuned/virtual-guest/tuned.conf
ตรวจสอบว่ามีการตั้งค่าเริ่มต้นโดยดูจากtuned
ไฟล์กำหนดค่า :
sudo grep -R swap /usr/lib/tuned | grep swappiness
หลังจากอัปเดตค่าเริ่มต้นคุณสามารถตั้งค่า swappiness ปัจจุบันได้โดยไม่ต้องรีบูตเครื่อง :
sudo sysctl vm.swappiness=10
และทดสอบโดย:
cat /proc/sys/vm/swappiness
การเปลี่ยนแปลงของผู้ใช้ไปsysctl
โดยการประชุมไปเป็นไฟล์ที่มีคำนำหน้าเพื่อให้ชื่อไฟล์ที่ควรจะเป็น60-
/etc/sysctl.d/60-swappiness.conf
ดำเนินการservice procps start
ในฐานะ root เพื่อบังคับให้อ่านค่าการกำหนดค่าใหม่ (ไม่จำเป็นต้องรีบูต)
-w
สวิตช์ควรจะเขียนการเปลี่ยนแปลง ใครจะคิดว่าหลังจากเขียนไปแล้วการเพิ่มบรรทัดเริ่มต้นใน sysctl.conf ก็ไม่จำเป็น