Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Tieni presente che sistemi diversi si comporteranno in modo diverso con la stessa media di carico. Ad esempio, un sistema con una scheda grafica che supporta l'accelerazione hardware non avrà problemi a rendere le immagini 3D, mentre lo stesso sistema con una scheda VGA economica rallenterà enormemente durante il rendering. Il mio vecchio P133 diventerà piuttosto scomodo quando avvierò il server X, ma su un sistema moderno difficilmente noterai la differenza nel carico del sistema.


Immagine

4.3.5. Posso fare qualcosa come utente?


Un grande ambiente può rallentarti. Se hai molte variabili di ambiente impostate (invece di variabili di shell), lunghi percorsi di ricerca non ottimizzati (errori nell'impostazione della variabile di ambiente del percorso) e più di quelle impostazioni che di solito vengono eseguite "al volo", il sistema avrà bisogno più tempo per cercare e leggere i dati.


In X, i gestori di finestre e gli ambienti desktop possono essere veri mangiatori di CPU. Un desktop davvero elegante ha un prezzo, anche quando puoi scaricarlo gratuitamente, poiché la maggior parte dei desktop fornisce componenti aggiuntivi all'infinito. Modestia


è una virtù se non acquisti un nuovo computer ogni anno.


Immagine

4.3.5.1. priorità


La priorità o l'importanza di un lavoro è definita dalla sua bello numero. Un programma con un bel numero alto è amichevole con altri programmi, altri utenti e il sistema; non è un lavoro importante. Più basso è il bel numero, più importante è un lavoro e più risorse ci vorranno senza condividerle.


Migliorare un lavoro aumentandone il numero è utile solo per i processi che utilizzano molto tempo della CPU (compilatori, applicazioni matematiche e simili). I processi che utilizzano sempre molto tempo di I/O vengono automaticamente premiati dal sistema e ricevono una priorità più alta (un bel numero inferiore), ad esempio l'input da tastiera ottiene sempre la priorità più alta su un sistema.


La definizione della priorità di un programma si effettua con il bello comando.


La maggior parte dei sistemi fornisce anche il BSD renice comando, che consente di modificare il gentilezza di un comando in esecuzione. Di nuovo, leggi la pagina man per le informazioni specifiche del tuo sistema.


ImmagineProgrammi interattivi

NON è una buona idea bello or renice un programma interattivo o un lavoro in esecuzione in primo piano.

L'utilizzo di questi comandi è solitamente un compito dell'amministratore di sistema. Leggi la pagina man per maggiori informazioni sulle funzionalità extra disponibili per l'amministratore di sistema.


Immagine

4.3.5.2. Risorse della CPU


Su ogni sistema Linux, molti programmi vogliono utilizzare le CPU contemporaneamente, anche se sei l'unico utente del sistema. Ogni programma ha bisogno di un certo numero di cicli sulla CPU per essere eseguito. Ci possono essere momenti in cui non ci sono abbastanza cicli perché la CPU è troppo occupata. Il uptime il comando è estremamente impreciso (visualizza solo le medie, devi sapere cosa è normale), ma lungi dall'essere inutile. Ci sono alcune azioni che puoi intraprendere se pensi che la tua CPU sia la causa della mancanza di risposta del tuo sistema:


• Eseguire programmi pesanti quando il carico è basso. Questo potrebbe essere il caso del tuo sistema durante la notte. Vedere la sezione successiva per la pianificazione.

• Impedisci al sistema di eseguire lavori non necessari: ferma demoni e programmi che non usi, usa

individuare invece di un reperto pesante, ...

• Esegui grandi lavori con una bassa priorità


Se nessuna di queste soluzioni è un'opzione nella tua situazione particolare, potresti voler aggiornare la tua CPU. Su una macchina UNIX questo è un lavoro per l'amministratore di sistema.


Immagine

4.3.5.3. Risorse di memoria


Quando i processi attualmente in esecuzione si aspettano più memoria di quanta il sistema abbia fisicamente disponibile, un sistema Linux non andrà in crash; inizierà il paging, o scambio, nel senso che il processo utilizza la memoria su disco o nello spazio di swap, spostando i contenuti della memoria fisica (pezzi di programmi in esecuzione o interi programmi in caso di swap) su disco, recuperando così la memoria fisica per gestire più processi. Questo rallenta enormemente il sistema poiché l'accesso al disco è molto più lento dell'accesso alla memoria. Il top comando può essere utilizzato per visualizzare la memoria e l'uso di swap. I sistemi che utilizzano glibc offrono il messaggio ed memusagestat comandi per visualizzare l'utilizzo della memoria.


Se riscontri che vengono utilizzati molta memoria e spazio di swap, puoi provare:


• Uccidere, arrestare o rinnegare quei programmi che utilizzano una grossa fetta di memoria

• Aggiunta di più memoria (e in alcuni casi più spazio di swap) al sistema.

• Ottimizzazione delle prestazioni del sistema, che esula dallo scopo di questo documento. Vedere l'elenco di lettura nell'Appendice A per ulteriori informazioni.


Immagine

4.3.5.4. Risorse di I/O


Sebbene le limitazioni di I/O siano una delle principali cause di stress per gli amministratori di sistema, il sistema Linux offre utilità piuttosto scarse per misurare le prestazioni di I/O. Il ps, vmstat ed top gli strumenti danno qualche indicazione su quanti programmi sono in attesa di I/O; netstat visualizza le statistiche dell'interfaccia di rete, ma non ci sono praticamente strumenti disponibili per misurare la risposta I/O al carico del sistema e iostat Il comando fornisce una breve panoramica dell'utilizzo generale dell'I/O. Esistono vari front-end grafici per mettere l'output di questi comandi in una forma umanamente comprensibile.


Ogni dispositivo ha i suoi problemi, ma la larghezza di banda disponibile per le interfacce di rete e la larghezza di banda disponibile per i dischi sono le due cause principali dei colli di bottiglia nelle prestazioni di I/O.


Problemi di I/O di rete:


• Sovraccarico di rete:


La quantità di dati trasportati sulla rete è maggiore della capacità della rete, con conseguente lenta esecuzione di ogni attività relativa alla rete per tutti gli utenti. Possono essere risolti ripulendo la rete (che consiste principalmente nella disabilitazione di protocolli e servizi non necessari) o riconfigurando la rete (ad esempio l'uso di sottoreti, la sostituzione degli hub con switch, l'aggiornamento di interfacce e apparecchiature).

• Problemi di integrità della rete:


Si verifica quando i dati vengono trasferiti in modo errato. Risolvere questo tipo di problema può essere fatto solo isolando l'elemento difettoso e sostituendolo.


Problemi di I/O del disco:


• velocità di trasferimento per processo troppo bassa:


La velocità di lettura o scrittura per un singolo processo non è sufficiente.

• velocità di trasferimento aggregata troppo bassa:


La larghezza di banda totale massima che il sistema può fornire a tutti i programmi in esecuzione non è sufficiente.


Questo tipo di problema è più difficile da rilevare e di solito richiede hardware aggiuntivo per suddividere i flussi di dati su bus, controller e dischi, se l'hardware sovraccarico è la causa del problema. Una soluzione per risolvere questo problema è una configurazione dell'array RAID ottimizzata per le azioni di input e output. In questo modo, puoi mantenere lo stesso hardware. Un aggiornamento a bus, controller e dischi più veloci è di solito l'altra opzione.


Se il sovraccarico non è la causa, forse l'hardware si sta guastando gradualmente o non è ben collegato al sistema. Controllare contatti, connettori e spine per cominciare.


Immagine


4.3.5.5. utenti


Gli utenti possono essere suddivisi in diverse classi, a seconda del loro comportamento con l'utilizzo delle risorse:


• Utenti che eseguono un numero (grande) di piccoli lavori: tu, utente Linux principiante, per esempio.

• Utenti che eseguono lavori relativamente pochi ma di grandi dimensioni: utenti che eseguono simulazioni, calcoli, emulatori o altri programmi che consumano molta memoria e di solito questi utenti hanno file di dati di grandi dimensioni.

• Utenti che eseguono pochi lavori ma utilizzano molto tempo CPU (sviluppatori e simili).


Puoi vedere che i requisiti di sistema possono variare per ogni classe di utenti e che può essere difficile soddisfare tutti. Se utilizzi un sistema multiutente, è utile (e divertente) scoprire le abitudini degli altri utenti e del sistema, in modo da ottenere il massimo da esso per i tuoi scopi specifici.


Immagine

4.3.5.6. Strumenti grafici


Per l'ambiente grafico, sono disponibili un sacco di strumenti di monitoraggio. Di seguito è riportata una schermata di Gnome System Monitor, che dispone di funzionalità per la visualizzazione e la ricerca di informazioni sui processi e il monitoraggio delle risorse di sistema:


Figura 4-3. Monitor di sistema Gnome


Immagine


Ci sono anche un paio di comode icone che puoi installare nella barra delle applicazioni, come un disco, una memoria e un monitor di caricamento. xcarico è un'altra piccola applicazione X per monitorare il carico del sistema. Trova il tuo preferito!


Immagine

4.3.5.7. Interrompere i processi


In qualità di utente non privilegiato, puoi influenzare solo i tuoi processi. Abbiamo già visto come visualizzare i processi e filtrare i processi che appartengono a un determinato utente e quali possibili restrizioni possono verificarsi. Quando vedi che uno dei tuoi processi sta consumando troppe risorse del sistema, ci sono due cose che puoi fare:


1. Fare in modo che il processo utilizzi meno risorse senza interromperlo;

2. Interrompi del tutto il processo.


Nel caso in cui desideri che il processo continui a essere eseguito, ma desideri anche dare una possibilità agli altri processi sul sistema, puoi renice il processo. A parte l'uso del bello or renice comandi, top è un modo semplice per individuare i processi problematici e ridurre la priorità.


Identifica il processo nella colonna "NI", molto probabilmente avrà una priorità negativa. Tipo r e inserisci l'ID del processo che desideri modificare. Quindi inserisci il valore piacevole, ad esempio "20". Ciò significa che d'ora in poi, questo processo richiederà al massimo 1/5 dei cicli della CPU.


Esempi di processi che si desidera mantenere in esecuzione sono emulatori, macchine virtuali, compilatori e così via.


Immagine

Se vuoi fermare un processo perché si blocca o sta andando completamente fuori controllo in termini di consumo di I/O, creazione di file o utilizzo di altre risorse di sistema, usa il kill comando. Se ne hai l'opportunità, prima prova a terminare il processo dolcemente, inviandolo al TERMINE segnale. Questa è un'istruzione per terminare qualunque cosa stia facendo, secondo le procedure descritte nel codice del programma:


joe:~> ps - ef | grep mozilla

joe 25822 1 0 mar11 ?

00:34:04 /usr/lib/mozilla-1.4.1/mozilla-

joe:~> ps - ef | grep mozilla

joe 25822 1 0 mar11 ?


joe:~> uccidere -15 25822

joe:~> uccidere -15 25822

Nell'esempio sopra, utente joe ha fermato il suo browser Mozilla perché si bloccava.


Immagine

Alcuni processi sono un po' più difficili da eliminare. Se hai tempo, potresti voler inviare loro il segnale SIGINT per interromperli. Se anche questo non funziona, usa il segnale più forte, SIGKILL. Nell'esempio sotto, joe ferma un Mozilla che è congelato:


joe:~> ps - ef | grep mozilla

joe 25915 1 0 mar11 ?

00:15:06 /usr/lib/mozilla-1.4.1/mozilla-

joe:~> ps - ef | grep mozilla

joe 25915 1 0 mar11 ?


joe:~> uccidere -9 25915


joe:~> ps - ef | grep 25915

joe 2634 32273 0 18:09 punti/4 00:00:00 grep 25915

joe:~> uccidere -9 25915


joe:~> ps - ef | grep 25915

joe 2634 32273 0 18:09 punti/4 00:00:00 grep 25915

In questi casi, potresti voler controllare che il processo sia davvero morto, usando il grep filtrare nuovamente sul PID. Se questo restituisce solo il grep processo, puoi essere certo di essere riuscito a interrompere il processo.


Tra i processi difficili da uccidere c'è la tua shell. E questa è una buona cosa: se fossero facili da uccidere, perderesti il ​​guscio ogni volta che digiti Ctrl-C sulla riga di comando accidentalmente, poiché ciò equivale a inviare un SIGINT.


ImmagineUNIX senza pipe è quasi impensabile

L'uso delle pipe (|) per utilizzare l'output di un comando come input di un altro è spiegato nel prossimo capitolo, capitolo 5.

Il miglior sistema operativo cloud computing su OnWorks: