Вопрос: Существуют ли сети быстрее, чем диски?


Это вопрос проектирования программного обеспечения

Раньше я работал над следующим правилом: скорость

cache memory > memory > disk > network

При каждом шаге в 5-10 раз предыдущий шаг (например, кэш-память в 10 раз быстрее основной памяти).

Теперь, кажется, что гигабитный ethernet имеет латентность меньше, чем локальный диск. Таким образом, возможно, операции по чтению из большого удаленного БД в памяти быстрее, чем чтение локального диска. Это похоже на ересь к старому таймеру, подобному мне. (Я просто потратил некоторое время на создание локального кеша на диске, чтобы избежать необходимости совершать круговые поездки по сети - следовательно, мой вопрос)

Есть ли у кого-нибудь опыт / количество / советы в этой области?

И да, я знаю, что единственный реальный способ узнать - это построить и измерить, но я задавался вопросом об общем правиле.

редактировать:

Это интересные данные из верхнего ответа:

  • В обе стороны в пределах одного центра обработки данных 500 000 нс

  • Диск ищет 10 000 000 нс

Это шокирует меня; моя ментальная модель заключается в том, что сеть в оба конца по своей сути медленна. И его нет - его в 10 раз быстрее, чем диск «туда и обратно».

Джефф Атвуд опубликовал этот хороший блог по теме http://blog.codinghorror.com/the-infinite-space-between-words/


115
2018-02-21 23:46


Источник


Иногда да, иногда нет. Какая сеть? Какой диск? - John Gardeniers
Другие интересные данные из верхнего ответа: 1 МБ последовательного чтения из сети по сравнению с диском. Я подозреваю, что время «туда и обратно» пропускает значительную передачу данных. - Paul
Пол: Зависит от вашего MTU, я уверен. (1MB MTU? Awesome!) - Matt Simmons
Я хотел бы, чтобы некоторые из этих ответов были пересмотрены в свете 10Gbps сетевых устройств, которые широко доступны. - chicks
гигабитная сеть против рейда 5? - SoilSciGuy


Ответы:


Вот некоторые цифры, которые вы, вероятно, ищете, как цитирует Джефф Дин, сотрудник Google:

Числа, которые должны знать все

L1 cache reference                             0.5 ns
Branch mispredict                              5 ns
L2 cache reference                             7 ns
Mutex lock/unlock                            100 ns (25)
Main memory reference                        100 ns
Compress 1K bytes with Zippy              10,000 ns (3,000)
Send 2K bytes over 1 Gbps network         20,000 ns
Read 1 MB sequentially from memory       250,000 ns
Round trip within same datacenter        500,000 ns
Disk seek                             10,000,000 ns
Read 1 MB sequentially from network   10,000,000 ns
Read 1 MB sequentially from disk      30,000,000 ns (20,000,000)
Send packet CA->Netherlands->CA      150,000,000 ns

Это из его доклада под названием Проекты, уроки и советы по созданию крупных распределенных систем и вы можете получить его здесь:

Разговор был дан в Крупномасштабные распределенные системы и промежуточное ПО (LADIS) 2009,

Дополнительная информация


Это сказано что gcc-O4 отправляет ваш код Джеффу Дину для перезаписи.



121
2018-02-22 07:38



+1 Очень интересно! - 9dan
Некоторые презентации имеют разные значения, указанные в скобках. Я предполагаю, что он в скобке неверен, и он обновил значения. - David d C e Freitas
Это все до SSD эпохи? видеть Вот для дальнейших современных номеров. - matt
Я действительно использовал эти цифры для создания презентация, показывающая, почему накопители SSD платят за себя, чтобы убедить нашего офис-менеджера, что нам нужны более быстрые машины для работы. Включены номера для технической информации, но в максимально возможной степени ориентированы на нетехническое управление. - brichins


Есть много переменных, когда речь идет о сети по сравнению с диском, но в целом, диск быстрее.

Шины SATA 3.0 и SAS имеют пропускную способность 6 Гбит / с, а сеть - 1 Гбит / с, минус накладные расходы протокола. С RAID-10 15k SAS сеть будет казаться медленной. Кроме того, у вас есть кэш диска, а также возможность использования твердотельных жестких дисков, которые в зависимости от сценария также могут увеличить скорость. Случайный или последовательный доступ к данным играет фактор, а также размер блока, в котором передаются данные. Все зависит от приложения, которое используется для доступа к диску.

Теперь я даже не коснулся того факта, что все, что вы перевозите по сети, все равно идет или идет с диска ... так что, опять-таки, диск быстрее.


18
2018-02-22 01:41



Точки для упоминания RAID, которые дают вам параллельные чтения, то, что вы вряд ли получите в сети в ближайшее время. Конечно, если мы говорим о локальных жестких дисках для ноутбуков, то комбо быстрой SAN и быстрой сети может быть быстрее. Особенно с SSD в этой SAN. - Michael Dillon
Сети по своей сути параллельны - о чем вы говорите? Это невероятно тривиально для чтения из нескольких систем в сети в совокупности; это весь смысл за такими системами, как Hadoop и MPI, не говоря уже о очевидном BitTorrent. - jgoldschrafe
С SONET / SDH вы можете иметь 38 Гбит / с еще быстрее, чем SAS. А агрегация сети может быть выполнена с помощью чего-то вроде en.wikipedia.org/wiki/Link_aggregation - Mircea Vutcovici
@Jake Говоря о 6 Гбит / с, вы можете сделать четкое различие между пропускной способностью интерфейса и скоростью, с которой диск может фактически предоставлять данные. - NPE
я сказал в своем вопросе, что я говорю о удаленной памяти в базе данных по сравнению с локальным кешем на диске - pm100


Ну, это зависит от того, есть ли у сетевого ресурса данные, которые вы запрашиваете, легкодоступными (в памяти или подобными), или если это просто, в свою очередь, прочитает его с диска.

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


10
2018-02-21 23:51



Вы имеете в виду, что время поиска на диске больше, чем запрос 10 Гбит / с? - Mircea Vutcovici
@Mircea, он означает, что 10Gbit-сеть должна получать свои данные откуда-то, поэтому она будет ограничена латентностью этого источника, плюс латентность сети. - Chris S
Хранение может быть RAM-диском. Видеть: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based - Mircea Vutcovici


IMX диск все еще быстрее. Теоретическая скорость передачи сети высока, но на практике вы не приближаетесь к этому.

Около двух лет назад у меня были проблемы с жестким диском на моем ноутбуке, и DMA вышел. Это сделало жесткий диск значительно медленнее и, в частности, медленнее, чем сеть. Но когда я перешел на другой компьютер, я вернулся к своему первоначальному состоянию жесткого диска быстрее, чем Интернет.


2
2018-02-21 23:50





Мой опыт работы с гигабитными сетями - с учетом правильного сервера - позволяет выполнять локальную производительность с точки зрения пропускной способности и латентности. Видеть Сетевые тесты: мы получаем производительность Gigabit?

Для всех практических целей я бы рекомендовал рассматривать сетевое и локальное хранилище как эквивалентное и использовать только кэши памяти.

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

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

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


2
2018-02-22 00:18





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

Я работаю над системами хранилищ данных, а канонический запрос DW - это сканирование таблицы. Если ваш запрос попадает более чем на несколько процентов строк в таблицу фактов (или раздел), тогда сканирование таблицы или раздела с использованием последовательного ввода-вывода будет более эффективным, чем план запроса с произвольным доступом, с использованием индексных запросов и запросов.

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

Мой опыт сочетается с этим. Фактически, я никогда не развертывал хранилище данных в среде консолидации, где я не мог запустить один и тот же процесс ETL значительно быстрее на моем настольном ПК.  У меня также были продавцы от крупного поставщика оборудования SAN, которые говорят, что многие их клиенты используют хранилище с прямым приложением для системы DW, потому что SAN недостаточно быстры.

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


2
2018-02-27 21:11





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


1
2018-02-21 23:49



Если диск не является узким местом на другой стороне сетевого подключения ...
@Argote: Верно, но если программное обеспечение сервера было написано правильно, оно будет буферизоваться в памяти перед записью на диск. - amphetamachine


Да, в общем, теперь сети становятся быстрее, чем жесткие диски, но со временем это может происходить.

Я думаю, поэтому я

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

Я предпочитаю смотреть на это в условиях компромиссов, а не на кого сильнее ...


1
2018-02-22 00:00



Поэтому я сомневаюсь. - John Gardeniers


Вы должны описать конкретный прецедент для этого сравнения. Жёсткие диски имеют время поиска + скорость передачи и кеш. У сетей есть латентность, скорость передачи и накладные расходы протокола ...

Я думаю, что ваша оригинальная кэш-память> память> диск> сеть по-прежнему остается правдой, хотя


1
2018-02-22 00:02





Диск подключен к CPU через шину SCSI, SAS или IDE. Какая внутренняя сеть работает с определенным протоколом - SCSI или ATAPI. Ethernet предназначен для работы на больших расстояниях и может быть намного медленнее, чем SAS / SCSI / IDE. Итак, какой из них быстрее, зависит от того, какие технологии вы сравниваете. Если вы сравните 20-летний ноутбук с жестким диском 10 Гбит / с в оперативной памяти, победитель всегда будет сетевым. И когда вы покупаете хранилище, вы должны сравнивать его с ценой и управляемостью.


0
2018-02-22 02:13