pregunta
En los últimos dos días, estuve investigando un problema: el rendimiento de la misma pieza de código en el servidor es inestable, el tiempo de ejecución es largo y la diferencia es muy grande;
El primer paso de la investigación es optimizar el código inestable y que consume mucho tiempo (utilizando subprocesos múltiples), pero el tiempo de ejecución aún fluctúa;
El segundo paso de la investigación es ejecutar el código inestable y que consume mucho tiempo N veces continuamente al llamarlo, y observar el fenómeno.El tiempo es muy estable y la operación es muy corta;
El tercer paso de la investigación es iniciar N tareas después de que el servicio reciba la solicitud y el código de cada tarea se ejecute de manera estable en poco tiempo;
En el cuarto paso de la investigación, sleep(200) se mezcla en N tareas y el tiempo de ejecución sigue siendo largo y corto;
Se sospecha que es un problema con la frecuencia principal del servidor.Después de modificar el modo de frecuencia principal del servidor, puede funcionar de manera estable;
Modificar la frecuencia del servidor
Instalar cpufrequtils
root@ubuntu:~# apt-get install cpufrequtils
Establezca el modo de CPU del servicio de acuerdo con el blog linux cpu para abrir el modo de rendimiento Se encontró que fue causado por la reducción de frecuencia de la CPU. Compruebe que el sistema está configurado en modo de rendimiento no alto. Debe configurarse en modo de alto rendimiento. Los registros relevantes son los siguientes: perf: la interrupción tomó demasiado tiempo (166702> 165147), reduciendo kernel.perf_event_max_samp https://blog.csdn.net/wangy_abcsdf2/article/details/106611935
Ver la frecuencia principal actual de la CPU
root@ubuntu:~# cat /proc/cpuinfo | grep MHz|uniq
Cree un archivo cpufrequtils y configúrelo en modo de rendimiento;
En el archivo cpufrequtils, ingrese "GOBERNADOR="rendimiento""
root@ubuntu:~# vim /etc/default/cpufrequtils
root@ubuntu:~# systemctl restart cpufrequtils
powersave |
Gobernador de ahorro de energía, la CPU funciona a la frecuencia más baja |
userspace |
Gobernador del espacio de usuario. Ejecutar a la frecuencia de la CPU establecida por el usuario |
conservative |
Gobernador conservador. Subida/bajada de frecuencia según demanda |
ondemand |
Gobernador bajo demanda. El modo predeterminado es aumentar/disminuir automáticamente la frecuencia según la demanda. |
performance |
Regulador de rendimiento, la CPU funciona a la máxima frecuencia |
cpufrequtils | Blog Tanky Woo Blog de Tanky Woo, centrado en Python, Linux, Gentoo, Mac OS, Vim, código abierto, etc. https://blog.tankywoo.com/2014/05/26/cpufrequtils.htmlVer información de la CPU
root@ubuntu:~# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 5.00 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 5.00 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 800 MHz (asserted by call to hardware).
Usar la configuración de potencia de la cpu
Agregue tareas de tiempo, active el modo de rendimiento después de las 7:30, active el modo de ahorro de energía después de las 17:30;
En el archivo /etc/crontab, agregue lo siguiente:
30 17 * * * root cpupower -c all frequency-set -g powersave
30 7 * * * root cpupower -c all frequency-set -g performance
Para el uso de tareas de temporización crontab específicas, consulte a continuación: