Твердотельные накопители достаточно хороши, чтобы перестать беспокоиться о узких местах дискового ввода-вывода? - PullRequest
6 голосов
/ 17 июля 2009

У меня есть программа для проверки концепции, которая выполняет межпроцессное взаимодействие, просто записывая и читая с HD. Да, я знаю, что это действительно медленно; но это был самый простой способ начать работу. Я всегда планировал вернуться и заменить эту часть кода с помощью механизма, который выполняет все IPC (межпроцессное взаимодействие) в оперативной памяти.

Как вы думаете, с появлением твердотельных дисков узкое место может стать незначительным?

Примечания. Это серверное программное обеспечение, написанное на C #, вызывающее некоторые библиотеки обработки чисел, написанные на FORTRAN.

Ответы [ 11 ]

9 голосов
/ 18 июля 2009

Короткий ответ, вероятно, нет. Известный исследователь по имени Джим Грей выступил с докладом о хранении и производительности, который включал эту замечательную аналогию . Предполагая, что ваш мозг является процессором, доступ к регистру занимает 1 такт (цифры слева), что примерно эквивалентно той информации, которая находится в вашем мозгу. Доступ к памяти занимает 100 тактов, что примерно эквивалентно получению данных где-то в городе, в котором вы живете. Доступ к стандартному диску занимает примерно 10 ^ 6 тактов, что эквивалентно данным на плутоне. Где твердотельное тело подходит для этого? Текущая технология SSD находится где-то между 10 ^ 4-10 ^ 5 в зависимости от того, кого вы спрашиваете. Хотя они могут быть на порядок быстрее, между чтением из памяти и чтением с диска все еще существует огромный разрыв. Вот почему ответ на ваш вопрос, скорее всего, нет, так как, как только SSD становятся, они все равно будут значительно медленнее, чем дисковые (по крайней мере, в обозримом будущем).

3 голосов
/ 17 июля 2009

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

Это приводит к появлению узких мест в автобусах, кешах и деталях, кроме механизма чтения / записи (который в любом случае последний в цепочке).

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

Чтобы в полной мере использовать неограниченную скорость ввода-вывода, вам потребуется реакция в режиме реального времени и очень агрессивное управление кешами и т. Д.

Когда диски становятся быстрее , тогда RAM и процессоры и требуют от устройств . Узкое место такое же, рабочая нагрузка становится все больше.

2 голосов
/ 20 июля 2009

Нет. Текущие SSD предназначены для замены дисков. Каждый слой, от контроллера SATA до драйвера файловой системы, обрабатывает их как хранилище.

Это не проблема базовой технологии NAND flash. Когда флэш-память NAND напрямую отображается в память и использует вращающуюся систему хранения журналов вместо файловой системы, основанной на именованных файлах, это может быть довольно быстрым. Основная проблема заключается в том, что NAND Flash хорошо работает только в блочных обновлениях. Обновления метаданных файла вызывают дорогостоящие операции чтения-изменения-записи. Кроме того, блоки NAND намного больше, чем обычные дисковые блоки, что также не влияет на производительность.

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

2 голосов
/ 20 июля 2009

У меня твердотельный накопитель, и нет, это не устранит проблемы ввода-вывода в качестве узкого места. SSD это хорошо, но это не , что приятно.

На самом деле нетрудно освоить примитивы IPC вашей системы или создать что-то поверх TCP. Но если вы хотите придерживаться своего диска и сделать его быстрее, ramdisk или tmpfs может помочь вам.

2 голосов
/ 17 июля 2009

У Джоэла о софте есть статья о его опыте перехода на твердое состояние. Не совсем та же проблема, что и у вас, но мой вынос был:

Твердотельные накопители могут значительно ускорить операции, связанные с вводом / выводом, но многие вещи (например, компиляция) все еще связаны с процессором.

2 голосов
/ 17 июля 2009

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

Иерархии внешней памяти являются неотъемлемой проблемой вычислений.

1 голос
/ 19 июля 2009

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

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

0 голосов
/ 21 июля 2009

Что здесь иметь в виду:

Если связь включает частые сообщения и происходит в одной и той же системе, вы получите очень хорошую производительность, потому что Windows фактически не будет записывать данные в первую очередь.

Мне пришлось однажды прибегнуть к нему и обнаружить это - индикатор диска НЕ загорелся вообще, пока данные продолжали записываться.

0 голосов
/ 21 июля 2009

Как насчет использования оперативной памяти вместо диска? Вам бы не пришлось ничего переписывать. Просто укажите на другую файловую систему. Windows и Linux оба имеют их. Убедитесь, что у вас достаточно памяти на машине и создайте виртуальный диск с достаточным пространством для вашей обработки. Я сделал это для системы, которая прослушивала несколько протоколов в сети. Я никогда не узнавал, какой пакет я собирался получить, и было слишком много данных, чтобы хранить его в памяти. Я записывал его на диск ОЗУ, и когда что-то было завершено, я перемещал его и позволял другому процессу извлечь его из диска ОЗУ на физический диск. Таким образом я смог не отставать от действительно загруженных сетевых карт серверного класса. Удачи!

0 голосов
/ 20 июля 2009

Нет, к сожалению, нет. Тем не менее, они делают это более интересным: SSD-диски имеют очень быстрое чтение и не синхронизируются по времени, но их запись почти такая же медленная, как и у обычных жестких дисков. Это означает, что вы захотите читать большую часть времени. Однако, когда вы записываете на диск, вы должны писать как можно больше в одном месте, поскольку SSD-диски могут записывать только целые блоки за раз.

...