Il tipo di switch di strace che tendo a usare è questo.
strace -ffttT -p pid -o /tmp/strace.out
Un esempio di questo sarebbe simile,
19:35:57.485493 mprotect(0x7f35e7472000, 16384, PROT_READ) = 0 <0.000037>
19:35:57.485599 mprotect(0x7f35e7692000, 4096, PROT_READ) = 0 <0.000030>
19:35:57.485697 mprotect(0x7f35e78b7000, 4096, PROT_READ) = 0 <0.000030>
19:35:57.485782 munmap(0x7f35e7896000, 129588) = 0 <0.000037>
19:35:57.485875 set_tid_address(0x7f35e78949d0) = 10730 <0.000029>
19:35:57.485960 set_robust_list(0x7f35e78949e0, 0x18) = 0 <0.000024>
19:35:57.486048 futex(0x7fff8f58628c, FUTEX_WAKE_PRIVATE, 1) = 0 <0.000025>
19:35:57.486131 futex(0x7fff8f58628c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 7f35e7894700) = -1 EAGAIN (Resource temporarily unavailable) <0.000024>
Si vede la differenza di orario sul lato destro della chiamata di sistema che mostra quanto tempo è passato da una chiamata di sistema a un'altra.
Ti colpirà la differenza di tempo tra le chiamate di sistema. Quindi, quando vedi che una chiamata di sistema ha un intervallo di alcuni secondi rispetto alla successiva chiamata di sistema, allora c'è un po 'di rumore.
Un altro metodo è coredump con gcore. Tuttavia, ciò richiede una piccola esperienza nella navigazione attraverso gdb.
Ma, se il thread è un thread del kernel, non è possibile rintracciarlo o coredump. In tal caso, dobbiamo usare qualcosa di più complesso. Nel kernel RHEL5, usiamo oprofile. In RHEL6, usiamo perf. Preferisco perf rispetto a oprofile. I dati perf possono essere raccolti con un grafico come il formato che mostra la chiamata di sistema in cui viene utilizzata la percentuale massima di CPU.
Con un test perf, vedo questo.
38.06% swapper [kernel.kallsyms] [k] mwait_idle_with_hints ↑
29.45% swapper [kernel.kallsyms] [k] read_hpet
4.90% swapper [kernel.kallsyms] [k] acpi_os_read_port ▒
4.74% swapper [kernel.kallsyms] [k] hpet_next_event
Mostra la funzione del kernel in cui viene impiegato il 38% del tempo CPU. Ora, possiamo controllare la funzione e vedere cosa sta facendo e cosa dovrebbe fare.
Con alcuni esempi, non è poi così difficile.