Назад | Перейти на главную страницу

Параллельная обработка и дисковый ввод-вывод для повышения производительности. Больше ядер или больше серверов?

У меня большая работа по анализу экземпляра AWS EC2 (c3.8xlarge) в Ubuntu 12.04.

Цель состоит в том, чтобы загрузить сервер на 100% ЦП, выполняя столько заданий, сколько позволяет память (различные объемы, но обычно 1-3 ГБ на задание).

Моя первоначальная мысль заключалась в том, чтобы подготовить большой экземпляр и запустить 32 задания одновременной обработки - по одному на ядро. Однако эти задания выполняют много операций чтения из файлов (очень часто одного и того же файла), много сжатия / распаковки и, в основном, много вещей, занимающих много места на диске.

Раньше, когда я запускал тест на узле m3.xlarge (15 ГБ ОЗУ, 4 ядра), я мог получить очень хорошее 100% использование ЦП для 4 одновременных задач.

Однако мои первоначальные результаты для 32 ядер с 60 ГБ ОЗУ намного хуже. Я подозреваю, что сервер является узким местом на диске, который в настоящее время является SSD общего назначения (без IOPS).

Возникает вопрос - что здесь лучше? Пытаться ли увеличить количество операций ввода-вывода в секунду для диска или попробовать какую-нибудь настройку RAID, чтобы большой сервер мог выполнять больше задач? Или я всегда собираюсь повысить общую пропускную способность, просто запустив несколько меньших серверов в кластере, не создавая узких мест, связанных с одновременным запуском 30+ заданий на одном диске?

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

«Лучшее», конечно, зависит от него, но есть несколько хорошо известных способов повысить производительность ввода-вывода на AWS.

  • RAID0 - совокупность томов SSD EBS общего назначения.
  • Несколько больших выделенных томов IOP EBS.
  • Если вы выполняете последовательную работу, используйте 640 ГБ локального хранилища экземпляра, которое у вас есть для этого типа.
  • Комбинация трех вышеуказанных пунктов.

Все вышеперечисленное предполагает, что ваш экземпляр работает в режиме, оптимизированном для EBS.

Вы, безусловно, можете получить максимальное количество операций ввода-вывода в секунду на Amazon, вам просто нужно быть готовым заплатить за это. Я не верю, что вы можете присоединить хранилище экземпляров после создания экземпляра, поэтому для этого варианта может потребоваться запуск нового экземпляра.