2010-11-29 1 views
3

Существует множество вопросов о том, как SO спрашивает о преимуществах и недостатках виртуализации для разработки и тестирования.Вопросы программирования для виртуализованных приложений

Мой вопрос немного отличается - в мире, в котором виртуализация является обычным явлением, каковы вещи, которые должен учитывать программист, когда дело доходит до написания программного обеспечения, которое может быть развернуто в виртуализованной среде? Некоторые из моих первоначальных мыслей:

  1. Детектирование, если другой экземпляр приложения работает
  2. Взаимодействие с аппаратными средствами (физический/виртуальный)
  3. ресурсов дросселирования (приложение написано для многоядерных процессоров, работающих на одно- CPU VM)

Что-нибудь еще?

ответ

3

У вас есть большинство основ, покрытых тремя широкими точками. Остерегайтесь:

  • Вопросы, связанные с аппаратным обеспечением. Скорости доступа к диску значительно отличаются (и могут иметь необычно высокие экстремумы), представьте себе, что VM закрыта на 3 дня в середине записи на диск ...). Доступ к сети может прерываться с необычными ответами
  • Необычные арифметические указатели. Старайтесь избегать этого
  • Тяжелая зависимость от необычно необычных низкоуровневых/монтажных инструкций
  • Опора на машинные часы. Помните, что любые вызовы, вы делаете на часы, и интервалы времени, могут регулярно возвращаться необычные значения при работе на VM
  • одиночных приложений процессора может оказаться, работающие на нескольких машинах CPU, которые делают такие вещи, как напуганные Work Stealing
  • Угловые случаи и необычные режимы отказа намного чаще встречаются. Возможно, вам не придется беспокоиться о том, что сетевая карта исчезнет посреди вашего общения на реальной машине, так же как и на виртуальном
  • Ручное управление ресурсами (память, диск и т. Д.). Чем более автоматизирована работа, тем лучше виртуальная среда, вероятно, будет обрабатывать ее. Например, вам может быть лучше использовать язык/среду, управляемый памятью, вместо написания приложения в C.
+0

Отличный ответ, все это хорошие моменты, и некоторые из них я раньше не рассматривал, например, вопросы времени и времени. – Jazza 2010-12-13 10:01:30

1

По моему опыту вам действительно нужно только несколько вещей, о которых вам нужно заботиться:

  • Ваше приложение не должно прерываться из-за нехватки процессорного времени (т. Е.используя время ожидания слишком плотно)

  • Не используйте низкий приоритет всегда выполняющимися процессы для выполнения задач на фоне

  • Часы могут работать неровно

  • Не Трассы, что говорит OS о загрузке системы

Почти любой другой вопрос, не должен быть обработан приложением, но в виртуализаторе, хостовой ОС или предпочитаемый SYS-админ :-)