Как гугл обеспечивает такую высокую скорость работы? Каковы его возможности хранения информации?

Какая память используется у Google для обеспечения такой быстрой работы, учитывая, что результаты поиска по запросу "Самая быстрая память в мире" появляются за намного меньшее время, чем время, требуемое для передачи данных самой быстрой мобильной памяти LPDDR5T, представленной SK hynix?
  • 24 января 2024 г. 8:18
Ответы на вопрос 6
Google обеспечивает высокую скорость работы благодаря распределенной вычислительной инфраструктуре, передовым технологиям хранения данных и оптимизации своих поисковых алгоритмов. Вот несколько ключевых факторов, обеспечивающих высокую производительность:

1. Распределенная архитектура: Google размещает свои данные центры в различных точках по всему миру, что позволяет уменьшить задержки при обработке запросов, так как обращение идет к ближайшему центру.

2. Эффективная стратегия кеширования: Google активно использует кеш на разных уровнях, что позволяет доступ к часто запрашиваемой информации без необходимости её повторного обращения к основному хранилищу данных, что значительно ускоряет время ответа.

3. Специализированные поисковые алгоритмы: Поисковые алгоритмы Google постоянно улучшаются, чтобы они могли предоставлять релевантные результаты за минимальное время. Также алгоритмы предсказывают, что может быть запрошено пользователем и в определённой степени предзагружают эту информацию.

4. Технологии хранения данных: Google использует разнообразные системы хранения данных, от традиционных жестких дисков (HDD) до твердотельных накопителей (SSD), которые обеспечивают быстрый доступ к данным. Кроме того, для хранения и обработки данных компания применяет специализированные распределенные файловые системы, такие как Google File System (GFS) или его преемник Colossus.

5. Физические и виртуальные сети: Сети передачи данных Google интерно оптимизированы для быстроты и надежности, а также они постоянно улучшают свои сетевые протоколы для ускорения обмена данными.

Что касается памяти, Google скорее всего задействует различные виды памяти для разных задач. Память для поисковых систем должна быть быстрой, так как прямо влияет на скорость выдачи результатов. Например:

- Для кеша в оперативной памяти (RAM) используются высокопроизводительные серверные модули, оптимизированные для работы с большим количеством одновременных запросов.
- Для долгосрочного хранения информации применяются разнообразные решения, в том числе, как упоминалось, SSD и HDD.

Скорость работы Google поиска не обусловлена прямой связью с использованием самых быстрых доступных типов памяти, вроде LPDDR5T. Создание результатов поиска за миллисекунды достигается благодаря сложной инфраструктуре данных и оптимизированной логике работы сервисов, которая обеспечивает максимально возможную производительность при текущем уровне технологий.
Оперативная память LPDDR5T работает со скоростью передачи данных 9,6 Гбит/с,

Начнём с того что это скорость работы одного чипа, на планке памяти их стоит несколько. При этом в современных серверах до 8 каналов памяти на процессор.
Вот примерные значения скорости работы памяти в серверах.
- Многоканальная оперативная память (2, 4, 8 итд. каналов), этот процесс в контексте оперативной памяти обычно связан с такими технологиями и концепциями, как двухканальный (dual-channel), трехканальный (triple-channel) и многоканальный (multi-channel) режимы работы памяти. 

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

- В Linux так же имеется несколько способов организовать параллельное чтение и запись данных с использованием уже с жестких дисков (опять же, по примеру торрентов), чтобы увеличить производительность и надежность системы хранения данных. Эти методы включают в себя RAID-массивы, LVM (Logical Volume Manager) и файловые системы, специально разработанные для работы в распределенных и параллельных средах.
Если про поиск - то там огромный кластер серверов, который обрабатывает запросы параллельно, разделяя их.. 
и тут дело далеко не в памяти, а в ПО
Во первых, количество результатов не гарантирует что это действительно так... это приблизительная оценка, эжто видно особенно когда начинаешь искать редкие вещи, и количество результатов - десятки страниц, уже на пятой результаты заканчиваются. 

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

В третьих, запрос может быть распределенным на несколько машин, т.е. не каждый запрос на свою машину, это само собой, а именно один пользовательский запрос напрягает одновременно целый кластер. Мало того, я почти на 99% уверен что у гугла свое железо используется по полной (с момента как они стали активно использовать ИИ в своих алгоритмах поиска и построения индексов, уже лезт 10 гугл свои TPU пилит, минимум третья итерация, и в задачах ИИ они на пару порядков эффективнее GPU).

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

Про софт - я не знаю, статей про это не помню, но нисколько не сомневаюсь, что такая компания как гугл могут запилить свой софт, работающий с хранилищем данных немного иначе чем это делают классические linux/win, когда каждый запрос к диску делает чуть ли не два копирования в оперативную память (это еще на уровне posix, затем пользовательский софт сериализацией занимается, это еще копирования), занимая ценный кэш процессора, но физически данные с дисков могут быть прочитаны в нужную область памяти вообще минуя процессор , как минимум nvme это могут штатно, так как висят на pci-e шине, да и sata точно есть механизмы, которые с помощью старого DMA могут копировать данные с указанных портов напрямую в области в памяти, точно читал о таких разработках в linux но до практически потрогать не доходило.
Считаю: 2,050,000 * примерно 512 байт на результат = примерно 1 ГБ = 8Гбит.
а с чего ты так решил считать? Почему тут не учитывается параллельность, а так же, то что для "About 2,050,000 results (0.29 seconds)" не нужно точных вычислений, достаточно аппроксимации
Похожие вопросы