ฉันจะล้างหรือปิดใช้งานแคชหน่วยความจำได้อย่างไร


49

หลังจากที่ระบบเริ่มทำงานในไม่กี่นาทีแคชหน่วยความจำของฉันเต็มและมันก็เริ่มใช้การแลกเปลี่ยน นี่คือภาพหน้าจอของ / proc / meminfo

หน่วยความจำ

อย่างไรก็ตามหากฉันสามารถปิดการใช้งานกระบวนการนี้ / ทำความสะอาดแคชได้หลังจากนั้นฉันคิดว่าระบบของฉันจะเพิ่มความเร็วได้บ้าง แก้ไขฉันถ้าฉันผิดที่นี่

ฉันได้ลองใช้การล้างหน่วยความจำ Bleachbit ด้วย แต่ดูเหมือนว่าจะไม่ได้ล้างแคชหน่วยความจำอย่างถูกต้อง นอกจากนี้คุณลักษณะนี้ยังอยู่ในขั้นทดลอง

หน่วยความจำ bleachbit

มีคำถามที่คล้ายกันโพสต์ที่นี่: ฉันจะปิดใช้งานแคช prefetch ได้อย่างไร แต่มันเกี่ยวกับ Ubuntu Server และคำตอบที่เกี่ยวข้องกับการตั้งค่าด้วยตนเองเป็นต้น

ดังนั้นฉันต้องการทราบว่ามีซอฟต์แวร์บางตัวสำหรับปิดหรือเปิดใช้งาน Memory Cache สำหรับ Ubuntu 12.04 หรือไม่


คุณแน่ใจหรือไม่ว่าสิ่งนี้จะช่วยแก้ปัญหาของคุณ? หน่วยความจำไม่ได้เติมเต็มโดยไม่มีเหตุผล tracker-minerฉันยังมีปัญหาว่าหน่วยความจำของฉันถูกเติมขึ้นและย้อนกลับไปยัง หลังจากฉันถอนการติดตั้งแพ็คเกจติดตามทั้งหมดปัญหาของฉันก็หายไป ฉันยังมีหน่วยความจำ 4GB และใช้งานแคชได้ 2GB แต่ฉันก็ไม่ประสบปัญหาใด ๆ
daniel kullmann

1
@danielkullmann: เขาหมายถึงหน่วยความจำแคชไม่ใช่หน่วยความจำที่ใช้โดยแอป ...
ish

@izx ใช่ฉันรู้ อาจเป็นได้ว่าเขามองหาทางออกของปัญหาที่ผิด เคอร์เนลฉลาดพอที่จะไม่เติมหน่วยความจำด้วยแคชเมื่อโปรแกรมต้องการ นั่นเป็นเหตุผลที่ฉันคิดว่าปัญหาความจำของเขามาจากโปรแกรมที่ใช้หน่วยความจำมากเกินไป
daniel kullmann

@danielkullmann: ฉันอยากรู้ว่าคุณติดตามมันกลับไปยังกระบวนการหนึ่งที่กลืนกินความทรงจำทั้งหมดนั้นได้ไหม ... มีเครื่องมือ / คำสั่งสำหรับเรื่องนั้นหรือไม่
ผู้ต้องห้ามในต่างประเทศ

ฉันเพิ่งใช้คำสั่ง htop และเรียงตามการใช้หน่วยความจำ
daniel kullmann

คำตอบ:


58

หมายเหตุ: Linux ไม่ได้ "กิน" RAM ของคุณ! โปรดดูคำตอบที่ยอดเยี่ยมของ Geirha ด้านล่างเพื่อทำความเข้าใจว่าทำไม ...

หลังจากหมายเหตุด้านบนหากคุณยังรู้สึกว่า "การทำความสะอาด" แคชอาจช่วยได้คุณสามารถลองได้อย่างแน่นอน: มันเป็นซับในจากเทอร์มินัล:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

ไม่มีวิธีง่ายๆในการปิดการใช้งานแคช แต่คุณสามารถทำเอฟเฟกต์เดียวกันได้โดยทำความสะอาดบ่อยๆทุกนาทีหากคุณต้องการ:

  • ทำให้มันเป็นงานcron
  • กดAlt-F2พิมพ์gksudo gedit /etc/crontabและเพิ่มบรรทัดนี้ใกล้กับด้านล่าง:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • ทำความสะอาดนี้ทุกๆ 15 นาที คุณสามารถตั้งค่าเป็น 1 หรือ 5 นาทีถ้าคุณต้องการ ด้วยการเปลี่ยนพารามิเตอร์แรกเป็น*หรือ*/5แทน*/15

สายการบินหนึ่งที่จะรู้ RAM จริงฟรียกเว้นแคช

คำตอบของ Geirha อธิบายรายละเอียด แต่ในระยะสั้นคุณจะได้รับจำนวนเมกะไบต์ฟรีด้วย:

free -m | sed -n -e '3p' | grep -Po "\d+$"

ซึ่งบนเซิร์ฟเวอร์บรรทัดคำสั่ง 2GB ของฉันกลับมามีสุขภาพที่ดี1835มาก


3
Ergh! การเคาะออกแคชไม่ดีพอ แต่ทำ cronjob เพื่อมันได้หรือไม่ ฉันหมายความว่านี่จะ "แก้ปัญหา" เพื่อพูด แต่ก็ไม่ได้ทำให้เจ็บปวดน้อยลง
Reid


@izx: hmm ... ดังนั้นนี่คือวิธีการสร้าง cronjob ถ้าฉันจะปล่อยแคชเป็นระยะมันไม่ได้หมายความว่าฉันกำลังทำให้ระบบช้าลงจริงหรือ ถ้าเป็นอย่างนั้นฉันคิดว่าคำตอบของคุณฟังดูเหมือนคำตอบเชิงทฤษฎีมากกว่าคำตอบของ geirha : p คำตอบที่ดี BTW ...
ผู้ต้องห้ามในต่างประเทศ

1
@ ForbiddenOverseer: ฉันแค่ใส่เข้าไปเพราะคุณต้องการที่จะ "ปิดการใช้งาน" แคชและวางมันลงเป็นระยะเป็นวิธีเดียวที่จะทำให้สำเร็จ บันทึกย่อของฉันที่ด้านบน (และลิงก์ของ geirha) ระบุไว้อย่างชัดเจนว่าแคชช่วยเร่งความเร็วระบบของคุณได้เกือบตลอดเวลาแม้ว่าจะดูเหมือนว่า "การกิน RAM ของคุณ" --- ดังนั้นใช่ IMO คุณจะทำให้ระบบช้าลง แต่คุณต้องการที่จะลองทำดังนั้นฉันเพิ่งตอบคำถามของคุณแทนที่จะเพียงแค่จู้จี้คุณและบอกคุณว่ามันเป็นความคิดที่ไม่ดีและดังนั้นคุณไม่ควรทำมัน! ฉันให้คุณมีอำนาจในการทดลอง ... : D
ish

1
ฉันใช้ Ubuntu Server 12.04 LTS เป็น VDS ฉันพยายามที่วิธีการที่ระบุไว้ในคำตอบนี้ tee: /proc/sys/vm/drop_caches: Permission deniedแต่ฉันได้รับอย่างต่อเนื่อง เคล็ดลับใด ๆ
Eimantas

44

ช่วยด้วย! ลินุกซ์กิน RAM ของฉัน!

www.linuxatemyram.comอธิบายสิ่งนี้อย่างสวยงามในรูปแบบคำถามที่พบบ่อยพร้อมสิ่งจำเป็นต่างๆ:

เกิดอะไรขึ้น?

Linux กำลังยืมหน่วยความจำที่ไม่ได้ใช้สำหรับการแคชดิสก์ สิ่งนี้ทำให้ดูเหมือนว่าคุณมีหน่วยความจำเหลือน้อย แต่คุณไม่ได้! ทุกอย่างปกติดี!

ทำไมถึงทำเช่นนี้?

การแคชดิสก์ทำให้ระบบเร็วขึ้นมาก! ไม่มีข้อเสียยกเว้นสำหรับมือใหม่ที่สับสน มันไม่ได้นำหน่วยความจำออกไปจากแอพพลิเคชั่น แต่อย่างใด!

ถ้าฉันต้องการเรียกใช้แอปพลิเคชันเพิ่มเติม

หากแอปพลิเคชันของคุณต้องการหน่วยความจำเพิ่มพวกเขาจะนำก้อนข้อมูลที่แคชดิสก์ยืมมา ดิสก์แคชสามารถมอบกลับคืนให้แอปพลิเคชันได้ทันที! คุณยังไม่เหลือ RAM!

ฉันจะดูได้อย่างไรว่าฉันมีแรมฟรีมากแค่ไหน?

หากต้องการดูว่าแอปพลิเคชันของคุณสามารถใช้งานได้มากเท่าไรโดยไม่ต้องสลับให้รัน free -m และดูที่คอลัมน์ "ว่าง"

$ ฟรี -m
              มีการใช้ buff / cache แชร์ที่ใช้ฟรีทั้งหมด
Mem: 1504 1491 13 0 855       792
สลับ: 2047 6 2041
นี่คือคำตอบของคุณใน mebibytes


แหล่งที่มา: ดังกล่าวwww.linuxatemyram.com ที่ยอดเยี่ยม- กรุณาเยี่ยมชมสำหรับข้อมูลเพิ่มเติม


1
@geirha: ขอบคุณสำหรับลิงค์ ... มันให้ข้อมูลมากและฉันชอบการทดลองที่ได้รับในตอนท้าย !!
ผู้ต้องห้ามในต่างประเทศ

@izx: tbh ฉันมีเวลายากในการตัดสินใจคำตอบที่ยอมรับ ไม่ต้องพูดถึงลิงค์นี้เป็นข้อมูลจริงในทุก ๆ ทาง ... ;)
ผู้ต้องห้ามในต่างประเทศ

@ ForbiddenOverseer: ดูความคิดเห็นของฉันในคำตอบของฉันสำหรับคำตอบโดยละเอียด - ฉันให้คุณสั้น ๆ ว่าทำไมคุณถึงไม่ควรทำ แต่จากนั้นก็ตอบคำถามของคุณให้อำนาจในการทดสอบและลองด้วยตัวคุณเอง ถ้าคุณไม่คิดว่าการทำความสะอาด / วางแคชช่วยก็ไม่ได้ทำมันอีกต่อไป :)
ish

@izx ฉันพบว่ามันยากที่จะทำในกรณีนี้ อย่างไรก็ตามคุณเขียนข้อความที่มีประโยชน์เกี่ยวกับเรื่องนี้ดังนั้นบางทีคุณอาจเพิ่ม URL ไปยังคำตอบของคุณและเราจะลบคำตอบของฉัน
geirha

ไม่ต้องการลิงก์ของคุณในแหล่งข้อมูลยอดเยี่ยม ฉันเพิ่งรวมบางส่วนไว้ในคำตอบ (พร้อมกับการระบุแหล่งที่มา) เพื่อให้เป็นทางเลือกที่ถูกต้องสมบูรณ์แบบ (ในความเป็นจริงคำตอบที่ดีกว่าที่เห็นโดยสาธารณะ!) งานที่ยอดเยี่ยมมากขึ้น - ยินดีต้อนรับสู่ 5k!
ish

4

เพื่อตรวจสอบการใช้งานหน่วยความจำปัจจุบันของคุณ

 watch -n 1 free -m

หรือ

 watch -n 1 cat /proc/meminfo

เพื่อเพิ่มพื้นที่ว่าง

 sudo sysctl -w vm.drop_caches=3

หมายเหตุ:การกระทำนี้จะไม่ทำให้ระบบของคุณเร็วขึ้นและจะไม่ส่งผลกระทบต่อความเสถียรและประสิทธิภาพของระบบ แต่จะทำความสะอาดหน่วยความจำที่ใช้โดยเคอร์เนล Linux บนแคช

หรือ

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

หมายเหตุ:คุณสามารถใช้งาน cron เพื่อกำหนดเวลาคำสั่งด้านบนให้ทำงานตามช่วงเวลาที่กำหนด


1

ในขณะที่เราสามารถเห็นการ cashing ไม่ใช่ปัญหาเฉพาะถ้ามันทำให้เกิดการแลกเปลี่ยนสิ่งที่คุณสามารถหลีกเลี่ยงได้โดยการจัดการค่าvm.swappiness บางทีนั่นอาจเป็นสิ่งที่คุณกำลังมองหา: เหตุใดจึงมีการใช้งาน swap แม้กระทั่ง i-have-ram ฟรี

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