Алгоритмы оптимизации с быстрым дисковым хранилищем (SSD)?

Учитывая, что твердотельные диски (SSD) снижаются в цене и вскоре станут более распространенными в качестве системных дисков, и учитывая, что их скорости доступа значительно выше, чем вращающиеся магнитные носители, какие стандартные алгоритмы получат преимущества от использования SSD для локального хранилища? Например, высокая скорость случайного чтения SSD делает что-то вроде хэш-таблицы на основе диска жизнеспособностью для больших хэш-столов; 4 ГБ дискового пространства легко доступны, что делает хэширование для всего диапазона 32-битного целого числа жизнеспособным (больше для поиска, чем для населения, хотя это все равно займет много времени); в то время как этот размер хеш-таблицы был бы запретительным для работы с вращающимися носителями из-за скорости доступа, это не должно быть проблемой для SSD.

Есть ли другие области, в которых предстоящий переход на SSD обеспечит потенциальную выгоду в алгоритмической работе? Я предпочел бы рассуждать о том, как будет работать одна вещь, а не мнение; Я не хочу, чтобы это стало спорным.

Ответ 1

Ваш пример хеш-таблиц действительно является ключевой структурой базы данных, которая принесет пользу. Вместо того, чтобы загружать целые 4 ГБ или более файлов в память для определения значений, SSD может быть проверен напрямую. SSD по-прежнему медленнее, чем ОЗУ, на порядок, но вполне разумно иметь хэш-таблицу на 50 ГБ на диске, но не в ОЗУ, если вы не платите большие деньги за большой утюг.

Примером являются базы данных по шахматам. У меня более 50 ГБ хэшированных позиций. Существует сложный код, чтобы попытаться сгруппировать связанные позиции рядом друг с другом в хэше, поэтому я могу размещать страницы в 10 МБ таблицы за раз и надеяться повторно использовать некоторые из них для нескольких похожих запросов позиции. Там тонна кода и сложность, чтобы сделать это эффективным.

Заменив SSD, я смог сбросить всю сложность кластеризации и просто использовать действительно тупые рандомизированные хеши. Я также получил увеличение производительности, так как я только извлекаю данные, которые мне нужны с диска, а не большие 10 Мбайт кусков. Задержка действительно больше, но чистая скорость значительно... и супер-чистый код (20 строк, а не 800+), возможно, даже приятнее.

Ответ 2

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

В то время как SSD значительно перемещают иглу, они все еще намного медленнее, чем операции ЦП и физическая память. Для примера с хэш-таблицей 4 ГБ вы можете поддерживать 250 МБ/с SSD для доступа к случайным хэш-табличным ковшикам. Для вращательного диска вам повезет сломать одноразрядные MB/s. Если вы можете сохранить эту хэш-таблицу на 4 ГБ в памяти, вы можете получить к ней доступ порядка гигабайт в секунду - намного быстрее, чем даже очень быстрый SSD.

В приведенной статье перечислены несколько изменений, сделанных MS для Windows 7 при работе на SSD, что может дать вам представление о тех изменениях, которые вы могли бы рассмотреть. Во-первых, SuperFetch для предварительной выборки данных с диска отключен - он предназначен для того, чтобы обойти медленные случайные времена доступа для диска, которые облегчаются SSD. Дефрагментация отключена, поскольку файлы, разбросанные по диску, не являются производительностью для SSD.

Ответ 3

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

Я мог видеть, что некоторые системы баз данных получают от этого все-таки. MySQL, например, с использованием механизма хранения MyISAM (где записи данных в основном прославлены CSV). Тем не менее, я думаю, что очень хорошие хеш-таблицы будут лучшим выбором для хороших примеров.

Ответ 4

SSD намного быстрее для случайных чтений, бит для последовательных чтений и более медленный для записи (случайный или нет).

Таким образом, хэш-таблица на основе дисков не подходит для SSD, так как теперь требуется значительное время для ее обновления, но поиск диска становится (по сравнению с обычным hdd) очень дешевым.

Ответ 5

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