Как использовать все ядра в моей рабочей роли в Windows Azure? - PullRequest
1 голос
/ 20 мая 2011

Предположим, я указал, что хочу, чтобы моя рабочая роль работала на 4-ядерной виртуальной машине.Как использовать все ядра?

Похоже, есть метод RoleEntryPoint.Run(), который я переопределяю для установки обработчика запросов.

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

Ответы [ 4 ]

2 голосов
/ 17 июня 2011

Вы должны добавить несколько рабочих в WorkerRole :: OnStart (), как описано здесь http://www.31a2ba2a -b718-11dc-8314-0800200c9a66.com / 2010/12 / running-multiple-threads-on-windows.HTML

2 голосов
/ 20 мая 2011

Создать потоки или использовать задачи .Net 4, чтобы .Net планировал ваши задания с помощью пула потоков.

1 голос
/ 17 июня 2011

Еще один способ сохранить занятость всех четырех ядер - это масштабировать приложение до нескольких экземпляров веб-роли таким образом, чтобы каждое ядро ​​работало в своем экземпляре (обратите внимание, что в Windows Azure каждый экземпляр запускается в своя виртуальная машина). Поскольку в Windows Azure вы платите по часам за каждое ядро, использование одного ядра в каждом из 4 экземпляров рабочих ролей будет стоить столько же, сколько и запуск 4 ядер в одном экземпляре рабочей роли.

Преимущество использования 4 экземпляров Worker Role заключается в том, что вы можете более удобно настроить 3, 2 или 10 экземпляров в зависимости от объема вычислений, которые вам необходимо использовать в любой момент времени. Изменить количество запущенных экземпляров очень просто - вам не нужно повторно развертывать приложение. Чтобы изменить размер экземпляров, необходимо повторно развернуть. Кроме того, у вас меньше детализации с размером экземпляра: частичное, 1, 2, 4 и 8 ядер. Не существует размера экземпляра, скажем, с 6 ядрами.

Обратите внимание, что соглашение об уровне обслуживания Windows Azure не действует, если у вас есть один экземпляр. Требуется минимум 2 экземпляра, прежде чем различные SLA пнут его. Частично это позволяет Fabric Controller Azure обновлять части вашего приложения (например, с помощью патча O / S), не удаляя все приложение целиком.

Предостережение: для унаследованного кода, который не разработан с учетом облака, возможно иметь код, который не будет работать правильно, если запущено более одного экземпляра. Другими словами, он не может эффективно «масштабироваться»; в этом случае вы можете «увеличить», запустив его на большем размере экземпляра (например, с 4 ядрами).

1 голос
/ 23 мая 2011

+ 1 к Оливеру - порождают задачи TPL для каждого запроса, среда выполнения должна позаботиться обо всем оттуда.

...