เกี่ยวกับแคชหน่วยความจำของ Linux


4

ฉันใช้สคริปต์ของหลามเพื่อทำสถิติบางอย่างและหน่วยความจำที่ใช้จริงอยู่ในระดับต่ำประมาณ 10% และไม่มีกระบวนการอื่นที่ต้องใช้หน่วยความจำมากขึ้น แต่เมื่อฉันใช้ free -m และมันแสดงให้เห็นว่ามีการใช้หน่วยความจำเกือบ 95% ประเด็นก็คือสคริปต์ของฉันควรอ่านจากไฟล์จำนวนมากดังนั้นฉันสงสัยว่ามีกลไกของแคชหน่วยความจำ Linux ที่ทำให้เกิดปัญหาหรือไม่ echo 1 >> /proc/sys/vm/drop_caches ใช้งานได้ แต่ดูเหมือนว่าด้วยตนเองฉันจะลดต้นทุนหน่วยความจำได้อย่างไรและไม่ส่งผลเสียต่อการอ่านไฟล์

คำตอบ:


7

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


5

ฉันไม่คิดว่าคุณมีปัญหาจริงที่นี่

ทำไมคุณถึงสนใจว่าใช้หน่วยความจำทั้งหมดเท่าใด มันเจ็บอะไรหรือเปล่า?

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

มีบางกรณีที่ผิดปกติที่การแคชจำนวนมากอาจไม่ดี บางทีการอ่านต่อเนื่องอาจเกิดขึ้นทันทีก่อนการจัดสรรหน่วยความจำ บางทีสิ่งที่เกี่ยวกับกรณีเฉพาะของคุณหมายความว่าไม่มีประโยชน์ที่เป็นไปได้และคุณจำเป็นต้องลดต้นทุนการปฏิบัติงาน 0.1% บางทีคุณอยู่ในระบบฝังตัวที่ใช้ RAM พร้อมอายุการใช้งานที่ จำกัด หากคุณมีกรณีเช่นนี้บอกเราว่ามันคืออะไร


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