ทุกครั้งที่ผ่านมาฉันได้รับคำสั่งให้เพิ่มความเร็วของ "dd" ฉันควรเลือก "ขนาดบล็อก" ที่เหมาะสม
แม้ที่นี่บน ServerFault มีคนเขียนว่า " ... ขนาดบล็อกที่เหมาะสมที่สุดขึ้นอยู่กับฮาร์ดแวร์ ... " (iain)หรือ " ... ขนาดที่สมบูรณ์แบบจะขึ้นอยู่กับบัสระบบของคุณตัวควบคุมฮาร์ดไดรฟ์ฮาร์ดไดรฟ์เฉพาะ ตัวเองและไดรเวอร์สำหรับแต่ละเหล่านั้น ... " (chris-s)
เนื่องจากความรู้สึกของฉันแตกต่างกันเล็กน้อย ( BTW: ฉันคิดว่าเวลาที่ต้องปรับจูนพารามิเตอร์ bs นั้นสูงกว่าที่ได้รับมากในแง่ของการประหยัดเวลาและค่าเริ่มต้นนั้นสมเหตุสมผล ) วันนี้ฉันเพิ่งไป ผ่านการวัดประสิทธิภาพที่รวดเร็วและสกปรก
เพื่อลดอิทธิพลภายนอกฉันตัดสินใจอ่าน:
- จากการ์ด MMC ภายนอก
- จากพาร์ติชันภายใน
และ:
- กับระบบไฟล์ที่เกี่ยวข้อง umounted
- การส่งออกไปยัง / dev / null เพื่อหลีกเลี่ยงปัญหาที่เกี่ยวข้องกับ "ความเร็วในการเขียน";
- หลีกเลี่ยงปัญหาพื้นฐานของการแคช HDD อย่างน้อยเมื่อเกี่ยวข้องกับ HDD
ในตารางต่อไปนี้ฉันได้รายงานสิ่งที่พบแล้วอ่านข้อมูล 1GB ด้วยค่าต่าง ๆ ของ "bs" ( คุณสามารถค้นหาหมายเลขดิบได้ที่ท้ายข้อความนี้ ):
โดยพื้นฐานแล้วมันก็อ้างว่า:
MMC: ด้วย bs = 4 (ใช่! 4 ไบต์) ฉันถึงปริมาณงาน 12MB / s ค่าที่อยู่ไม่ไกลมากไปจนถึงสูงสุด 14.2 / 14.3 ที่ฉันได้รับจาก bs = 5 ขึ้นไป
HDD: ด้วย a bs = 10 ฉันถึง 30 MB / s ต่ำกว่า 95.3 MB ได้อย่างแน่นอนด้วยค่าเริ่มต้น bs = 512 แต่ ... สำคัญเช่นกัน
นอกจากนี้เป็นที่ชัดเจนว่า CPU sys-time นั้นแปรผกผันกับค่า bs (แต่ฟังดูสมเหตุสมผลเมื่อยิ่ง bs ต่ำลงจำนวนของ sys-calls ที่สูงขึ้นจะยิ่งสูงขึ้นโดย dd)
ต้องบอกว่าทั้งหมดข้างต้นตอนนี้คำถาม: ใครสามารถอธิบาย (แฮกเกอร์เคอร์เนล?) สิ่งที่เป็นองค์ประกอบที่สำคัญ / ระบบที่เกี่ยวข้องกับปริมาณงานเช่นนี้และถ้ามันคุ้มค่าความพยายามในการระบุ bs สูงกว่าค่าเริ่มต้น?
กรณี MMC - หมายเลขดิบ
BS = 1M
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1M count=1000
1000+0 record dentro
1000+0 record fuori
1048576000 byte (1,0 GB) copiati, 74,1239 s, 14,1 MB/s
real 1m14.126s
user 0m0.008s
sys 0m1.588s
BS = 1k
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1k count=1000000
1000000+0 record dentro
1000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 72,7795 s, 14,1 MB/s
real 1m12.782s
user 0m0.244s
sys 0m2.092s
BS = 512
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=512 count=2000000
2000000+0 record dentro
2000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 72,867 s, 14,1 MB/s
real 1m12.869s
user 0m0.324s
sys 0m2.620s
BS = 10
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=10 count=100000000
100000000+0 record dentro
100000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 70,1662 s, 14,3 MB/s
real 1m10.169s
user 0m6.272s
sys 0m28.712s
BS = 5
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=5 count=200000000
200000000+0 record dentro
200000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 70,415 s, 14,2 MB/s
real 1m10.417s
user 0m11.604s
sys 0m55.984s
BS = 4
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=4 count=250000000
250000000+0 record dentro
250000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 80,9114 s, 12,4 MB/s
real 1m20.914s
user 0m14.436s
sys 1m6.236s
BS = 2
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=2 count=500000000
500000000+0 record dentro
500000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 161,974 s, 6,2 MB/s
real 2m41.976s
user 0m28.220s
sys 2m13.292s
BS = 1
root@iMac-Chiara:/tmp# time dd if=/dev/sdc of=/dev/null bs=1 count=1000000000
1000000000+0 record dentro
1000000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 325,316 s, 3,1 MB/s
real 5m25.318s
user 0m56.212s
sys 4m28.176s
กรณี HDD - หมายเลขดิบ
BS = 1
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=1 count=1000000000
1000000000+0 record dentro
1000000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 341,461 s, 2,9 MB/s
real 5m41.463s
user 0m56.000s
sys 4m44.340s
BS = 2
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=2 count=500000000
500000000+0 record dentro
500000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 164,072 s, 6,1 MB/s
real 2m44.074s
user 0m28.584s
sys 2m14.628s
BS = 4
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=4 count=250000000
250000000+0 record dentro
250000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 81,471 s, 12,3 MB/s
real 1m21.473s
user 0m14.824s
sys 1m6.416s
BS = 5
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=5 count=200000000
200000000+0 record dentro
200000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 66,0327 s, 15,1 MB/s
real 1m6.035s
user 0m11.176s
sys 0m54.668s
BS = 10
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=10 count=100000000
100000000+0 record dentro
100000000+0 record fuori
1000000000 byte (1,0 GB) copiati, 33,4151 s, 29,9 MB/s
real 0m33.417s
user 0m5.692s
sys 0m27.624s
bs = 512 (ชดเชยการอ่านเพื่อหลีกเลี่ยงการแคช)
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=512 count=2000000 skip=6000000
2000000+0 record dentro
2000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 10,7437 s, 95,3 MB/s
real 0m10.746s
user 0m0.360s
sys 0m2.428s
bs = 1k (ชดเชยการอ่านเพื่อหลีกเลี่ยงการแคช)
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=1k count=1000000 skip=6000000
1000000+0 record dentro
1000000+0 record fuori
1024000000 byte (1,0 GB) copiati, 10,6561 s, 96,1 MB/s
real 0m10.658s
user 0m0.164s
sys 0m1.772s
bs = 1k (ชดเชยการอ่านเพื่อหลีกเลี่ยงการแคช)
root@iMac-Chiara:/tmp# time dd if=/dev/sda3 of=/dev/null bs=1M count=1000 skip=7000
1000+0 record dentro
1000+0 record fuori
1048576000 byte (1,0 GB) copiati, 10,7391 s, 97,6 MB/s
real 0m10.792s
user 0m0.008s
sys 0m1.144s
bs
ขนาดพล็อตกับความเร็วแทนที่จะเป็นบล็อคโค้ด 15 โหลในคำถามเดียว จะใช้พื้นที่น้อยลงและอ่านเร็วขึ้นอย่างไม่ จำกัด รูปภาพมีค่าอย่างแท้จริงสำหรับคำศัพท์สองคำ
bs=8k count=512K
หรือbs=1M count=4K
ฉันจำไม่ได้ว่าเป็นพลังของ 2 ที่ผ่านมา 65536
bs=auto
คุณลักษณะdd
ที่จะตรวจจับและใช้พารามิเตอร์ bs ที่เหมาะสมจากอุปกรณ์