Suddenly slow lstat syscalls on CURRENT from Juli

Beat Gätzi beat at chruetertee.ch
Sat Jan 1 16:59:12 UTC 2011


On 01.01.2011 17:46, Kostik Belousov wrote:
> On Sat, Jan 01, 2011 at 05:42:58PM +0100, Beat G?tzi wrote:
>> On 01.01.2011 17:12, Kostik Belousov wrote:
>>> On Sat, Jan 01, 2011 at 05:00:56PM +0100, Beat G?tzi wrote:
>>>> On 01.01.2011 16:45, Kostik Belousov wrote:
>>>>> Check the output of sysctl kern.maxvnodes and vfs.numvnodes. I suspect
>>>>> they are quite close or equial. If yes, consider increasing maxvnodes.
>>>>> Another workaround, if you have huge nested directories hierarhy, is
>>>>> to set vfs.vlru_allow_cache_src to 1.
>>>>
>>>> Thanks for the hint. kern.maxvnodes and vfs.numvnodes were equal:
>>>> # sysctl kern.maxvnodes vfs.numvnodes
>>>> kern.maxvnodes: 100000
>>>> vfs.numvnodes: 100765
>>>>
>>>> I've increased kern.maxvnodes and the problem was gone until
>>>> vfs.numvnodes reached the value of kern.maxvnodes again:
>>>> # sysctl kern.maxvnodes vfs.numvnodes
>>>> kern.maxvnodes: 150000
>>>> vfs.numvnodes: 150109
>>> The processes should be stuck in "vlruwk" state, that can be
>>> checked with ps or '^T' on the terminal.
>>
>> Yes, there are various processes in "vlruwk" state,
>>
>>>> As the directory structure is quite huge on this server I've set
>>>> vfs.vlru_allow_cache_src to one now.
>>> Did it helped ?
>>
>> No, it doesn't looks like setting vfs.vlru_allow_cache_src helped. The
>> problem was gone when I increased kern.maxvnodes until vfs.numvnodes
>> reached that level. I've stopped all running deamons but numvnodes
>> doesn't decrease.
> Stopping the daemons would not decrease the count of cached vnodes.
> What you can do is to call unmount on the filesystems. Supposedly, the
> filesystems are busy and unmount shall fail, but it will force freed
> the vnodes that are unused by any process.

That freed around 1500 vnodes. At the moment the vfs.numvnodes doesn't
increase rapidly and the server is usable. I will keep an eye it to see
if I run into the same problem again.

Thanks for your help!
Beat


More information about the freebsd-current mailing list