[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