Измерение времени в виртуализированной среде

Я разработал серию микробенчмарков, используя некоторые библиотеки с общей памятью (например, openmp, tbb и т. д.), чтобы проверить, как они масштабируются при изменении количества потоков.

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

Чтобы получить больше данных и более широкий их анализ, я планирую запустить их на 32-ядерной машине.

Один из вариантов — купить 32-ядерный процессор, вроде AMD Epyc или Intel Xeon, они дороговаты, но я знаю, что с ними получу. Моя вторая и менее дорогая альтернатива — запускать их в облаке, таком как Amazon AWS или Microsoft Azure.

Тогда, прежде чем сделать свой выбор, мне нужно некоторое уточнение:

Насколько я понимаю, AWS может сделать машину с любым количеством ядер, но все они виртуализированы.

Когда я запускаю приложение, насколько надежны измерения времени его выполнения?

Получу ли я ту же масштабируемость, что и при запуске приложения на настоящем 32-ядерном процессоре?


person Caio    schedule 11.07.2018    source источник


Ответы (1)


Исходя из многолетнего опыта работы с производительностью виртуализации, следует проявлять осторожность в этой области. Многое будет зависеть от уровня конкуренции между вашей виртуальной машиной и другими, что во многих облачных средах трудно определить без инструментов. Кроме того, неясно, обсуждаете ли вы прошедшее время и/или процессорное время. И то, и другое может зависеть от виртуализации, хотя мой опыт показывает, что прошедшее время более изменчиво. Я не могу говорить о перечисленных средах, но в решениях по виртуализации IBM Z мы предоставляем метрики, которые охватывают время процессора, потребляемое виртуальной машиной, и время, потребляемое гипервизором. Для ваших целей вам нужно только то, что потребляет виртуальная машина. Извините, я не знаю, предоставляет ли какая-либо из упомянутых вами платформ эту информацию. В экспериментах такого типа мы часто находим полезным проводить больше итераций измерений, чтобы увидеть изменчивость времени выполнения.

person Bit    schedule 20.07.2018