Комментарии 37
Так mmap использует внутри тот же механизм: page fault при отсутствии данных, распределение памяти, чтение. Да и с асинхронностью тут туго. Когда-то много лет назад, в эпоху hdd, впервые узнав про mmap, я провёл серию тестов и пришёл к выводу что по крайней мере на линейном чтении mmap не быстрее стандартных api.
Прямо сейчас я работаю на ноутбуке с 5400.
У меня тормозит браузер + IDE. В IDE работать можно только приняв дозу успокоительного.

Имхо, для десктопных приложений корректная работа с IOPS не должна рассчитывать только на NVMe.

Ну уж в ноут-то можно поставить SSD. Это десктопы ретрограды вроде меня набивают многотерабайтниками на все слоты и порты, а в ноуте у SSD минусов нет.

Я не железячник. Я ни разу не разбирал свой ноут за 10 лет его службы.
Я ПК то стационарный собираю кнопками в интернет магазине.

Но в целом, когда в очередной раз всё колом встает, я склоняюсь к мысли, что возможно стоит поставить туда SSD =)
Неужели даже друга-компьютерщика нет, что вы десять лет мучаетесь?
Обычно я просто кладу ноут на полку до след. раза =)

Впрочем, судя по переписке — это странно? Он у меня больше для игр\видосиков был взят в своё время, с этими задачами он справляется до сих пор.

Грузить ОС с HDD в 2020 это очень странно. Если совсем нету 5 тысяч рублей, я не осуждаю, но если хоть где-то завалялись, то SSD — самый нужный и самый заметный апгрейд из всех возможных.

ОС грузится один раз, иногда один раз за неделю. Смысл это то ускорять?

Дело не только в старте ОС, но и в запуске программ, переключении режимов в этих программах, общей отзывчивости системы.
Я недавно год пропользовался ноутом с HDD (да, тоже со спящим режимом), прежде чем дошли руки апгрейднуть. Я знаю, о чём я говорю.

Вы правда за 10 лет ни разу не сидели за компом с ССД? Это же небо и земля. Я себе купил первый ССД те же 10 лет назад ажно за 10500 ещё тех рублей 80 гб, и ни разу не пожалел об приобретении, хотя я нищеброд из палаты мер и весов.
Есть у меня мощный стационарник с SSD. Только вот в кейсах со старыми игрушками или при просмотре фильмов-сериалов-ютуба — разницы нет.

Единственный реальный кейс, когда разница ощутима — чортовы исходники и все эти оптимизации для поиска по ним =)
Если говорите, что ноут для старых игров и фильмов — то откуда там IDE берется? А если ноут для IDE — поставитье SSD туда, и всё. Спор «как бы мне так сделать, чтобы ничего не делать, но стало хорошо».
Ну, иногда нужно быстро поправить код, а ты не дома.
IDE там запускается редко.
Ещё года 2-3 назад, я бы с вами согласился. На рабочем компе с SSD загружалась быстрее ОС и IDE, но работа приложений была практически одинаковой. Но на сегодняшний день, те же самые приложения, только с актуальной версией работают с задержкой доставляющий дискомфорт. Банальный вызов контекстного меню в Intellij в определённых ситуациях занимает 5+ секунд, повторный вызов мгновенно, как в старые добрые времена.

За 10 лет вы ноут ни разу не обслуживали?
Там же могут и диск заменить.


Боюсь спросить — в машину бензин заливаете, пепельницы высыпаете или меняете авто при переполнении? )

Вы десять лет страдаете зря. Это прямо больно слышать.


90% вероятности, что ваш ноутбук можно открыть одной отвёрткой филипс (мелкой крестовой), найти жесткий диск не составит труда, а приличный SATA SSD на полтерабайта стоит 3500рублей. Итого 10 минут и 50 долларов, чтобы больше никогда не ждать IDE. Хотя по вашим другим комментариям можно сделать вывод, что основной у вас другой компьютер, тогда может быть пофиг.

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

Так речь о десятилетнем ноутбуке :) Современный неразборный с такой же большой вероятностью уже и будет с ССД.

У меня два десятилетних Acer. Один "тонкий" (что даже RJ45 "раскладной"), второй — "толстячок". У обоих, для замены HDD надо последовательно: снять клавиатуру, отсоединить экран, разъединить корпус (на защёлках), отсоединить с десяток шлейфов от системной платы (на толстячке ещё и видеокарту демонтировать), извлечь системную плату из нижней половины корпуса — и только тогда откроется доступ к диску. Когда менял HDD на SSD, был близок к тому, чтобы попытаться разыскать авторов конструкции для эмоционального объяснения их неправоты.

SSD, тем более NVMe — это хорошо и нужно. Но ПО должно быть работоспособным даже если пользователь грузится с DVD или USB 2.0 флешки, а не то что HDD.

Не стоит забывать ещё и про облака, где IOPS-ы масштабируются в зависимости от размера диска. На тысячах IOPS новые красивые API превращаются в тыкву.

А что если размеры буферов на файлы просто уменьшать? В конечном итоге, вовсе не обязательно читать 4кб, на 1кб данных. ОС считывает данные по кластерам, кластер при форматировании можно установить и в 1кб и в 512 байт. Если работает кеш, то размер кеша тоже можно установить в минимум. Дисковый кеш ОС вообще можно отключить. Это даст прирост на описываемых вами задачах с произвольным доступом без изменения архитектуры?

Если вы живете в мире Optane и NVMe накопителей и думаете что везде так, то это заблуждение. Для примера посмотрите на скорости SSD дисков в Azure. Даже самые производительные и дорогие имеют скорость меньше 10к IOPS, если говорить о среднем сегменте(128-256ГБ), то вообще будет около 500-1000 IOPS. А на Ажур хостятся огромное число приложений.
Я правда сам не понимаю почему так(т.е. USB3 флешка работает быстрее) но эта данность времени.
docs.microsoft.com/en-us/azure/virtual-machines/disks-types#disk-size-1

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

Если речь про Azure, то «на всех уровнях» — это вряд ли: у MS асинхронный ввод/вывод и небуферезованные операции ввода/вывода были еще в самом первом ядре NT в далекие 90-е — видимо потому, что его делала команда разработчиков, пришедших с т.н. «мини-компьютеров» («мини» — это в сравнении с мейнфреймами, вообще-то это были устройства размерами со шкаф или комод) и принесшая оттуда тогдашние передовые разработки.
А вот что творится в слое виртуализации — про это я точно не скажу, особено учитывая, что в облаке все должно быть сильно оптимизировано в сторону снижения затрат.
Зато могу сказать про результат: сервер Exchange, который на земле неплохо живет и на обычных HDD на 7200 оборотов (в том числе и на виртуалке) — лишь бы они были отданы ему в эксклюзиве — в VM на Azure официально требует Premium Storage (т.е. вирутальные диски на базе SSD).
лишь бы они были отданы ему в эксклюзиве
вот видимо поэтому в облаке и требует SSD, т.к. хранилища шаредные, «отдать в эксклюзив» не получится.
Ну, пространство физического диска в виде одного виртуального отдать было бы одной VM несложно и в облаке. Но, полагаю, тут дело в другом — в дедупликации с целью экономии места. БД Exchange начиная с 2010 версии специально спроектирована на использование преимущественно последовательного (он же — линейный) доступа, то есть IOPSы как мера скорости произвольного доступа ей не особо нужны. В частности, если в прежних версиях Exchange хранил только одну копию вложенения для всех писем в БД его содержащих (такая вот внутренняя дедупликация на уровне приложения), то начиная с 2010 он хранит копию вложения для каждого письма вместе с письмом — чтобы их можно было прочитать, не перемещая блок головок.
А дедупликация — это отличное средство для преобразования последовательного доступа в произвольный. И на HDD это критически замедляет скорость чтения/записи.

Azure/AWS/GCP и не пытаются дать максимум производительности IO. Ну т.е. "неплохо бы", но не главный приоритет. Им нужна доступность и надёжность, масштабируемость и максимальная совместимость, желательно недорого — за это реально платят клиенты. А максимизация производительности явно конфликтует с нагруженной виртуализацией.

для примера посмотрите на скорости SSD дисков в Azure.
не стоит забывать, что апгрейд хранилки для небольшой фирмы — это купить пусть даже 20 дисков, вкрутить их настроить доступ недолго. Апдейт для Azure — это несколько датацентров сразу, чтобы предложить потом клиенту другой уровень услуги, фиг с ним с деньгами — это просто физически небыстрое дело!
Как я понял идея заключается в том, что если уже у вас есть Optane или NVMe, то можно оптимизировать работу с ними для конкретных задач. Или же придти к выводу, что какие-то конкретные задачи можно ускорить за счёт более быстрых накопителей и оптимизации работы с ними.

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

нет. для optane это десятки микросекунд, для nand (не важно nvme или sata) типичная задержка чтения около 100 мкс.

это лучшее end2end, которое я видел в тестах. если накопитель A выдаёт в тесте время доступа 10 мкс, а накопитель B с тем же интерфейсом — 100 мкс, логично предположить, что разница определяется самими накопителями.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Информация

Дата основания
Местоположение
Россия
Сайт
vdsina.ru
Численность
11–30 человек
Дата регистрации

Блог на Хабре