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

Консультации по оборудованию для сервера обработки растровых изображений / изображений OpenGL?

Я пытаюсь разработать сборку для сервера обработки для обработки растровых изображений, а также рендеринга openGL для изображений с хроматическим ключом и автоматизации Photoshop. Мои поиски здесь и в Google дали на удивление мало результатов, и, поскольку там нет тегов для растровых изображений или обработки изображений, я полагаю, что это специализированное приложение.

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

Есть ли у кого-нибудь опыт работы с таким типом серверов обработки? Есть ли какие-то особые соображения, которые следует учесть в подобной сборке, или я слишком много об этом думаю?

Для обработки растровых изображений мы используем классы C # System.Drawing.Imaging и System.Drawing.Drawing2D которые являются библиотеками GDI +. Мы запускаем это многопоточное, используя System.Threading. Для хроматического ключа мы используем Primatte, который является openGL, но я не знаком с другими библиотеками, которые он использует.

Некоторое время назад я администрировал несколько похожий кластер серверов (двухчленный кластер), и мой базовый подход был ~CPU bottleneck... max out processor speed and core count. Он также был на высокопроизводительных серверах с большим объемом оперативной памяти, твердотельными накопителями большой емкости (для быстрого доступа к изображениям, которые были временно сохранены на нем во время обработки) и несколькими сетевыми адаптерами 1 Гбит, опять же, чтобы максимизировать производительность и, следовательно, пропускную способность обработанных изображений.

Работал очень хорошо, и с большой нагрузкой на критически важную для бизнеса функцию, MBA и другие специалисты были счастливы вложить дополнительно ~ 25000 долларов в оборудование, чтобы все работало гладко. По крайней мере, однажды я дал им все преимущества своей рекомендации. И да, я думаю, вы слишком много думаете об этом, по крайней мере, немного. Начните с "простого" использования мощного оборудования для решения проблемы. Если это не обеспечивает требуемой производительности, вам нужно побеспокоиться об оптимизации кода и изучении потока процесса на наличие узких мест.

Прежде чем я перейду к своему основному процессу создания и "продажи" моей рекомендации, позвольте мне указать на одну из фраз SA:

It's better to over-engineer than under-engineer.

  • (в данном конкретном случае лучше ошибиться, если указать «слишком много» сервера, чем «слишком мало».)

Я бы сказал, что ваша ситуация очень похожа на мою, и посоветовал бы аналогичный подход. И я полагаю, что ни одно из нижеприведенных не является строго «системным администрированием», так что вы, вероятно, можете перестать читать здесь, но все это очень тесно связано, и если вы не можете эффективно продавать свои рекомендации бизнес-подразделениям, системное администрирование и архитектура - ад ... если вы можете, вы можете называть себя системным инженером / архитектором и требовать больше денег за ту же работу, потому что у вас есть возможность выразить свои идеи в простых числах для «медлительных детей». (Руководители и MBA.)

Мой процесс:

  1. Выполните базовые тесты и используйте простые прогнозы, чтобы получить базовое представление о том, какая производительность потребуется.
    • Создает оценку и помогает мне выбрать, какое оборудование (в общем смысле) получить, и я предлагаю 3 спецификации.
      • Я думаю, что минимум сработает (что на самом деле является минимумом + ~ 15%, чтобы дать мне запас буфера / безопасности, если мои числа немного сбиты с толку)
      • А разумный максимальная / "лучшая" возможная конфигурация
      • Среднее значение, что-то среднее между ними.
    • Основываясь на бизнес-приоритетах (экономия денег? Максимальная производительность / производительность в этой системе? Некоторый компромисс?), Я сделаю одну свою рекомендацию, а два других включили варианты, которые должен работать, если моя рекомендация не принята по какой-либо причине.
  2. Я выделю стоимость каждого решения и сделаю элементарное, количественный анализ затрат и выгод там, где это возможно. В данном случае из моего прошлого, это был бизнес-процесс, приносящий доход, так что это был простой вопрос ~we made $[x] from this last year, on [y] images processed, for a profit of $[z]/image processed, or $[i]/day. Затем я пересчитал стоимость оборудования в аналогичные единицы - $[x] total CapEx, or $[z]/image processed or $[i]/day. (И когда существует другой «прогноз» будущего, сделайте то же самое для «прогнозируемых» будущих чисел.)
  3. И как только вы понесли затраты, переходите к вычислению или выявлению выгод. Использование этих долларовых цифр и сравнения затрат для обоснования вашего решения (и защиты вашей окончательной рекомендации) действительно полезно и, по моему опыту, обычно оправдывает дополнительные расходы на потенциально недостаточно используемое оборудование.
    • в случае, когда я имею в виду, "лишний" $25,000 моя рекомендация стоит больше первоначального предложения ~buy a single mid-range server and slap our image processing stuff on that сломался примерно до $70 a day, и <10 cents an image processed... и мы сделали много больше, чем 10 cents на каждом обработанном нами изображении.
  4. И чтобы вдвойне убедиться, что костюмы соответствуют моей чрезмерно спроектированной рекомендации по избыточному кластеру (которую мне было бы намного проще поддерживать и администрировать), я выделил расходы на нехватку вычислительных ресурсов на сервере - потенциальную потерю дохода из-за отсутствия мощности, почасовые затраты на выполнение «вручную» на рабочих станциях (several hundred dollars an hour) и добавил качественные преимущества (supportability, ease of managementи т. д.) и затрат (reputation damage, angry clientsи т.д.) как вишенка на вершине. А затем еще раз отметил, что рекомендованное мной решение стоит только $70 a day.

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