У меня есть четырехъядерный процессор и возможность связать мои 4 чипа оперативной памяти отдельно для каждого отдельного ядра. Можно ли сделать то же самое с жесткими дисками. Можете ли вы связать ядро, оперативную память и жесткий диск, если бы у меня было 4 диска одинакового размера? Это может быть вариант рейда?
2 ответа
Если бы вы были процессором, все остальное казалось бы медленным. Но если ОЗУ напоминает DSL, то жесткий диск - это хуже, чем коммутируемый доступ !
Поэтому, если вы хотите что-то с диска, вы даете указание сохранить диск в оперативной памяти для вас, а затем пойти и сделать что-то еще. По прошествии нескольких месяцев жесткий диск сообщит вам, что все готово. На данный момент, данные, которые вы хотели, находятся в оперативной памяти, и вы можете делать свои вещи с ним.
В основном это означает, что скорость обмена данными между процессором и диском не имеет большого значения. Важным моментом остается скорость CPU-RAM.
То, о чем вы говорите, это фактически сервер в стиле блейда. Нет, правда. Если вы разделяете вторичное хранилище по ядрам, а также по ОЗУ, то получается набор независимых одноядерных компьютеров с общей шиной, например Infiniband, для общения друг с другом.
Это не может быть вариант RAID, потому что весь смысл RAID в том, чтобы набор дисков выглядел как один том. RAID это как инкапсуляция.
Я видел такую архитектуру до работы. Кто-то мог взять кучу одноплатных компьютеров VME или CompactPCI, разместить хранилище на узлах PMC (обычно 1,8-дюймовые жесткие диски; это было до того, как SSD стали практичными) и поместить их все в шасси. Какая боль в разработке вещей на этих машинах, так как вам приходилось разделять доступ к "вашим" (локальным ядрам) данным и доступ к "их" (другим базовым) данным. Я закончил писать библиотеку, чтобы выяснить, как заставить производителя потока данных A общаться с потребителями B, C и D без лишних копий (которые убивали мою производительность). Я не хочу возвращаться.
Компании даже разработали собственные перекрестные шины для подключения компьютеров (Mercury RaceWay был лучшим из тех, что я видел в то время), чтобы максимизировать ввод / вывод. (Для тех, кто не знает, шины с перекладинами означают, что вы должны осуществлять арбитраж для этой шины, только если кто-то пытается получить доступ к тому же пункту назначения, что и вы; в общем случае одновременное выполнение нескольких транзакций с неперекрывающимися конечными точками приводит к в какой-то теоретически безумной полосе пропускания. Это похоже на использование коммутаторов Ethernet вместо концентраторов.)
Это отличная идея на бумаге, но она достаточно отличается от стандартной практики, так как оборудование имеет небольшой рынок и становится действительно дорогим.
PS Лучшее, что вы сможете сделать, - это поставить каждый диск на отдельный контроллер, который имеет возможность мастеринга шины (т.е. DMA). Затем вам нужно будет внедрить в ОС какой-то алгоритм "привязки", который отображает процессы в наборы ЦП / ОЗУ в зависимости от того, какой диск они используют. Это то, о чем люди делают Отчеты Мастеров. Повеселись.