2011-11-25 27 views
5

Ero alla ricerca di un modo per recuperare informazioni su come la pianificazione viene eseguita durante l'esecuzione di un programma: quali processi sono in quale schedulatore, se cambiano, quale processo è attivo in ogni schedulatore, se ciascuno lo scheduler viene eseguito in un core ecc ...Erlang VM: informazioni di runtime dello scheduler

Qualche idea o documentazione correlata/articoli/qualcosa?

risposta

5

vorrei suggerire di dare un'occhiata alle seguenti opzioni/profilazione tracciatura:

erlang:system_profile/2

Ha opzioni per il monitoraggio di pianificazione e di coda di esecuzione (runnable_procs) attività. L'opzione scheduler riporterà

{profile, scheduler, Id, State, NoScheds, Ts} 

dove Stato vi dirà se è attiva o meno. NoScheds riporta il numero di scheduler correntemente attivi (se ricordo male).

L'opzione runnable_procs ti consente di sapere se un processo viene inserito o rimosso da una coda di esecuzione di un particolare programma di pianificazione.

+0

grazie! Ho avuto R14A e restituisce sempre undefined ma ho aggiornato a R14B04 e ora funziona bene: D – raymond

+0

il processo è attivo quando è in coda di esecuzione, non solo quando viene effettivamente eseguito, giusto? – raymond

+0

Sì, è considerato attivo sia quando è eseguibile (nella coda di esecuzione) o effettivamente in esecuzione e inattivo in caso contrario. – psyeugenic

4

Se si dispone di un sistema che supporta DTrace, è possibile utilizzare le sonde di dtrace di erlang in fase di sviluppo per vedere esattamente quando si verificano eventi di pianificazione del processo. Ad esempio, ho scritto uno simple one-liner che mostra il numero di nanosecondi che intercorrono tra l'invio di un messaggio a un processo e l'esecuzione del processo destinatario (± qualche nanosecondo per la varianza e i processi di clock tra core e come).

+0

Mi piace dtrace, peccato funziona solo su mac e solaris (e pochi altri) ma non su Linux. @ Dustin, buon lavoro sull'imp di erlang/dtrace. – psyeugenic

+0

tipo di systemtap funziona per fare la stessa roba. Puoi sempre lavorare su qualcosa che non è Linux o Windows abbastanza per capire come funzionano le cose e quindi applicare tali conoscenze sulla tua distribuzione Linux. – Dustin

+0

interessante, controllerò sicuramente DTrace/SystemTrap! – raymond

Problemi correlati