Чому при копіюванні швидкість спалаху сповільнюється?


27

Після декількох хвилин копіювання воно стає просто повільніше і повільніше. Чому?

Наприклад, він починається з 20 Мбіт / с, а коли закінчується, він становить @ 10 Мбайт / с.

Різні файли, великі, маленькі тощо.

ОНОВЛЕННЯ: питання стосується різних операційних систем, тому це "загальне питання"


Скільки ви копіюєте, а скільки вільної пам'яті у вас на комп’ютері?
KCotreau

ПК -> USB-флеш-накопичувач: кілька сотень Гбіт безкоштовно -> кілька
ГБ

1
Я підозрюю, що у вас спочатку є кешовані в пам'яті файли, тому вони швидко передаються, а потім, коли вони починають переміщуватися з жорсткого диска, він сповільнюється. Я не можу бути впевнений у вашому випадку.
KCotreau

тож ти радиш мені частіше використовувати команду "синхронізація"?
LanceBaynes

Я не розумію, що ви маєте на увазі під командою синхронізації. Ви не давали контексту на запитання. Я навіть не впевнений, яка ОС.
KCotreau

Відповіді:


25

Така поведінка не характерна для вашої флешки, ви можете бачити це і на жорстких дисках. Це пов'язано з механізмом кешування більшості операційних систем і дисків, які використовуються для прискорення запису малих записів.

Ви бачите 20 Мб / с - це дані, що записуються в кеш диска (зазвичай це швидка, але невелика пам'ять). Після того, як цей кеш буде заповнений, його потрібно передати на диск - і тепер вас переймають більш повільні диски.

Приклад 1: Ефект дійсно яскраво виражений, якщо у вас є контролер з великим кешем (як хороший контролер RAID5), де ~ 500 Мб даних можна швидко кешувати, перш ніж його перенести на диск.

Приклад 2: Ви можете побачити кеш під час відтворення, якщо одночасно витягнути флешку, копія файлу "закінчена". У цей момент ваш файл розділений між диском та кешем - тому копія "закінчена", що стосується операційної системи, але дисковий контролер все ще повинен записати те, що залишилося в кеш на диску. Якщо ви знову покладете флешку та перегляньте файл, ви побачите, що там не все.

Відмова від відповідальності: Ці приклади не працюватимуть, якщо у вас не ввімкнено кешування записів у вашій операційній системі / на диску.

Крім того, якщо це не кешування диска на роботі, то, швидше за все, те, що ви бачите, є ефектом фрагментації. По мірі того, як диск стає повнішим і повнішим, доступно менше вільного місця, і файлова система повинна докладати більше зусиль, щоб знайти місця для розміщення файлів.


Також пам’ятайте, що це флешка. Це обладнання ніколи не було оптимізоване для швидкості, а скоріше доступності.
surfasb

Я не думаю, що це пояснить, чому продуктивність знизиться під час довгих копій файлів. Швидше, продуктивність знизиться протягом життя приводу, так?
ta.speot.is

Це має ідеальний сенс. Вони оптимізовані для швидкості вибуху, а не для постійних операцій. Подумайте про середній розмір файлів, що завантажуються на флешки. Чи оптимізували б ви передачу файлів тривалістю 30 секунд чи оптимізували передачу на 2 секунди? Додайте це до ваших двох прикладів, і це пояснює багато.
surfasb

Це як коли ви намагаєтесь пробити двох людей через середні двері за раз. Спочатку можна розрахувати. Нічого собі, я перейшов від нуля людей через ці двері до двох одночасно. Моя швидкість велика. Тоді ця лінія стає довшою, і ваша вибірка стає кращою, і ви нарешті зрозумієте, що маленький зразок = погана математика. . .
surfasb

@ ta.speot.is Я вважаю, що цей кеш диска, який ви згадали, обробляється ОС на жорсткому диску, і він відрізняється від кеш-пам'яті, у якій жорсткі диски є всередині, правда?
вересень

1

Хоча кешування викликає деякі з цього, це не єдиний фактор. Якби кешування було єдиним фактором, тоді ми очікуємо, що швидкість запису дуже швидко знизиться з декількох сотень МБ / с до фактичної швидкості запису диска, і залишимось там до кінця запису. Однак це не те, що я спостерігав під час великих передач на диск і з нього (наприклад, записування завантажувальних зображень). Натомість, я спостерігаю, що швидкість поступово зменшується протягом всієї операції.

Це уповільнення спричинене залишком даних на флеш-чіпах, що використовуються для зберігання даних, що вимагає запису деяких блоків не один раз.

Всередині флеш-чіпа є блок даних, в який можна записати. Під час запису комп'ютер може зробити лише дві речі: він може стерти цілий блок або змінити частину (або всі) бітів у блоці від 0 до 1.

Однак деякі з цих блоків кращі за інші, особливо це стосується флеш-накопичувачів більш низької якості, і в результаті, коли записуються на нього нові дані, деякі з бітів можуть інколи переходити назад до 0 відразу після написання, і не не змінююсь. Таким чином, під час запису в блок ОС потрібно перевірити, щоб переконатися, що всі дані були записані правильно, і якщо це не так, потрібно повторити блок, записавши ті самі дані в той же блок два-три рази поки дані не дотримуються.

Отже, коли ваш комп'ютер записує купу даних на флешку, ось вам (не зовсім точне, але досить добре) пояснення того, як це робити:

  1. Візьміть перший набір блоків, які потрібно записати, і запишіть їх усі.
  2. Прочитайте всі блоки, які ми тільки що написали, і складіть список тих, що не відповідають
  3. Напишіть наступний набір блоків разом з тими, які були написані неправильно минулого разу.
  4. Повторіть 2-3, поки всі блоки не будуть написані правильно.

Коли комп'ютер записує на диск, він вперше повідомляє про швидкість, з якою записує блоки на привід. Оскільки також доведеться одночасно переписати попередні блоки, загальна пропускна здатність, яка може бути використана для блоків незайманих, зменшується, оскільки кількість перезаписів, які також повинні відбутися, збільшується. Таким чином, явна швидкість запису з часом зменшується.


Я пишу 12 Gig 7zip файл на абсолютно новий флеш-накопичувач USB 3.0, відформатований як NTFS. Перша хвилина тривала близько 100 Мб / с, потім приблизно до хвилини знижувалася до 25 Мбайт / с, потім знижувалася до 11 або близько 10 хвилин. Це був не поступовий низхідний схил, це 3 чіткі плато.
Ерік

Я копіював архів зі свого старого ноутбука i7 з 16 гігами оперативної пам’яті. Копіювання цього ж архіву 7zip з того самого thumbdrive на мій новий ноутбук Xeon з 32 гігами оперативної пам’яті зайняло 2 хвилини, і швидкість падіння не було.
Ерік

0

Коли файл записується на диск, будь то флеш-накопичувач USB або жорсткий диск, дані НЕ / НІКОЛИ не читайте назад, щоб побачити, чи відповідає він. Це займе назавжди. перевірка запису проводиться апаратним забезпеченням (перевірка циклічної надмірності), і якщо виникає помилка, вона надсилається назад до програми із апаратного забезпечення виявленої помилки. Затримка, яка виникає і сповільнюється (навіть до паузи), викликається записом ЦП швидше, ніж пристрій може це впоратися. Ви не знайдете це з внутрішніми жорсткими дисками. Ви ніколи не побачите, що насправді відбувається в ОС Windows, але в Linux ви насправді можете побачити, що процесор призупиняється, поки апаратне забезпечення USB не скаже ОК, щоб продовжити


Різниця в швидкості запису різних пристроїв зберігання може бути надзвичайною, наприклад, порівняйте швидкість запису старої SD-карти з швидкістю запису на SATA III SSD.
карел

3
Будь ласка, утримуйтесь від особистих образ. Хоча ваша публікація може бути правильною, ви повинні відредагувати її, щоб відповідати нашим стандартам спільноти.
Бен N
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.