惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google DeepMind News
Google DeepMind News
T
Tenable Blog
博客园_首页
S
Securelist
Spread Privacy
Spread Privacy
Google Online Security Blog
Google Online Security Blog
Forbes - Security
Forbes - Security
Engineering at Meta
Engineering at Meta
U
Unit 42
L
LINUX DO - 热门话题
量子位
T
Threat Research - Cisco Blogs
博客园 - 【当耐特】
C
Cyber Attacks, Cyber Crime and Cyber Security
K
Kaspersky official blog
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
Martin Fowler
Martin Fowler
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Security Latest
Security Latest
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
Know Your Adversary
Know Your Adversary
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
V2EX - 技术
V2EX - 技术
T
Tailwind CSS Blog
月光博客
月光博客
Recent Announcements
Recent Announcements
G
Google Developers Blog
F
Full Disclosure
W
WeLiveSecurity
宝玉的分享
宝玉的分享
腾讯CDC
G
GRAHAM CLULEY
Vercel News
Vercel News
Simon Willison's Weblog
Simon Willison's Weblog
美团技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как работают выделенные ядра в облачном сервере: от планировщика Linux до тестов производительности
sedvic (Sele · 2026-05-22 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение8 мин

Охват и читатели7

Привет, Хабр! Меня зовут Витя, я проектирую интерфейсы в Selectel. Недавно мы запустили новую функциональность — выделенные ядра для облачных серверов. Чтобы понять, как спроектировать интерфейс управления новой фичей, я решил погрузиться в матчасть: от работы планировщика Linux до архитектуры NUMA-нод.

В тексте разберем, чем физические ядра отличаются от vCPU, как Hyper-Threading влияет на производительность и почему «шумные соседи» — измеряемая потеря денег.

Основные понятия

Представим: нам нужно запустить приложение на облачном сервере. Например, вы решили развернуть базу данных под высокий трафик или запустить микросервис для обработки видео. В зависимости от особенностей приложения и нагрузки подбирается нужная конфигурация: количество ядер, оперативной памяти, объем диска для хранения данных. Вот тут мы и встречаемся с понятием vCPU. 

vCPU (Virtual Central Processing Unit) — виртуальное ядро процессора, выделяемое гипервизором. Оно представляет собой долю вычислительной мощности физического ядра (Core) или один поток в физическом процессоре (CPU), обеспечивая работу операционной системы.

Как физический процессор превращается в vCPU

В основе сервера лежит CPU — физический чип, который вставляется в разъем на материнской плате. В современных серверах таких процессоров обычно два, и каждый из них внутри нарезан на независимые ядра. 

Если у процессора два ядра, он может выполнять две инструкции параллельно, если четыре — четыре и так далее. Это и есть настоящая многоядерная система (Multi-Core), где задачи не мешают друг другу физически.

Но на уровне операционной системы все выглядит чуть сложнее из-за технологий вроде Hyper-threading (или SMT). Она позволяет одному физическому ядру обрабатывать сразу два потока команд. Для ОС (например, Linux) это выглядит не как два полноценных ядра, а скорее как два «входа» в один конвейер.

Такие логические ядра, которые делят между собой ресурсы одного физического, называются сиблингами (siblings). Они вместе используют общие блоки процессора и, что важнее всего, общие кэши L1 и L2.

В обычном облаке ваш vCPU — это как раз один такой поток-сиблинг. Когда мы говорим о выделенных ядрах, мы просто забираем физическое ядро целиком, не деля его ресурсы и кэши с «соседями».

Типичный сервер (хост) — это многопроцессорная многоядерная система. В ней два и более процессорных сокета, каждый из которых, например, по 24 ядра с поддержкой гиперпоточности.

Операционная система в такой системе увидит 96 vCPU (2 сокета × 24 ядра × 2 гиперпотока), если включена опция гиперпоточности (HT или SMT). Если ее выключить — будет 48 vCPU. Соответственно, гипервизору доступно 96 vCPU, которые можно распределить между виртуальными серверами на данном хосте. Гиперпоточностью можно управлять, включая или отключая ее на ядре.

Новые GPU в облаке Selectel от 131,77 ₽/час

Видеокарты для ресурсоемких задач — NVIDIA® H200, RTX™ 6000 Pro.

Подробнее →

Управление процессами в гипервизоре

В гипервизоре есть планировщик, который управляет процессами, выполняемыми vCPU.

Предположим, у нас есть рассмотренная система с двумя процессорами (CPU), и на ней выполняется несколько типичных процессов: работа оболочки, несколько ресурсоемких рабочих задач с интенсивными вычислениями.

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

Звучит прекрасно — всеми процессами занимается планировщик, но давайте представим, что задач с интенсивными вычислениями становится больше. Если позволить планировщику размещать их на любых доступных CPU, это может привести к полной загрузке системы. Технически, она может работать «в полку» и без перепланировки, но основная проблема здесь именно в росте latency и jitter производительности из-за постоянных переездов процессов между ядрами.

Визуальное представление работы — перемещение вычислительных процессов планировщиком.

Визуальное представление работы — перемещение вычислительных процессов планировщиком.

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

Визуальное представление работы — вычислительные процессы проходят на выделенных под них ядрах.

Визуальное представление работы — вычислительные процессы проходят на выделенных под них ядрах.

Офис как аналогия процессору

Описанные проблемы со снижением продуктивности при выполнении сложных задач можно представить в виде аналогии из реальной жизни. Если поискать преимущества выделенных ядер, то, скорее всего, вы встретите упоминание, что они решают проблему «шумных соседей» (это когда вы развернули ВМ в публичном облаке и делите с кем-то еще физическое железо; этот кто-то может создавать такие нагрузки, что будет в моменте влиять на производительность вашего сервера).

Мне же кажется, что более подходящей будет аналогия не с общежитием, а с офисом или коворкингом. Работа планировщика в обычном режиме похожа на опенспейс, где за сотрудником не закреплено фиксированное место. 

В таком сценарии, если офис полупустой, планировщик рассадит сотрудников оптимальным образом и всем будет комфортно работать. Но каково работать в полностью заполненном опенспейсе? Гарантии комфорта обеспечить уже будет сложно.

А если выделить каждому сотруднику кабинет? В таком случае можно гарантировать комфортные условия и, в идеальном случае, отличную производительность каждого.

Помимо комфорта сотрудник получает еще и конфиденциальность, ведь он физически изолирован от других. Того же самого эффекта мы достигаем, выделяя ядра под определенные процессы: получаем гарантию производительности и изоляции.

Основные сценарии использования выделенных ядер

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

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

Мы рекомендуем переходить на выделенные ядра в следующих сценариях:

  • Высоконагруженные базы данных (PostgreSQL, MySQL, ClickHouse). Когда сосед по хосту активно использует ресурсы общего кэша, время выполнения SQL-запросов растет. Выделенные ядра исключают конкуренцию за L1/L2 кэши.

  • Ресурсоемкая аналитика и ML-модели. Задачи, которые нагружают vCPU на 100% в течение долгого времени. Здесь важна стабильная тактовая частота и отсутствие переключений контекста планировщиком.

  • Сборка проектов (CI/CD). Выделенные ядра гарантируют, что время билда будет одинаковым вне зависимости от общей нагрузки на физическую ноду.

  • Игровые серверы и приложения реального времени. В системах, чувствительных к задержкам (latency), даже микро-лаги при перемещении процесса между ядрами вызывают джиттер.

  • API с жестким SLA. Если сервис должен отвечать за фиксированное время, нельзя делить ресурсы физического ядра с чужими процессами.

  • Мониторинг и логирование. Обеспечение стабильной обработки потока событий при высокой частоте запросов.

Юридические лица и ИП, которые еще не пользовались услугами Selectel, могут получить грант до 30 000 бонусов на тестирование нашего облака. Подробности на сайте.

Настройка выделенных ядер

Воспользоваться выделенными ядрами можно при создании нового сервера. Для этого:

Заходим в панель управления SelectelПродуктыОблачные серверы.

В разделе серверов кликаем на Создать сервер.

На странице создания сервера выберите локацию: ru-3b, ru-7a или ru-7b. Актуальную информацию о доступности по локациям можно узнать в документации

Прокрутите страницу вниз до выбора конфигурации. В линейке Standard кликните на блок с описанием конфигурации. Далее откроется меню, которое позволит управлять настройкой выделенных ядер. Оставьте галочку отмеченной и Создайте сервер.

Доступность выделенных ядер в облачной платформе

Выделенные ядра мы внедряем поэтапно. На текущий момент они доступны в нескольких регионах. Настроить их можно в линейках Standard и HighFreq. В зависимости от выбранного флейвора выделенные ядра могут быть включены по умолчанию.

В процессе конфигурации сервера из линейки Standard их можно выбрать опционально — так вы сможете самостоятельно протестировать, какой сетап будет производительнее для вашего софта.

На выделенных или обычных ядрах можно работать в разных режимах: с включенной опцией гиперпоточности (Hyper-Threading (SMT)) или без нее.

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

Также доступна опция обязательного размещения на одной NUMA-ноде. 

NUMA (Non-Uniform Memory Access) — это архитектура многопроцессорных систем, где система делится на ноды (блоки). NUMA-нода — это архитектурные блоки в многопроцессорных системах, где узел (node) включает один процессор и локальную оперативную память, доступ к которой у процессора внутри ноды быстрый и с низкой задержкой.

При размещении ресурсов на одной NUMA-ноде, облачный сервер работает только внутри ноды — использует ядра процессора и локальную память, которые привязаны к ноде. Это исключает задержки при обращении к «чужой» памяти через шину между процессорами.

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

Тестирование

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

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

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

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

Также провели тестирование на производительность на RealTime-задачах обеих политик vCPU.

Для этого мы выбрали четыре инструмента:

  • sysbench; 

  • Geekbench6;

  • pgbench;

  • redis-benchmark.

Sysbench

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

Geekbench6

Аналогичные результаты показало тестирование в GeekBench. Отклонение здесь меньше, но результат в итоге тот же — выделенные ядра дают прогнозируемую постоянную производительность.

Pgbench

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

Latency — чем меньше, тем лучше.

Redis

  • HD — высокая плотность I/O и CPU нагрузки на гипервизоре;

  • LD — низкая плотность I/O и CPU нагрузки на гипервизоре.

Latency — чем меньше, тем лучше.

Отклонение от среднего в случае:

  • с обычными ядрами — 43%;

  • с выделенными ядрами — 12%.

RPS — при высоких нагрузках на гипервизоре мы достигли снижения производительности Redis в среднем на 36% из-за миграции памяти и vCPU.

На выделенных ядрах получали один и тот же RPS вне зависимости от нагрузки на гипервизоре.

Заключение

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

Мы продолжаем развивать платформу, поэтому нам важен фидбек: а какую функциональность вы бы хотели видеть при создании облачного сервера? Пишите в комментариях.