[Soci SLIP] come analizzare l'uso delle risosrse di un programma?
Lucio
lucio a sulweb.org
Dom 7 Ott 2018 12:04:02 CEST
Il 06/10/18 11:00, Enrico Agliotti ha scritto:
> Ciao a tutti,
>
> Ora mi piacerebbe capire di più come funziona, cosa stanno facendo
> quelle due istanze, e se, come suppongo c'è un'istanza per ogni tab, a
> queli tab corrispondono.
>
> In sostanza la domanda in oggetto.
Risposta breve: non si può fare, a meno che non esista apposita opzione
dentro Firefox (non credo esista).
Risposta lunga:
In realtà la domanda in oggetto non è la stessa che hai poi posto nel
messaggio, perché in oggetto hai parlato di programma, che è un termine
troppo generico per quel che stai cercando di fare, ma ci è utile per
capire la differenza.
Un programma è una sequenza di istruzioni ed un insieme di risorse (dati
statici, costanti). Può essere scritto anche solo su un foglio di carta
ed è comunque un programma.
Un programma in esecuzione si chiama processo e, oltre alle risorse,
possiede anche uno stato attuale delle variabili (input, output, stato
del processo all'interno del kernel).
Un processo contiene uno o più threads, ognuno dei quali esegue una
parte del programma (tutto il programma se è solo uno), ma ogni thread
condivide con gli altri threads le stesse risorse e le stesse variabili,
che sono comuni.
Ora arriviamo alla tua domanda: come analizzare l'uso delle risorse di
un programma?
Alla luce di quanto detto sopra la domanda posta così non ha senso, un
programma non usa niente, esiste e basta e magari esiste solo nella
testa del programmatore o su un suo pezzo di carta.
Modifichiamo la domanda: come analizzare l'uso delle risorse di un processo?
La risposta qui è semplice: usa top, htop o altri strumenti che già conosci.
Arriviamo poi alla domanda che hai posto nel messaggio: come analizzare
le risorse di ogni tab?
Probabilmente (quasi certamente) Firefox usa un thread separato per ogni
tab. Per quanto detto sopra, i threads condividono le risorse del
processo, ma non sono processi autonomi loro stessi. Eseguono solo una
parte del codice del programma, non hanno una linea di comando con cui
sono stati avviati, perché sono stati avviati dal primo thread del
processo. Sono parte integrante del processo e l'unico modo di sapere
quale thread fa che cosa è ispezionare le sue variabili con un debugger.
Per esempio, dato che i threads eseguono solo pezzi di programma, non si
possono terminare senza provocare conseguenze indefinite sul processo.
Devono essere i threads stessi a terminarsi volontariamente (chiudendo
la tab), in modo che lascino le risorse condivise in uno stato coerente.
In pratica, se quello che stai cercando non è fornito da una qualche
opzione di Firefox stesso (e non credo che lo sia), non c'è nulla nel
sistema operativo (che sia Linux o altri) che ti possa dare le
informazioni che cerchi, tranne eseguire Firefox in debug all'interno di
un ambiente di sviluppo.
Maggiori informazioni sulla lista
Soci