ฉันจะกำหนดค่า swappiness ได้อย่างไร


345

ฉันต้องการวิธีการกำหนดค่า swappiness ทีละขั้นตอนง่ายและสะดวก


17
สายการบินหนึ่งsudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
redanimalwar

8
@redanimalwar คุณต้องรันsudo sysctl -pเพื่อโหลดค่า swappiness ใหม่จากไฟล์ sysctl.conf มิฉะนั้นการเปลี่ยนแปลงจะมีผลในการรีบูตครั้งถัดไป
waldyrious

คำตอบ:


509

เคอร์เนล Linux จัดเตรียมการตั้งค่าที่ปรับแต่งได้ซึ่งควบคุมความถี่ในการใช้ไฟล์สวอปที่เรียกว่า swappiness

การตั้งค่า swappiness ที่ศูนย์หมายความว่าดิสก์จะหลีกเลี่ยงเว้นแต่จำเป็นจริงๆ (คุณมีหน่วยความจำไม่เพียงพอ) ในขณะที่การตั้งค่า swappiness เท่ากับ100หมายความว่าโปรแกรมจะถูกเปลี่ยนเป็นดิสก์เกือบจะในทันที

ระบบ Ubuntu มาพร้อมกับค่าเริ่มต้นที่ 60 หมายความว่าไฟล์ swap จะถูกใช้บ่อยหากการใช้หน่วยความจำอยู่ประมาณครึ่งหนึ่งของ RAM ของฉัน คุณสามารถตรวจสอบค่า swappiness ของระบบของคุณเองโดยการเรียกใช้:

one@onezero:~$ cat /proc/sys/vm/swappiness
60

เนื่องจากฉันมี RAM ขนาด 4 GB ฉันต้องการเปลี่ยนให้เหลือ 10 หรือ 15 ไฟล์ swap จะถูกใช้เมื่อการใช้ RAM ของฉันประมาณ80หรือ90เปอร์เซ็นต์เท่านั้น ในการเปลี่ยนค่าความว่องไวของระบบให้เปิด/etc/sysctl.confเป็นรูท จากนั้นเปลี่ยนหรือเพิ่มบรรทัดนี้ในไฟล์:

vm.swappiness = 10

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

นอกจากนี้คุณยังสามารถเปลี่ยนค่าในขณะที่ระบบของคุณยังคงทำงานด้วย:

sysctl vm.swappiness=10

คุณยังสามารถล้างการแลกเปลี่ยนของคุณได้ด้วยการรันswapoff -aและจากนั้นswapon -aเป็นรูทแทนที่จะรีบูตเครื่องเพื่อให้ได้ผลเช่นเดียวกัน

ในการคำนวณสูตรการแลกเปลี่ยนของคุณ:

free -m (total) / 100 = A

A * 10

root@onezero:/home/one# free -m
             total       used       free     shared    buffers     cached
Mem:          3950       2262       1687          0        407        952
-/+ buffers/cache:        903       3047
Swap:         1953          0       1953

ดังนั้นทั้งหมดคือ 3950/100 = 39.5 * 10 = 395

ดังนั้นหมายความว่าเมื่อเหลือแรม10% (395 MB) จากนั้นจะเริ่มใช้ swap


                                          ช่วยด้วย . อูบุนตู แลกเปลี่ยน

                                           ความว่องไวคืออะไร

พารามิเตอร์ swappiness ควบคุมแนวโน้มของเคอร์เนลเพื่อย้ายกระบวนการออกจากหน่วยความจำกายภาพและไปยัง swap disk เนื่องจากดิสก์ช้ากว่า RAM มากอาจทำให้เวลาตอบสนองช้าลงสำหรับระบบและแอปพลิเคชันหากกระบวนการย้ายหน่วยความจำออกจากหน่วยความจำมากเกินไป

  • swappiness สามารถมีค่าระหว่าง 0 ถึง 100
  • swappiness=0:
    • เคอร์เนลเวอร์ชัน 3.5 และใหม่กว่า: ปิดใช้งานการสลับ
    • เวอร์ชันเคอร์เนลที่เก่ากว่า 3.5: หลีกเลี่ยงการสลับกระบวนการออกจากหน่วยความจำกายภาพนานที่สุด
  • swappiness=1:
    • เคอร์เนลเวอร์ชัน 3.5 ขึ้นไป: swappiness ขั้นต่ำโดยไม่ปิดใช้งานทั้งหมด
  • swappiness=100:
    • บอกให้เคอร์เนลสลับกระบวนการอย่างจริงจังจากหน่วยความจำฟิสิคัลและย้ายไปเพื่อเปลี่ยนแคช

ดูhttp://en.wikipedia.org/wiki/Swappiness

swappiness=60ตั้งค่าเริ่มต้นในอูบุนตู การลดค่าเริ่มต้นของ swappiness อาจจะช่วยปรับปรุงประสิทธิภาพโดยรวมสำหรับการติดตั้ง Ubuntu บนเดสก์ท็อปทั่วไป swappiness=10แนะนำให้ใช้ค่าของแต่ไม่ควรทดลอง


ตัวอย่าง

เริ่มใช้ swap ที่91% :

ป้อนคำอธิบายรูปภาพที่นี่ เนื่องจากฉันได้กำหนดค่าระบบของฉัน & vm เพื่อใช้ประโยชน์จาก RAM ที่90% , ที่90%ไม่มีการแลกเปลี่ยน

หลังจากนั้นผมเปิดใช้งานบางอย่างเช่น Firefox และชัตเตอร์และมันเริ่มต้นการแลกเปลี่ยนเพราะการใช้ RAM อยู่เหนือ90%


118
Swappiness 100 ไม่ได้ทำให้โปรแกรมถูกสับเปลี่ยนทันทีหรือไม่มีค่าของ 60 หรือ 90 ค่า swap เฉลี่ยที่ใช้เมื่อ ram เต็ม 60 หรือ 90% มันเป็นอัตราส่วนของการตั้งค่าสำหรับการขโมยหน้าจากแคชกับการแลกเปลี่ยนสิ่งต่าง ๆ เพื่อเพิ่มหน่วยความจำบางส่วนเมื่อมีไม่เพียงพอ ค่าต่ำจะต้องการขโมยหน้าเว็บจากแคชอย่างมากและมีค่าสูงขอแนะนำให้ลองและสลับหน้าออก การตั้งค่าจะมีผลเฉพาะเมื่อหน่วยความจำ (เกือบ) ใช้ทั้งหมดและเคอร์เนลต้องเลือกวิธีเพิ่มพื้นที่ว่าง
psusi

67
คุณต้องชี้ให้เห็นว่า RAM ที่ไม่ได้ใช้โดยการรันโปรแกรมนั้นถูกใช้เป็นแคชดิสก์ ... ดังนั้นโดยการลด swappiness คุณเพิ่มโอกาสของโปรแกรมที่จะไม่ถูกสลับ แต่ในขณะเดียวกันก็ลดขนาด ของดิสก์แคชซึ่งสามารถทำให้การเข้าถึงดิสก์ช้าลง ดังนั้นเอฟเฟกต์ของการตั้งค่านี้ต่อประสิทธิภาพที่แท้จริงนั้นไม่ได้ตรงไปตรงมา ... คุณยินดีที่จะทดลองแน่นอน แต่ฉันสงสัยว่าค่าเริ่มต้นจะถูกกำหนดโดยผู้ที่เข้าใจพอในเรื่อง :)
Sergey

14
@Sergey และประชดของมันคือผู้ที่มี RAM ขนาดเล็กมักจะลองใช้เคล็ดลับที่พวกเขาสามารถเจอเพื่อเพิ่มประสิทธิภาพและมีแนวโน้มที่จะเป็นคนที่ 60 หรือสูงกว่านั้นจะเป็นคนที่ดีที่สุด พวกเราที่ตั้งค่าไว้ที่ 10 เพราะเรามี RAM เป็นตันไม่มากเท่าที่พวกเขาจะสูญเสียถ้าทำเช่นนั้น
Jon Hanna

6
@Freedom_Ben: ดูlinuxatemyram.com :)
Sergey

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