Quiero crear una carga cercana al 100% en una máquina Linux. Es un sistema de cuatro núcleos y quiero que todos los núcleos funcionen a toda velocidad. Idealmente, la carga de la CPU duraría una cantidad de tiempo designada y luego se detendría. Espero que haya algún truco en bash. Estoy pensando en una especie de bucle infinito.
281
Respuestas:
También puedes hacer
Para ejecutar más de esos para cargar más núcleos, intente bifurcarlo:
Repita el comando en las llaves tantas veces como el número de hilos que desea producir (aquí 4 hilos). Simple enter hit lo detendrá (solo asegúrese de que no se esté ejecutando ningún otro dd en este usuario o también lo matará).
fuente
/dev/zero
y escribir en/dev/null
no es un muy buen generador de carga: debe ejecutar muchos de ellos para generar una carga significativa. Es mejor hacer algo asídd if=/dev/urandom | bzip2 -9 >> /dev/null
./dev/urandom
requiere mucho más esfuerzo para generar resultados, ybzip2
gastará mucho esfuerzo tratando de comprimirlo, por lo que el uso general de la CPU es mucho mayor que "llenar un bloque con ceros y luego tirarlo".jobs -p | xargs kill
para matar solo los procesos que ha creado.Utilizo el estrés para este tipo de cosas, puedes decirle cuántos núcleos maximizar ... también permite estresar la memoria y el disco.
Ejemplo para estresar 2 núcleos durante 60 segundos
stress --cpu 2 --timeout 60
fuente
sudo yum install stress
EPEL
repositorio para CentOSwget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
brew
install stress
en OS X. También por alguna razón tuve que especificar 8 núcleos en un MBPr de cuatro núcleossudo apt-get install stress
en sistemas basados en debian, para completar. Lo usé para probar un mod de enfriamiento en el Kit Intel i7 NUC .Creo que este es más simple. Abra la Terminal y escriba lo siguiente y presione Entrar.
Para utilizar completamente las CPU modernas, una línea no es suficiente, es posible que deba repetir el comando para agotar toda la potencia de la CPU.
Para terminar con todo esto, simplemente pon
La idea se encontró originalmente aquí , aunque estaba destinada a usuarios de Mac, pero también debería funcionar para * nix.
fuente
yes
comando (suponiendo que el sistema estuviera inactivo).Aunque llego tarde a la fiesta, esta publicación se encuentra entre los mejores resultados en la búsqueda de Google "generar carga en Linux".
El resultado marcado como solución podría usarse para generar una carga del sistema, prefiero usar
sha1sum /dev/zero
para imponer una carga en un núcleo de CPU.La idea es calcular una suma hash a partir de un flujo de datos infinito (p. Ej. / Dev / zero, / dev / urandom, ...) este proceso intentará maximizar un cpu-core hasta que se cancele el proceso. Para generar una carga para más núcleos, se pueden canalizar varios comandos juntos.
p.ej. generar una carga de 2 núcleos:
sha1sum /dev/zero | sha1sum /dev/zero
fuente
Un núcleo (no invoca un proceso externo):
Dos núcleos:
Sin embargo, esto último solo hace que los dos míos alcancen ~ 50% ...
Este hará que ambos lleguen al 100%:
fuente
renice 19 -p $$
. Todavía maximizará las CPU, pero no afectará a otros procesos.Para cargar 3 núcleos durante 5 segundos:
Esto resulta en una alta carga de kernel (sys) de las muchas llamadas al sistema write ().
Si prefiere principalmente la carga de la CPU de userland:
Si solo desea que la carga continúe hasta que presione Ctrl-C:
fuente
Aquí hay un programa que puedes descargar aquí
Instalar fácilmente en su sistema Linux
y ejecútalo en una línea de comando simple
para estresar todas tus CPU (como sea que tengas) con 40 hilos cada uno ejecutando un complejo
sqrt
cálculo en números generados aleatoriamente.Incluso puedes definir el tiempo de espera del programa
a diferencia de la solución propuesta con el
dd
comando, que trata esencialmente conIO
y, por lo tanto, realmente no sobrecarga su sistema porque trabaja con datos.El programa de estrés realmente sobrecarga el sistema porque se ocupa de la computación.
fuente
stress
comando. Como dice esa respuesta, puede instalarlo a través de yum / apt / etc.Esta bomba tenedor causará estragos en la CPU y probablemente bloqueará su computadora.
fuente
Un bucle infinito es la idea que también tuve. Una de aspecto extraño es:
(
:
es lo mismo quetrue
, no hace nada y sale con cero)Puede llamar a eso en una subshell y ejecutar en segundo plano. Hacer ese
$num_cores
tiempo debería ser suficiente. Después de dormir el tiempo deseado se puede matar a todos ellos, se obtiene con los PIDjobs -p
(pista:xargs
)fuente
Yo dividiría la cosa en 2 scripts:
infinite_loop.bash:
cpu_spike.bash:
fuente
fuente
fuente
He usado
bc
( calculadora binaria ), pidiéndoles PI con una gran cantidad de decimales.con NUMCPU (bajo Linux):
Este método es fuerte pero parece amigable con el sistema , ya que nunca he bloqueado un sistema al usar esto.
fuente
fuente
:-)
Fui a través de Internet para encontrar algo así y encontré este muy útil script de cpu hammer.
fuente
NUM_PROC=${1:-10}
.Utilizando los ejemplos mencionados aquí, pero también la ayuda de IRC, desarrollé mi propio script de prueba de estrés de CPU. Utiliza una subshell por hilo y la técnica de bucle sin fin. También puede especificar el número de subprocesos y la cantidad de tiempo de forma interactiva.
fuente
Utilizando ideas aquí, el código creado que sale automáticamente después de una duración establecida, no tiene que matar procesos:
fuente
Esto hace un truco para mí:
y no usa nada excepto bash.
fuente
Para mejorar la respuesta de dimba y proporcionar algo más conectable (porque necesitaba algo similar). He escrito lo siguiente usando el concepto de carga dd: D
Verificará los núcleos actuales y creará tantos subprocesos dd. Iniciar y finalizar la carga del núcleo con Enter
fuente
Combiné algunas de las respuestas y agregué una forma de escalar el estrés a todos los cpus disponibles:
fuente
Dimba
dd if=/dev/zero of=/dev/null
es definitivamente correcto, pero también vale la pena mencionar que está verificando maximizar la CPU al 100% de uso. Puedes hacer esto conEsto solicita una salida de ps de un promedio de 1 minuto del uso de la CPU por cada proceso, luego los suma con awk. Si bien es un promedio de 1 minuto, ps es lo suficientemente inteligente como para saber si un proceso solo ha durado unos segundos y ajusta la ventana de tiempo en consecuencia. Por lo tanto, puede usar este comando para ver inmediatamente el resultado.
fuente
para aumentar la carga o consumir CPU 100%
entonces puede ver los usos de la CPU escribiendo el comando
para liberar la carga
fuente
Simplemente pegue a este chico malo en el SSH o la consola de cualquier servidor que ejecute Linux.
Puede matar los procesos manualmente, pero apago el servidor cuando termino, más rápido.Editar: He actualizado este script para que ahora tenga una función de temporizador para que no haya necesidad de matar los procesos.
fuente