[SOLVED] Re: 7.1 hangs, shutdown terminated
Jeremy Chadwick
koitsu at FreeBSD.org
Fri Oct 10 10:37:57 UTC 2008
On Fri, Oct 10, 2008 at 11:43:39AM +0200, Laszlo Nagy wrote:
>
>>>> If find / -sx is running and is consuming all CPU, what is the
>>>> value of vfs.ufs.dirhash_mem:
>>>>
>>>> # sysctl -a | grep dirhash
>>>>
>>> shopzeus# sysctl -a | grep dirhash
>>> vfs.ufs.dirhash_docheck: 0
>>> vfs.ufs.dirhash_mem: 2095818
>>> vfs.ufs.dirhash_maxmem: 2097152
>>> vfs.ufs.dirhash_minsize: 2560
>>>
>>>
>>>> Make sure vfs.ufs.dirhash_mem: is not close to vfs.ufs.dirhash_maxmem:
>>>>
>>> All right. It is close to it. Which one should I increase? I put this
>>> into /etc/sysctl.conf:
>>>
>>>
>>> vfs.ufs.dirhash_maxmem=8228608
>>>
>>> Would it be scufficient?
>>>
>>
>> We don't know, and can't tell you. You'll have to monitor
>> vfs.ufs.dirhash_mem occasionally to see if you start to reach
>> vfs.ufs.dirhash_maxmem.
>>
>> I have a tendency to use vfs.ufs.dirhash_maxmem=16777216, which is
>> 16384*1024 (16MBytes).
>>
>> I'm not fully confident this is what's causing your problem, but it's
>> definitely a recommendation by Johan.
>>
> Thank you very much! Probably you are right. Our users use shared IMAP
> folders and sometimes they keep ten thousands of messages in one folder.
> I have increased dirhash_maxmem to 64MB and see what happens.
>
> Unfortunately, I cannot play with the hardware because it is in a server
> park, and it must be up 99.99% on workdays.
>
> I hope dirhash will solve the problem. I'm setting this to [SOLVED] and
> come back if it happens again. (Maybe on monday?)
>
> By the way, there is nothing in /etc/periodic that would execute "find /
> -sx". Can somebody explain what is this for, and why it was started by
> root? Is it being used instead for enumerating files in a directory,
> when dir hash is full?
Firstly, I see a periodic(8) job that DOES use find -sx, which means
your attempt to track it down was faulty, and your syntax should have
been "find -sx /" not "find / -sx". See here:
/etc/periodic/security/100.chksetuid: find -sx $MP /dev/null -type f \
$MP == mountpoint, e.g. /, /var, or any other mounted filesystem.
So, what you saw was the periodic check looking for setuid-root
binaries.
Secondly, the kernel does not spawn userland processes like find(1).
Thirdly, dirmem and dirmem_max are *pure* kernel things. What they do
is control the amount of memory used for directory structure caching;
rather than continually hit the disk every time and spend all that time
handling directory contents, the kernel can cache previously-fetched
contents in memory.
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. PGP: 4BD6C0CB |
More information about the freebsd-questions
mailing list