Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Apr 2004 10:10:42 -0600
From:      Dan Nelson <dnelson@allantgroup.com>
To:        Irwan Hadi <irwanhadi@phxby.com>
Cc:        questions@freebsd.org
Subject:   Re: High context switches on FreeBSD
Message-ID:  <20040402161041.GA6724@dan.emsphone.com>
In-Reply-To: <20040402063921.GB54789@phxby.com>
References:  <20040402063921.GB54789@phxby.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In the last episode (Apr 01), Irwan Hadi said:
> When I tested this web server on my FreeBSD 5.2.1 box, on a P IV 3
> Ghz Processor and 1 GB memory, I'm getting an enormous number of
> context switches, as you can see below:
> 
> # vmstat 1
>  procs      memory      page                    disks     faults      cpu
>  r b w     avm    fre  flt  re  pi  po  fr  sr da0 da1   in   sy  cs us sy id
>  0 0 0  119644 736348    0   0   0   0   4   0   4   0  308    0 303  0  1 99
>  0 0 0  119644 736348    0   0   0   0   0   0   0   0  301    0 221  0  0 100
>  0 0 0  119644 736348    0   0   0   0   0   0   0   0  300    0 215  0  0 100
>  1 0 0  121336 736092   82   0   0   0  19   0   0   0 9203    0 50953  9 18 73
>  1 0 0  121336 736040   13   0   0   0   0   0   0   0 18315    0 130743 14 46 40
>  0 0 2  121336 735984   14   0   0   0   0   0   0   0 18514    0 128537 18 41 41
>  1 0 0  121336 735928   14   0   0   0   0   0   0   0 20378    0 103812 15 40 45

Horrible word-wrap fixed. You might want to rebuild your vmstat binary,
since it looks like it's not counting syscalls at all.

> When I run the same code on a Linux box, I'm only getting at most
> 33000 context per second, thus it gives a better performance.
> 
> My question now is, is there a way I can trace the source of these
> context switches, network, or disk? I'm thinking it may be disk,
> though it is also possible that it is caused because of network.
> Also, I tried testing the web server by using ramdisk, and the result
> is still the same. The context switches stays around 100,000 at peak.
> 
> I'm hoping by reducing the number of context switches, I can increase
> my web server performance. Oh by the way, again this web server is my
> own, and I just use read(2), and write(2) to read and write to the
> socket, and to read the file from the disk.

I don't think my numbers are quite that high, but I am seeing a high
number of context switches also, even when idle (~200, just like the
above output).  An idle 4.8 box does ~10/sec, and even a busy server
rarely goes above 3000.  A simple du on a -current machine bumps the cs
rate to 6000 (4BSD scheduler).

-- 
	Dan Nelson
	dnelson@allantgroup.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040402161041.GA6724>