Resumen
Estoy leyendo datos en serie a través de un puerto USB y cuando la computadora portátil se está cargando, el puerto COM recibe aproximadamente 60 actualizaciones por segundo y cuando la computadora portátil no se está cargando, el puerto COM recibe aproximadamente 1 actualización por segundo.
Antecedentes (no estoy seguro de qué información es útil)
Estoy trabajando en un proyecto donde un conjunto de sensores se comunican con un microprocesador y el microprocesador está conectado a una computadora portátil. Debido a que necesito los datos para usar en el control en tiempo real, la velocidad a la que la computadora portátil recibe información del microprocesador es importante.
Por lo general, he podido obtener alrededor de 60 actualizaciones del microprocesador por segundo. Sin embargo, a menudo me enfrento a desaceleraciones ocasionales sin ninguna razón obvia. Hoy se produjo una de estas ralentizaciones y me di cuenta de que cuando la computadora portátil no estaba cargando activamente las actualizaciones por segundo era muy lenta, pero cuando la computadora portátil se estaba cargando recibía actualizaciones a toda velocidad.
Tenga en cuenta que el microprocesador no es alimentado por la computadora portátil.
Edición 1: Mi plan de energía está configurado en equilibrado.
Edición 2: hice los siguientes cambios para intentar mejorar el rendimiento
- Establezco mis procesos críticos en prioridad en tiempo real
- establecer mi plan de energía a alto rendimiento
- Estaba enviando datos a una ventana de consola bastante rápido, así que disminuí la impresión de la consola
- Deshabilité la suspensión selectiva de USB
- Anteriormente, había cambiado el temporizador de latencia del puerto COM a 1 ms y la recepción (bytes) a 128 en un intento de solucionar problemas de comunicación con este dispositivo.
Pensé que esto lo había solucionado, pero después de correr durante varios minutos, la desaceleración volvió a ocurrir.
Al observar el Administrador de tareas cuando el programa se ejecuta correctamente, el uso de la CPU es de aproximadamente el 50% y el uso de la memoria es de aproximadamente el 50%. Justo cuando se produjo la desaceleración, la utilización de la CPU se redujo a aproximadamente el 25%, el uso de la memoria se mantuvo sin cambios.
Parecía que el número de subprocesos y controladores que se muestran en el administrador de tareas aumentaba constantemente con el tiempo, hasta aproximadamente 4000 subprocesos y 98000 controladores. Cuando cerré mis programas, el recuento de subprocesos se redujo a aproximadamente 3000 y el recuento de manejo a aproximadamente 90,000.
Edición 3:
Entré en el BIOS y cambié Intel Speedstep a deshabilitado y el control de los estados C a deshabilitado. Esto no pareció arreglar nada. Hice esto siguiendo los consejos de esta página web: http://smallbusiness.chron.com/prevent-drops-cpu-speed-70828.html
Edición 4: utilicé Docklight para confirmar que el microprocesador está enviando información lo suficientemente rápido. Entonces, el problema definitivamente está en el extremo de la computadora portátil