Date: Sun, 8 Mar 2009 22:56:51 +0100 (CET) From: Oliver Fromme <olli@lurza.secnetix.de> To: freebsd-hackers@FreeBSD.ORG, freebsd@jayloden.com Subject: Re: CPU user/kernel time given the PID Message-ID: <200903082156.n28Lup7e085565@lurza.secnetix.de> In-Reply-To: <49B3D01E.1010600@jayloden.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903082156.n28Lup7e085565>