Я создал программное обеспечение, которое развернуло на сервере Windows 2003. Программное обеспечение работает как служба непрерывно, и это единственное важное приложение для Windows. Часть времени он извлекает данные из Интернета, а часть времени выполняет некоторые вычисления для этих данных. Он многопоточный - я использую пулы примерно из 4-20 потоков.
Я не буду утомлять вас всеми этими деталями, но достаточно сказать, что по мере того, как я включаю больше потоков в пуле, происходит больше параллельной работы и увеличивается загрузка ЦП. (как и спрос на другие ресурсы, такие как пропускная способность, хотя это меня не касается - у меня есть много)
Мой вопрос таков: должен ли я просто максимально использовать процессор, чтобы получить максимальную отдачу от затраченных средств? Интуитивно, я не думаю, что имеет смысл работать на 100% CPU; даже 95% ЦП кажется высоким, почти как будто я не даю ОС много места, чтобы делать то, что ей нужно. Я не знаю правильный способ определить лучший баланс. Я предполагаю, что смогу измерить и измерить и, вероятно, обнаружу, что наилучшая пропускная способность достигается при средней загрузке процессора 90% или 91% и т. Д., Но ...
Мне просто интересно, есть ли хорошее эмпирическое правило об этом ??? Я не хочу предполагать, что мое тестирование будет учитывать все виды изменений рабочих нагрузок. Я предпочел бы играть немного безопаснее, но не слишком безопасно (иначе я не использую свое оборудование).
Что вы рекомендуете? Что такое интеллектуальное правило использования, ориентированное на производительность, для многопоточного приложения со смешанной нагрузкой (некоторые операции ввода-вывода, некоторые CPU) в Windows?