Как добиться максимальной производительности экземпляра EC2

11

Отказ от ответственности: я разработчик внешнего интерфейса в мире серверов.

Привет, народ. У меня есть экземпляр сервера на EC2 c5d.9xlarge, чьи спецификации:

  • Система: Ubuntu 18.04
  • vCPU: 36 потоков / ядер
  • Память: 72 ГБ
  • Память: 900 ГБ NVMe SSD
  • Выделенная пропускная способность EBS: 7000 Мбит / с
  • Производительность сети: 10 Гбит / с

Сценарий: я использую этот сервер для загрузки больших видео (4K, 1+ часа) и обработки их с использованием FFMPEG, но по сравнению с моим предыдущим сервером UpCloud с 12 ядрами и 48 ГБ оперативной памяти, этому серверу EC2 требуется в 1,5 раза больше времени для загрузки и обработки что, я думаю, не должно иметь место.

Вопрос: Как максимально увеличить производительность за то, за что я плачу?

Мартавис П.
источник
Вы должны посмотреть на стоимость AWS Elastic Transcoder, чтобы увидеть, работает ли он лучше для вас.
Тим
Спасибо @Tim. Я видел это некоторое время назад, но на самом деле у меня есть еще пара звонков на этом сервере, поэтому я решил объединить их.
Мартавис П.

Ответы:

19

Ваш c5d.9xlargeпоставляется с хранилищем экземпляров 900 ГБ (он же эфемерный ) - вы используете его для хранения и обработки файлов? В то время как у вашего экземпляра есть выделенная полоса пропускания EBS, хранилище SSD на экземпляре все равно будет намного быстрее . Я предлагаю вам использовать это для всех исходных и временных файлов и сохранять результаты только в EBS.

Однако есть несколько предостережений относительно хранения экземпляров:

  1. Вы должны отформатировать и смонтировать его, прежде чем его можно будет использовать. Обратитесь к этому ответу для получения более подробной информации: Автоматическое монтирование хранилища экземпляров SSD на AWS EC2 в Ubuntu 16.04

  2. Содержимое стирается при остановке и повторном запуске экземпляра. Переживает, но не останавливается / запускается.


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

Затем вам нужно будет убедиться, что вы на самом деле используете его - установите для загрузки , рабочего и временного каталога ту точку монтирования SSD.

Или даже лучше - поскольку у вас есть 72 ГБ ОЗУ - создайте RAM-диск и используйте его для временных файлов. Это будет даже быстрее, чем SSD (если файлы подойдут).

Прежде всего, не обращайте внимания на скорость загрузки и оптимизируйте обработку - загрузите файл в EBS и рассчитайте время обработки, затем загрузите на SSD и определите время, а затем на RAM-диск и время обработки. Посмотрите, насколько они отличаются.

Скорость загрузки зависит от многих аспектов, включая расстояние и задержку между вами и регионом AWS, в который вы загружаете. Используете ли вы регион AWS рядом с вами?

Re производительности процессора - у вас есть 36 процессоров доступны, однако каждая одноядерные может быть медленнее , чем ядра в предыдущей 12-основной машине. Это зависит от архитектуры процессора и тактовой частоты. Однако, если вы можете распараллелить обработку видео на 36 потоков, вам будет лучше в этом случае. Если вы полагаетесь на один поток, вы можете не получить желаемую производительность.

Надеюсь, это поможет :)

мМЕ
источник
Да, жесткий диск используется для хранения во время обработки файлов, а файлы временно хранятся до завершения процесса. Полученные файлы отправляются на S3. Я на самом деле не знаю, смонтирован ли SSD. Я начинаю понимать, что AWS не использует спецификации в качестве настройки по умолчанию. Ускоряет ли установка SSD загрузку? Последующие действия: есть ли идеи, как я могу максимально увеличить допустимые характеристики процессора?
Мартавис П.
@MartavisP. добавил несколько обновлений в ответ.
мМЕ
Вау, большое спасибо за информацию! Я буду изучать и применять то, что вы написали.
Мартавис П.
1
Отличный ответ. Вам необходимо провести тестирование, чтобы найти узкое место, разбить его на время загрузки, время обработки, использование процессора, EBS / использование сети и т. Д. Это может быть так просто, как у вас больше задержка на этом сервере, поэтому загрузка будет медленнее, который вы можете обойти, загрузив данные в параллельных потоках в EC2 / S3. Netflix имеет это видео на YouTube, которое может быть интересным, но сделайте шаги по диагностике, прежде чем пытаться разобраться с такими подробностями.
Тим
1

Есть ли возможность рассмотреть альтернативы? За стоимость c5d.9xlarge, даже если вы получаете существенную скидку, на рынке выделенных серверов у вас может быть несколько эквивалентных или более качественных компьютеров.

Использование облака для решения этой задачи с вертикальным масштабированием является рецептом переплаты и, как вы видели, низкой производительности

Извините за отсутствие ответа, но у меня недостаточно представителей, чтобы комментировать

Люк Ф
источник
Для меня это была скидка, переход с UpCloud. Так что вы рекомендуете?
Мартавис П.
1
Похоже, что одни и те же вычисления в облаке всегда примерно в 4 раза превышают стоимость ежемесячно арендованного сервера у какого-то случайного веб-хостера. Затем есть корпоративные скидки (~ 30%), и вы можете забронировать их на 3 года (в 2 раза дешевле, но теперь намного хуже, чем у этого случайного хостера). И этот ежемесячно арендованный сервер, как правило, составляет 1/12 от цены прямой покупки оборудования. Это то, что я вижу по крайней мере. Таким образом, в облаке вы покупаете оборудование каждые 3 месяца, но у вас его нет.
USR
Да, это хороший момент, но вы должны помнить, что платите за обслуживание и удобство, как и все в жизни. Я бы предпочел, чтобы AWS был моим механиком, а не тратить дни на то, чтобы выяснить, как устранить сбой сервера. Это хорошее знание, но в конечном итоге моя карьера связана с кодом, поэтому облако работает на меня.
Мартавис П.