RELENG_10 performance regression (was Re: 35-40% performance drop releng9 vs releng10 openvpn
Xin Li
delphij at delphij.net
Fri Mar 20 23:53:43 UTC 2015
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
On 03/20/15 14:02, Mike Tancsa wrote:
> OK, I think I found where the RELENG_10 performance loss happened.
> It seems
> https://lists.freebsd.org/pipermail/svn-src-stable-10/2015-March/004778.html
>
> is the issue.
>
> Testing with a kernel from r279796 I get 76-77Mb of throughput.
> With r279848 it drops to about 60Mb
Hrm, looking at 'diffgraph.svg', it suggest that writing through devfs
have incurred a tax on writev(2), which is basically this codepath, if
my reading is correct, in sys/fs/devfs/devfs.c:
1676 static int
1677 devfs_write_f(struct file *fp, struct uio *uio, struct ucred
*cred,
1678 int flags, struct thread *td)
1679 {
...
1703 if (uio->uio_resid != resid || (error == 0 && resid !=
0)) {
1704 vfs_timestamp(&dev->si_ctime);
1705 dev->si_mtime = dev->si_ctime;
1706 }
Further looking at the code, in devfs vfs_timestamp() is also called
when reading from a device node. When the setting was 0, the code
would return time_second directly instead of attempting to read the
timestamp.
For the purpose of devfs, does it make sense to bump timestamps like
normal filesystems for each read/write operation? Looks like Mac OS X
will bump timestamps for each operation but Debian don't.
Cheers,
> ---Mike
>
>
>
> On 3/20/2015 1:36 PM, Mike Tancsa wrote:
>> OK, just to refocus,
>>
>> I had been tracking down what I thought was a regression between
>> RELENG9 and RELENG10, but looks more like an issue that cropped
>> up somewhere between the beginning of March and now. For
>> RELENG9, I was actually using a kernel from sources back on Jan
>> 29th by accident. If I bring RELENG9 upto today, I get a similar
>> performance loss.
>>
>> Again, I am testing a simple VPN router setup
>>
>> server1 --- apu --- server2
>>
>> where server1 connections to the apu via an OpenVPN tunnel and
>> server1 sends packets via netblast across the tunnel to server2.
>>
>> I get the following throughput using netblast through the tunnel
>> on 10
>>
>> Using # netblast 1.1.2.2 500 1200 15 (server1 to server2) on
>> 10.x
>>
>> Kernel Mb/s rev r277684 76.7563 r279978 59.3233
>>
>> All good at r278533, r278534, r279467
>>
>> But at r279978 its quite a bit slower. So somewhere between
>> r279467 and r279978. I will keep trying to narrow it down...
>>
>>
>> ---Mike
>>
>>
>>
>>
>>
>> On 3/19/2015 8:26 PM, Mike Tancsa wrote:
>>> On 3/18/2015 5:14 PM, John-Mark Gurney wrote:
>>>> # dtrace -x stackframes=100 -n 'profile-997 /arg0/ {
>>>> @[stack()] = count(); } tick-60s { exit(0); }' -o
>>>> out.kern_stacks
>>>>
>>>> Also, another thing you can do is to compare the two using
>>>> differential flame graphs:
>>>> http://www.brendangregg.com/blog/2014-11-09/differential-flame-graphs.html
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
Which will highlight where the performances differ...
>>>
>>> OK, some more data points. It seems a performance regression
>>> happened in RELENG_10 somewhere between r277684 (late January
>>> 2015) and now. Using r277684 on RELENG_10, I can get about
>>> 75Mb/s of throughput on OpenVPN. Still not as good as the
>>> 83-85Mb on RELENG_9, but much better than the 61Mb using
>>> RELENG_10 from the start of this week,
>>>
>>> For the differential graph, see
>>>
>>> http://tancsa.com/diffgraph.svg
>>>
>>> and
>>>
>>> http://tancsa.com/10-r277684.svg
>>> http://tancsa.com/10-r277684-kern.svg
>>>
>>> ---Mike
>>>
>>>
>>>
>>>
>>
>>
>
>
- --
Xin LI <delphij at delphij.net> https://www.delphij.net/
FreeBSD - The Power to Serve! Live free or die
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.1.2 (FreeBSD)
iQIcBAEBCgAGBQJVDLMDAAoJEJW2GBstM+nsmjgQAKGNdw70A2lfrVn8ngLympDM
HeJKVCRtjaZselJpVnkyy8igBU6TX0Ae66R4IPNBpi9aLcGb/xscDgYKNh2dZc4H
LjfyiXW62JwggXt+PCUjrLF3sbrlCI8ySTNLnILTs/CRFwdJXALFHWXDEtuMg+AT
Mto3HxKlRZlEbWHaKbWmR4uysks6KNYJXSCnw/VtSFvlVUSwpyNz+soygrajZPKC
PPOpjDqx2rvVxQwFaHF+ysTzKhvQSuJg+C5M9iKu4wgHd5QNuJ8IliAocVvPig9u
gushcc2MxGPyzG24Telc3Vc5T+pbCexiP3hRtFY0/okADG4O47tuoJOY09gp28Tq
5X3eXCXkBGfCtriv6aPf//jAQ6duDrGTDmYcI+FGIDp3/FG71adNTqZ6fcqFAL/+
JHO39qpytOruVVjFyjEvQBslYEKWUZJBGZ82q6kuE+811TZxdMGVLh3PICxiJw0l
SJcTR52UEYNp1kX+KhFXpz6cvV0Za5bJh/qHnC/1uzHvLYE7MDTinwDPb7LyK01G
fg+Kls6YCAv6rh4mDzWJCg8aTaWmbtfn2+ETwx74if6Z8LjTB1VdmZ4y336YRY2f
mFhV6eYAvvziIIMUvTQjAwyIcCtc65dvseOpgDdnWPFq/N+K4Jfg9Ast6mSHBYF2
FjvUzNg8OYvyfq5/TdPB
=djPp
-----END PGP SIGNATURE-----
More information about the freebsd-stable
mailing list