วิธีการล้างแคชของ filesytem ทั้งหมดบน linux?


9

ในการทดสอบประสิทธิภาพฉันต้องการข้ามอิทธิพลของแคชของระบบ linux (รวมถึงแคชหน้า / แคช inode และอื่น ๆ )

ฉันได้ลองใช้ O_DIRECT flag แล้ว แต่กลับกลายเป็นว่า I / O โดยตรงยังคง "สนุก" กับเอฟเฟกต์ของแคชบางตัว

มีวิธีอย่างละเอียดเพื่อปิดผลกระทบของแคชระบบหรือไม่


2
การทดสอบประสิทธิภาพแบบ "ไม่จริง" เป็นเช่นไร? คุณกำลังพยายามทดสอบบางสิ่งที่ระบบปฏิบัติการสมัยใหม่จะไม่ยอมให้เกิดขึ้น

โชคไม่ดีที่มันไม่จริงเลยมันยังคงเป็นวิธีการทำงานของเคอร์เนลไอโอในวันนี้ ฉันต้องการมากเกินไปที่ Mr.T จะตระหนักว่า I / O อะซิงโครนัสและแคชไม่ใช่เงื่อนไขพิเศษร่วมกัน เป็นสิ่งที่คนใน Microsoft ตระหนักเมื่อ 15 ปีที่แล้ว (แม้ว่าประสิทธิภาพเป็นที่ยอมรับก่อน Vista อาจน่าผิดหวังโดยเฉพาะภายใต้ภาวะพร้อมกัน) ผู้ชายอินเดียบางคนเขียนแผ่นปะเมื่อหลายปีก่อนเช่นกัน แต่กลับกลายเป็นว่า

คำตอบ:


14

(มันลดลงจริง .. .. ) เรียกใช้syncก่อนแล้ว

pagecache ฟรี:

echo 1 > /proc/sys/vm/drop_caches

ฟรีทันตกรรมและ inodes:

echo 2 > /proc/sys/vm/drop_caches

ฟรี pagecache, dentries และ inodes:

echo 3 > /proc/sys/vm/drop_caches

จากนั้นคุณสามารถเริ่มต้นด้วยแคชที่สะอาดได้ แต่แน่นอนว่าการแคชจะยังคงทำงานอยู่


ฉันเคยได้ยินเกี่ยวกับวิธีการนี้อยู่ที่ไหนสักแห่ง แต่ไม่มีไฟล์ดังกล่าวบน Ubuntu ของฉัน 10.04 ดังนั้นฉันล้มเหลวในการดำเนินการคำสั่งดังกล่าว

@tom_cat: คุณต้องการเคอร์เนลที่ใหม่กว่า 2.6.16 และ Ubuntu 10.04 มาพร้อมกับ 2.6.32 ถ้าฉันไม่เข้าใจผิด ฉันเพิ่งตรวจสอบการติดตั้ง 11.04 ของฉันสำหรับสิ่งที่คุ้มค่าซึ่งมีรายการ proc นี้ (โชคไม่ดีที่ 10.04 ที่นี่อีก)

@Damon: ใช่คุณพูดถูก ขอบคุณมาก. ฉันพบว่าฉันเข้าสู่ระบบในเครื่องระยะไกลของเคอร์เนลรุ่นเก่า

0

ไม่คุณไม่สามารถเลี่ยงแคชได้ แต่อย่างไรก็ตามคุณสามารถบังคับให้ซิงค์ระบบไฟล์ (ซึ่งหมายถึงล้างแคชและเขียนข้อมูลไปยังดิสก์) ด้วยการเรียกระบบเพิ่มเติม fsync (3)

คำทักทาย CK

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