E 'possibile che un sistema di computer abbia un carico costante / zero della CPU?

2

Ad esempio, un semplice programma in un ambiente simulato che aspetta l'input dell'utente sembra non fare nulla, quindi suppongo che usi la CPU solo per il tempo.

Vorrei sapere se i sistemi informatici (che non dispongono di servizi installati o disabilitati, ovvero registrazione, aggiornamenti, ecc.) potrebbero teoricamente avere un carico costante / zero / minimo della CPU? (perché non avrebbero fatto alcun lavoro)

Non so se tutti i sistemi debbano avere un orologio. Ma anche se tutti i sistemi hanno bisogno di avere un orologio che ha bisogno di contare in tempo, sarebbe l'unico servizio che utilizza la CPU? E il carico della CPU sarebbe costante?

    
posta user1861388 19.02.2017 - 10:32
fonte

4 risposte

5

I sistemi informatici potrebbero teoricamente avere un carico costante / zero / minimo della CPU?

Certo che possono, in teoria. Ci sono tre scenari a cui posso pensare:

Carico CPU zero temporaneo in attesa di un interrupt. (Naturalmente, quando arriva l'interruzione, ci sarà un po 'di carico della CPU.) La maggior parte dei sistemi informatici in uso oggi sono in grado di entrare in uno stato di stop-clock in cui l'orologio non ticchetta nemmeno, e quindi la potenza consumata dalla CPU è vicina a zero. Ovviamente, un interrupt dovrà arrivare ad un certo punto, facendo riprendere il clock e la CPU ad avviare l'elaborazione, altrimenti il sistema è inutile.

Carico della CPU pari a zero permanente disattivando gli interrupt ed eseguendo un'istruzione HALT. Naturalmente, un tale sistema è permanentemente congelato e di circa l'uso di un peso di carta.

Carico della CPU costante / temporaneo costante al 100%: attiva tutti i thread dei core e inserisci ogni thread in un ciclo molto stretto. Se nella macchina non accade altro, la macchina sarà in costante utilizzo al 100% della CPU.

    
risposta data 19.02.2017 - 11:55
fonte
3

No. Questa è una drastica semplificazione di come funzionano effettivamente le cose. Ad esempio, l'attesa per l'input dell'utente su Windows prevede il polling per gli eventi, quindi è necessario eseguire il tempo della CPU per eseguire il polling degli eventi. Devi anche rendere il tuo stato attuale che può cambiare in modo arbitrario rispetto al tempo, a causa di altri eventi del sistema operativo come la rete, o semplicemente timer semplici.

Semplicemente capire che non hai niente da fare non è un'operazione gratuita.

Quindi hai le attività in background del sistema operativo, come la memoria di paging. Conferma l'ora del tuo sistema con NTP. Effettua il ping del gateway per verificare se si è ancora in rete. Attività: passa ad altri servizi per quello che dovrebbero fare, ad es. Servizio Desktop remoto per ascoltare le persone che tentano di accedere a RDP alla macchina.

Le moderne CPU desktop possono fare tutto ciò praticamente istantaneamente, quindi potresti obiettare che l'utilizzo è effettivamente pari a zero, ma in realtà non è in realtà pari a zero o costante.

    
risposta data 19.02.2017 - 11:01
fonte
2

Come già accennato, anche una CPU che non è in esecuzione non sta facendo nulla di utile, quindi non è un caso molto interessante. Tuttavia, ci sono sistemi altamente alimentati alimentati a batteria che passano dal 95% al 98% del tempo in cui dormono senza clock per la CPU. Un pacemaker cardiaco è un buon esempio. Solo in questo modo un sistema di questo tipo può avere una longevità pratica con una batteria così piccola (un tipico pacemaker viene espiantato e sostituito quando la batteria è scarica, circa 5 anni). I consumi inattivi di solito sono compresi nell'intervallo 10 microAmp.

Questi sistemi sono completamente guidati dagli eventi e trascorrono la maggior parte del tempo in attesa di un interrupt che inizi l'attività. C'è poca somiglianza con i sistemi di calcolo convenzionali poiché funzionano su metallo nudo di solito senza sistema operativo (almeno come generalmente pensiamo a un sistema operativo). Il consumo energetico domina le decisioni di progettazione e la maggior parte dell'elaborazione viene eseguita in un hardware personalizzato che consuma molta meno energia di una CPU (la realizzazione di un clock CPU ad alta velocità è una delle attività che consumano più energia in un sistema del genere). Un SOC moderno a bassa potenza può funzionare a ca. 100 consumo di corrente microAmp / MHz per eseguire il codice. Il consumo sale da lì quando inizi a fare cose che interagiscono con il mondo reale. Ci sono ancora degli orologi che funzionano perché sono necessari per rilevare gli eventi al di fuori del sistema (i cristalli di orologio a 32 kHz consumano pochissima energia).

Quindi a carico zero - non è così interessante per me. Carico molto basso della CPU - può ancora fare cose interessanti e utili. Ma il mondo a bassissimo potere è una bestia molto diversa.

    
risposta data 19.02.2017 - 17:59
fonte
1

A meno che qualcuno non abbia eseguito una CPU HLT (che è molto, molto raro) la tua CPU è effettivamente < em> sempre in esecuzione al 100%.

Quando l'O / S riporta una percentuale di utilizzo della CPU, sta segnalando una parte dei cicli della CPU utilizzati per un determinato tipo di thread (utente, kernel o entrambi). C'è un altro tipo di thread (il Thread inattivo ) che è sempre pronto per essere programmato - i thread inattivi non sono inclusi in il calcolo della CPU. Quando l'O / S indica il 75% di utilizzo della CPU, significa che il thread inattivo era in esecuzione per il 25% dei cicli di clock.

Quindi se la tua domanda è ... una CPU può effettivamente funzionare allo 0%, letteralmente-- questo è molto raro a meno che tu non stia impartendo istruzioni CPU hardware di basso livello.

Se la tua domanda è-- l'O / S indicherà mai l'utilizzo dello 0% per i thread utente-- sì, questo è certamente possibile se uccidi tutti i tuoi processi (e tutti quei processi che appartengono ad altri utenti, inclusi gli account di servizio) .

Se la domanda è-- l'O / S indicherà mai l'utilizzo dello 0% per i thread utente e kernal-- sì, è possibile, in teoria, se hai disattivato tutto e ucciso anche tutti i processi che consentono l'O / S per funzionare (ad es. ricevere l'input da tastiera). Non saresti in grado di fare nulla con un sistema in quello stato. Nel frattempo, il thread inattivo, ovviamente, sarà ancora in esecuzione.

    
risposta data 21.02.2017 - 00:16
fonte

Leggi altre domande sui tag