> > I never saw mlock(2) fail in 6.2 but with 7.0 I sometimes
> > get mlock(2) failed: Resource temporarily unavailable.
> 
> That's error EAGAIN:
> 
>      [EAGAIN]           Locking the indicated range would exceed
>                         either the system or per-process limit
>                         for locked memory.
> 
> You are hitting either the `vm.max_wired' limit, or the per-process
> RLIMIT_MEMLOCK limit.
> 
> > What changed and how do I fix it?
> 
> It would be nice if you could run a test program that prints the value of
> vm.max_wired and RLIMIT_MEMLOCK on 6.2 and then on 7.0.  As an extra test,
> it may be worth printing these values in the log of your application when
> mlock(2) fails.

vm.max_wired looks like a sysctl, but sysctl doesn't know about it.

sysctl: unknown oid 'vm.max_wired'

sysctl -a | grep -i wire | grep -vi firewire 
vm.stats.vm.v_wire_count: 89046

/usr/include/sys/resource.h:#define     RLIMIT_MEMLOCK  6               /* 
locked-in-memory address space */

It doesn't always fail, just sometimes.  It is trying to lock 172490752 bytes.
There can be two processes wanting to do this at once.  Seems to be the 2nd
one that sometimes fails.

with one process:
vm.stats.vm.v_wire_count: 130992  (41946 more)

with two processes (mlock failed):
vm.stats.vm.v_wire_count: 131047  (55 more)

killed both proceses:
vm.stats.vm.v_wire_count: 88788
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to