2013-05-01 10 views
5

Ho bisogno di conoscere l'utilizzo della CPU di un particolare modulo del kernel (ad es. Iptable_mangle) in Linux (Fedora). So che top o mpstat mostra l'utilizzo della CPU del sistema che è in realtà un utilizzo totale della CPU nello spazio del kernel. C'è qualche opzione per conoscere l'utilizzo della CPU di un particolare oggetto del kernel?Utilizzo della CPU di un modulo del kernel

+0

Penso che non ci sia modo, a meno che quel modulo non avvii un'attività del kernel (o una discussione del kernel). –

+0

So che cos'è il thread del kernel, ma non sono sicuro di quale sia l'attività del kernel. Non ho il controllo sul modulo del kernel di mio interesse né per avviare un task/thread del kernel. Grazie ... –

+0

Quindi la tua domanda potrebbe non avere alcun senso. –

risposta

6

dispiace deludervi, ma non v'è alcun modo per ottenere ciò che si vuole - non perché Linux non hanno la capacità, ma per definizione:

Un modulo può "plug-in" al kernel di due modi generali: installando un callback (ad es. proc o sys file, device, ecc.) o avviando un thread del kernel. Nel tuo caso, iptable_mangle si collega impostando i callback su iptables/netfilter. Ciò significa che il codice del modulo viene eseguito come parte dello stack di rete (nel contesto ksoftirqd, per essere più accurato).

Se questo era in un contesto di thread del kernel, Linux mantiene le statistiche. Ma per le richiamate, non è così. Il thread che finisce per eseguire il codice del modulo fa un sacco di altre cose, quindi isolare il codice del tuo modulo non è pratico (a meno che, ovviamente, tu non sia in possesso della fonte, e quindi puoi aggiungere le dichiarazioni di temporizzazione molto facilmente) .

Una soluzione parziale sarebbe quella di utilizzare il meccanismo ftrace del kernel - questo consente la funzione di traccia delle chiamate nel kernel - è incredibilmente potente e può mostrare le statistiche in base a determinate funzioni. Non è esattamente quello che vuoi, ma è il più vicino possibile.

Problemi correlati