Actualmente estoy en el proceso de depurar una instalación de Cacti y quiero crear una carga de CPU para depurar mis gráficos de utilización de CPU.
Intenté simplemente ejecutar cat /dev/zero > /dev/null
, lo que funciona muy bien pero solo utiliza 1 núcleo:
¿Existe un mejor método para probar / maximizar los recursos del sistema bajo carga?
Relacionado: ¿Cómo puedo producir una alta carga de CPU en Windows?
performance
debian
benchmarking
Der Hochstapler
fuente
fuente
cat
simultánea?screen
sesiones. Pero preferiría una solución más sofisticada si es posible.cat /dev/random > /dev/null
. Guess/dev/zero
también funciona. :-)Respuestas:
Probar
stress
Es casi un equivalente de Windowsconsume.exe
:fuente
sudo apt-get install stress
sudo yum install stress
sudo pacman -S stress
brew install stress
en OS XNo es necesario instalar ningún paquete adicional, su viejo y buen shell puede hacerlo solo.
Este one-liner cargará sus cuatro núcleos 1 al 100%:
Cómo funciona es bastante simple, inicia cuatro bucles sin fin. Cada uno de ellos está repitiendo la instrucción nula (
:
). Cada ciclo puede cargar un núcleo de CPU al 100%.Si usa
bash
,ksh93
y otros shells que admiten rangos (es decir, nodash
o anterioresksh
), puede usar esta sintaxis no portátil:Reemplace
4
con el número de CPU que le gustaría cargar, si es diferente4
.Suponiendo que ya no tenía un trabajo en segundo plano ejecutándose cuando lanzó uno de estos bucles, puede detener la generación de carga con ese comando:
Respondiendo al comentario de @ underscore_d, aquí hay una versión mejorada que simplifica mucho la detención de la carga y que también permite especificar un tiempo de espera (predeterminado de 60 segundos). A Control: Ctambién matará todos los bucles fuera de control. Esta función de shell funciona al menos bajo
bash
yksh
.1 Tenga en cuenta que con las CPU que admiten más de un subproceso por núcleo (Hyper-threading), el sistema operativo enviará la carga a todas las CPU virtuales. En ese caso, el comportamiento de la carga depende de la implementación (cada subproceso puede informarse como 100% ocupado o no). .
fuente
&
hace que un comando se ejecute en un hilo separado o en un núcleo separado ? Estoy confundido.killall bash
, solo asegúrese de no tener ningún otro script importante ejecutándose en ese momento.killall bash
. Respuesta editada para agregar un método más seguro para finalizar la generación de carga.Hice un script de python simple que hace lo mismo. Puede controlar la cantidad de núcleos de CPU que desea cargar. Lo bueno de esto es que no consumirá ningún otro recurso además de la CPU. (Creo que la idea de Mark Johnson consumiría muchos recursos de E / S, lo que no se desea aquí).
Simplemente ejecute este script desde la terminal
$ python temp1.py
. Debes matar el script cuando hayas terminado.Aquí está mi salida de consumo de CPU cuando cargo 3 de mis núcleos.
fuente
Una forma alternativa sería
o (si nproc está presente)
OpenSSL casi siempre está presente en las distribuciones actuales, por lo que no se necesitan paquetes adicionales.
fuente
Comience dos
comandos para cada núcleo en su sistema.
Para detener
o
fuente
Normalmente tomo la suite cpuburn:
Reemplace 4 con el número de núcleos / hilos HT que tiene o desea estresar.
Nota: Esto enfatiza la mayor cantidad de área de chip posible al mismo tiempo, está programado para generar la máxima disipación de potencia. Tuve que escribir esta publicación por segunda vez, de alguna manera a mi máquina no le gustó :-(
También puedes hacer cpuburn en secuencias:
Y cuando quieras detenerlos:
También puede multiplicar
burnP6 &
para que coincida con la cantidad de núcleos de CPU en su sistema.fuente
He estado desarrollando stress-ng, una herramienta de estrés actualizada que puede enfatizar una amplia gama de aspectos de un sistema Linux. Para obtener más información, consulte http://kernel.ubuntu.com/~cking/stress-ng/
El uso es similar al estrés.
Instalar con
fuente
Puede ejecutar ese comando tantas veces como lo desee, y tomará un núcleo diferente cada vez:
fuente
killall cat
Deberías hacerlo.cat
procesos en ejecución (generalmente lo hago).https://github.com/GaetanoCarlucci/CPULoadGenerator
Solución bastante simple y científica.
Aquí puede ver un ejemplo de dinámica en el que se genera una carga del 50% en el núcleo 0 de la CPU:
Puede ejecutar el proceso en otros núcleos al mismo tiempo.
fuente
Combiné ambos + jlliagre y + ecabuk.
fuente
Puedes usar:
Repita
dd if=/dev/zero of=/dev/null
para sus núcleos de CPU.Presione cualquier tecla para detener la prueba.
fuente
pxz
es una implementación paralela dexz
.pxz -9e /dev/zero --stdout >/dev/null
debería hacer el truco, ya que esto es bastante intensivo en CPUSi
/dev/zero
no es lo suficientemente rápido (nota quepxz
se estrangula la E / S), puede hacerpxz -9e /dev/zero --stdout | pxz -9e --stdout >/dev/null
Las versiones más nuevas de
xz
tienen la--threads
opción que sustituyepxz
.fuente
Esta es la forma en que uso y no hay necesidad de instalar nada extra.
Por ejemplo, para comenzar con 4 procesos,
Puede cambiar el número de procesos mediante la opción "-P" anterior.
fuente
Una línea de comando simple también lo hace:
fuente
while : ; do : ; done
for i in 1 2 3; do while : ; do : ; done & ; done
Quería agregar esto al comentario de @ jlliagre, pero no tengo suficiente reputación. Si va a usar este código en varios servidores y el recuento de CPU variará, puede usar el siguiente comando:
Esto utilizará todos los núcleos en su servidor, independientemente de cuántos tenga. El comando
nproc
es parte de coreutils, por lo que debería estar en la mayoría de las instalaciones de Linux.fuente