
Actualmente estoy en el proceso dedepurar una instalación de Cactiy quiero crear una carga de CPU para depurar mis gráficos de utilización de CPU.
Intenté simplemente ejecutar cat /dev/zero > /dev/null
, que funciona muy bien pero solo utiliza 1 núcleo:
¿Existe un método mejor para probar/maximizar los recursos del sistema bajo carga?
Relacionado:¿Cómo puedo producir una carga alta de CPU en Windows?
Respuesta1
Intentarstress
Es prácticamente un equivalente de Windows consume.exe
:
oliver$ ./stress --cpu 3
stress: info: [18472] dispatching hogs: 3 cpu, 0 io, 0 vm, 0 hdd
Respuesta2
No es necesario instalar ningún paquete adicional, su antiguo shell puede hacerlo solo.
Esta frase cargará sus cuatro núcleos 1 al 100%:
for i in 1 2 3 4; do while : ; do : ; done & done
El funcionamiento es bastante sencillo: inicia cuatro bucles sin fin. Cada uno de ellos está repitiendo la instrucción nula ( :
). Cada bucle es capaz de cargar un núcleo de CPU al 100%.
Si usa bash
y ksh93
otros shells que admiten rangos (es decir, no dash
o anteriores ksh
), puede usar esta sintaxis no portátil:
for i in {1..4}; do ...
Reemplace 4
con la cantidad de CPU que desea cargar si es diferente de 4
.
Suponiendo que no tenía ningún trabajo en segundo plano ejecutándose cuando inició uno de estos bucles, puede detener la generación de carga con ese comando:
for i in 1 2 3 4; do kill %$i; done
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 60 segundos). A Control: Ctambién eliminará todos los bucles fuera de control. Esta función de shell funciona al menos bajo bash
y ksh
.
# Usage: lc [number_of_cpus_to_load [number_of_seconds] ]
lc() {
(
pids=""
cpus=${1:-1}
seconds=${2:-60}
echo loading $cpus CPUs for $seconds seconds
trap 'for p in $pids; do kill $p; done' 0
for ((i=0;i<cpus;i++)); do while : ; do : ; done & pids="$pids $!"; done
sleep $seconds
)
}
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 carga depende de la implementación (se puede informar que cada subproceso está 100 % ocupado o no). .
Respuesta3
Una forma alternativa sería
openssl speed -multi $(grep -ci processor /proc/cpuinfo)
o (si nproc está presente)
openssl speed -multi $(nproc --all)
OpenSSL casi siempre está presente en las distribuciones actuales, por lo que no se necesitan paquetes adicionales.
Respuesta4
empezar dos
sha1sum /dev/zero &
comandos para cada núcleo de su sistema.
Para detener
killall sha1sum
o
kill sha1sum