Система лучше распределяет обработку данных с учетом времени между ядрами, чтобы поддерживать быстрое время отклика пользователя.
Сегодняшние центры данных съедают вверх и расточительствуют хорошее количество энергии отвечая к запросам потребителя как можно быстрее, с только задержкой немного микросекунд. Новая система, созданная исследователями MIT, повышает эффективность высокоскоростных операций за счет лучшего назначения обработки данных с учетом времени в ядрах центрального блока обработки данных (CPU) и обеспечения продуктивной работы оборудования.
Центры обработки данных работают как распределенные сети, с многочисленными веб-и мобильными приложениями, реализованными на одном сервере. Когда пользователи отправляют запросы в приложение, биты хранимых данных извлекаются из сотен или тысяч служб на столько же серверов. Перед отправкой ответа приложение должно дождаться обработки данных самой медленной службой. Это время задержки называется задержкой хвоста.
Текущие методы для уменьшения запаздывания оставляют тонны ядер ЦП на сервере открытыми для быстрой обработки входящих запросов. Но это означает, что ядра сидят сложа руки в течение большей части времени, в то время как серверы продолжают использовать энергию только для того, чтобы оставаться включенными. Центры обработки данных могут содержать сотни тысяч серверов, поэтому даже небольшие улучшения в эффективности каждого сервера могут сэкономить миллионы долларов.
Кроме того, некоторые системы перераспределяют ядра между приложениями на основе рабочей нагрузки. Но это происходит в течение миллисекунд - примерно тысячная желаемая скорость для сегодняшних быстро развивающихся запросов. Слишком длительное ожидание также может ухудшить производительность приложения, так как любая информация, которая не обрабатывается до истечения выделенного времени, не будет отправлена пользователю.
В документе, представленном на конференции Проектирование и внедрение сетевых систем USENIX на следующей неделе, исследователи разработали более быструю систему распределения ядра, называемую Shenango, которая уменьшает задержки хвоста, при этом достигая высокой эффективности. Во-первых, новый алгоритм определяет, какие приложения пытаются обработать данные. Затем компонент программного обеспечения выделяет простаивающие ядра для обработки рабочей нагрузки приложения.
"В центрах обработки данных существует компромисс между эффективностью и задержкой, и вам действительно нужно перераспределить ядра с гораздо более тонкой гранулярностью, чем каждая миллисекунда", - говорит первый автор Эми Оустерхаут, аспирантка лаборатории компьютерных наук и искусственного интеллекта (CSAIL). Shenango позволяет серверам " управлять операциями, которые происходят в очень короткие сроки и делать это эффективно."
Экономия энергии и затрат будет варьироваться в зависимости от центра обработки данных, в зависимости от размера и рабочих нагрузок. Но общая цель состоит в том, чтобы улучшить использование ЦП центра обработки данных, так что каждое ядро будет хорошо использоваться. Лучшие коэффициенты использования ЦП сегодня сидят около 60 процентов, но исследователи говорят, что их система может потенциально увеличить эту цифру до 100 процентов.
«Сегодня использование ЦОД довольно низкое», - говорит соавтор Адам Белэй, доцент кафедры электротехники и компьютерных наук и исследователь CSAIL. «Это очень серьезная проблема [которую нельзя решить] в одном месте в центре обработки данных. Но эта система является одним из важнейших факторов, способствующих увеличению использования».
К работе над документами присоединились Хастер Балакришнан, профессор кафедры электротехники и компьютерных наук Fujitsu, а также аспиранты CSAIL Джонатан Беренс и Джошуа Фрид.
Эффективное обнаружение перегрузок
В реальном центре обработки данных, Shenango-алгоритм и программное обеспечение-будет работать на каждом сервере в центре обработки данных. Все серверы смогут общаться друг с другом.
Первое новшество системы-это новый алгоритм обнаружения заторов. Каждые пять микросекунд алгоритм проверяет пакеты данных, помещенные в очередь для обработки для каждого приложения. Если пакет все еще ждет от последнего наблюдения, алгоритм отмечает, что есть по крайней мере 5-микросекундная задержка. Он также проверяет, если какие-либо вычислительные процессы, называемые потоками, ждут выполнения. Если это так, система считает, что" перегруженный " приложение.
Это кажется достаточно простым. Но структура очереди имеет важное значение для достижения микро-масштабного обнаружения перегрузки. Традиционное мышление означало, что программное обеспечение проверяет метку времени каждого пакета данных в очереди, что займет слишком много времени.
Исследователи реализуют очереди в эффективных структурах, известных как " кольцевые буферы."Эти структуры могут быть визуализированы как различные слоты вокруг кольца. Первый введенный пакет данных переходит в начальный слот. По мере поступления новых данных они помещаются в последующие слоты вокруг кольца. Обычно эти структуры используются для обработки данных "первый в первом", вытягивания данных из начального слота и работы к конечному слоту.
Система исследователей, однако, только хранит пакеты данных кратко в структурах, пока приложение не сможет их обработать. Тем временем, сохраненные пакеты могут использоваться для проверок перегрузки. Алгоритм должен только сравнить две точки в очереди-расположение первого пакета и где последний пакет был пять микросекунд назад-чтобы определить, если пакеты сталкиваются с задержкой.
"Вы можете смотреть на эти две точки и отслеживать их прогресс каждые пять микросекунд, чтобы увидеть, сколько данных было обработано", - говорит Фрид. Поскольку структуры просты, " вы должны сделать это только один раз на ядро. Если вы смотрите на 24 ядра, вы делаете 24 проверки в пяти микросекундах, что хорошо масштабируется."
Интеллектуальное распределение
Второе нововведение называется IOKernel, центральным программным центром, который управляет пакетами данных для соответствующих приложений. IOKernel также использует алгоритм обнаружения перегруженности для быстрого распределения ядер на порядки перегруженных приложений быстрее, чем традиционные подходы.
Например, IOKernel может видеть входящий пакет данных для определенного приложения, которое требует скорости обработки микросекунд. Если приложение перегружено из-за отсутствия ядер, IOKernel немедленно посвящает простаивающее ядро приложению. Если он также видит другое приложение, работающее с ядрами с менее чувствительными к времени данными, он захватит некоторые из этих ядер и перераспределит их в перегруженное приложение. Сами приложения также помогают: если приложение не обрабатывает данные, оно предупреждает IOKernel, что его ядра могут быть перераспределены. Обработанные данные возвращаются в IOKernel для отправки ответа.
"IOKernel концентрируется на том, какие приложения нуждаются в ядрах, которые их нет", - говорит Беренс. "Он пытается выяснить, кто перегружен и нуждается в большем количестве ядер, и дает им ядра как можно быстрее, поэтому они не отстают и имеют огромные задержки."
Тесная связь между iokernel, алгоритмом, приложениями и серверным оборудованием является " уникальной в центрах обработки данных "и позволяет Shenango функционировать без проблем, Belay говорит:" система имеет глобальную видимость того, что происходит на каждом сервере. Он видит оборудование, предоставляющее пакеты, что работает где в каждом ядре, и насколько заняты каждое из приложений. И это происходит в микросекундной шкале."
Затем исследователи уточняют Shenango для реальной реализации центра обработки данных. Чтобы сделать это, они гарантируют, что программное обеспечение может обрабатывать очень высокую пропускную способность и имеет соответствующие функции безопасности.