Рубріки: Highload

Что такое stolen CPU

admin

В эпоху Amazon и DigitalOcean мы все сильно привыкли к использованию виртуальных узлов. Это удобно и быстро.

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

Гипервизор и выделение ресурсов

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

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

Если на виртуальных узлах становится слишком много задач, гипервизор перераспределяет ресурсы таким образом, чтобы обеспечить выполнение максимального количества задач. Как это выглядит на практике? Вы арендуете виртуальный сервер. Но на том же физическом оборудовании арендуют виртуальные сервера еще 25 человек. В какой-то момент времени часть (или все) из них начинают напрягать процессор (например, происходят всплески посетителей на сайтах). И тогда вы замечаете, что ваш сервер начал работать медленнее.

Stolen CPU

Если виртуальный узел начал тупить, первым делом нужно понять где проблема — у вас или у гипервизора. Для этого существует показатель Stolen CPU. Его можно легко увидеть, выполнив команду top:

Если вы работаете с виртуальными серверами, этот показатель нужно обязательно мониторить.

Stolen CPU — это количество времени, которое виртуальный сервер ждет процессорных ресурсов от гипервизора

Суммарное время в состоянии Stolen будет доступно в статистке процессора:

root@node:~# cat /proc/stat
cpu  704818582 1283 95229455 732476824 1717222 8296 30114918 12043519 0 0

# числа — это количество времени, которое процессор проводит в разных состояниях

Восьмое число слева — это суммарное время в состоянии Stolen.

Что делать, если Stolen CPU высокий

Нормальный показатель не должен превышать 1…2%. Если же показатель > 5%, это плохо. Платформа перегружена и любой рост нагрузки приведет к усугублению ситуации. В этом случае у вас есть два варианта:

  • Создать новый виртуальный узел и мигрировать на него. В этом случае, новый узел скорее всего попадет в другой сектор, где проблем быть не должно. Однако гарантий не сможет дать даже провайдер.
  • Переехать на физический сервер. Это гарантирует выделение ресурсов, однако придется позаботиться о фейловере таких узлов.

В .io мы используем сотни виртуальных узлов, которые обрабатывают более 10 Тб данных каждый день. Обработка данных подразумевает использование больших процессорных мощностей. Когда мы впревые столкнулись с проблемой Stolen CPU, мы увидели почти катастрофическую картинку — сервер внезапно начал работать крайне медленно:

При этом показатель Stolen CPU обычно скакал от 1…2 до 20%. В момент появления проблемы он вырос почти до 30% и не падал ниже 20%:

Мы приняли решение перенести часть инфраструктуры на физическое железо. В чем получили ряд преимуществ:

  • Это дешевле в 2.5 раза.
  • Мы больше не зависим от внезапных скачков нагрузки на платформе виртуализации.
  • Современные датацентры предоставляют много удобных сервисов для работы с физикой (failover ips, локальные сети, управляемые установки ОС и т.п.)

TL;DR

Если вы работаете с виртуальным железом обязательно мониторьте показатель Stolen CPU (виден в top). Если этот показатель постоянно >5%, создайте новый сервер и мигрируйте на него. Если проблема наблюдается постоянно, рассмотрите возможность переезда на физическое железо.

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

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

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024