ฉันกำลังสร้างข้อมูล (ไฟล์ขนาด 100GB) ซึ่งในที่สุดก็คัดลอกไปยังเซิร์ฟเวอร์ผ่าน NFS v4.2 บนเครือข่าย 10Gb ไฟล์เหล่านี้จัดเก็บไว้ใน HDD จำนวนมาก โดยมีรูปแบบ XFS (หนึ่งสำเนาต่อไดรฟ์เป้าหมาย)
เมื่องานคัดลอกกำลังรันอยู่:
- มีการใช้หน่วยความจำขนาดใหญ่บนไคลเอ็นต์ (อาจมากกว่า 64GB ก็ใช้หน่วยความจำเท่าที่ทำได้)
- แต่แทบจะไม่ใช้ ram บนเซิร์ฟเวอร์เลย
ฉันต้องการลดการใช้หน่วยความจำบนไคลเอนต์ เนื่องจากพวกเขาสร้างข้อมูลอย่างต่อเนื่องและทำให้ช้าลง ในทางกลับกัน เซิร์ฟเวอร์ส่วนใหญ่ไม่ได้ใช้งาน
ฉันเดาว่าเนื่องจาก HDD ทำงานช้าบนเซิร์ฟเวอร์ ไคลเอ็นต์จึงบัฟเฟอร์ข้อมูลให้มากที่สุดเท่าที่จะทำได้เพื่อให้การคัดลอกบล็อกน้อยลง ฉันไม่สามารถเปลี่ยนการตั้งค่าฮาร์ดแวร์ได้
มีวิธีใดที่จะบังคับให้เซิร์ฟเวอร์แคชข้อมูลเพิ่มเติมหรือไม่
ฉันต้องการจัดลำดับความสำคัญโดยใช้หน่วยความจำเซิร์ฟเวอร์มากกว่าหน่วยความจำไคลเอนต์
การกำหนดค่า NFS:
10.0.3.1:/ /mnt/field nfs nfsvers=4.2,noatime,nodiratime,_netdev,noauto,x-systemd.automount,x-systemd.mount-timeout=10 0 0
/etc/export
:
/mnt 10.0.0.0/16(rw,async,fsid=0,no_subtree_check,crossmnt)
การกำหนดค่า Nic บนเซิร์ฟเวอร์:
มทร.9000
รินบัฟเฟอร์ tx 512, rx 1024
การกำหนดค่า Nic บนไคลเอ็นต์:
มทร.9000
รินบัฟเฟอร์ tx 1024, rx 512
แก้ไข:
ตามที่ร้องขอ /proc/meminfo:
ลูกค้า ------------------------------------------ เซิร์ฟเวอร์ ------ -------------------------
การตรวจสอบการใช้หน่วยความจำบนไคลเอนต์นี้:
การใช้งานเครือข่าย:
หมายเหตุ: ไคลเอ็นต์ใช้ tmpfs ขนาดใหญ่ (100GB) ในการคำนวณ ฉันคิดว่า tmpfs นี้จะไม่ถูกลบออกจากจำนวนหน่วยความจำที่มีอยู่
แก้ไข 2:
ความสัมพันธ์ระหว่างการใช้เครือข่ายและหน่วยความจำนั้นชัดเจนกว่าในไคลเอนต์อื่น (ฉันควรเริ่มต้นด้วยสิ่งนั้น) ลูกค้ารายนี้ไม่ได้ใช้ tmpfs ใดๆ