Почему более высокий настроенный экземпляр на EC2 требует больше времени для запуска? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть код, который вызывает функцию 10 раз. Выполнение функции является последовательным, поэтому только после того, как функция вернулась для первого экземпляра, она снова будет вызвана и повторяет тот же процесс еще 9 раз. Функция выполняет умножение матриц и некоторые другие вещи, которые мне нужно время для увеличения конфигурации EC2 на AWS.

То, что я наблюдал при увеличении конфигурации EC2, есть небольшое увеличение времени выполнения (около 7-10 секунд). Однако странно то, что при изменении типа экземпляра с 1 ЦП 1 ГБ ОЗУ на многопроцессорной памяти выше увеличивается скачок. После этого скачок, как упоминалось выше, составляет не более 7-10 секунд.

Может ли кто-нибудь объяснить мне, почему я сталкиваюсь с этим явлением? Почему увеличение времени выполнения с одного процессора на несколько процессоров?

Вот пример кода для моего процесса:

import sys
import datetime

then = datetime.datetime.now()
for i in range(0, 10):
    foo = some_function(arg1, arg2)
    print("*")
now = datetime.datetime.now() - then

print("runtime : ", now)

Вот фактическое время выполнения:

  1. 1-CPU 1- ГБ ОЗУ: 00: 02: 57
  2. 2-ЦП 16-ГБ ОЗУ: 00: 03: 43
  3. 4-ЦП 32- ГБ ОЗУ: 00: 03: 47

Итак, время выполнения довольно сильно возросло с (1) до (2) и незначительный скачок с (2) до (3) и так далее. Любая помощь в объяснении этого будет высоко ценится.

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

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

  1. различные настройки настройки операционной системы на большей экземпляры
  2. другая базовая физическая инфраструктура
  3. разные версии независимо от того, какую python (?) среду выполнения вы используете - или, возможно, среда выполнения не скомпилирована с многоядерными оптимизациями
  4. отличается версии glib c или lib c в вашей ОС

сетевое время, скорости файловой системы и т. д. c и c могут воспроизводиться.

краткий ответ : трудно дать ответ.

0 голосов
/ 05 марта 2020

Наиболее вероятная причина заключается в том, что используемые вами базовые библиотеки используют преимущества нескольких процессоров

Один процессор часто более эффективен по сравнению с двумя процессорами. Вы можете исследовать, как это может повлиять на ваши конкретные алгоритмы - которые вы не обсуждаете в вопросе

См. Этот ответ на SO для примера этого явления

Почему это Python скрипт работает в 4 раза медленнее на нескольких ядрах, чем на одном ядре

...