Столкнулся с проблемой. Есть тяжелый расчет в памяти. Ввода вывода практически нет. Выполняется на локальной машине без виртуализации за 14 секунд. Задействованы вся ядра на 100%. Запускаю тоже самое в docker контейнере. Выполняется за 26 секунд, при этом ядра задействованы только на 60 процентов. А далее еще круче. Деплою это на наш kubernetes кластер. На конкретную ноду, специально под задачу. Там крайне мощный проц, в 2 раза больше ядер. Выполняется там все только за 80 секунд. Что за хрень, можно с этим что то сделать?
Здравствуйте, elmal, Вы писали:
E>Столкнулся с проблемой. Есть тяжелый расчет в памяти. Ввода вывода практически нет. Выполняется на локальной машине без виртуализации за 14 секунд. Задействованы вся ядра на 100%. Запускаю тоже самое в docker контейнере. Выполняется за 26 секунд, при этом ядра задействованы только на 60 процентов. А далее еще круче. Деплою это на наш kubernetes кластер. На конкретную ноду, специально под задачу. Там крайне мощный проц, в 2 раза больше ядер. Выполняется там все только за 80 секунд. Что за хрень, можно с этим что то сделать?
Спрофилировать и посмотреть в каком месте тормозит. Загрузка процессора как бы намекает, что где то подвисает на каком то I/O.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Спрофилировать и посмотреть в каком месте тормозит. Загрузка процессора как бы намекает, что где то подвисает на каком то I/O.
В том то и прикол что там нет IO вообще. Там тупо вычисления в памяти. Да еще и на примитивах зачастую, там весьма неслабо соптимизировано.
Здравствуйте, elmal, Вы писали:
AVK>>Спрофилировать и посмотреть в каком месте тормозит. Загрузка процессора как бы намекает, что где то подвисает на каком то I/O. E>В том то и прикол что там нет IO вообще. Там тупо вычисления в памяти. Да еще и на примитивах зачастую, там весьма неслабо соптимизировано.
Значит все таки где то есть.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, elmal, Вы писали:
E>Столкнулся с проблемой. Есть тяжелый расчет в памяти. Ввода вывода практически нет. Выполняется на локальной машине без виртуализации за 14 секунд. Задействованы вся ядра на 100%. Запускаю тоже самое в docker контейнере. Выполняется за 26 секунд, при этом ядра задействованы только на 60 процентов. А далее еще круче. Деплою это на наш kubernetes кластер. На конкретную ноду, специально под задачу. Там крайне мощный проц, в 2 раза больше ядер. Выполняется там все только за 80 секунд. Что за хрень, можно с этим что то сделать?
а докеру все CPU ресурсы выданы без ограничений?
Re[2]: Docker и Java - деградация производительности
Здравствуйте, bzig, Вы писали:
B>а докеру все CPU ресурсы выданы без ограничений?
ХЗ где это посмотреть. Смотрю главное на Kubernetes кластере. Там разные алгоритмы расчетов идут. Некоторый алгоритм грузит ядра на 100%. А некоторые ни черта — 60 процентов и хоть тресни. При этом локально — 100%, ну и выполняется шустрее в 2 раза. Ввода вывода никакого. Единственное отличие — когда идут тормозящие алгоритмы там идет random доступ к памяти. Собственно весь алгоритм там — бежим по здоровой таблице. На основании полей формируем хеш, по хешу достаем из нескольких других массивов, и далее складываем или перемножаем. Данных в памяти порядка 15 гигов. В теории подсистема памяти может не поспевать за процом, потому он и простаивает. Но не понятно какого черта все успевается без докера, а в докере на 50 процентов медленнее.
Re[3]: Docker и Java - деградация производительности
Здравствуйте, elmal, Вы писали:
E>Данных в памяти порядка 15 гигов. В теории подсистема памяти может не поспевать за процом, потому он и простаивает. Но не понятно какого черта все успевается без докера, а в докере на 50 процентов медленнее.
Так может дело в объеме памяти? Докер ее больше жрет, начинается своп, вот тебе и IO.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Так может дело в объеме памяти? Докер ее больше жрет, начинается своп, вот тебе и IO.
Поход да, разобрались. 2 проблемы было. Во первых там действительно своп оказался. Который вообще убил всю скорость. А во вторых — в докер образе был другой алгоритм сборки мусора — CMS. Переставил на G1, хоть и пошли паузы крайне значительные, но скорость пошла расчетная, все ядра загружены на 100 процентов.