[Перевод] Чему нас может научить старая реклама жёстких дисков

Реклама старого компьютерного железа, и особенно жёстких дисков, часто встречается в забавных постах на компьютерных форумах и в нёрдской части Интернета1. Например, пару дней назад Гленн Локвуд опубликовал твит с этой старой рекламой:

По крайней мере, это не реклама HAMR-диска. 10 тысяч долларов по сегодняшним ценам.

Очевидно, что в начале 80-х эти диски обеспечивали скорость поиска 70 мс, скорости доступа порядка 900 КБ/с и объём до 10 МБ. Смехотворно, не правда ли? Но в то же время подобные рекламные объявления скрывают в себе намёки на очень важные тенденции, как ничто другое способные объяснить дизайн систем. Чтобы понять, что происходит, сравним этот дряхлый 10-мегабайтный диск с современным. Большинство потребителей уже не покупает магнитные диски, поэтому для сравнения возьмём ещё и SSD.

XCOMP 10MB Современный HDD Изменение Современный SSD Изменение
Объём 10 МБ 18 ТБ В 1,8 миллиона раз 2 ТБ В 200 000 раз
Задержки 70 мс 5 мс В 14 раз 50 мкс В 1400 раз
Пропускная способность 900 КБ/с 220 МБ/с В 250 раз 3000 МБ/с В 3300 раз
IOPS/ГиБ (QD1) 1400 0,01 В 0,00007 раз 10 В 0,007 раз

Или около того2. Начнём с магнитного диска: мы получили ОГРОМНЫЙ рост объёма хранения, большой рост пропускной способности, скромное снижение задержек и значительное снижение операций произвольного ввода-вывода на единицу хранения. Вас может это удивить, но SSD, несмотря на гораздо более высокую скорость, по всем аспектам вполне вписывается в общую тенденцию.

Это наблюдение ни в коей мере не является новым. 15 лет назад великий Джим Грей сказал «диск — это лента». Дэвид Паттерсон (ну знаете, лауреат премии Тьюринга, один из изобретателей RISC, и т.д.) написал в 2004 году великолепную статью Latency Lags Bandwidth, в которой сделал то же самое наблюдение. Он писал:

Меня поразило, что во многих технологиях наблюдается одинаковая тенденция: пропускная способность повышается гораздо быстрее, чем снижаются задержки.

и

За время, когда пропускная способность успела удвоиться, задержки снизились не больше, чем на коэффициент 1,2-1,4.

Может показаться, что разница не так велика, но помните, что мы говорим здесь об экспоненциальном росте, а это такая штука, которая взорвёт вам мозг. Если перемножить замеченную Паттерсоном тенденцию, то к тому времени, когда пропускная способность увеличится в 1000 раз, задержки снизятся всего в 6-30 раз. Примерно то же мы видим и в таблице: повышение пропускной способности в 250 раз и снижение задержек в 14 раз. Снижение задержек отстаёт от роста пропускной способности. Пропускная способность отстаёт от объёма.

Можно рассмотреть это на примере длительности считывания всего диска целиком последовательным потоком путём чтения произвольных блоков по 4 КБ. С диском 1980-х это заняло бы примерно 3 минуты. SSD потребовалось бы около 8 часов. Современному жёсткому диску потребуется около 10 месяцев. Ни для кого не является неожиданностью, что произвольный ввод-вывод небольшого объёма данных является медленным, но не каждый понимает, насколько он медленный. И эта проблема становится всё серьёзнее экспоненциальными темпами.

Ну и что с того?

Каждая создаваемая людьми система, хранящая своё состояние, имеет определённый компромисс между задержками, пропускной способностью и затратами на хранение. Например, стирающее кодирование 4+1 в стиле RAID5 позволяет системе пережить потерю одного диска. 2-replication может делать то же самое, но с увеличением в 1,6 затрат на хранение и с уменьшением до 2/5 затрат IOPS. Журналируемые базы данных, файловые системы и форматы файлов делают предположения о стоимости хранения, пропускной способности и произвольного доступа. Изменение соотношения между параметрами оборудования требует перепроектирования таких систем для соответствия параметрам нового оборудования: вчерашние ПО и методики просто не так эффективны, как сегодняшние системы.

Ещё один важный аспект — параллельность. Я немного сжульничал, выбрав использование QD1. Это очередь глубиной в единицу. Отправляем запрос ввода-вывода, ждём завершения операции, отправляем следующий. Реальные устройства хранения способны на большее, если одновременно передавать им несколько запросов ввода-вывода. Жёсткие диски работают быстрее благодаря трюкам с планированием, позволяющим им сначала обрабатывать «ближние» операции ввода-вывода. Операционные системы уже давно выполняли планирование ввода-вывода, а в последние два десятка лет диски стали достаточно умными, чтобы делать это самостоятельно. С другой стороны, SSD имеют реальную внутреннюю параллельность, потому что они не ограничены физическими головками чтения-записи. Благодаря большому количеству одновременных операций ввода-вывода в SSD производительность может повыситься аж в 50 раз. В 80-х годах параллельность ввода-вывода не имела значения, но сегодня она чрезвычайно важна.

Из этого практикующий проектировщик систем может сделать два вывода. Во-первых, стоит уделять внимание тенденциям развития оборудования. Будьте всегда любопытными и время от времени обновляйте собственные внутренние константы. Экспоненциальный рост может означать, что ваша мысленная модель производительности «железа» может быть совершенно ошибочной, даже если она устарела всего на пару лет. Во-вторых, дизайн систем устаревает. Компромиссы в реальном мире меняются, как по описанным причинам, так и по многим другим. Структуры данных и стратегии их хранения, описанные в вашем любимом учебнике, скорее всего, не пережили проверку временем. API ввода-вывода POSIX уж точно её не пережил.

Примечания

  1. См., например, эту тему на Reddit, форумы unraid, этот сайт, и так далее. Информация есть повсюду.
  2. Я взял эти числа из головы, но думаю, что они более-менее соответствуют современным распространённым NVMe и магнитным дискам корпоративного уровня.


На правах рекламы

Эпичные серверы — это быстрые VDS с мощными процессорами семейства AMD EPYC и надёжным дисковым хранилищем на основе NVMe дисков Intel. Каждый может создать тариф под себя!

[Перевод] Чему нас может научить старая реклама жёстких дисков

 

Источник

hdd, SSD, жёсткие диски, накопители

Читайте также