Score:2

lvmcache/dm-cache แคชการเขียนกลับเต็มประสิทธิภาพ

ธง id

ฉันมีแคชเขียนกลับ SSD อยู่หน้า HDD ตั้งค่าผ่าน lvmcache (เช่น dm-cache) เมื่อแคช LV ไม่เต็ม (ข้อมูล% คอลัมน์ใน เลเวล < 100.00%) เขียนไปที่อุปกรณ์แคช (ตรวจสอบผ่าน ดีสแตท). อย่างไรก็ตาม เมื่อแคช LV เต็ม (ข้อมูล% = 100.00%) การเขียนไปที่ HDD โดยตรง โดยพื้นฐานแล้วจะกลายเป็นแคชการเขียนผ่าน การบล็อกจะไม่ถูกขับออกจากแคช SSD แม้จะผ่านไประยะหนึ่ง และประสิทธิภาพจะลดลงเมื่อฉันพยายามอ่านเมื่อเร็วๆ นี้ ข้อมูลที่อ่านจาก LV ที่แคชไว้ การอ่านมาจาก SSD ดังนั้นฉันจึงถือว่า SSD ทั้งหมดกลายเป็นแคชสำหรับอ่านแล้ว นี่เป็นพฤติกรรมที่คาดหวังสำหรับแคชการเขียนของ dm-cache แม้ในโหมดการเขียนกลับหรือไม่ ไม่มีพื้นที่สำรองสำหรับการเขียน? ดูเหมือนว่าเป็นการออกแบบที่ค่อนข้างแย่เนื่องจากโดยพื้นฐานแล้วผู้ใช้สามารถเขียนข้อมูลมูลค่าของแคช LV ได้เพียงแคชเดียวก่อนที่แคชจะกลายเป็นแคชแบบเขียนผ่าน

ความเข้าใจของฉันคือ dm-cache ใช้ไฟล์ อัลกอริทึมการขับไล่ mqแต่นั่นใช้ได้กับการอ่านแคชเท่านั้น ดังนั้นจึงไม่เกี่ยวข้องกับปัญหาการเขียนแคชที่ฉันกำลังสังเกตอยู่

มีวิธีจองพื้นที่สำหรับแคชเขียนหรือใช้ทั้ง dm-writecache (ซึ่งฉันเข้าใจว่าจะไม่ทำการอ่านแคช) และ dm-cache พร้อมกันหรือไม่

Score:1
ธง ca

dm-แคช เป็นแคช "เคลื่อนที่ช้า": ต้องมีการอ่าน/เขียนพลาดหลายครั้งเพื่อเลื่อนระดับบล็อก โดยเฉพาะอย่างยิ่งเมื่อเลื่อนระดับบล็อกใหม่ ลดระดับ อันที่แคชไว้แล้ว

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

กล่าวอีกนัยหนึ่ง คุณอาจเห็นผลรวมของเคอร์เนลเพจแคช (ซึ่งดูดซับและรวมการเขียน) และ ความไม่เต็มใจของ dm-แคช เพื่อส่งเสริมบล็อกที่พลาดก่อน

หากคุณต้องการจองอุปกรณ์/พื้นที่บางส่วนเพื่อเขียนแคชเท่านั้น คุณสามารถแตะเข้าไปได้ dm-writecache (และตามปกติ lvmcache)

ข้อมูลเพิ่มเติม:

dm-แคช บล็อกการเข้าถึงการติดตามการเลื่อนระดับ/ลดระดับการเข้าถึง/การพลาด ในตอนแรก คุณมีแคชว่างที่มี I/O ทั้งหมดส่งตรงไปยังอุปกรณ์ต้นทาง (ช้า) ดังนั้นเมื่อคุณออก a เช่น 4K read มันจะเข้าถึงอุปกรณ์พื้นฐานที่ช้าด้วย dm-แคช ติดตามการพลาด หลังจากที่พลาดท่าไปบ้าง บล็อกแคชเดียวกัน (ค่าเริ่มต้น 32K) จากนั้น ทั้งหมด บล็อกแคชถูกคัดลอกไปยังอุปกรณ์ที่รวดเร็ว หากคุณเขียนไปยังบล็อกที่แคชไว้ การเขียนของคุณจะถูกแคช อย่างไรก็ตาม หากการเขียนของคุณมีไว้สำหรับ บล็อกที่ไม่ได้แคชมันตรงไปยังอุปกรณ์ต้นทาง (ช้า) หลังจากการเขียนที่ไม่ได้แคชอื่นๆ dm-แคช ในที่สุดก็จะจัดสรรบล็อกแคชทั้งหมด (จำไว้ว่า 32K โดยค่าเริ่มต้น) คัดลอกข้อมูลต้นฉบับไปยังอุปกรณ์แคช ณ จุดนี้ การอ่าน/เขียนใหม่สามารถให้บริการได้จากแคช การลดระดับทำได้ง่าย: เมื่อต้องมีการเลื่อนระดับบล็อกใหม่ บล็อกที่เก่าที่สุดจะถูกทิ้ง/ล้าง

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

dm-writecache ทำงานแตกต่างออกไป คล้ายกับแคชเขียนกลับของคอนโทรลเลอร์ RAID แบบดั้งเดิมมากกว่า มันแคช ทั้งหมด เขียนละเว้นการอ่าน แทบจะเรียกได้ว่าเป็น "แคชเพจ L2 แบบเขียนอย่างเดียว" ซึ่งเพจสกปรกจะถูก "สลับ" รอให้อุปกรณ์ที่ทำงานช้าตามทัน หากต้องการใช้งาน คุณต้องแบ่งพาร์ติชันอุปกรณ์ที่รวดเร็วของคุณระหว่าง dm-แคช (ซึ่ง ณ จุดนี้จะต้องเรียกใช้เป็น เขียนผ่าน แคช) และ dm-writecacheหรือเพื่ออุทิศอุปกรณ์ต่าง ๆ ให้กับพวกเขา ฉัน ไม่เคย พยายามทำเช่นนั้นผ่าน LVM และฉันสงสัยว่าเครื่องมือจะป้องกันไม่ให้คุณซ้อน/ซ้อนโมดูลแคชที่แตกต่างกันสองโมดูล อย่างไรก็ตาม คุณสามารถลองได้โดยตรง dmตั้งค่า คำสั่ง

Albert T avatar
id flag
"หมายความว่าจำเป็นต้องมีการเขียนจำนวนมากไปยังบล็อกที่ไม่ได้แคชเดียวกันเพื่อทริกเกอร์การเลื่อนระดับ/การแทนที่ของบล็อก" ฉันไม่เข้าใจแนวคิดของการแคชบล็อกการเขียนและการเลื่อนระดับ/ลดระดับ โดยพื้นฐานแล้ว การเขียนจะถูกบัฟเฟอร์ในแคชการเขียน (เช่น dm-writecache) และลดบล็อกอื่นๆ ในแคชการอ่านเชิงรุก หากการเขียนถูกนับเป็นการเข้าถึง คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ไหม "หากคุณต้องการจองอุปกรณ์/พื้นที่บางส่วนเพื่อเขียนแคชเท่านั้น คุณสามารถแตะที่ dm-writecache (และ lvmcache ปกติ)" ฉันจะทำอย่างไร สิ่งนี้จะนำไปสู่การมีสองแคชในหนึ่ง LV ใช่ไหม
shodanshok avatar
ca flag
@AlbertT ฉันได้แก้ไขคำตอบด้วยข้อมูลที่จำเป็นแล้ว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา