Qual è il modo migliore per misurare il tempo "di riserva" della CPU su un sistema basato su Linux

StackOverflow https://stackoverflow.com/questions/131335

  •  02-07-2019
  •  | 
  •  

Domanda

Per alcuni dei clienti per i quali sviluppiamo software, siamo tenuti a "garantire" una certa quantità di risorse di riserva (memoria, spazio su disco, CPU). La memoria e lo spazio su disco sono semplici, ma la CPU è un po 'più difficile.

Una tecnica che abbiamo usato è quella di creare un processo che consuma una quantità garantita di tempo CPU (diciamo 2,5 secondi ogni 5 secondi). Eseguiamo questo processo con la massima priorità per garantire che venga eseguito e consumato tutti i cicli CPU richiesti.

Se le nostre normali applicazioni sono in grado di funzionare a un livello accettabile di prestazioni e possono superare tutti i loro test di funzionalità mentre è in esecuzione anche il processo del tempo libero, allora "assumiamo" che abbiamo rispettato il nostro impegno per il tempo libero della CPU.

Sono sicuro che ci sono altre tecniche per fare la stessa cosa e vorrei conoscerle.

È stato utile?

Soluzione

Quindi questa potrebbe non essere esattamente la risposta che stai cercando, ma se tutto ciò che vuoi fare è assicurarti che la tua applicazione non superi determinati limiti di consumo di risorse e che stai eseguendo su Linux puoi personalizzare / etc /security/limits.con (potrebbe essere un file diverso sulla tua distribuzione preferita) per forzare i limiti su un determinato utente ed eseguire il processo solo con quell'utente. Questo ovviamente presuppone che tu abbia quel livello di controllo sull'ambiente di produzione del tuo cliente.

Altri suggerimenti

Se capisco correttamente, la tua preoccupazione è se l'applicazione viene eseguita anche quando una determinata percentuale della potenza di elaborazione non è disponibile.

L'approccio più incontrovertibile è utilizzare hardware sottodimensionato per i test. Se il processore nella tua configurazione te lo consente, puoi effettuare il downclocking online. Il kernel di Linux ti offre un'interfaccia semplice per farlo, vedi / sys / devices / system / cpu / cpu0 / cpufreq / . Sono disponibili anche molte applicazioni GUI per questo.

Se il tuo processore non è in grado di modificare la velocità di clock online, puoi farlo nel modo più duro e selezionare un moltiplicatore più piccolo nel BIOS.

Penso che tu abbia avuto l'idea. Se funziona a 1600 Mhz invece di 2400 Mhz, puoi garantire il 33% del tempo di CPU libero.

SAR è un processo * nix standard che raccoglie informazioni sull'uso operativo delle risorse di sistema. Dispone inoltre di uno strumento da riga di comando che consente di creare vari report ed è comune che i dati vengano mantenuti in un database.

Con un sistema multi-core / processore puoi usare Affinity a tuo vantaggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top