I computer sono sistemi integrati che funzionano solo alla velocità del loro componente hardware più lento. Se un componente è meno capace degli altri, se rimane indietro e non riesce a tenere il passo, può trattenere l'intero sistema. Questo è un collo di bottiglia delle prestazioni . La rimozione di un grave collo di bottiglia può far volare il tuo sistema.
Questo articolo spiega come identificare i colli di bottiglia hardware nei sistemi Linux. Le tecniche si applicano sia ai personal computer che ai server. La mia enfasi è sui PC:non tratterò i colli di bottiglia specifici del server in aree come la gestione della LAN oi sistemi di database. Questi spesso coinvolgono strumenti specializzati.
Inoltre non parlerò molto di soluzioni. Questo è un argomento troppo grande per questo articolo. Invece, scriverò un articolo di follow-up con modifiche alle prestazioni.
Userò solo strumenti di interfaccia utente grafica (GUI) open source per portare a termine il lavoro. La maggior parte degli articoli sul collo di bottiglia di Linux sono piuttosto complicati. Usano comandi specializzati e approfondiscono dettagli arcani.
Gli strumenti GUI offerti dall'open source semplificano l'identificazione di molti colli di bottiglia. Il mio obiettivo è offrirti un approccio rapido e semplice che puoi utilizzare ovunque.
Da dove iniziare
Un computer è costituito da sei risorse hardware chiave:
- Processori
- Memoria
- Stoccaggio
- Porte USB
- Connessione Internet
- Processore grafico
Se una qualsiasi risorsa funziona male, può creare un collo di bottiglia delle prestazioni. Per identificare un collo di bottiglia, devi monitorare queste sei risorse.
L'open source offre una miriade di strumenti per fare il lavoro. Userò il monitor di sistema GNOME. Il suo output è facile da capire e puoi trovarlo nella maggior parte dei repository.
Avvialo e fai clic su Risorse scheda. Puoi identificare subito molti problemi di prestazioni.
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Le Risorse pannello mostra tre sezioni:Cronologia CPU , Memoria e cronologia degli scambi e Cronologia di rete . Una rapida occhiata ti dice immediatamente se i tuoi processori sono sovraffollati, o il tuo computer ha esaurito la memoria o stai consumando tutta la tua larghezza di banda Internet.
Esplorerò questi problemi di seguito. Per ora, controlla prima il Monitor di sistema quando il tuo computer rallenta. Ti informa istantaneamente sui problemi di prestazioni più comuni.
Ora esploriamo come identificare i colli di bottiglia in aree specifiche.
Come identificare i colli di bottiglia del processore
Per individuare un collo di bottiglia, devi prima sapere quale hardware hai. L'open source offre diversi strumenti per questo scopo. Mi piace HardInfo perché i suoi schermi sono facili da leggere ed è molto popolare.
Avvia HardInfo. Il suo Computer -> Riepilogo panel identifica la tua CPU e ti parla dei suoi core, thread e velocità. Identifica anche la tua scheda madre e altri componenti del computer.
HardInfo rivela che questo computer ha un chip CPU fisico. Quel chip contiene due processori, o core. Ogni core supporta due thread o processori logici. Si tratta di un totale di quattro processori logici, esattamente ciò che la sezione Cronologia CPU di System Monitor mostrata in Fig. 1.
Un collo di bottiglia del processore si verifica quando i processori non possono rispondere alle richieste per il loro tempo. Sono già occupati.
È possibile identificarlo quando System Monitor mostra un utilizzo del processore logico superiore all'80% o al 90% per un periodo prolungato. Ecco un esempio in cui tre dei quattro processori logici sono sommersi al 100% di utilizzo. Questo è un collo di bottiglia perché non lascia molta CPU per nessun altro lavoro.
Quale app sta causando il problema?
Devi scoprire quali programmi stanno consumando tutta quella CPU. Fai clic su Processi di System Monitor scheda. Quindi fai clic su % CPU header per ordinare i processi in base alla quantità di CPU che stanno consumando. Vedrai quali app limitano il tuo sistema.
Ciascuno dei primi tre processi consuma il 24% del totale Risorsa CPU. Poiché ci sono quattro processori logici, ciò significa che ognuno consuma un intero processore. È proprio come mostra la Fig. 3.
I Processi pannello identifica un programma denominato IA_analitica come il colpevole. Puoi fare clic con il pulsante destro del mouse su di esso nel pannello per visualizzare maggiori dettagli sul consumo di risorse, incluso l'utilizzo della memoria, i file aperti, i dettagli di input/output e altro ancora.
Se il tuo login ha i privilegi di amministratore, puoi gestire il processo. Puoi cambiarne la priorità e interromperlo, continuare, terminarlo o eliminarlo. Quindi, potresti risolvere immediatamente il tuo collo di bottiglia qui.
Come si risolvono i colli di bottiglia nell'elaborazione? Oltre a gestire il processo incriminato in tempo reale, potresti evitare che si verifichi il collo di bottiglia. Ad esempio, potresti sostituire un'altra app per l'autore del reato, aggirarlo, cambiare il tuo comportamento quando usi quell'app, programmare l'app per orari di riposo, risolvere un problema di memoria sottostante, modificare le prestazioni dell'app o del software del tuo sistema o aggiornare il tuo hardware È troppo da trattare qui, quindi esplorerò queste opzioni nel mio prossimo articolo.
Colli di bottiglia comuni del processore
Incontrerai diversi colli di bottiglia comuni durante il monitoraggio delle CPU con System Monitor.
A volte un processore logico ha un collo di bottiglia mentre tutti gli altri sono a basso utilizzo. Ciò significa che hai un'app che non è codificata in modo abbastanza intelligente da sfruttare più di un processore logico e ha il massimo di quello che sta utilizzando. L'app impiegherà più tempo per terminare rispetto a se utilizzasse più processori. D'altra parte, almeno lascia gli altri processori liberi per altri lavori e non prende il controllo del tuo computer.
Potresti anche vedere un processore logico bloccato per sempre al 100% di utilizzo. O è molto occupato o un processo è bloccato. Il modo per sapere se è bloccato è se il processo non esegue mai alcuna attività sul disco (come Monitor di sistema Processi verrà visualizzato il pannello).
Infine, potresti notare che quando tutti i tuoi processori hanno un collo di bottiglia, anche la tua memoria è completamente utilizzata. Le condizioni di memoria insufficiente a volte causano colli di bottiglia del processore. In questo caso, vuoi risolvere il problema di memoria sottostante, non il problema sintomatico della CPU.
Come identificare i colli di bottiglia della memoria
Data la grande quantità di memoria nei PC moderni, i colli di bottiglia della memoria sono molto meno comuni di quanto non fossero una volta. Tuttavia puoi ancora incontrarli se esegui programmi ad alta intensità di memoria, specialmente se hai un computer che non contiene molta memoria ad accesso casuale (RAM).
Linux usa la memoria sia per i programmi che per memorizzare nella cache i dati del disco. Quest'ultimo accelera l'accesso ai dati del disco. Linux può recuperare quella memoria ogni volta che ne ha bisogno per l'uso del programma.
Le Risorse di System Monitor pannello mostra la tua memoria totale e quanta di essa viene utilizzata. Nei Processi pannello, puoi vedere l'utilizzo della memoria dei singoli processi.
Ecco la parte delle Risorse di System Monitor pannello che tiene traccia dell'utilizzo della memoria aggregata:
A destra di Memory, noterai Swap. Questo è lo spazio su disco utilizzato da Linux quando la memoria è insufficiente. Scrive la memoria su disco per continuare le operazioni, utilizzando effettivamente lo scambio come estensione più lenta della RAM.
I due problemi di prestazioni della memoria a cui prestare attenzione sono:
- La memoria sembra in gran parte utilizzata e vedi attività frequenti o in aumento nello spazio di scambio.
- Sia la memoria che lo swap sono in gran parte esauriti.
La situazione 1 significa prestazioni più lente perché lo scambio è sempre più lento della memoria. Il fatto che lo consideri un problema di prestazioni dipende da molti fattori (ad esempio, quanto è attivo il tuo spazio di scambio, la sua velocità, le tue aspettative, ecc.). La mia opinione è che qualcosa di più dell'uso del token swap è inaccettabile per un moderno personal computer.
La situazione 2 è quella in cui sia la memoria che lo scambio sono ampiamente utilizzati. Questo è un collo di bottiglia di memoria. Il computer non risponde. Potrebbe persino cadere in uno stato di battito , dove fa poco più della gestione della memoria.
La Fig. 6 sopra mostra un vecchio computer con solo 2 GB di RAM. Poiché l'utilizzo della memoria ha superato l'80%, il sistema ha iniziato a scrivere per lo scambio. La reattività è diminuita. Questa schermata mostra un utilizzo della memoria superiore al 90% e il computer è inutilizzabile.
La risposta definitiva ai problemi di memoria è usarne meno o acquistarne di più. Discuterò le soluzioni nel mio articolo di follow-up.
Come identificare i colli di bottiglia dello storage
L'archiviazione oggi è disponibile in diverse varietà di dischi rigidi meccanici e a stato solido. Le interfacce dei dispositivi includono PCIe, SATA, Thunderbolt e USB. Indipendentemente dal tipo di archiviazione di cui disponi, utilizzi la stessa procedura per identificare i colli di bottiglia del disco.
Inizia con Monitor di sistema. I suoi processi pannello visualizza le velocità di input/output per i singoli processi. In questo modo puoi identificare rapidamente quali processi stanno eseguendo la maggior parte delle operazioni di I/O su disco.
Ma lo strumento non mostra la velocità di trasferimento dati aggregata per disco. Devi vedere il carico totale su un disco specifico per determinare se quel disco è un collo di bottiglia dello storage.
Per farlo, usa il comando atop. È disponibile nella maggior parte dei repository Linux.
Digita semplicemente atop
al prompt della riga di comando. L'output seguente mostra quel dispositivo sdb
è busy 101%
. Chiaramente, ha raggiunto il suo limite di prestazioni e sta limitando la velocità con cui il tuo sistema può portare a termine il lavoro.
Si noti che una delle CPU è in attesa che il disco esegua il proprio lavoro l'85% delle volte (cpu001 w 85%
). Questo è tipico quando un dispositivo di archiviazione diventa un collo di bottiglia. In effetti, molti guardano prima alle attese di I/O della CPU per individuare i colli di bottiglia dello storage.
Quindi, per identificare facilmente un collo di bottiglia dello storage, usa atop
comando. Quindi utilizza i Processi pannello su System Monitor per identificare i singoli processi che causano il collo di bottiglia.
Come identificare i colli di bottiglia delle porte USB
Alcune persone usano le loro porte USB tutto il giorno. Tuttavia, non controllano mai se tali porte vengono utilizzate in modo ottimale. Indipendentemente dal fatto che colleghi un disco esterno, una memory stick o qualcos'altro, ti consigliamo di verificare di ottenere le massime prestazioni dai tuoi dispositivi collegati tramite USB.
Questo grafico mostra perché. Le potenziali velocità di trasferimento dati USB variano enormemente .
Dispositivi USB di HardInfo la scheda mostra gli standard USB supportati dal computer. La maggior parte dei computer offre più di una velocità. Come puoi sapere la velocità di una porta specifica? I fornitori li codificano per colore, come mostrato nella tabella. Oppure puoi guardare nella documentazione del tuo computer.
Per vedere le velocità effettive che stai ottenendo, prova utilizzando il programma GNOME Disks open source. Avvia GNOME Disks, seleziona il suo disco benchmark funzione ed eseguire un benchmark. Questo ti dice la velocità reale massima che otterrai per una porta con il dispositivo specifico collegato ad essa.
È possibile ottenere velocità di trasferimento diverse per una porta, a seconda del dispositivo collegato. La velocità dei dati dipende dalla particolare combinazione di porta e dispositivo.
Ad esempio, un dispositivo che potrebbe volare a velocità 3.1 utilizzerà una porta 2.0, a velocità 2.0, se è quello a cui lo colleghi. (E non ti dirà che sta funzionando a una velocità inferiore!) Al contrario, se colleghi un dispositivo USB 2.0 a una porta 3.1, funzionerà, ma alla velocità 2.0. Quindi, per ottenere una USB veloce, devi assicurarti che sia la porta che il dispositivo lo supportino. GNOME Disks ti offre i mezzi per verificarlo.
Per identificare un collo di bottiglia dell'elaborazione USB, utilizzare la stessa procedura eseguita per i dischi rigidi e a stato solido. Esegui atop
comando per individuare un collo di bottiglia della memoria USB. Quindi, utilizza System Monitor per ottenere i dettagli sui processi incriminati.
Come identificare i colli di bottiglia della larghezza di banda Internet
Il monitor di sistema Risorse pannello ti dice in tempo reale quale velocità di connessione a Internet stai riscontrando (vedi Fig. 1).
Esistono ottimi strumenti Python per testare la tua velocità massima di Internet, ma puoi anche testarlo su siti Web come Speedtest, Fast.com e Speakeasy. Per risultati ottimali, chiudi tutto ed esegui solo la prova di velocità; disattiva la tua VPN; eseguire test in diversi momenti della giornata; e confrontare i risultati di diversi siti di test.
Quindi confronta i tuoi risultati con le velocità di download e caricamento che il tuo fornitore afferma che stai ottenendo. In questo modo, puoi confermare che stai ottenendo le velocità per cui stai pagando.
Se hai un router separato, prova con e senza di esso. Questo può dirti se il tuo router è un collo di bottiglia. Se usi il WiFi, prova con esso e senza di esso (cablando direttamente il tuo laptop al modem). Ho visto spesso persone lamentarsi del proprio fornitore di servizi Internet quando ciò che hanno in realtà è un collo di bottiglia Wi-Fi che potrebbero risolvere da soli.
Se qualche programma sta consumando l'intera connessione Internet, vuoi sapere quale. Trovalo usando i nethogs
comando. È disponibile nella maggior parte dei repository.
L'altro giorno, il mio monitor di sistema ha improvvisamente mostrato un picco del mio accesso a Internet. Ho appena digitato nethogs
nella riga di comando e ha immediatamente identificato il consumatore di larghezza di banda come un aggiornamento antivirus Clamav.
Come identificare i colli di bottiglia nell'elaborazione grafica
Se colleghi il monitor alla scheda madre sul retro del computer desktop, stai utilizzando la grafica integrata . Se lo colleghi a una scheda sul retro, hai un sottosistema grafico dedicato. La maggior parte la chiamano scheda video o scheda grafica. Per i computer desktop, le schede aggiuntive sono in genere più potenti e più costose della grafica della scheda madre. I laptop utilizzano sempre la grafica integrata.
Dispositivi PCI di HardInfo pannello ti parla della tua unità di elaborazione grafica (GPU). Visualizza anche la quantità di memoria video dedicata che hai (cerca la memoria contrassegnata come "precaricabile").
CPU e GPU lavorano a stretto contatto. Per semplificare, la CPU prepara i frame per il rendering della GPU, quindi la GPU esegue il rendering dei frame.
Un collo di bottiglia della GPU si verifica quando le tue CPU sono in attesa su una GPU occupata al 100%.
Per identificarlo, è necessario monitorare i tassi di utilizzo della CPU e della GPU. I monitor open source come Conky e Glances lo fanno se le loro estensioni funzionano con il tuo chipset grafico.
Dai un'occhiata a questo esempio di Conky. Puoi vedere che questo sistema ha molta CPU disponibile. La GPU è occupata solo per il 25%. Immagina se quel numero di GPU fosse invece vicino al 100%. Quindi sapresti che le CPU sono in attesa sulla GPU e avresti un collo di bottiglia della GPU.
Su alcuni sistemi, avrai bisogno di uno strumento specifico del fornitore per monitorare la tua GPU. Sono tutti scaricabili da GitHub e sono descritti in questo articolo sul monitoraggio della GPU e sugli strumenti diagnostici da riga di comando.
Riepilogo
I computer sono costituiti da una raccolta di risorse hardware integrate. Se qualcuno di loro rimane molto indietro rispetto agli altri nel suo carico di lavoro, crea un collo di bottiglia delle prestazioni. Ciò può trattenere l'intero sistema. Devi essere in grado di identificare e correggere i colli di bottiglia per ottenere prestazioni ottimali.
Non molto tempo fa, l'identificazione dei colli di bottiglia richiedeva una profonda esperienza. I monitoraggi delle prestazioni della GUI open source di oggi lo rendono piuttosto semplice.
Nel mio prossimo articolo, discuterò modi specifici per migliorare le prestazioni del tuo PC Linux. Nel frattempo, condividi le tue esperienze nei commenti.