* [ltt-dev] sys time [not found] <8d94e9280810170558j5b9ed8d1q7da37da677c7bf7d@mail.gmail.com> @ 2008-10-17 13:06 ` Gian Lorenzo Meocci 2008-10-17 15:26 ` Pierre-Marc Fournier 0 siblings, 1 reply; 5+ messages in thread From: Gian Lorenzo Meocci @ 2008-10-17 13:06 UTC (permalink / raw) Hi, I want to retrieve from a lttng trace a total time that a thread has spent in the kernel. For example this stupid program uses only sys call functions: int main() { int i=0; char buf[1024]; FILE *fd=fopen("/dev/urandom","r"); while(i<10000) { fread(&buf[0],1,1024,fd); i++; } fclose(fd); return 0; } if I run it with the linux command "time" I give: real 0m1.714s user 0m0.004s sys 0m1.708s I want to know if it is possible to obtain this results using lttng trace. Actually I made a sum of all differences from a kernel_arch_trap_entry/kernel_arch_trap_exit, kernel_arch_syscall_entry/exit, kernel_softirq_entry/exit, mm_handle_fault_entry/exit, kernel_irq_entry/exit. But for now, my results isn't very good. Best regards, -- Ing. Gian Lorenzo Meocci http://www.meocci.it ^ permalink raw reply [flat|nested] 5+ messages in thread
* [ltt-dev] sys time 2008-10-17 13:06 ` [ltt-dev] sys time Gian Lorenzo Meocci @ 2008-10-17 15:26 ` Pierre-Marc Fournier 2008-10-17 16:28 ` Mathieu Desnoyers 0 siblings, 1 reply; 5+ messages in thread From: Pierre-Marc Fournier @ 2008-10-17 15:26 UTC (permalink / raw) Gian Lorenzo Meocci wrote: > I want to know if it is possible to obtain this results using lttng trace. It is definitely possible. > Actually I made a sum of all differences from a > kernel_arch_trap_entry/kernel_arch_trap_exit, > kernel_arch_syscall_entry/exit, kernel_softirq_entry/exit, > mm_handle_fault_entry/exit, kernel_irq_entry/exit. You don't need mm_handle_fault_entry/exit because they are always enclosed within kernel_arch_trap_entry/exit's. > But for now, my results isn't very good. - You need to stop counting time when your process is being scheduled out. See the kernel_sched_schedule events. - You need to filter the events based on the pid of the process you're investigating, but I guess you're already doing that. - If the process is being created inside the trace, you need to start counting time only after it is created, of course. You could count syscall time starting at the kernel_process_fork that creates the process. Also, you need to stop counting time when it's destroyed of course. - If the process already exists when the trace is started, only consider events after the list_statedump_end event. Before that, the pid of each event might not be reliable. pmf ^ permalink raw reply [flat|nested] 5+ messages in thread
* [ltt-dev] sys time 2008-10-17 15:26 ` Pierre-Marc Fournier @ 2008-10-17 16:28 ` Mathieu Desnoyers 2008-10-17 16:40 ` Gian Lorenzo Meocci 0 siblings, 1 reply; 5+ messages in thread From: Mathieu Desnoyers @ 2008-10-17 16:28 UTC (permalink / raw) * Pierre-Marc Fournier (pierre-marc.fournier at polymtl.ca) wrote: > Gian Lorenzo Meocci wrote: > > > I want to know if it is possible to obtain this results using lttng trace. > > It is definitely possible. > > > Actually I made a sum of all differences from a > > kernel_arch_trap_entry/kernel_arch_trap_exit, > > kernel_arch_syscall_entry/exit, kernel_softirq_entry/exit, > > mm_handle_fault_entry/exit, kernel_irq_entry/exit. > > You don't need mm_handle_fault_entry/exit because they are always > enclosed within kernel_arch_trap_entry/exit's. > > > But for now, my results isn't very good. > > - You need to stop counting time when your process is being scheduled > out. See the kernel_sched_schedule events. > > - You need to filter the events based on the pid of the process you're > investigating, but I guess you're already doing that. > > - If the process is being created inside the trace, you need to start > counting time only after it is created, of course. You could count > syscall time starting at the kernel_process_fork that creates the > process. Also, you need to stop counting time when it's destroyed of course. > > - If the process already exists when the trace is started, only consider > events after the list_statedump_end event. Before that, the pid of each > event might not be reliable. > All the above is good. Another thing : if an interrupt handler is executed on top of system call code, don't count it twice. :) Mathieu > pmf > > _______________________________________________ > ltt-dev mailing list > ltt-dev at lists.casi.polymtl.ca > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev > -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [ltt-dev] sys time 2008-10-17 16:28 ` Mathieu Desnoyers @ 2008-10-17 16:40 ` Gian Lorenzo Meocci 2008-10-17 17:33 ` Michel Dagenais 0 siblings, 1 reply; 5+ messages in thread From: Gian Lorenzo Meocci @ 2008-10-17 16:40 UTC (permalink / raw) I agree with you but this don't resolv my problem. Infact my problem is that "time" give me 1.74 sec of sys time when analising lttng-trace I obtain only 0.87. WHY??? -- Ing. Gian Lorenzo Meocci http://www.meocci.it ^ permalink raw reply [flat|nested] 5+ messages in thread
* [ltt-dev] sys time 2008-10-17 16:40 ` Gian Lorenzo Meocci @ 2008-10-17 17:33 ` Michel Dagenais 0 siblings, 0 replies; 5+ messages in thread From: Michel Dagenais @ 2008-10-17 17:33 UTC (permalink / raw) On Fri, 2008-10-17 at 18:40 +0200, Gian Lorenzo Meocci wrote: > I agree with you but this don't resolv my problem. Infact my problem > is that "time" give me 1.74 sec of sys time when analising lttng-trace > I obtain only 0.87. The time command can be pretty far off when a process is making a lot of system calls. It usually underestimates the user time, which is consistent with what you are seeing. Basically, the kernel simply counts a full jiffy for the process currently executing when the timer generates an interrupt. If a process makes a lot of system calls, it will often be scheduled at the beginning of a timer interval but will quickly yield to another process and not be there at the timer interrupt. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-10-17 17:33 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <8d94e9280810170558j5b9ed8d1q7da37da677c7bf7d@mail.gmail.com>
2008-10-17 13:06 ` [ltt-dev] sys time Gian Lorenzo Meocci
2008-10-17 15:26 ` Pierre-Marc Fournier
2008-10-17 16:28 ` Mathieu Desnoyers
2008-10-17 16:40 ` Gian Lorenzo Meocci
2008-10-17 17:33 ` Michel Dagenais
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox