|Subject:||Re: [Qemu-devel] time inside qemu|
|Date:||Tue, 17 Apr 2007 16:05:54 +0200|
|User-agent:||Mozilla Thunderbird 22.214.171.124 (X11/20070403)|
En/na Paul Brook ha escrit:
It's possible, but I think that roughly speaking, more code implies more time:On Monday 16 April 2007 15:41, Marius Monton wrote:Any benchmark/performance measurements you make inside qemu are meaningless. qemu performance bears no relation whatsoever to the performance characteristics of real hardware.That's true, and I don't care about it. I'd like to get a method to stop/start time inside qemu in order to simulate execution of large pieces of hw out of qemu (look at qemu-systemc project). If qemu is freeze meanwhile a systemc simulation is in progress (simulating a HW device of system), time should be freeze also. In this way, execution time of a program inside qemu should appear shorter when using accelerator HW than only SW application. I know these times are not reals, but it should be enough to estimate correctness and execution time on real platforms.You're deluding yourself. I simply don't believe you can get any meaningful performance measurements out of qemu. You certainly can't use it to evaluate the correctness of time sensitive algorithms. qemu execution times can easily be orders of magnitude different from real hardware. i.e. if you have two operations that take the same amount of time to execute on real hardware, one of those operations may take many times longer than the other inside qemu.
code (a) : for (int i = 0; i< 1000000; i++) c[i] = a[i] * b[i];
code (b) : for (int i = 0; i< 1000; i++) for(int j = 0; j < b[i]; j++) c[i] += a[i];
code (c) : for (int i = 0; i< 1000; i++) c[i] = HW_MUL(a[i], b[i]);
I'm sure that code (b) will execute much longer that code (a) inside qemu (sure that different that in real platform), and I'd like to compute executing time for code (c) in some way.
So, how can I trap time information/calculation inside qemu?
Sure, but this can be avoided using multiple simulations and calculating arithmetic mean for execution time.If nothing else you're entirely at the mercy of the host OS process scheduler and signal delivery. The emulated CPU may stall for an arbitrary time at any point.
|[Prev in Thread]||Current Thread||[Next in Thread]|