5

У меня есть вопрос, связанный с производительностью приложения и интеллектом.улучшить производительность приложения и интеллект

Я создал сервис окна, если я запустил его на 3 разных машинах конфигурации. Я хочу, чтобы он использовал соответствующие ресурсы машины (процессор и память).

Say Machine 1 (M1) имеет одно ядро ​​с 1 ГБ оперативной памяти.

Машина2 (M2) имеет два ядра с 2 ГБ оперативной памяти.

Машина3 (M3) имеет 4 ядра с барабаном 4 ГБ.

Теперь, когда мой сервис работает на нем, он должен использовать правильный ресурс. Например, если использование процессора в 1%, оно должно идти на пользователя до 50% или более. Если уже 50% используют только 30%. Так что баран. Но никогда не пересекайте лимит, например, 90% или что-то в этом роде.

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

Пожалуйста, помогите мне с идеями.

Благодаря

+0

Я задаю этот вопрос, потому что мое приложение может работать на любой машине конфигурации. В случае, если он работает на одном поточном компьютере, он собирается получить доступ к всем ресурсам, таким как 100% и почти 70-80% памяти. Я не хочу этого. Я хочу создать идеальный регулятор ресурсов, который может работать на любом компьютере конфигурации и все еще отлично работает. – sunder

+0

Можете ли вы просто настроить поток на низкий приоритет, поэтому он будет использовать системные ресурсы только в том случае, если их никто не хочет использовать? – Archeg

+0

Я вообще не играю с преоритами потоков, просто планирую темы. Поскольку это может вызвать ресурсное голодание. Я хочу предотвратить это и вручную обработать это, чтобы моя служба выполнялась элегантно при любой конфигурации системы. – sunder

ответ

4

Как сказал Archeg, на основе числа процессоров, вы можете увеличить количество потоков. Но увеличение количества потоков, основанных на активности процессора, является неправильным способом.

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

Что вам нужно сделать, это решить , что вы хотите сделать. Является ли служба чувствительной к времени? Если это так, то в сильно загруженной системе у вас меньше времени на процессор, и в незанятой системе вы можете использовать больше времени процессора в пределах того же, скажем, второго. Остерегайтесь: если ваша служба выполняет операции ввода-вывода, возможно, ваше обслуживание ограничивает объем использования процессора.

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

Дело в том, что для такого интеллектуального масштабирования нет «независимого от обслуживания» способа, кроме лучших планировщиков (что многие многие умные люди смотрят на протяжении многих лет). Однако вы можете писать службы, которые осведомлены о текущих системных ограничениях и соответственно изменять поведение.

2

Создание высокопроизводительных приложений .NET значительно проще при проектировании с учетом производительности. Удостоверьтесь, что вы разработали план производительности с самого начала своего проекта. Никогда не пытайтесь добавить производительность как шаг после сборки. Кроме того, используйте итеративный процесс разработки, который включает постоянное измерение между итерациями.

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

Рассмотрим следующие принципы проектирования:

  • Рассмотрим безопасность и производительность.
  • Разделите ваше приложение логически.
  • Оцените сродство.
  • Сократить круглые поездки.
  • Избегайте блокировки длительных задач.
  • Использование кеширования.
  • Избегайте ненужных исключений.
Смежные вопросы