excessive use of gettimeofday(2) and other syscalls

Paul Ambrose ambrosehua at gmail.com
Sun Sep 11 11:48:28 UTC 2011


Sorry, my previous test is not accurate. I use  both firefox and chromium to
open 13 same web pages( two of them are from www.sina.com.cn, other from
groups.google.com, wiki.sun.com and freebsd.org,  both web browsers use
libcrossflash to drive linux flash plugin, not linuxulator on my amd64
8.2-stable , sorry I can not have access to youtube.com or facebook.com, I'm
in china),
and this is the result:
...................................................
[root at lateaxfreebsd sys]# dtrace -n 'syscall::gettimeofday:entry / execname
== "chrome" || execname == "firefox-bin"|| execname == "plugin-container" /
{ @[execname] = count() } profile:::tick-1 { exit(0); } '
dtrace: description 'syscall::gettimeofday:entry ' matched 2 probes
CPU ID FUNCTION:NAME
1 97 :tick-1

plugin-container 7802
chrome 8403
firefox-bin 215777


if I close the two sina.com.cn tab( the big page), then
.................................................
[root at lateaxfreebsd sys]# dtrace -n 'syscall::gettimeofday:entry / execname
== "chrome" || execname == "firefox-bin"|| execname == "plugin-container" /
{ @[execname] = count() } profile:::tick-1 { exit(0); } '
dtrace: description 'syscall::gettimeofday:entry ' matched 2 probes
CPU ID FUNCTION:NAME
1 97 :tick-1

chrome 65
plugin-container 2145
firefox-bin 268932

I think I can drive conclusion that chromium is much better than firefox
when rendering same page set, especially on static pages only 65 per second.
If we add opera to the list( opera not using flash plugin), it seems
opera does NOT use gettimeofday
.....................................................
[root at lateaxfreebsd sys]# dtrace -n 'syscall::gettimeofday:entry / execname
== "chrome" || execname == "firefox-bin"|| execname == "plugin-container" ||
execname == "opera" / { @[execname, probefunc] = count() } profile:::tick-1
{ exit(0); } '
dtrace: description 'syscall::gettimeofday:entry ' matched 2 probes
CPU ID FUNCTION:NAME
0 97 :tick-1

chrome gettimeofday 7632
plugin-container gettimeofday 8107
firefox-bin gettimeofday 232142


but it use more clock_gettime
.....................................................
[root at lateaxfreebsd sys]# dtrace -n 'syscall::clock_gettime:entry / execname
== "chrome" || execname == "firefox-bin"|| execname == "plugin-container" ||
execname == "opera" / { @[execname, probefunc] = count() } profile:::tick-1
{ exit(0); } '
dtrace: description 'syscall::clock_gettime:entry ' matched 2 probes
CPU ID FUNCTION:NAME
1 97 :tick-1

firefox-bin clock_gettime 634
chrome clock_gettime 839
plugin-container clock_gettime 1040
opera clock_gettime 14978


2011/9/10 Alexander Best <arundel at freebsd.org>

> On Fri Sep  9 11, Alexander Best wrote:
> > On Fri Sep  9 11, Dieter BSD wrote:
> > > >> Firefox 5 and 6 has more gettimeofday call than 20000 per second on
> my
> > > >> amd64-8.2-stable box.
> > >
> > > > i don't see why chromium needs
> > > > to call gettimeofday(2) or any library function that triggers it more
> > > > than 3000 times a second.
> > >
> > > What the <BLEEP> are web browsers doing that they "need" the clock
> > > so often?
> > >
> > > I suspect the answer is the same as why firefox uses significant
> amounts
> > > of CPU when it should be idle, why it uses memory without bound
> > > (I actually had to add ulimit to my shell's rc file :-( ), and
> > > so on.
> > >
> > > Using "links -g",
> > > "ktrace -di -tc -p6951; sleep 1; ktrace -C; kdump|wc -l"
> > > gives a typical count of 300-400, highest count seen: 1454.
> >
> > well that measurement is probably unfair. my measurements included all
> opened
> > tabs (~ 15), running plugins and extensions. if i disable all of those
> extra
> > stuff and use only a single tab, chromium produces less syscalls than
> links:
> >
> > 270
>
> ...however sites such as facebook produce a much higher syscall peek under
> chromium. with only one tab opened with youtube.com in it, chromium has a
> typical syscall count of 700-2000. i guess this is due to stuff like js,
> html5
> and friends.
>
> if i enable the flash plugins with only 1 single tab (youtube.com), the
> syscall
> count climbs to ~ 8000 with a peak at 19000 when youtube.com wasn't
> completely
> loaded. so the high syscall count is not only chromiums fault, but a
> combination of chromium, flash and the linuxulator.
>
> i believe further linuxulator improvements might reduce syscalls in this
> scenario.
>
> also with chromium 15, the syscall count is supposed to drop quite
> noticably
> (as mentioned in a previous message).
>
> cheers.
> alex
>
> >
> > cheers.
> > alex
> >
> > >
> > > What we need, is a sanely written web browser that has the
> > > features we need. Unfortunately the last time I checked,
> > > links and dillo both lacked features needed for online
> > > shopping/banking.
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>


More information about the freebsd-hackers mailing list