[Barrelfish-users] About CPU performance
tomsun.0.7
tomsun.0.7 at gmail.com
Sun Feb 8 12:22:58 CET 2015
Hi Timothy,
I don't know why you didn't see that reply with code. Anyway, it's like
this:
> CPU: Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz
>
> QEMU execution time: 5509153 us
> Bare-metal execution time: 10802345 us
> w/o hyper-threading: 6065235 us
>
> code:
>
> #include <stdio.h>
> #include <sys/time.h>
> long fib(long a, long b, long depth)
> {
> if (depth > 0) {
> return fib(b, a + b, depth - 1);
> }
> return b;
> }
> int main(void)
> {
> struct timeval start;
> gettimeofday(&start, NULL);
> printf("fib: %ld\n", fib(1, 1, 10000000000));
> struct timeval end;
> gettimeofday(&end, NULL);
> printf("time: %ld us\n", end.tv_usec - start.tv_usec + (end.tv_sec -
> start.tv_sec) * 10000\00);
> return 0;
> }
>
>
On Sun, Feb 8, 2015 at 7:10 PM, Timothy Roscoe <troscoe at inf.ethz.ch> wrote:
>
> Dear Tom,
>
> Perhaps it would be easier for us to understand your problem if you
> posted the code you running, and also how you are taking your
> measurements. Can you share that with us?
>
> -- Timothy
>
> At Sun, 8 Feb 2015 12:37:09 +0800, "tomsun.0.7" <tomsun.0.7 at gmail.com>
> wrote:
> > Really sorry for misunderstanding your reply but I also considered about
> > QEMU's imprecise measure of time. I increased the steps of additions by
> 10
> > times so that it will take around one minute to finish. Then I started
> > two Barrelfish (one in QEMU and one on bare-metal) and spawned the same
> > application at the same time (nearly, no guarantee for submillisecond
> > difference), but I found there is a obvious gap (about 5 seconds) between
> > their end time to finish.
> >
> > And I have read your SOSP paper, which gives an evaluation with OpenMP.
> > Indeed, the performance for insert sort is nearly the same with the one
> on
> > Linux while running on one core. So, I become more curious about why I
> got
> > different performance.
> >
> > Is there any tools, like profiling tools, I can leverage to find out the
> > reasons?
> >
> > On Sun, Feb 8, 2015 at 3:51 AM, Simon Peter <speter at inf.ethz.ch> wrote:
> >
> > > What I mean is that in order to measure performance in terms of
> execution
> > > time (as I can glance from your previous email that had results in
> it), you
> > > first need a notion of time. Barrelfish's notion of time is off on
> QEMU.
> > > Hence, you might be seeing wrong results.
> > >
> > > We have compared Barrelfish to Linux performance on bare-metal
> hardware in
> > > various papers, such as our SOSP paper.
> > >
> > > On 02/06/2015 07:02 PM, tomsun.0.7 wrote:
> > >
> > >> I don't actually care about the measure of CPU speed, I want to know
> why
> > >> Barrelfish performs worse on bare-metal than on QEMU with KVM.
> > >>
> > >> As my second reply demonstrated, I got worse performance while running
> > >> applications on bare-metal than both QEMU with KVM and native Linux.
> > >>
> > >> I made sure that it doesn't result from CPU frequency, because I
> > >> accessed the hardware performance registers directly within kernel and
> > >> found it did run with full speed.
> > >>
> > >> Now, I'm suspecting that is it possible that the performance is
> > >> influenced by some other factors like, device interrupts?
> > >> Have you ever measured the performance of Barrelfish and compared it
> > >> with Linux or other operating system?
> > >>
> > >> On Sat, Feb 7, 2015 at 3:47 AM, Simon Peter <speter at inf.ethz.ch
> > >> <mailto:speter at inf.ethz.ch>> wrote:
> > >>
> > >> I'm also suspecting that it might just be jittery CPU emulation
> > >> speed that's getting you different results. Barrelfish's usleep
> > >> ultimately uses sys_debug_get_tsc_per_ms, so your 2 ways might
> > >> actually be the same. Barrelfish measures CPU speed at bootup, but
> > >> it's very bad at figuring it out correctly on QEMU. I'm not sure
> > >> what the best way is to get accurate results on QEMU.
> > >>
> > >>
> > >> On 15-02-04 09:46 PM, tomsun.0.7 wrote:
> > >>
> > >>> Hi,
> > >>>
> > >>> I started a network application who is dedicated to produce
> > >>> packets all the time. However, when I started it on bare-metal, I
> > >>> found the throughput is only a half of running in QEMU (of
> course,
> > >>> with KVM enabled).
> > >>>
> > >>> This application is only CPU-intensive, it just produces a lot of
> > >>> packets and then destroys them. So it's none of the devices'
> > >>> business. At first, I think it results from the low frequency of
> > >>> cores, so I measured this by two ways: 1. invoking native
> > >>> Barrelfish interface, sys_debug_get_tsc_per_ms, directly; 2.
> > >>> reading tsc and sleeping for 1 second using POSIX sleep (which is
> > >>> implemented by invoking Barrelfish's usleep as I know). However,
> I
> > >>> got the full-speed results under both conditions.
> > >>>
> > >>> So, I don't know whether it results from incorrect measure of
> > >>> frequency or some other CPU problems because I even tried to
> start
> > >>> it with PXE in QEMU, and got full performance.
> > >>>
> > >>> What can I do to get normal performance on bare-metal? Or, if it
> > >>> results from low frequency of CPUs, what can I do to tune up the
> > >>> frequency?
> > >>>
> > >>>
> > >>> Tom
> > >>>
> > >>>
> > >>> _______________________________________________
> > >>> Barrelfish-users mailing list
> > >>> Barrelfish-users at lists.inf.ethz.ch <mailto:Barrelfish-users@
> > >>> lists.inf.ethz.ch>
> > >>> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users
> > >>>
> > >>
> > >>
> > >>
> > >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20150208/ea1ae78d/attachment.html
More information about the Barrelfish-users
mailing list