Странно, иногда потоки заикаются на 0-2 секунды в среде k8sC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Странно, иногда потоки заикаются на 0-2 секунды в среде k8s

Сообщение Anonymous »

Справочная информация
Мы разрабатываем распределенную базу данных «ключ-значение» (C++) на основе LSM-Tree. И мы разворачиваем базу данных во многих кластерах, каждый из которых представляет собой набор с состоянием k8s. На каждом хосте работает CentOS с ядром 4.18.0-147, только 1 узел NUMA. И каждый хост может обслуживать несколько модулей. Но на одном хосте не будет модулей из одного кластера базы данных. Архитектура выглядит так:

Код: Выделить всё

    host x      |     host y     | ...
cluster A pod1  | cluster C pod1 |
cluster B pod2  | cluster A pod2 |
Наблюдения
Странно то, что потоки модуля заикаются на 0–2 секунды, даже если загрузка процессора как хоста, так и модуля очень низкая (около 20–30%).
Когда происходит заикание, выполните несколько простых инструкций, например. int, может занять 2 секунды.
И
  • использование памяти хостом и модулем очень низкий, около 30 %
  • /cpu/stat cgroup сообщает об отсутствии регулирования процессора в этих контейнерах
  • сеть выглядит нормально
  • когда в каком-то модуле происходит зависание, другие модули, обслуживаемые тем же хостом, работают нормально
Что я пробовал:
  • Я использую запись perf для непрерывного профилирования своей программы, по 60 секунд каждый раз. А затем используйте Flamescope, чтобы рисовать график пламени каждые 10 мс. Во время проблемы с заиканием не наблюдалось никаких неожиданных стеков вызовов.
  • Я использую C++ для написания простой программы тикера, которая вызывает std::this_thread::sleep_for( 10 мс) постоянно и используйте system_clock::now() для вычисления реальной продолжительности сна. Ставлю в контейнеры, и реальная продолжительность сна иногда доходит до 20мс. Опять же, нагрузка на модуль и хост очень низкая.
  • Я использую atop для мониторинга системы каждые 1 секунду. Ничего странного не обнаружено.
Я думал, что проблема связана с каким-то дросселем, даже если /cpu/stat сказал «нет». Есть идеи по этому поводу?

Подробнее здесь: https://stackoverflow.com/questions/785 ... nvironment
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»