การเปลี่ยนความ swappiness จำเป็นต้องรีบูตหรือไม่?


14

หากฉันกำหนดค่าswappinessให้เป็นแบบอื่นจากตัวอย่าง: 60 ถึง 0 ดังนั้นฉันต้องรีบูตเครื่องเป็นการเปลี่ยนแปลงเพื่อให้มีผลเสมอ แม้เมื่อแก้ไขด้วย:

sysctl -w vm.swappiness=0

คำตอบ:


25

ทุกอย่างอธิบายได้ดีในหน้า 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

หวังว่ามันชัดเจนสำหรับคุณตอนนี้!


มันน่าสนใจที่-wสวิตช์ควรจะเขียนการเปลี่ยนแปลง ใครจะคิดว่าหลังจากเขียนไปแล้วการเพิ่มบรรทัดเริ่มต้นใน sysctl.conf ก็ไม่จำเป็น
WEBjuju

สวัสดี WEBjuju คุณพูดถูกสวิตช์ยังใช้งานไม่ได้สำหรับฉัน (fedora 25 หรือ centos 7) ไม่จำเป็นต้องใช้เนื่องจากการเปลี่ยนแปลงค่าสดใน / proc ไฟล์ทำได้โดยไม่
tisc0

7

ต้องรีบูตเครื่องเพื่อให้การเปลี่ยนแปลงมีผลหรือไม่

ในความเป็นจริงตรงกันข้าม - การรีบูตเครื่องจะรีเซ็ต swappiness ให้เป็นค่าเริ่มต้น เพื่อให้ยังคงมีอยู่ในการรีบูตคุณต้องรวมคำสั่งในสคริปต์การบูตหรือใช้วิธีการที่แนะนำในบทความวิกิพีเดียโดยการเพิ่ม:

vm.swappiness = ??

ถึง/etc/sysctl.conf(หรือ/etc/sysctl.dไฟล์) ซึ่ง??เป็นค่าที่คุณต้องการใช้ โปรดทราบว่าการเพิ่มสิ่งนี้จะไม่ทำให้เกิดการเปลี่ยนแปลงในเวลานั้น


1

คำตอบที่ยอมรับนั้นถูกต้อง แต่ขอแนะนำให้ใช้ไฟล์กำหนดค่า "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

เห็นด้วยเป็นวิธีปฏิบัติที่ดีที่สุดทำให้สิ่งต่าง ๆ ชัดเจนและปลอดภัยยิ่งขึ้น นิสัยที่ดีเช่นกันเมื่อใช้เครื่องมือจัดการการกำหนดค่า
tisc0

1

ฉันพบว่าบนเครื่อง 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

1
/etc/tuned/tuned-main.conf (RHEL7) มีการตั้งค่าที่อนุญาตให้ /etc/sysctl.conf, /etc/sysctl.d ฯลฯ เพื่อแทนที่การตั้งค่าที่ปรับใช้ (เช่น reapply_sysctl = 1) อย่างน้อยในการติดตั้งของฉันนี่คือค่าเริ่มต้น
kbulgrien

0

การเปลี่ยนแปลงของผู้ใช้ไปsysctlโดยการประชุมไปเป็นไฟล์ที่มีคำนำหน้าเพื่อให้ชื่อไฟล์ที่ควรจะเป็น60- /etc/sysctl.d/60-swappiness.confดำเนินการservice procps startในฐานะ root เพื่อบังคับให้อ่านค่าการกำหนดค่าใหม่ (ไม่จำเป็นต้องรีบูต)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.