Jay Loden wrote: > I'm working on FreeBSD support for a Python library called psutil for reading > process information in a cross-platform fashion. Each platform-specific > module > is written in C, so the majority of the FreeBSD code is a C interface to > various > process information. I've been having some trouble working out how to get CPU > user/kernel time for a given PID. I took a look at the source to top and ps > but > neither really helped since they don't seem to cover the info I was looking > for > (or I missed it). > > I'm not sure if there's a better way to go about this but I've been looking > at > sysctl and the kinfo_proc struct - is there somewhere more appropriate to > retrieve this information? If the kinfo_proc struct is the way to go, then > do I > want to use ki_runtime, ki_swtime or something else, and does that mean > there's > no distinction between user/kern time for a process? If anyone has code > samples > or recommended docs to get me pointed in the right direction that would be > great.
ps(1) and top(1) both use ki_pctcpu, see the getpcpu() function in src/bin/ps/print.c and format_next_process() in src/usr.bin/top/machine.c As far as I know, there is no distinction between user- mode and kernel-mode CPU time per process. It should also be noted that the kernel's time cannot always be attributed to a certain userland process. I would even guess is that the majority of the CPU time spent in the kernel is not on behalf of a specific userland process. Best regards Oliver -- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M. Handelsregister: Registergericht Muenchen, HRA 74606, Geschäftsfuehrung: secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün- chen, HRB 125758, Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd "C is quirky, flawed, and an enormous success." -- Dennis M. Ritchie. _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"