Alistair John Strachan wrote:> On Monday 10 September 2007 14:08:45 Laurent Vivier wrote:>> Avi Kivity wrote:>>> Ingo Molnar wrote:>>>> * Laurent Vivier <Laurent.Vivier@bull.net> wrote:>>>>> Ingo, please, could you have a look to these patches ?>>>>>>>>>> The aim of these four patches is to introduce Virtual Machine time>>>>> accounting.>>>>>>>>>> [PATCH 1/4] as recent CPUs introduce a third running state, after>>>>> "user" and "system", we need a new field, "guest", in cpustat to>>>>> store the time used by the CPU to run virtual CPU. Modify /proc/stat>>>>> to display this new field.>>>> the concept certainly looks sane to me.>>>>>>>> The heavy-handed use of #ifdefs uglifies the code to a large degree,>>>> but this is not a fundamental problem: since basically all distros>>>> have KVM enabled (and lguest benefits from this too), could you just>>>> make all this new code unconditional?>>> I imagine the embedded people will complain... perhaps move all the code>>> to a #ifdef section above with a full implementation and a stub>>> implementation.>> I'm going to repost patches without #ifdefs for readability.>> Then we could discuss if we should introduce #ifdefs and how.> > If you could provide a summary of the size increase from your latest post > (i.e., size of the kernel before and after) that might lay rest to some > theoretical complaints.

These patches add:

* at data structures level:

- one cputime64_t (8 bytes) per cpu- two cputime_t (2 * 4 bytes) per signal_struct and one cputime_t per task_struct

* at processing level:

- display and convert one more value in show_stat() (fs/proc/proc_misc.c)- display and convert two more values in do_task_stat() (fs/proc/array.c)- manage (copy and add) one more value in __exit_signal() (kernel/exit.c)- initialize three more fields in copy_signal (kernel/fork.c)- add a bit test in account_system_time() and if the bit is set call a newfunction (46 bytes on x86_64).