Резюме
Я читаю последовательные данные через порт USB, и когда ноутбук заряжается, COM-порт получает около 60 обновлений в секунду, а когда ноутбук не заряжается, COM-порт получает около 1 обновления в секунду.
Фон (я не уверен, какая информация полезна)
Я работаю над проектом, в котором набор датчиков взаимодействует с микропроцессором, а микропроцессор подключен к ноутбуку. Поскольку мне нужны данные для управления в реальном времени, важна скорость, с которой ноутбук получает информацию от микропроцессора.
Как правило, мне удавалось получать около 60 обновлений от микропроцессора в секунду. Однако я часто сталкиваюсь с замедлением без видимой причины. Сегодня произошло одно из таких замедлений, и я понял, что когда ноутбук не заряжался активно, обновления в секунду были очень медленными, но когда ноутбук заряжался, он получал обновления на полной скорости.
Обратите внимание, что микропроцессор не питается от ноутбука.
Редактировать 1: Мой план питания настроен на баланс.
Изменить 2: я сделал следующие изменения, чтобы попытаться улучшить производительность
- Я установил для своих критических процессов приоритет в реальном времени
- установить мой план питания на высокую производительность
- Я выводил данные в консольное окно довольно быстро, поэтому я уменьшил консольную печать
- Я отключил выборочную приостановку USB
- Ранее я изменил таймер задержки COM-порта на 1 мс, а прием (байты) - на 128, чтобы попытаться устранить проблемы со связью с этим устройством.
Я думал, что это исправило это, но после нескольких минут работы замедление произошло снова.
Глядя на диспетчер задач, когда программа работает должным образом, загрузка процессора составляет около 50%, а использование памяти составляет около 50%. В тот момент, когда произошло замедление, загрузка ЦП снизилась примерно до 25%, использование памяти осталось неизменным.
Похоже, что количество потоков и дескрипторов, отображаемых в диспетчере задач, неуклонно растет с течением времени, примерно до 4000 потоков и 98000 дескрипторов. Когда я закрыл свои программы, количество потоков уменьшилось до 3000, а число обработчиков - до 90000.
Изменить 3:
Я вошел в BIOS и изменил Intel Speedstep на отключенный, а управление состояниями C на отключенный. Это, похоже, ничего не исправило. Я сделал это по совету этой веб-страницы: http://smallbusiness.chron.com/prevent-drops-cpu-speed-70828.html
Редактировать 4: Я использовал Docklight, чтобы подтвердить, что микропроцессор отправляет информацию достаточно быстро. Так что проблема определенно на стороне ноутбука