Обчислення часу читання моделі блоку жорсткого диска


8

Мій професор розмістив слайд про те, як обчислити пошук даних з жорсткого диска за допомогою блок-моделі. Технічні характеристики:

  • 7200 об / хв
  • 5мс SEEK
  • 80 МБ / с ШТ. ТРАНСФЕРУ
  • БЛОК МОДЕЛЬ: Розмір блоку 4 КБ

Я не розумію, як він зробив наступний розрахунок або звідки взялися деякі цифри:

5ms + 1000/240 ms + 0,05ms = 9,216ms для блоку читання.

Хто-небудь може сказати мені, звідки взялися 1000/240 мс та 0,05 мс?

EDIT: Якщо цифри трапилися зовсім неправильно, як би ви це зробили тоді?


Є три компоненти. Час пошуку, час обертання даних під головою зчитування (він приймає половину повного часу обертання як середній) та час передачі.
Девід Маршалл

Насправді є четвертий компонент, "час передачі" - це дві різні операції, що не перетинаються. Спочатку є читання з тарілки до сектору буфера. Потім є ще одна передача з сектора буфера на хост через інтерфейс диска (наприклад, SATA). Існує поширена помилка, що ці два передачі можуть відбуватися одночасно; вони не можуть. Дані сектора повинні бути перевірені після того, як вони були прочитані та перед тим, як надсилатися хосту. @Hennes згадує це як частину проігнорованих елементів.
тирса

Слідкуйте за тим, що тонші точки пошуку часу погано розуміються майже всіма. Час пошуку - це не лінійна функція, а крива на основі кількості циліндрів. Шукання (за допомогою приводу голосової котушки) складається з фази прискорення і фази уповільнення, а коли пошук триває досить довго, фази максимальної швидкості між ними. Середній час пошуку має бути зваженим , щоб врахувати тільки 2 можливих повний хід шукає , але 2 * (NCYL-1) однопутной прагне, 2 * (NCYL-2) 2-трековий шукає ... і NCYL «шукає» нульового часу, коли не потрібно рухатись головою.
тирса

Відповіді:


11

Диск, про який йде мова, має швидкість передачі даних 80 МіБ / с, або 81920 кіБ / с, або 20480 блоків / с. Тут ми округлимо до 20 000 блоків на секунду, оскільки це, мабуть, зробив ваш професор. Це дорівнює 0,05 мс для передачі блоку, пояснюючи останній член у рівнянні.

Нарешті, окрім того, щоб шукати час (час для переміщення головки приводу на доріжку), існує ще й затримка обертання самого диска, з якою потрібно боротися. При 7200 об / хв, в гіршому випадку, нам доводиться чекати 1 повний оберт, але в середньому ми повинні чекати пів-обороту - або 4,166 мс (7200 об / хв = 120 об / сек = 8,333 мс / об.).

Таким чином, щоб перенести один блок на комп’ютер, ми повинні зачекати еквівалент Seek Time+ Rotational Latency+ Transfer Time:

5 ms + 4.166 ms + 0.05 ms = 9.216 ms

Зауважте, що для твердотільних накопичувачів, хоча не враховується затримка обертання, безумовно, все ще є вимірний час пошуку (для фактичного вирішення вмісту секторів у флеш-пам’яті) та часу передачі (значною мірою обмежений шиною використовується для передачі самих даних, наприклад SATA).

Таким чином, загалом загальний час доступу для читання одного сектору для накопичувача становить (нехтування програмним забезпеченням):

Rotational/Hard Drive:  Seek Time + Rotational Latency + Transfer Time

Solid-State Drive:      Seek Time + Transfer Time

5

Час пошуку 5 мс - це час, коли жорсткий диск перемістить голову в потрібне русло (і вибрати правильну голову, те, що також потребує часу, але що ваш професор проігнорував).


Після того, як голова перейде на правильну колію, їй потрібно дочекатися, коли правий сектор пройде під головкою П / Ш. Нам відомо, що це привід 7200 об / хв. Це означає:

  • У гіршому випадку дані, щойно передані, повинні чекати повного обертання.
  • У кращому випадку сектор даних щойно прийшов. Всі радіють.
  • У середньому випадку приводу потрібно почекати половину обертання.

Щоб отримати час для повного обертання диска на 7200 об / хв:

  • 7200 обертання в хвилину (ака 7200 об / хв)
  • Або 7200/60 разів за секунду.
  • Або 120 разів за секунду.
  • Або одне обертання займає 1 / 120 - ту секунду.
  • Що становить 8,3 мс

Таким чином , половина обертання повинна буде взяти половину того часу, 1 / 240 - ї секунди.

1 секунда - 1000 мс

Це ваші 1000 / 240 мс.


Все це час, поки накопичувач може почати читати дані. Потрібно буде прочитати його та передати хосту.

Читання з диска, як правило, набагато швидше, ніж передача його, тому я збираюся зосередитись на повільній частині:

Дано:

1) 80 МБ / с ШТ. ТРАНСФЕРУ
2) МОДЕЛЬ БЛОКУ: Розмір блоку 4 КБ

  • 80 МіБ за одну секунду, або 80 * 1024 Кбайт одну секунду, або 4 * 20 * 1024 Кбайт / секунду.
  • Розділити на 20480.
  • 4 КБ на 1 / 20480 - ту секунду.
  • Або 0,488281 мс, що є вашими останніми 0,05 мс .


Зауважте, що ця відповідь ігнорує:

  1. накопичувачеві потрібно прочитати дані, перш ніж він зможе їх передати, це зробить його трохи повільніше.
  2. Але немає інформації про те, як швидко дані зчитуються з тарілки. (це питання швидкості обертання, довжини даних, що підлягають зчитанню, довжини даних контрольної суми та міжгалузевих прогалин. (4KiB може бути 8 читанням "Заголовок | даних | контрольна сума | розрив") або одного зчитування.
  3. Він також ігнорує, що дані, можливо, вже є в кеші диска.
  4. І передбачається, що обчислення контрольної суми не займає часу.

Це, мабуть, перший раз, коли я бачив правильну згадку про час передачі диска, який розрізняє читання платівки та передачу інтерфейсу. "Контрольна сума" - це дійсно Кодекс виправлення помилок (ECC), який може виявити та виправити коротку помилку прориву.
тирса
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.