Когда я покупал свой первый NVMe на терабайт, я, как и многие, повелся на цифру на коробке — до 3500 мегабайт в секунду. Принес домой, воткнул в слот, запустил тест и увидел 3400. Радость была недолгой: стоило скопировать на него папку с фильмами и архивом фотографий гигабайт на сто пятьдесят, как скорость записи рухнула сначала до тысячи, а потом и вовсе до восьмисот мегабайт. Сначала я решил, что мне попался брак или перегретый экземпляр, но потом разобрался и понял: диск тут ни при чем, так работает почти любой современный накопитель.
Дело в том, что накопитель на самом деле не умеет писать быстро всегда. Внутри него стоят чипы памяти, которые в зависимости от типа хранят по два, три или четыре бита в одной ячейке — это MLC, TLC и QLC. Чем больше бит в ячейке, тем дешевле производство и тем больше объем, но тем медленнее и деликатнее запись. А вот один бит на ячейку — это SLC, самый быстрый и живучий режим. И контроллеру не обязательно иметь отдельные SLC-чипы: он умеет временно писать в часть обычных ячеек так, будто они однобитные.
SLC-кэш — это и есть та самая хитрость: часть массива памяти отдается под быстрый буфер. Когда диск новый и почти пустой, под кэш может уйти сто, сто пятьдесят, а то и двести гигабайт. Именно в этот момент вы видите на графике красивые три тысячи мегабайт и радуетесь результатам тестов. Но тесты обычно пишут файл на гигабайт-два, то есть проверяют только кэш и ничего больше. Я специально залил на диск файл на двести гигабайт и своими глазами увидел, как график падает с обрыва — ровно в тот момент, когда кэш заполнился.
Заполнился — и дальше начинается самое интересное. Свободного места в кэше больше нет, и контроллеру приходится в фоновом режиме перекладывать данные из быстрых однобитных ячеек в обычные трехбитные, освобождая кэш под новую порцию. Именно на эту перекладку и уходят те самые мегабайты, которых вам не хватает. У дешевых накопителей без собственной DRAM-памяти ситуация еще интереснее: там кэш динамический, и его размер зависит от того, сколько места вы оставили свободным. У меня при заполнении диска на восемьдесят процентов кэш сжался с полутора сотен гигабайт до каких-то тридцати, и обвал наступил уже через минуту копирования. Плюс никто не отменял троттлинг: мой накопитель под нагрузкой грелся до семидесяти с лишним градусов и сбрасывал скорость еще и по температуре.
Так что же делать, если вы купили накопитель и хотите получить от него максимум? Во-первых, не паниковать, если после копирования большой папки скорость просела: это нормальное поведение, а не поломка, и после паузы диск снова станет быстрым. Во-вторых, держите процентов пятнадцать-двадцать объема свободными — кэш напрямую зависит от свободного места, и забитый под завязку диск теряет скорость первым делом. В-третьих, обновите прошивку: производители регулярно переписывают алгоритмы работы кэша, и иной раз диск после обновления начинает вести себя заметно приятнее. И самое главное — читайте не только цифры максимальной скорости, но и результаты тестов на длительную запись, где заливают десятки и сотни гигабайт подряд.
Для повседневных задач, кстати, все это почти не важно. Система грузится, программы открываются, игры подгружают уровни, а вы сохраняете документ — все это короткие операции, которые целиком укладываются в кэш. Обвал скорости вы почувствуете только при переносе огромных объемов: монтаж видео, работа с большими базами, регулярные бэкапы. Если вы как раз из таких пользователей, смотрите на диски с памятью TLC и честно заявленной длительной скоростью записи, а не на самый дешевый QLC с красивой цифрой в маркетинговых материалах. Я, например, после своих экспериментов просто перестал забивать диск под горлышко и держу на видном месте заметку о том, сколько места должно оставаться свободным.
И знаете, что интересно? После всех этих опытов я стал любить свой накопитель даже больше. Он не обманывает, он просто честно работает по своим правилам, и когда понимаешь эти правила, взаимодействие становится предсказуемым. А у вас были истории, когда диск удивлял скоростью — или наоборот, внезапно сдавал позиции на середине копирования? Расскажите, какие накопители живут в ваших сборках, замечали ли вы просадки и как это решали — уверен, у форумчан найдется пара классных лайфхаков.
Дело в том, что накопитель на самом деле не умеет писать быстро всегда. Внутри него стоят чипы памяти, которые в зависимости от типа хранят по два, три или четыре бита в одной ячейке — это MLC, TLC и QLC. Чем больше бит в ячейке, тем дешевле производство и тем больше объем, но тем медленнее и деликатнее запись. А вот один бит на ячейку — это SLC, самый быстрый и живучий режим. И контроллеру не обязательно иметь отдельные SLC-чипы: он умеет временно писать в часть обычных ячеек так, будто они однобитные.
SLC-кэш — это и есть та самая хитрость: часть массива памяти отдается под быстрый буфер. Когда диск новый и почти пустой, под кэш может уйти сто, сто пятьдесят, а то и двести гигабайт. Именно в этот момент вы видите на графике красивые три тысячи мегабайт и радуетесь результатам тестов. Но тесты обычно пишут файл на гигабайт-два, то есть проверяют только кэш и ничего больше. Я специально залил на диск файл на двести гигабайт и своими глазами увидел, как график падает с обрыва — ровно в тот момент, когда кэш заполнился.
Заполнился — и дальше начинается самое интересное. Свободного места в кэше больше нет, и контроллеру приходится в фоновом режиме перекладывать данные из быстрых однобитных ячеек в обычные трехбитные, освобождая кэш под новую порцию. Именно на эту перекладку и уходят те самые мегабайты, которых вам не хватает. У дешевых накопителей без собственной DRAM-памяти ситуация еще интереснее: там кэш динамический, и его размер зависит от того, сколько места вы оставили свободным. У меня при заполнении диска на восемьдесят процентов кэш сжался с полутора сотен гигабайт до каких-то тридцати, и обвал наступил уже через минуту копирования. Плюс никто не отменял троттлинг: мой накопитель под нагрузкой грелся до семидесяти с лишним градусов и сбрасывал скорость еще и по температуре.
Так что же делать, если вы купили накопитель и хотите получить от него максимум? Во-первых, не паниковать, если после копирования большой папки скорость просела: это нормальное поведение, а не поломка, и после паузы диск снова станет быстрым. Во-вторых, держите процентов пятнадцать-двадцать объема свободными — кэш напрямую зависит от свободного места, и забитый под завязку диск теряет скорость первым делом. В-третьих, обновите прошивку: производители регулярно переписывают алгоритмы работы кэша, и иной раз диск после обновления начинает вести себя заметно приятнее. И самое главное — читайте не только цифры максимальной скорости, но и результаты тестов на длительную запись, где заливают десятки и сотни гигабайт подряд.
Для повседневных задач, кстати, все это почти не важно. Система грузится, программы открываются, игры подгружают уровни, а вы сохраняете документ — все это короткие операции, которые целиком укладываются в кэш. Обвал скорости вы почувствуете только при переносе огромных объемов: монтаж видео, работа с большими базами, регулярные бэкапы. Если вы как раз из таких пользователей, смотрите на диски с памятью TLC и честно заявленной длительной скоростью записи, а не на самый дешевый QLC с красивой цифрой в маркетинговых материалах. Я, например, после своих экспериментов просто перестал забивать диск под горлышко и держу на видном месте заметку о том, сколько места должно оставаться свободным.
И знаете, что интересно? После всех этих опытов я стал любить свой накопитель даже больше. Он не обманывает, он просто честно работает по своим правилам, и когда понимаешь эти правила, взаимодействие становится предсказуемым. А у вас были истории, когда диск удивлял скоростью — или наоборот, внезапно сдавал позиции на середине копирования? Расскажите, какие накопители живут в ваших сборках, замечали ли вы просадки и как это решали — уверен, у форумчан найдется пара классных лайфхаков.