Following up on my previous posts, I have now successfully increased the size
of the DNLC from 450,000 (default) to 10,000,000, by following the /etc/system
override method explained at
<http://dtrace.org/blogs/wesolows/2013/12/28/anonymous-tracing-on-smartos/>
Unfortunately, this has not solved the problem. I am still seeing very poor
performance from the OS X 10.9 Finder when viewering directories served from
the SmartOS server using netatalk 3.1.2. Subjectively, performance is somewhat
better, but opening folders still takes 10-20 seconds when it should be almost
instantaneous.
A new Flame Graph shows that now the kernel is still spending most of its time
in getcwd(), though now that is divided to a large amount between mutex_enter()
and mutex_leave(), with the lesser part actually spent in
dnlc_reverse_lookup(). The new Flame Graph is here:
<http://fere.be/p/netatalk-flamegraph-2.svg>
and a new Dtrace analysis from afp.d is here:
<https://gist.github.com/ferebee/0f8169cd0ea19b656c51>
Netatalk developer Ralph Böhme suggests that the observed slow performance of
getcwd might be specific to Illumos, and this comment from the netatalk mailing
list would seem to point in a similar direction:
<http://sourceforge.net/p/netatalk/mailman/message/24468503/>
It references a comment from the Samba source code
<https://ftp.samba.org/pub/unpacked/samba_3_next/source3/smbd/vfs.c> which says:
/*
* We don't have the information to hand so rely on traditional
* methods. The very slow getcwd, which spawns a process on some
* systems, or the not quite so bad getwd.
*/
This raises the question, what is the expected behavior of getcwd() on
SmartOS/Illumos/Solaris? If it is in fact very slow, and netatalk relies
heavily on it, perhaps Illumos is not a good choice for a netatalk server?
Or is there a way to optimize this after all within SmartOS?
Thanks all,
Chris
Am 02.08.2014 um 17:57 schrieb Richard Elling via smartos-discuss
<[email protected]>:
>> enters 1858063
>> hits 2546253549
>> misses 2531297654
>> negative_cache_hits 22475516
>> pick_free 0
>> pick_heuristic 995275
>> pick_last 3997
>
> pick_heuristic and pick_last are the import indicators that your DLNC could
> be
> too small. Ideally, these are 0.
>
> Somewhere around here I've got a dnlcstat... there is one in the dtrace
> toolkit,
> but you can also do one using just kstats instead.
> -- richard
-------------------------------------------
smartos-discuss
Archives: https://www.listbox.com/member/archive/184463/=now
RSS Feed: https://www.listbox.com/member/archive/rss/184463/25769125-55cfbc00
Modify Your Subscription:
https://www.listbox.com/member/?member_id=25769125&id_secret=25769125-7688e9fb
Powered by Listbox: http://www.listbox.com