46

Что не так с моей скоростью на 4К? Почему это так медленно? Или так должно быть?

Скриншот теста

С этой скоростью все в порядке? Почему у меня такая низкая скорость на 4K?

3 ответа3

84

То, с чем вы сталкиваетесь, типично для механических жестких дисков, и одно из главных преимуществ SSD: жесткие диски имеют ужасную производительность произвольного доступа.

В CrystalDiskMark "Seq" означает последовательный доступ, в то время как "4K" означает произвольный доступ (порциями по 4 КБ за раз, потому что отдельные байты будут слишком медленными и нереальными 1).


Определения

Существует два основных способа доступа к файлу.

Последовательный доступ

Последовательный доступ означает, что вы читаете или пишете файл более или менее один байт за другим. Например, если вы смотрите видео, вы должны загрузить видео от начала до конца. Если вы загружаете файл, он загружается и записывается на диск от начала до конца.

С точки зрения диска, он видит такие команды, как «чтение блока № 1, чтение блока № 2, чтение блока № 3, чтение блока байтов № 4» 1.

Произвольный доступ

Произвольный доступ означает, что нет никаких очевидных закономерностей для чтения или записи. Это не должно означать действительно случайный; это действительно означает "не последовательно". Например, если вы запускаете много программ одновременно, им нужно будет прочитать много файлов, разбросанных по вашему диску.

С точки зрения привода, он видит такие команды, как «чтение блока № 56, чтение блока № 5463, чтение блока № 14, чтение блока № 5»

Блоки

Я упоминал блоки пару раз. Поскольку компьютеры работают с такими большими размерами (1 МБ ~ = 1000000 B), даже последовательный доступ неэффективен, если вам нужно запрашивать диск для каждого отдельного байта - слишком много болтовни. На практике операционная система запрашивает блоки данных с диска одновременно.

Блок - это просто диапазон байтов; например, блок # 1 может быть байтами # 1- # 512, блок # 2 может быть байтами # 513- # 1024 и т. д. Эти блоки имеют размер 512 байт или 4096 байт, в зависимости от накопителя. Но даже после работы с блоками, а не с отдельными байтами, последовательный блочный доступ быстрее, чем произвольный блочный доступ.


Спектакль

последовательный

Последовательный доступ обычно быстрее, чем произвольный доступ. Это связано с тем, что последовательный доступ позволяет операционной системе и диску предсказать, что будет необходимо дальше, и заранее загрузить большой кусок. Если вы запросили блоки «1, 2, 3, 4», ОС может догадаться, что вам нужно «5, 6, 7, 8», поэтому она сообщает накопителю «1, 2, 3, 4». , 5, 6, 7, 8 "за один раз. Аналогично, накопитель может считывать данные с физической памяти за один раз, а не «искать 1, читать 1,2,3,4, искать 5, читать 5,6,7,8».

О, я упоминал, что стремился к чему-то. Механические жесткие диски имеют очень медленное время поиска из-за того, как они физически расположены: они состоят из множества тяжелых металлизированных дисков, вращающихся вокруг, с физическими руками, перемещающимися вперед и назад для чтения диска. Вот видео открытого HDD, где вы можете увидеть вращающиеся диски и движущиеся руки.

Схема внутренних жестких дисков
Изображение с http://www.realtechs.net/data%20recovery/process2.html

Это означает, что в любой момент времени может быть прочитан только бит данных под головкой на конце плеча. Привод должен ждать две вещи: он должен ждать, пока рычаг переместится к правому кольцу ("дорожке") диска, а также должен дождаться вращения диска, чтобы необходимые данные находились под чтением голова. Это известно как поиск 2. Как вращающемуся, так и движущемуся оружию требуется физическое время для движения, и они не могут быть значительно ускорены без риска повреждения.

Обычно это занимает очень много времени, намного дольше, чем фактическое чтение. Мы говорим> 5 мс просто для того, чтобы добраться туда, где живет запрошенный байт, в то время как фактическое чтение байта в среднем составляет около 0,00000625 мс на последовательное чтение байтов (или 0,003125 мс на блок 512 В).

случайный

Случайный доступ, с другой стороны, не имеет такого преимущества предсказуемости. Поэтому, если вы хотите прочитать 8 случайных байтов, возможно, из блоков «8,34,76,996,112,644,888,341», диск должен пойти «искать 8, читать 8, искать 34, читать 34, искать 76, читать 76, ...» , Заметьте, как нужно искать каждый отдельный блок? Вместо среднего значения 0,003125 мс на последовательный блок 512 В теперь оно составляет в среднем (5 мс поиска + 0,003125 мс считывания) = 5,003125 мс на блок. Это много, много раз медленнее. Фактически, в тысячи раз медленнее.

SSD-накопители

К счастью, у нас есть решение: твердотельные накопители.

Твердотельный накопитель, как следует из названия, является твердотельным. Это означает, что у него нет движущихся частей. Более того, способ размещения SSD означает, что (фактически 3) нет необходимости искать местоположение байта; это уже знает. Вот почему SSD имеет гораздо меньший разрыв в производительности между последовательным и произвольным доступом.

Разрыв все еще существует, но это можно объяснить тем, что он не может предсказать, что будет дальше, и предварительно загрузить эти данные до того, как они будут запрошены.


1 Точнее, с дисками LBA адресуются блоки 512 байт (512n/512e) или 4kB (4Kn) по соображениям эффективности. Кроме того, реальным программам почти никогда не требуется всего один байт за раз.

2 Технически, поиск относится только к перемещению руки. Ожидание вращения данных под головкой - это задержка вращения в верхней части времени поиска.

3 Технически, у них есть таблицы поиска и их переназначение по другим причинам, например, выравнивание износа, но они совершенно незначительны по сравнению с HDD ...

2

Как уже указывалось в других ответах, "4K" почти наверняка относится к произвольному доступу в блоках размером 4 КиБ.

Каждый раз, когда жесткий диск (не SSD) запрашивается для чтения или записи данных, возникают две значительные задержки:

  • Задержка поиска для считывающей / пишущей головки для "поиска" правильной круговой дорожки (или "цилиндра") на блюде, включая любое время, необходимое для того, чтобы головка стабилизировалась на дорожке и синхронизировалась с данными, хранящимися на блюде
  • Задержка вращения для вращения вращающегося диска под головкой чтения / записи так, что желаемая часть дорожки ("сектор") проходит под головкой

Оба из них имеют относительно постоянное количество времени для любого данного диска. Задержка поиска зависит от того, насколько быстро может быть перемещена головка и насколько далеко она должна быть перемещена, а задержка вращения зависит от скорости вращения диска. Более того, они не сильно изменились за последние несколько десятилетий. Производители фактически использовали среднее время поиска, например, в рекламных объявлениях; они в значительной степени прекратили это делать, когда в этом районе было мало или вообще не было развития. Ни один производитель, особенно в условиях высокой конкуренции, не хочет, чтобы его продукция выглядела не лучше, чем у конкурентов.

Типичный настольный жесткий диск вращается со скоростью 7200 об / мин, тогда как обычный ноутбук может вращаться со скоростью около 5000 об / мин. Это означает, что каждую секунду он совершает 120 оборотов (настольный диск) или около 83 оборотов (ноутбук). Поскольку в среднем диск должен вращаться на пол оборота, прежде чем требуемый сектор пройдет под головкой, это означает, что мы можем ожидать, что диск сможет обслуживать примерно вдвое больше запросов ввода-вывода в секунду, предполагая, что

  • либо поиск выполняется во время вращения диска (сегодня это, вероятно, безопасная ставка для жестких дисков, где ввод-вывод включает поиск), и задержка поиска не больше, чем задержка вращения для конкретного ввода-вывода
  • или головка оказывается уже над правильным цилиндром, в результате чего привод не должен искать (что является частным случаем вышеупомянутого, с задержкой поиска, равной нулю)

Таким образом, мы должны ожидать, что сможем выполнять порядка 200 операций ввода-вывода в секунду, если данные, к которым они запрашивают доступ (для чтения или записи), физически относительно локализованы, в результате чего задержка вращения является ограничивающим фактором. В общем случае мы ожидаем, что диск сможет работать на уровне порядка 100 операций ввода-вывода в секунду, если данные распределены по пластине или пластинам, что требует значительного поиска и приводит к тому, что задержка поиска является ограничивающим фактором , С точки зрения хранения, это «производительность IOPS » жесткого диска; это, а не производительность последовательного ввода-вывода, обычно является ограничивающим фактором в реальных системах хранения. (Это основная причина, по которой твердотельные накопители используются намного быстрее: они устраняют задержку вращения и значительно уменьшают задержку поиска, поскольку физическое движение головки чтения / записи становится поиском таблиц в таблицах слоев отображения флэш-памяти, которые хранятся в электронном виде.)

Запись обычно медленнее, когда происходит очистка кэша. Обычно операционные системы и жесткие диски пытаются переупорядочить произвольные записи, чтобы превратить произвольный ввод-вывод в последовательный ввод-вывод, где это возможно, для повышения производительности. Если существует явный барьер очистки или записи в кэш, эта оптимизация исключается с целью обеспечения того, чтобы состояние данных в постоянном хранилище соответствовало тому, что ожидает программное обеспечение. По сути, те же рассуждения применимы при чтении, когда дисковый кэш не задействован, либо потому, что его нет (сегодня это редко встречается в настольных системах), либо потому, что программное обеспечение намеренно обходит его (что часто делается при измерении производительности ввода-вывода). Оба из них снижают максимальную потенциальную производительность IOPS до более пессимистичного случая или 120 IOPS для привода со скоростью 7200 об / мин.

  • При 100 IOPS при 4 КиБ на ввод / вывод мы получаем производительность около 400 КБ / с.
  • При 200 IOPS при 4 КиБ на ввод / вывод мы получаем производительность около 800 КБ / с.

Которые просто так совпадают с вашими цифрами почти точно. Случайный ввод / вывод с небольшими размерами блоков является абсолютным фактором снижения производительности для ротационных жестких дисков, поэтому он также является важным показателем.

Что касается чисто последовательного ввода-вывода, пропускная способность в диапазоне 150 МБ / с вовсе не является необоснованной для современных вращающихся жестких дисков. Но очень мало реальных операций ввода-вывода строго последовательны, поэтому в большинстве ситуаций чисто последовательная производительность ввода-вывода становится скорее академическим упражнением, чем показателем реальной производительности.

2

4K относится к случайному вводу / выводу. Это означает, что диск запрашивается для доступа к небольшим блокам (размером 4 КБ) в случайных точках в тестовом файле. Это слабость жестких дисков; возможность доступа к данным в разных областях диска ограничена скоростью вращения диска и скоростью перемещения головок чтения-записи. Последовательный ввод / вывод, когда осуществляется доступ к последовательным блокам, намного проще, потому что привод может просто читать или записывать блоки, когда диск вращается.

Твердотельный накопитель (SSD) не имеет такой проблемы со случайным вводом / выводом, поскольку все, что ему нужно сделать, это посмотреть, где данные хранятся в основной памяти (обычно флэш-память NAND, может быть 3D XPoint или даже DRAM), и прочитать или запишите данные в соответствующем месте. Твердотельные накопители являются полностью электронными и не нуждаются в ожидании на вращающемся диске или движущейся головке чтения-записи для доступа к данным, что делает их намного быстрее, чем жесткие диски в этом отношении. Именно по этой причине обновление до SSD значительно повышает производительность системы.

Примечание: производительность последовательного ввода-вывода на SSD часто намного выше, чем на жестком диске. Типичный SSD имеет несколько чипов NAND, подключенных параллельно к контроллеру флэш-памяти, и может получать к ним доступ одновременно. Распределяя данные по этим чипам, достигается расположение дисковода, похожее на RAID 0, что значительно повышает производительность. (Обратите внимание, что многие более новые диски, особенно более дешевые, используют тип NAND, называемый TLC NAND, который имеет тенденцию быть медленным при записи данных. Диски с TLC NAND часто используют небольшой буфер с более быстрым NAND, чтобы обеспечить более высокую производительность для меньших операций записи, но могут резко замедлиться после заполнения этого буфера.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .