Что не так с моей скоростью на 4K? Почему это так медленно? Или так должно быть?
С этой скоростью все в порядке? Почему у меня такая низкая скорость на 4K?
Что не так с моей скоростью на 4K? Почему это так медленно? Или так должно быть?
С этой скоростью все в порядке? Почему у меня такая низкая скорость на 4K?
Ответы:
То, с чем вы сталкиваетесь, типично для механических жестких дисков, и одно из главных преимуществ 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 ...
Notice how it needs to look for every single byte?
заменить byte
на block
(и соответственно изменить пример). Накопитель ищет часть 4k (которая может быть в дальнейшем разбита на 512-байтовый фрагмент, но не ниже этого. Он не ищет между каждым байтом! Он ищет между каждым блоками, если следующий блок не сразу (что часто случается при фрагментированные диски). И поиск (перемещение головы вокруг диска и ожидание прохождения блока под ним) - это то, что занимает очень много времени (несколько миллисекунд)
Как уже указывалось в других ответах, «4K» почти наверняка относится к произвольному доступу в блоках размером 4 КиБ.
Каждый раз, когда жесткий диск (не SSD) запрашивается для чтения или записи данных, возникают две значительные задержки:
Оба из них имеют относительно постоянное количество времени для любого данного диска. Задержка поиска зависит от того, насколько быстро может быть перемещена головка и как далеко она должна быть перемещена, а задержка вращения - от скорости вращения диска. Более того, они не сильно изменились за последние несколько десятилетий. Производители фактически использовали среднее время поиска, например, в рекламных объявлениях; они в значительной степени прекратили это делать, когда в этом районе было мало или вообще не было развития. Ни один производитель, особенно в условиях высокой конкуренции, не хочет, чтобы его продукция выглядела не лучше, чем у конкурентов.
Типичный настольный жесткий диск вращается со скоростью 7200 об / мин, тогда как обычный ноутбук может вращаться со скоростью около 5000 об / мин. Это означает, что каждую секунду он совершает 120 оборотов (настольный диск) или около 83 оборотов (ноутбук). Поскольку в среднем диск должен вращаться на пол оборота, прежде чем требуемый сектор пройдет под головкой, это означает, что мы можем ожидать, что диск сможет обслуживать примерно вдвое больше запросов ввода-вывода в секунду, предполагая, что
Таким образом, мы должны ожидать, что сможем выполнять порядка 200 операций ввода-вывода в секунду, если данные, к которым они запрашивают доступ (для чтения или записи), физически относительно локализованы, в результате чего задержка вращения является ограничивающим фактором. В общем случае мы ожидаем, что диск сможет работать на уровне порядка 100 операций ввода-вывода в секунду, если данные распределены по пластине или пластинам, что требует значительного поиска и приводит к тому, что задержка поиска является ограничивающим фактором. , С точки зрения хранения, это « IOPSпроизводительность »жесткого диска; это, а не производительность последовательного ввода-вывода, как правило, является ограничивающим фактором в реальных системах хранения. (Это главная причина, по которой твердотельные накопители используются намного быстрее: они устраняют задержку вращения и значительно уменьшает задержку поиска, так как физическое движение головки чтения / записи становится поиском в таблицах слоев флэш-карт, которые хранятся в электронном виде.)
Запись обычно медленнее, когда происходит очистка кэша. Обычно операционные системы и жесткие диски пытаются переупорядочить произвольные записи, чтобы превратить произвольный ввод-вывод в последовательный ввод-вывод, где это возможно, для повышения производительности. Если существует явный барьер очистки или записи в кэш , эта оптимизация исключается с целью обеспечения того, чтобы состояние данных в постоянном хранилище соответствовало тому, что ожидает программное обеспечение. По сути, те же рассуждения применимы при чтении, когда не задействован дисковый кеш, либо потому, что его нет (сегодня это не так часто встречается в настольных системах), либо потому, что программное обеспечение намеренно обходит его (что часто делается при измерении производительности ввода-вывода). Оба из них снижают максимальную потенциальную производительность IOPS до более пессимистичного случая или 120 IOPS для привода со скоростью 7200 об / мин.
Которые просто так совпадают с вашими числами почти точно. Случайный ввод / вывод с небольшими размерами блоков является абсолютным фактором снижения производительности для ротационных жестких дисков, поэтому он также является важным показателем.
Что касается чисто последовательного ввода-вывода, пропускная способность в диапазоне 150 МБ / с вовсе не является необоснованной для современных вращающихся жестких дисков. Но очень мало реальных операций ввода-вывода строго последовательны, поэтому в большинстве ситуаций чисто последовательная производительность ввода-вывода становится скорее академическим упражнением, чем показателем реальной производительности.
4K относится к случайному вводу / выводу . Это означает, что диск запрашивается для доступа к небольшим блокам (размером 4 КБ) в случайных точках в файле теста. Это слабость жестких дисков; возможность доступа к данным в разных областях диска ограничена скоростью вращения диска и скоростью перемещения головок чтения-записи. Последовательный ввод / вывод , когда осуществляется доступ к последовательным блокам, намного проще, потому что привод может просто читать или записывать блоки, когда диск вращается.
Твердотельный накопитель (SSD) не имеет такой проблемы со случайным вводом / выводом, так как все, что ему нужно сделать, это посмотреть, где данные хранятся в основной памяти (обычно флэш-память NAND, может быть 3D XPoint или даже DRAM) и прочитать или запишите данные в соответствующем месте. Твердотельные накопители являются полностью электронными и не нуждаются в ожидании на вращающемся диске или движущейся головке чтения-записи для доступа к данным, что делает их намного быстрее, чем жесткие диски в этом отношении. Именно по этой причине обновление до SSD значительно повышает производительность системы.
Примечание: производительность последовательного ввода-вывода на SSD часто намного выше, чем на жестком диске. Типичный SSD имеет несколько чипов NAND, подключенных параллельно к контроллеру флэш-памяти, и может получать к ним доступ одновременно. Распределяя данные по этим чипам, достигается расположение дисковода, похожее на RAID 0, что значительно повышает производительность. (Обратите внимание, что многие новые накопители, особенно более дешевые, используют тип NAND, называемый TLC NAND, который имеет тенденцию быть медленным при записи данных. Диски с TLC NAND часто используют небольшой буфер с более быстрым NAND, чтобы обеспечить более высокую производительность для небольших операций записи, но могут резко замедлиться, как только этот буфер заполнится.)