Почему средние значения загрузки для потоков Python различны для разных настроек облачного провайдера Linux, хотя спецификации одинаковы? - PullRequest
1 голос
/ 31 мая 2011

У нас есть приложение Python, которое опрашивает каталоги, используя потоки и уведомлять наблюдателей. Мы всегда запускаем это приложение в облаке сервер предоставлен Voxel (http://www.voxel.net). Мы в настоящее время тестирование другого поставщика облачного сервера StormOnDemand (http://stormondemand.com) и когда мы запустили наше приложение, наша загрузка средние были намного выше, чем когда они бегали облачный сервер Voxel, несмотря на то, что спецификации примерно одинаковы (см. ниже для более подробной информации о настройке). Мы также обеспечили тогда, когда тестирование сервера не обрабатывало другие нагрузки.

Я написал простое тестовое приложение (test_threads.py - прилагается, или обратитесь к http://pastebin.com/xGQU7JD0), который имитирует проблемы, которые мы видят, запуская темы, которые зацикливаются, спят для пользователя определенное время на каждом цикле. Требуется 2 параметра, количество потоки для запуска и интервал периода.

Когда я запускаю "python test_threads.py 50 0,1" в течение примерно 10 минут

Результаты средней нагрузки:

StormOnDemand: $ uptime 18:46:22 до 7:29, 6 пользователей, средняя загрузка: 4,43, 4,16, 2,93

Воксельный $ uptime 18:48:14 до 9 дней, 15:09, 9 пользователей, средняя загрузка: 0,51, 0,47, 0,43

Средняя нагрузка на сервер StormOnDemand намного выше.

Версия Python:

StormOnDemand - 2.6.5

Воксел - 2,6,5

Спецификация сервера:

StormOnDemand - 8 х Intel (R) Xeon (R) CPU E5506 @ 2,13 ГГц; 16 ГБ ОЗУ; 230 ГБ HDD (серверы Storm Bare Metal)

Voxel - 7 х Intel (R) Xeon (R) CPU L5640 @ 2,27 ГГц; 14 ГБ ОЗУ; 200 ГБ HDD (Серверы VoxCloud)

OS:

StormOnDemand - Ubuntu 10.04 - 2.6.36-rc8101910 # 1 SMP вт 19 октября 19:18:34 UTC 2010 x86_64 GNU / Linux

Voxel - Ubuntu 10.04 - 2.6.32-31-сервер # 61-Ubuntu SMP пт 8 апреля 19:44:42 UTC 2011 x86_64 GNU / Linux

Метод виртуализации:

StormOnDemand - Не уверен на 100%, но я думаю, что они используют Xen

Voxel - Не уверен, но изображение, которое мы используем, выглядит для нас как стандартный стандартный сервер Ubuntu 10.04

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

1 Ответ

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

В общем, попытка оценить возможности многопоточности машины в одном интерпретаторе Python не очень хорошая идея, так как GIL : в любое время только один из потоковИнтерпретатор готов к запуску.

Теперь средняя нагрузка в Linux - это экспоненциальное среднее число выполняемых потоков с различными коэффициентами демпфирования.Из этого следует, что в системе StormOnDemand должны были одновременно выполняться другие процессы (4 запускаемых - 1 Python = 3 других).(Обратите внимание, что даже 4 запускаемых процесса не представляют высокой нагрузки в 8-канальной системе.)

Чтобы улучшить ваши измерения, вы можете считать из / proc / self / stat количество тактовпроцесс запланирован как раз перед его выходом.Это позволит сравнить скорости процессора двух хостов.

Более высокая средняя загрузка также может быть связана с гипервизором (XEN) и работой в виртуализированной среде.Более высокое среднее значение не обязательно указывает на проблему с производительностью: зависит ли это от вашей критической метрики производительности.

Например, чтобы определить максимальную пропускную способность (доступную емкость) хостов, на которые вы должны попытатьсянасыщать их представительной рабочей нагрузкой.Если проблема связана с отзывчивостью (т. Е. С какой скоростью она может реагировать на раздражитель), вам необходимо измерить время отклика (возможно, близко к конечным пользователям, чтобы учесть задержку в сети).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...