El tipo de interruptores strace que tiendo a usar es este.
strace -ffttT -p pid -o /tmp/strace.out
Un ejemplo de esto sería,
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>
Verá la diferencia horaria en el lado derecho de la llamada del sistema que muestra cuánto tiempo ha llevado pasar de una llamada del sistema a otra.
Le detectará la diferencia horaria entre las llamadas del sistema. Entonces, cuando ve que una llamada del sistema tiene un intervalo de unos segundos con la siguiente llamada del sistema, entonces está haciendo algo de ruido.
Otro método es coredumplo con gcore. Sin embargo, eso requiere un poco de experiencia para navegar a través de gdb.
Pero, si el subproceso es un subproceso del núcleo, entonces no se puede dividir o coredump. En ese caso, tenemos que usar algo más complejo. En el kernel RHEL5, utilizamos oprofile. En RHEL6, utilizamos perf. Prefiero perf sobre oprofile. Los datos de rendimiento se pueden recopilar con un formato similar al gráfico que muestra la llamada al sistema donde se utiliza el porcentaje máximo de CPU.
Con una prueba de rendimiento, veo esto.
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
Muestra la función del núcleo donde se está gastando el 38% del tiempo de CPU. Ahora, podemos verificar la función y ver qué está haciendo y qué se supone que debe hacer.
Con algunos ejemplos, no es tan difícil.