Раз у раз мені кажуть, що для збільшення швидкості "дд" я повинен ретельно вибирати правильний "розмір блоку".
Навіть тут, на ServerFault, хтось ще написав, що " ... оптимальний розмір блоку залежить від апаратного забезпечення ... " (iain) або " ... ідеальний розмір буде залежати від вашої системної шини, контролера жорсткого диска, конкретного диска себе, і драйвери для кожного з цих ... " (chris-s)
Оскільки моє відчуття було дещо іншим ( BTW: я відчував, що час, необхідний для глибокої настройки параметра bs, був набагато більшим за отриманий приріст, з точки зору економії часу, і що за замовчуванням було розумним ), сьогодні я просто пішов через деякі швидкі та брудні орієнтири.
Щоб знизити зовнішні впливи, я вирішив прочитати:
- із зовнішньої картки MMC
- від внутрішньої перегородки
і:
- із пов'язаними файловими системами
- відправлення виводу в / dev / null, щоб уникнути проблем, пов'язаних із "швидкістю запису";
- уникаючи деяких основних проблем кешування жорсткого диска, принаймні при залученні жорсткого диска.
У наступній таблиці я повідомив про свої висновки, прочитавши 1 ГБ даних з різними значеннями "bs" ( вихідні цифри можна знайти в кінці цього повідомлення ):
В основному це означає, що:
MMC: з bs = 4 (так! 4 байти) я досяг пропускної здатності 12 Мб / с. Не настільки далекі значення wrt до максимальних 14,2 / 14,3, які я отримав від bs = 5 і вище;
Жорсткий диск: з bs = 10 я досяг 30 Мб / с. Безумовно, нижчий ніж 95,3 Мб отримав за замовчуванням bs = 512, але ... також істотно.
Крім того, було дуже зрозуміло, що час роботи центрального процесора обернено пропорційний значенню bs (але це звучить розумно, оскільки чим менший bs, тим більша кількість sys-викликів, що генеруються dd).
Сказавши все вищесказане, тепер питання: чи може хтось пояснити (хакер ядра?), Що є основним компонентом / системами, що беруть участь у такій пропускній спроможності, і чи дійсно варто докласти зусиль для визначення bs, вищого за замовчуванням?
Справа ММС - необроблені цифри
bs = 1М
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
Корпус жорсткого диска - необроблені цифри
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 десятків блоків коду в одному запитанні. Займав би менше місця і був би нескінченно швидшим для читання. Картина дійсно є варто thoursand слова.
bs=8k count=512K
або bs=1M count=4K
я не пам’ятаю повноважень 2 минулих 65536
bs=auto
функція,dd
яка буде визначати та використовувати оптимальний параметр bs від пристрою.