Ricerca nel sito web

Come imporre un carico elevato della CPU e uno stress test su Linux utilizzando lo strumento "Stress-ng".


In qualità di amministratore di sistema, potresti voler esaminare e monitorare lo stato dei tuoi sistemi Linux quando sono sottoposti a stress da carico elevato. Questo può essere un buon modo per gli amministratori di sistema e i programmatori di:

  1. ottimizzare le attività su un sistema.
  2. monitorare le interfacce del kernel del sistema operativo.
  3. testa i tuoi componenti hardware Linux come CPU, memoria, dispositivi disco e molti altri per osservare le loro prestazioni sotto stress.
  4. misurare diversi carichi che consumano energia su un sistema.

In questa guida, esamineremo due importanti strumenti, stress e stress-ng per eseguire test di stress sui vostri sistemi Linux.

1. stress: è uno strumento di generazione del carico di lavoro progettato per sottoporre il sistema a una misura configurabile di stress di CPU, memoria, I/O e disco.

2. stress-ng: è una versione aggiornata dello strumento di generazione del carico di lavoro di stress che testa il tuo sistema per le seguenti funzionalità:

  1. Calcolo della CPU
  2. guidare lo stress
  3. Sincronizzazioni I/O
  4. I/O del tubo
  5. distruzione della cache
  6. Stress della VM
  7. sollecitazione della presa
  8. creazione e conclusione del processo
  9. proprietà di cambio di contesto

Sebbene questi strumenti siano utili per esaminare il tuo sistema, non dovrebbero essere utilizzati solo da qualsiasi utente del sistema.

Importante: si consiglia vivamente di utilizzare questi strumenti con privilegi di utente root, perché possono stressare la macchina Linux molto velocemente e per evitare alcuni errori di sistema su hardware mal progettato .

Come installare lo strumento "stress" in Linux

Per installare lo strumento stress su Debian e i suoi derivati come Ubuntu e Mint, esegui il seguente comando.

sudo apt-get install stress

Per installare stress su RHEL/CentOS e Fedora Linux, è necessario attivare il repository EPEL e quindi digitare il seguente comando yum per installare il Stesso:

yum install stress

La sintassi generale per usare stress è:

sudo stress option argument

Alcune opzioni che puoi utilizzare con stress.

  1. Per generare N lavoratori che girano sulla funzione sqrt(), utilizzare l'opzione –cpu N come segue.
  2. Per generare N lavoratori che ruotano sulla funzione sync(), utilizzare l'opzione –io N come segue.
  3. Per generare N lavoratori che ruotano sulle funzioni malloc()/free(), utilizzare l'opzione –vm N.
  4. Per allocare memoria per VM Worker, utilizza l'opzione –vm-bytes N.
  5. Invece di liberare e riallocare le risorse di memoria, puoi sporcare nuovamente la memoria utilizzando l'opzione –vm-keep.
  6. Imposta la sospensione su N secondi prima di liberare la memoria utilizzando l'opzione –vm-hang N.
  7. Per generare N lavoratori che girano sulle funzioni write()/unlink(), utilizza l'opzione –hdd N.
  8. Puoi impostare un timeout dopo N secondi utilizzando l'opzione –timeout N.
  9. Imposta un fattore di attesa di N microsecondi prima dell'inizio di qualsiasi lavoro utilizzando l'opzione –backoff N come segue.
  10. Per mostrare informazioni più dettagliate durante l'esecuzione dello stress, utilizza l'opzione -v.
  11. Utilizza –help per visualizzare la guida sull'utilizzo di stress o visualizzare la pagina man.

Come utilizzo lo stress sui sistemi Linux?

1. Per esaminare l'effetto del comando ogni volta che lo esegui, esegui prima il comando uptime e annota il carico medio.

Successivamente, esegui il comando stress per generare 8 lavoratori che ruotano su sqrt() con un timeout di 20 secondi. Dopo aver eseguito stress, esegui nuovamente il comando uptime e confronta il carico medio.


tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu  8 --timeout 20
tecmint@tecmint ~ $ uptime
Uscita del campione
tecmint@tecmint ~ $ uptime    
 17:20:00 up  7:51,  2 users,  load average: 1.91, 2.16, 1.93     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 --timeout 20
stress: info: [17246] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: info: [17246] successful run completed in 21s
tecmint@tecmint ~ $ uptime
 17:20:24 up  7:51,  2 users,  load average: 5.14, 2.88, 2.17     [<-- Watch Load Average]

2. Per generare 8 lavoratori che girano su sqrt() con un timeout di 30 secondi, mostrando informazioni dettagliate sull'operazione, esegui questo comando:

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
tecmint@tecmint ~ $ uptime
Uscita del campione
tecmint@tecmint ~ $ uptime
 17:27:25 up  7:58,  2 users,  load average: 1.40, 1.90, 1.98     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 8 -v --timeout 30s
stress: info: [17353] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [17353] using backoff sleep of 24000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 8 [17354] forked
stress: dbug: [17353] using backoff sleep of 21000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 7 [17355] forked
stress: dbug: [17353] using backoff sleep of 18000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 6 [17356] forked
stress: dbug: [17353] using backoff sleep of 15000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 5 [17357] forked
stress: dbug: [17353] using backoff sleep of 12000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 4 [17358] forked
stress: dbug: [17353] using backoff sleep of 9000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 3 [17359] forked
stress: dbug: [17353] using backoff sleep of 6000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 2 [17360] forked
stress: dbug: [17353] using backoff sleep of 3000us
stress: dbug: [17353] setting timeout to 30s
stress: dbug: [17353] --> hogcpu worker 1 [17361] forked
stress: dbug: [17353] tecmint@tecmint ~ $ uptime
 17:27:59 up  7:59,  2 users,  load average: 5.41, 2.82, 2.28     [<-- Watch Load Average]

3. Per espandere un lavoratore delle funzioni malloc() e free() con un timeout di 60 secondi, eseguire il seguente comando.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
tecmint@tecmint ~ $ uptime
Uscita del campione
tecmint@tecmint ~ $ uptime
 17:34:07 up  8:05,  2 users,  load average: 1.54, 2.04, 2.11     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --vm 1 --timeout 60s 
stress: info: [17420] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: info: [17420] successful run completed in 60s
tecmint@tecmint ~ $ uptime
 17:35:20 up  8:06,  2 users,  load average: 2.45, 2.24, 2.17     [<-- Watch Load Average]

4. Per spwanare 4 lavoratori che girano su sqrt(), 2 lavoratori che girano su sync(), 2 lavoratori su malloc()/free(), con un timeout di 20 secondi e allocare una memoria di 256 MB per lavoratore VM, esegui questo comando di seguito.

tecmint@tecmint ~ $ uptime
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s 
tecmint@tecmint ~ $ uptime
Uscita del campione
tecmint@tecmint ~ $ uptime
 17:40:33 up  8:12,  2 users,  load average: 1.68, 1.84, 2.02     [<-- Watch Load Average]
tecmint@tecmint ~ $ sudo stress --cpu 4 --io 3 --vm 2 --vm-bytes 256M --timeout 20s
stress: info: [17501] dispatching hogs: 4 cpu, 3 io, 2 vm, 0 hdd
stress: info: [17501] successful run completed in 20s
tecmint@tecmint ~ $ uptime
 17:40:58 up  8:12,  2 users,  load average: 4.63, 2.54, 2.24     [<-- Watch Load Average]