ประสิทธิภาพของระบบไฟล์ Loopback


10

มีใครทำการทดสอบประสิทธิภาพ / การเปรียบเทียบสำหรับระบบไฟล์ลูปแบ็คลินุกซ์บ้างไหม? ประสบการณ์ของคุณเคยผ่านอะไรมาบ้าง ประสิทธิภาพการทำงานลดลงอย่างรุนแรงหรือไม่? ความแข็งแกร่งนั้นเป็นอย่างไร?

http://freshmeat.net/articles/virtual-filesystem-building-a-linux-filesystem-from-an-ordinary-file


มันค่อนข้างง่ายที่จะเรียกใช้ bonnie ++ บนดิสก์ดั้งเดิมของคุณและบนดิสก์ย้อนกลับเพื่อเปรียบเทียบประสิทธิภาพ
ceving

คำตอบ:


11

ฉันได้ทำการเปรียบเทียบกับการเขียนในอุปกรณ์ลูปแบ็ค นี่คือข้อสรุป:

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

ผลการทดสอบเกณฑ์มาตรฐาน

ก่อนอื่นฉันรันเกณฑ์มาตรฐานบนอุปกรณ์ลูปแบ็คใน tmpfs ขนาด 8GB และอุปกรณ์ลูปแบ็คภายในอุปกรณ์ลูปแบ็ค ( พร้อมซิงค์หลังจากการดำเนินการเขียนทุกครั้ง ):

ext4 ใน tmpfs:

Measured speed: 557, 567, 563, 558, 560, 559, 556, 556, 554, 557
Average speed : 558.7 MB/s  (min 554  max 560)

ext4 ใน extf ใน tmpfs:

Measured speed: 296, 298, 295, 295, 299, 297, 294, 295, 296, 296
Average speed : 296.1 MB/s  (min 294  max 299)

เห็นได้ชัดว่ามีความแตกต่างของประสิทธิภาพเมื่อใช้อุปกรณ์ลูปแบ็คกับการซิงค์เมื่อเขียน
จากนั้นฉันทดสอบซ้ำอีกครั้งบน HDD ของฉัน
ext4 (HDD, 1000 MB, 3 ครั้ง):

Measured speed: 24.1, 23.6, 23.0
Average speed : 23.5 MB/s  (min 23.0  max 24.1)

ext4 ใน ext4 (HDD, 945MB):

Measured speed: 12.9, 13.0, 12.7
Average speed : 12.8 MB/s  (min 12.7  max 13.0)

มาตรฐานเดียวกันบน HDD ตอนนี้โดยไม่ซิงค์หลังจากการเขียนทุกครั้ง ( time (dd if=/dev/zero bs=1M count=1000 of=file; sync)วัดเป็น<size>/ <time in seconds>)
ext4 (HDD, 1000 MB):

Measured speed: 84.3, 86.1, 83.9, 86.1, 87.7
Average speed : 85.6 MB/s  (min 84.3  max 87.7)

ext4 ใน ext4 (HDD, 945MB):

Measured speed: 89.9, 97.2, 82.9, 84.0, 82.7
Average speed : 87.3 MB/s  (min 82.7  max 97.2)

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

การตั้งค่ามาตรฐาน

ก่อนอื่นฉันสร้างระบบไฟล์วนรอบ 8G ใน / tmp (tmpfs) ของฉัน:

truncate /tmp/file -s 8G
mkfs.ext4 /tmp/file
sudo mount /tmp/file /mnt/
sudo chown $USER /mnt/

จากนั้นฉันก็สร้างพื้นฐานโดยการกรอกไฟล์ลูปแบ็คที่เมาท์ด้วยข้อมูล:

$ dd if=/dev/zero bs=1M of=/mnt/bigfile oflag=sync
dd: error writing '/mnt/bigfile': No space left on device
7492+0 records in
7491+0 records out
7855763456 bytes (7.9 GB) copied, 14.0959 s, 557 MB/s

หลังจากทำเช่นนั้นฉันสร้างอุปกรณ์ลูปแบ็คอื่นในอุปกรณ์ลูปแบ็คก่อนหน้า:

mkdir /tmp/mountpoint
mkfs.ext4 /mnt/bigfile
sudo mount /mnt/bigfile /tmp/mountpoint
sudo chown $USER /tmp/mountpoint

และวิ่งเกณฑ์มาตรฐานอีกครั้งสิบครั้ง:

$ dd if=/dev/zero bs=1M of=/tmp/mountpoint/file oflag=sync
...
7171379200 bytes (7.2 GB) copied, 27.0111 s, 265 MB/s

และจากนั้นฉันก็ unmount ไฟล์ทดสอบและลบมันออก:

sudo umount /tmp/mountpoint
sudo umount /mnt

(ในทำนองเดียวกันสำหรับการทดสอบบน HDD ยกเว้นฉันได้เพิ่มcount=1000เพื่อป้องกันการทดสอบจากการเติมดิสก์ทั้งหมดของฉัน)
(และสำหรับการทดสอบแบบไม่เขียน - ซิงค์ฉันก็หมดเวลาddและsyncการทำงาน)


0

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

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