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

1

У нас есть приложение 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

Voxel - 2.6.5

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

StormOnDemand - 8 x Intel (R) Xeon (R) CPU E5506 @2.13GHz; 16 ГБ оперативной памяти; 230 ГБ HDD (серверы Storm Bare Metal)

Voxel - 7 x Intel (R) Xeon (R) CPU L5640 @2.27GHz; ОЗУ 14 ГБ; 200GB 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

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

Теги:
performance
multithreading

1 ответ

1
Лучший ответ

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

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню