2011-02-26 9 views
4

У нас есть процесс интенсивной транзакции на одном клиентском сайте, работающем на четырехъядерном сервере с четырьмя процессорами. Этот процесс призван использовать все доступные ядра. Поэтому в этой установке мы берем входную очередь, делим ее на 16 и распределяем каждую часть очереди на ядро. Он работает хорошо и не отстает от объема транзакции на коробке.Использование и потоки процессора

Рассматривая использование ЦП на коробке, он никогда не выходит выше 33%. Теперь у нас есть новый клиент, имеющий как минимум вдвое больший объем существующего клиента. Некоторые из нас утверждают, что, поскольку использование ЦП намного ниже максимального использования, мы должны идти с той же конфигурацией.

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

Есть ли у кого-нибудь ощущение, кто прав в этом случае?

Спасибо,

+3

какой диск использование диска? эти транзакции попадают на диск? если это так, вы должны посмотреть на iostat – jterrace

+2

Профилируйте свое приложение должным образом во время работы под нагрузкой, подобной производственным возможностям. Вы увидите, где настоящие узкие места. Теперь это все предположения - это не бесполезно, но это обязательно догадки. – 9000

ответ

2

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

Весьма вероятно, причина одна из следующих:

  • Ваш процесс ограничен пропускной способностью памяти. В этом случае более быстрая RAM поможет, если поддерживается материнской платой. Если возможно, редизайн для ограничения объема данных, получаемых во время обработки, повысит производительность. Добавление большего количества ядер процессора само по себе не будет способствовать повышению производительности.

  • Ваш процесс ограничен дисковым вводом/выводом. Использование более быстрых подключений к диску (SATA и т. Д.) И/или обновление до SSD может помочь, но больше мощности процессора не будет.

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

Сказав это, я также видел ситуации, когда процессы, которые, безусловно, ЦП не в состоянии достичь 100% загрузки ЦП на современных процессорах (Core i7 и т.д.), так как в некоторых турбо-наддува соответствующих случаях, менеджер задач будет показывают менее 100%.

Как указано в 9000, вам нужно выяснить, каковы ваши узкие места, находящиеся под нагрузкой. Перфмон может предоставить достаточно данных, чтобы узнать.

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

Смежные вопросы