Re: resident memory limit

2008-05-30 Thread Brad Penoff
On Wed, May 21, 2008 at 11:46 AM, Joshua Isom [EMAIL PROTECTED] wrote:

 On May 21, 2008, at 12:36 PM, Bill Moran wrote:

 In response to Brad Penoff [EMAIL PROTECTED]:

 On Wed, May 21, 2008 at 6:09 AM, Bill Moran [EMAIL PROTECTED]
 wrote:

 In response to Brad Penoff [EMAIL PROTECTED]:

 On Tue, May 20, 2008 at 2:39 PM, Brad Penoff [EMAIL PROTECTED] wrote:

 On Tue, May 20, 2008 at 1:54 PM, Bill Moran [EMAIL PROTECTED]
 wrote:

 In response to Brad Penoff [EMAIL PROTECTED]:

 I have an application that runs on Linux or Mac OS X but seems to
 have
 a problem when I run on FreeBSD (6.3 or 7).  The issue is the memory
 footprint for the application (osubw_sctpclien below) is quite
 large;
 on Linux it can be as much as 950 MB in resident memory, according
 to
 top.  However, on FreeBSD I start to get ENOMEM always around the
 time
 my resident memory size is about 200 MB.

 I read a few posts and have seen people fixing their problems by
 adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a swap
 file.  I've tried both and for my application, it still seems to be
 limited to 200 MB resident memory regardless of maxdsize and swap
 file
 setting.  I wrote a toy application (malloctest below) that calls
 malloc in a while(1) and breaks once it gets ENOMEM (doing another
 while(1) so it doesn't exit); this application's memory size in top
 always matches the kern.maxdsiz setting, however it has a very low
 resident memory number, according to top.

 Have a look at /etc/login.conf and the associated man pages.


 BTW, we've seen the exact behavior on FreeBSD 7 as well (6.3 was
 reported here).  We've tried on different hardware as well, and keep
 getting haunted by this resident memory limit that we don't know how
 to set.

 Any idea why, in the data I originally reported, I can allocate
 kern.maxdsiz + swap (see SIZE from top output) for malloc(1 MB) in a
 while loop, yet the top value for RES is always really low?

 How come, in contrast, my application starts to report ENOMEM when
 SIZE is 203 MB and RES is 201 MB?  This is why I titled the thread
 asking about an unknown (to me ;-) limit for resident memory...

 It's called memory overcommit.  If the OS thinks it _might_ be able
 to get you the memory, it will allow it.  You only actually use the
 memory when you start putting data in it (hence the difference between
 SIZE and RES)  Add a statement to fill up the malloc()ed memory with
 some sort of data in your loop, and you'll see different behaviour.

 As to what's limiting your application, I'm not sure.  What does the
 output of 'ulimit -a' say?


 Thanks again for your time.


 With the default loader.conf, my limit -a output is:

 Resource limits (current):
  cputime  infinity secs
  filesize infinity kB
  datasize   524288 kB
  stacksize   65536 kB
  coredumpsize infinity kB
  memoryuseinfinity kB
  memorylocked infinity kB
  maxprocesses 5547
  openfiles   11095
  sbsize   infinity bytes
  vmemoryuse   infinity kB

 My application starts getting ENOMEM when I have 201 MB of resident
 memory.



 When I change my loader.conf to match the 2 GB of physical memory that I
 have:
 kern.maxdsiz=2147483648
 kern.maxssiz=2147483648
 kern.dfldsiz=2147483648

 ...and reboot, then my limit -a output is:

 Resource limits (current):
  cputime  infinity secs
  filesize infinity kB
  datasize  2097152 kB
  stacksize 2097152 kB
  coredumpsize infinity kB
  memoryuseinfinity kB
  memorylocked infinity kB
  maxprocesses 5547
  openfiles   11095
  sbsize   infinity bytes
  vmemoryuse   infinity kB


 However, the application still seems to max out at 201 MB of resident
 memory.


 People suggest to fix my login.conf but the memory related fields are
 set to unlimited... Any ideas where this 201 MB limit of resident
 memory comes from?

 That's pretty strange.  If I had to guess, I would guess that there is no
 201M limit, but that you're hitting some other limit that just happens to
 predictably occur at 201M with that program.

 I'm kind of grasping at straws here, so hopefully I won't lead you on a
 wild goose chase, but I would look next at putting some debugging in
 /etc/malloc.conf and seeing if you get any useful information from it
 (see the malloc man page).  From there, possibly a ktrace of the process.
 Hopefully you have source code for the program and can compile it with
 debugging and run it under gdb.

 --
 Bill Moran
 http://www.potentialtech.com
 ___
 freebsd-questions@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-questions
 To unsubscribe, send any mail to
 [EMAIL PROTECTED]



I'm still playing around with malloc.conf and ktrace, searching for
answers (I'll report if I find any) but in the meantime, I'll try to
answer your questions...


 Here's a question I haven't

Re: resident memory limit

2008-05-21 Thread Brad Penoff
On Tue, May 20, 2008 at 2:39 PM, Brad Penoff [EMAIL PROTECTED] wrote:
 On Tue, May 20, 2008 at 1:54 PM, Bill Moran [EMAIL PROTECTED] wrote:
 In response to Brad Penoff [EMAIL PROTECTED]:

 I have an application that runs on Linux or Mac OS X but seems to have
 a problem when I run on FreeBSD (6.3 or 7).  The issue is the memory
 footprint for the application (osubw_sctpclien below) is quite large;
 on Linux it can be as much as 950 MB in resident memory, according to
 top.  However, on FreeBSD I start to get ENOMEM always around the time
 my resident memory size is about 200 MB.

 I read a few posts and have seen people fixing their problems by
 adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a swap
 file.  I've tried both and for my application, it still seems to be
 limited to 200 MB resident memory regardless of maxdsize and swap file
 setting.  I wrote a toy application (malloctest below) that calls
 malloc in a while(1) and breaks once it gets ENOMEM (doing another
 while(1) so it doesn't exit); this application's memory size in top
 always matches the kern.maxdsiz setting, however it has a very low
 resident memory number, according to top.

 Have a look at /etc/login.conf and the associated man pages.


BTW, we've seen the exact behavior on FreeBSD 7 as well (6.3 was
reported here).  We've tried on different hardware as well, and keep
getting haunted by this resident memory limit that we don't know how
to set.

Any idea why, in the data I originally reported, I can allocate
kern.maxdsiz + swap (see SIZE from top output) for malloc(1 MB) in a
while loop, yet the top value for RES is always really low?

How come, in contrast, my application starts to report ENOMEM when
SIZE is 203 MB and RES is 201 MB?  This is why I titled the thread
asking about an unknown (to me ;-) limit for resident memory...

Any other suggestions?

brad


 Thanks for the prompt reply.

 This system has the default settings for all users set to unlimited
 for more or less all login.conf categories.  I've pasted them below.
 My application uses a raw socket so I was running it as root, which
 also uses the default settings.

 It mentioned that setting memoryuse is the same as setting both -cur
 and -max ; any ideas why memoryuse is saying it's unlimited even
 though it is not?  I tried explicitly setting -cur to 1000M and it
 still started giving ENOMEM around 200 MB resident memory in top...

 brad


 default:\
:passwd_format=md5:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
:path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin
 /usr/local/bin /usr/X11R6/bin ~/bin:\
:nologin=/var/run/nologin:\
:cputime=unlimited:\
:datasize=unlimited:\
:stacksize=unlimited:\
:memorylocked=unlimited:\
:memoryuse=unlimited:\
:filesize=unlimited:\
:coredumpsize=unlimited:\
:openfiles=unlimited:\
:maxproc=unlimited:\
:sbsize=unlimited:\
:vmemoryuse=unlimited:\
:priority=0:\
:ignoretime@:\
:umask=022:

 root:\
:ignorenologin:\
:tc=default:



 --
 Bill Moran
 http://www.potentialtech.com



___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: resident memory limit

2008-05-21 Thread Wojciech Puchar

a problem when I run on FreeBSD (6.3 or 7).  The issue is the memory
footprint for the application (osubw_sctpclien below) is quite large;
on Linux it can be as much as 950 MB in resident memory, according to
top.  However, on FreeBSD I start to get ENOMEM always around the time
my resident memory size is about 200 MB.



check ulimit

then fix login.conf


I read a few posts and have seen people fixing their problems by
adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a swap
file.  I've tried both and for my application, it still seems to be
limited to 200 MB resident memory regardless of maxdsize and swap file
setting.  I wrote a toy application (malloctest below) that calls
malloc in a while(1) and breaks once it gets ENOMEM (doing another
while(1) so it doesn't exit); this application's memory size in top
always matches the kern.maxdsiz setting, however it has a very low
resident memory number, according to top.

I have all the data below from these two applications.  For
malloctest, I can malloc as much as maxdsiz allows (without panic'ing
the kernel).  My main question is, in FreeBSD how can I increase the
permitted resident memory of the system for my application to beyond
200 MB?  Any ideas where this 200 MB resident memory limit is coming
from?  Why (in the last data entry below) does the resident memory
limit become 80 MB after I increase maxdsiz AND use a swap file (the
settings where malloctest can malloc the most!)?

Thanks!
brad


Using FreeBSD 6.3.


kern.maxdsiz  default setting ( 524288 kB )
no swap file.

Mem: 218M Active, 9184K Inact, 36M Wired, 14M Buf, 1739M Free
Swap: 512M Total, 512M Free

 PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
 978 root4 1180   203M   201M RUN  0:12  0.00% osubw_sctpclien

... separate run...

 969 penoff  1 1250   513M  1144K RUN  0:09 90.73% malloctest

--

kern.maxdsiz  default setting ( 524288 kB )
512 MB swap file.

Mem: 218M Active, 9144K Inact, 36M Wired, 12K Cache, 14M Buf, 1739M Free
Swap: 1024M Total, 1024M Free

 PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
 982 root3 1200   203M   201M RUN  0:13  0.00% osubw_sctpclien

... separate run...

 967 penoff  1 1260   513M  1144K RUN  0:10 94.60% malloctest

--


kern.maxdsiz=2147483648   # Set the max data size
no swap file.

Mem: 218M Active, 9168K Inact, 36M Wired, 14M Buf, 1739M Free
Swap: 512M Total, 512M Free

 PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
 967 root3 1220   203M   201M RUN  0:31  0.00% osubw_sctpclien

... separate run...

 980 root1 1290  2050M  2680K RUN  0:12 97.64% malloctest




kern.maxdsiz=2147483648   # Set the max data size
512 MB swap file.

Mem: 220M Active, 12M Inact, 41M Wired, 12K Cache, 20M Buf, 1730M Free
Swap: 1024M Total, 1024M Free

 PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
1041 root4  200   204M   202M kserel   0:04  0.00% osubw_sctpclien

... separate run...

 967 root1 1210  2050M  2680K RUN  0:07 93.16% malloctest


kern.maxdsiz=30
no swap file

kernel panic


kern.maxdsiz=30   # Set the max data size
512 MB swap file.


Mem: 103M Active, 52M Inact, 106M Wired, 112M Buf, 1742M Free
Swap: 1024M Total, 1024M Free

 PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
15286 root2 1280 81172K 79080K RUN  1:47  0.00% osubw_sctpclien

... separate run...

 963 penoff  1 1220  2865M  3500K RUN  0:08 96.62% malloctest

-
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]



___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: resident memory limit

2008-05-21 Thread Bill Moran
In response to Brad Penoff [EMAIL PROTECTED]:

 On Tue, May 20, 2008 at 2:39 PM, Brad Penoff [EMAIL PROTECTED] wrote:
  On Tue, May 20, 2008 at 1:54 PM, Bill Moran [EMAIL PROTECTED] wrote:
  In response to Brad Penoff [EMAIL PROTECTED]:
 
  I have an application that runs on Linux or Mac OS X but seems to have
  a problem when I run on FreeBSD (6.3 or 7).  The issue is the memory
  footprint for the application (osubw_sctpclien below) is quite large;
  on Linux it can be as much as 950 MB in resident memory, according to
  top.  However, on FreeBSD I start to get ENOMEM always around the time
  my resident memory size is about 200 MB.
 
  I read a few posts and have seen people fixing their problems by
  adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a swap
  file.  I've tried both and for my application, it still seems to be
  limited to 200 MB resident memory regardless of maxdsize and swap file
  setting.  I wrote a toy application (malloctest below) that calls
  malloc in a while(1) and breaks once it gets ENOMEM (doing another
  while(1) so it doesn't exit); this application's memory size in top
  always matches the kern.maxdsiz setting, however it has a very low
  resident memory number, according to top.
 
  Have a look at /etc/login.conf and the associated man pages.
 
 
 BTW, we've seen the exact behavior on FreeBSD 7 as well (6.3 was
 reported here).  We've tried on different hardware as well, and keep
 getting haunted by this resident memory limit that we don't know how
 to set.
 
 Any idea why, in the data I originally reported, I can allocate
 kern.maxdsiz + swap (see SIZE from top output) for malloc(1 MB) in a
 while loop, yet the top value for RES is always really low?
 
 How come, in contrast, my application starts to report ENOMEM when
 SIZE is 203 MB and RES is 201 MB?  This is why I titled the thread
 asking about an unknown (to me ;-) limit for resident memory...

It's called memory overcommit.  If the OS thinks it _might_ be able
to get you the memory, it will allow it.  You only actually use the
memory when you start putting data in it (hence the difference between
SIZE and RES)  Add a statement to fill up the malloc()ed memory with
some sort of data in your loop, and you'll see different behaviour.

As to what's limiting your application, I'm not sure.  What does the
output of 'ulimit -a' say?

 
 Any other suggestions?
 
 brad
 
 
  Thanks for the prompt reply.
 
  This system has the default settings for all users set to unlimited
  for more or less all login.conf categories.  I've pasted them below.
  My application uses a raw socket so I was running it as root, which
  also uses the default settings.
 
  It mentioned that setting memoryuse is the same as setting both -cur
  and -max ; any ideas why memoryuse is saying it's unlimited even
  though it is not?  I tried explicitly setting -cur to 1000M and it
  still started giving ENOMEM around 200 MB resident memory in top...
 
  brad
 
 
  default:\
 :passwd_format=md5:\
 :copyright=/etc/COPYRIGHT:\
 :welcome=/etc/motd:\
 :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
 :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin
  /usr/local/bin /usr/X11R6/bin ~/bin:\
 :nologin=/var/run/nologin:\
 :cputime=unlimited:\
 :datasize=unlimited:\
 :stacksize=unlimited:\
 :memorylocked=unlimited:\
 :memoryuse=unlimited:\
 :filesize=unlimited:\
 :coredumpsize=unlimited:\
 :openfiles=unlimited:\
 :maxproc=unlimited:\
 :sbsize=unlimited:\
 :vmemoryuse=unlimited:\
 :priority=0:\
 :ignoretime@:\
 :umask=022:
 
  root:\
 :ignorenologin:\
 :tc=default:
 
 
 
  --
  Bill Moran
  http://www.potentialtech.com
 
 
 
 ___
 freebsd-questions@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/freebsd-questions
 To unsubscribe, send any mail to [EMAIL PROTECTED]


-- 
Bill Moran
http://www.potentialtech.com
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: resident memory limit

2008-05-21 Thread Brad Penoff
On Wed, May 21, 2008 at 6:09 AM, Bill Moran [EMAIL PROTECTED] wrote:
 In response to Brad Penoff [EMAIL PROTECTED]:

 On Tue, May 20, 2008 at 2:39 PM, Brad Penoff [EMAIL PROTECTED] wrote:
  On Tue, May 20, 2008 at 1:54 PM, Bill Moran [EMAIL PROTECTED] wrote:
  In response to Brad Penoff [EMAIL PROTECTED]:
 
  I have an application that runs on Linux or Mac OS X but seems to have
  a problem when I run on FreeBSD (6.3 or 7).  The issue is the memory
  footprint for the application (osubw_sctpclien below) is quite large;
  on Linux it can be as much as 950 MB in resident memory, according to
  top.  However, on FreeBSD I start to get ENOMEM always around the time
  my resident memory size is about 200 MB.
 
  I read a few posts and have seen people fixing their problems by
  adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a swap
  file.  I've tried both and for my application, it still seems to be
  limited to 200 MB resident memory regardless of maxdsize and swap file
  setting.  I wrote a toy application (malloctest below) that calls
  malloc in a while(1) and breaks once it gets ENOMEM (doing another
  while(1) so it doesn't exit); this application's memory size in top
  always matches the kern.maxdsiz setting, however it has a very low
  resident memory number, according to top.
 
  Have a look at /etc/login.conf and the associated man pages.
 

 BTW, we've seen the exact behavior on FreeBSD 7 as well (6.3 was
 reported here).  We've tried on different hardware as well, and keep
 getting haunted by this resident memory limit that we don't know how
 to set.

 Any idea why, in the data I originally reported, I can allocate
 kern.maxdsiz + swap (see SIZE from top output) for malloc(1 MB) in a
 while loop, yet the top value for RES is always really low?

 How come, in contrast, my application starts to report ENOMEM when
 SIZE is 203 MB and RES is 201 MB?  This is why I titled the thread
 asking about an unknown (to me ;-) limit for resident memory...

 It's called memory overcommit.  If the OS thinks it _might_ be able
 to get you the memory, it will allow it.  You only actually use the
 memory when you start putting data in it (hence the difference between
 SIZE and RES)  Add a statement to fill up the malloc()ed memory with
 some sort of data in your loop, and you'll see different behaviour.

 As to what's limiting your application, I'm not sure.  What does the
 output of 'ulimit -a' say?


Thanks again for your time.


With the default loader.conf, my limit -a output is:

Resource limits (current):
  cputime  infinity secs
  filesize infinity kB
  datasize   524288 kB
  stacksize   65536 kB
  coredumpsize infinity kB
  memoryuseinfinity kB
  memorylocked infinity kB
  maxprocesses 5547
  openfiles   11095
  sbsize   infinity bytes
  vmemoryuse   infinity kB

My application starts getting ENOMEM when I have 201 MB of resident memory.



When I change my loader.conf to match the 2 GB of physical memory that I have:
kern.maxdsiz=2147483648
kern.maxssiz=2147483648
kern.dfldsiz=2147483648

...and reboot, then my limit -a output is:

Resource limits (current):
  cputime  infinity secs
  filesize infinity kB
  datasize  2097152 kB
  stacksize 2097152 kB
  coredumpsize infinity kB
  memoryuseinfinity kB
  memorylocked infinity kB
  maxprocesses 5547
  openfiles   11095
  sbsize   infinity bytes
  vmemoryuse   infinity kB


However, the application still seems to max out at 201 MB of resident memory.


People suggest to fix my login.conf but the memory related fields are
set to unlimited... Any ideas where this 201 MB limit of resident
memory comes from?


Thanks!
brad




 Any other suggestions?

 brad

 
  Thanks for the prompt reply.
 
  This system has the default settings for all users set to unlimited
  for more or less all login.conf categories.  I've pasted them below.
  My application uses a raw socket so I was running it as root, which
  also uses the default settings.
 
  It mentioned that setting memoryuse is the same as setting both -cur
  and -max ; any ideas why memoryuse is saying it's unlimited even
  though it is not?  I tried explicitly setting -cur to 1000M and it
  still started giving ENOMEM around 200 MB resident memory in top...
 
  brad
 
 
  default:\
 :passwd_format=md5:\
 :copyright=/etc/COPYRIGHT:\
 :welcome=/etc/motd:\
 :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
 :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin
  /usr/local/bin /usr/X11R6/bin ~/bin:\
 :nologin=/var/run/nologin:\
 :cputime=unlimited:\
 :datasize=unlimited:\
 :stacksize=unlimited:\
 :memorylocked=unlimited:\
 :memoryuse=unlimited:\
 :filesize=unlimited:\
 :coredumpsize=unlimited:\
 :openfiles=unlimited

Re: resident memory limit

2008-05-21 Thread Bill Moran
In response to Brad Penoff [EMAIL PROTECTED]:
 On Wed, May 21, 2008 at 6:09 AM, Bill Moran [EMAIL PROTECTED] wrote:
  In response to Brad Penoff [EMAIL PROTECTED]:
 
  On Tue, May 20, 2008 at 2:39 PM, Brad Penoff [EMAIL PROTECTED] wrote:
   On Tue, May 20, 2008 at 1:54 PM, Bill Moran [EMAIL PROTECTED] wrote:
   In response to Brad Penoff [EMAIL PROTECTED]:
  
   I have an application that runs on Linux or Mac OS X but seems to have
   a problem when I run on FreeBSD (6.3 or 7).  The issue is the memory
   footprint for the application (osubw_sctpclien below) is quite large;
   on Linux it can be as much as 950 MB in resident memory, according to
   top.  However, on FreeBSD I start to get ENOMEM always around the time
   my resident memory size is about 200 MB.
  
   I read a few posts and have seen people fixing their problems by
   adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a swap
   file.  I've tried both and for my application, it still seems to be
   limited to 200 MB resident memory regardless of maxdsize and swap file
   setting.  I wrote a toy application (malloctest below) that calls
   malloc in a while(1) and breaks once it gets ENOMEM (doing another
   while(1) so it doesn't exit); this application's memory size in top
   always matches the kern.maxdsiz setting, however it has a very low
   resident memory number, according to top.
  
   Have a look at /etc/login.conf and the associated man pages.
  
 
  BTW, we've seen the exact behavior on FreeBSD 7 as well (6.3 was
  reported here).  We've tried on different hardware as well, and keep
  getting haunted by this resident memory limit that we don't know how
  to set.
 
  Any idea why, in the data I originally reported, I can allocate
  kern.maxdsiz + swap (see SIZE from top output) for malloc(1 MB) in a
  while loop, yet the top value for RES is always really low?
 
  How come, in contrast, my application starts to report ENOMEM when
  SIZE is 203 MB and RES is 201 MB?  This is why I titled the thread
  asking about an unknown (to me ;-) limit for resident memory...
 
  It's called memory overcommit.  If the OS thinks it _might_ be able
  to get you the memory, it will allow it.  You only actually use the
  memory when you start putting data in it (hence the difference between
  SIZE and RES)  Add a statement to fill up the malloc()ed memory with
  some sort of data in your loop, and you'll see different behaviour.
 
  As to what's limiting your application, I'm not sure.  What does the
  output of 'ulimit -a' say?
 
 
 Thanks again for your time.
 
 
 With the default loader.conf, my limit -a output is:
 
 Resource limits (current):
   cputime  infinity secs
   filesize infinity kB
   datasize   524288 kB
   stacksize   65536 kB
   coredumpsize infinity kB
   memoryuseinfinity kB
   memorylocked infinity kB
   maxprocesses 5547
   openfiles   11095
   sbsize   infinity bytes
   vmemoryuse   infinity kB
 
 My application starts getting ENOMEM when I have 201 MB of resident memory.
 
 
 
 When I change my loader.conf to match the 2 GB of physical memory that I have:
 kern.maxdsiz=2147483648
 kern.maxssiz=2147483648
 kern.dfldsiz=2147483648
 
 ...and reboot, then my limit -a output is:
 
 Resource limits (current):
   cputime  infinity secs
   filesize infinity kB
   datasize  2097152 kB
   stacksize 2097152 kB
   coredumpsize infinity kB
   memoryuseinfinity kB
   memorylocked infinity kB
   maxprocesses 5547
   openfiles   11095
   sbsize   infinity bytes
   vmemoryuse   infinity kB
 
 
 However, the application still seems to max out at 201 MB of resident memory.
 
 
 People suggest to fix my login.conf but the memory related fields are
 set to unlimited... Any ideas where this 201 MB limit of resident
 memory comes from?

That's pretty strange.  If I had to guess, I would guess that there is no
201M limit, but that you're hitting some other limit that just happens to
predictably occur at 201M with that program.

I'm kind of grasping at straws here, so hopefully I won't lead you on a
wild goose chase, but I would look next at putting some debugging in
/etc/malloc.conf and seeing if you get any useful information from it
(see the malloc man page).  From there, possibly a ktrace of the process.
Hopefully you have source code for the program and can compile it with
debugging and run it under gdb.

-- 
Bill Moran
http://www.potentialtech.com
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: resident memory limit

2008-05-21 Thread Joshua Isom


On May 21, 2008, at 12:36 PM, Bill Moran wrote:


In response to Brad Penoff [EMAIL PROTECTED]:
On Wed, May 21, 2008 at 6:09 AM, Bill Moran 
[EMAIL PROTECTED] wrote:

In response to Brad Penoff [EMAIL PROTECTED]:

On Tue, May 20, 2008 at 2:39 PM, Brad Penoff [EMAIL PROTECTED] 
wrote:
On Tue, May 20, 2008 at 1:54 PM, Bill Moran 
[EMAIL PROTECTED] wrote:

In response to Brad Penoff [EMAIL PROTECTED]:


I have an application that runs on Linux or Mac OS X but seems 
to have
a problem when I run on FreeBSD (6.3 or 7).  The issue is the 
memory
footprint for the application (osubw_sctpclien below) is quite 
large;
on Linux it can be as much as 950 MB in resident memory, 
according to
top.  However, on FreeBSD I start to get ENOMEM always around 
the time

my resident memory size is about 200 MB.

I read a few posts and have seen people fixing their problems by
adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a 
swap
file.  I've tried both and for my application, it still seems to 
be
limited to 200 MB resident memory regardless of maxdsize and 
swap file

setting.  I wrote a toy application (malloctest below) that calls
malloc in a while(1) and breaks once it gets ENOMEM (doing 
another
while(1) so it doesn't exit); this application's memory size in 
top
always matches the kern.maxdsiz setting, however it has a very 
low

resident memory number, according to top.


Have a look at /etc/login.conf and the associated man pages.



BTW, we've seen the exact behavior on FreeBSD 7 as well (6.3 was
reported here).  We've tried on different hardware as well, and keep
getting haunted by this resident memory limit that we don't know how
to set.

Any idea why, in the data I originally reported, I can allocate
kern.maxdsiz + swap (see SIZE from top output) for malloc(1 MB) in a
while loop, yet the top value for RES is always really low?

How come, in contrast, my application starts to report ENOMEM when
SIZE is 203 MB and RES is 201 MB?  This is why I titled the thread
asking about an unknown (to me ;-) limit for resident memory...


It's called memory overcommit.  If the OS thinks it _might_ be able
to get you the memory, it will allow it.  You only actually use the
memory when you start putting data in it (hence the difference 
between

SIZE and RES)  Add a statement to fill up the malloc()ed memory with
some sort of data in your loop, and you'll see different behaviour.

As to what's limiting your application, I'm not sure.  What does the
output of 'ulimit -a' say?



Thanks again for your time.


With the default loader.conf, my limit -a output is:

Resource limits (current):
  cputime  infinity secs
  filesize infinity kB
  datasize   524288 kB
  stacksize   65536 kB
  coredumpsize infinity kB
  memoryuseinfinity kB
  memorylocked infinity kB
  maxprocesses 5547
  openfiles   11095
  sbsize   infinity bytes
  vmemoryuse   infinity kB

My application starts getting ENOMEM when I have 201 MB of resident 
memory.




When I change my loader.conf to match the 2 GB of physical memory 
that I have:

kern.maxdsiz=2147483648
kern.maxssiz=2147483648
kern.dfldsiz=2147483648

...and reboot, then my limit -a output is:

Resource limits (current):
  cputime  infinity secs
  filesize infinity kB
  datasize  2097152 kB
  stacksize 2097152 kB
  coredumpsize infinity kB
  memoryuseinfinity kB
  memorylocked infinity kB
  maxprocesses 5547
  openfiles   11095
  sbsize   infinity bytes
  vmemoryuse   infinity kB


However, the application still seems to max out at 201 MB of resident 
memory.



People suggest to fix my login.conf but the memory related fields are
set to unlimited... Any ideas where this 201 MB limit of resident
memory comes from?


That's pretty strange.  If I had to guess, I would guess that there is 
no
201M limit, but that you're hitting some other limit that just happens 
to

predictably occur at 201M with that program.

I'm kind of grasping at straws here, so hopefully I won't lead you on a
wild goose chase, but I would look next at putting some debugging in
/etc/malloc.conf and seeing if you get any useful information from it
(see the malloc man page).  From there, possibly a ktrace of the 
process.

Hopefully you have source code for the program and can compile it with
debugging and run it under gdb.

--
Bill Moran
http://www.potentialtech.com
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to 
[EMAIL PROTECTED]





Here's a question I haven't seen asked yet.  How much memory is it 
trying to allocate?  If it can't get everything it's asking for it can 
fail.  Also, how is the application being started?  There could be some 
setting in the shell startup that's putting a limit.  Is it a native 
FreeBSD program

resident memory limit

2008-05-20 Thread Brad Penoff
Greetings,

I have an application that runs on Linux or Mac OS X but seems to have
a problem when I run on FreeBSD (6.3 or 7).  The issue is the memory
footprint for the application (osubw_sctpclien below) is quite large;
on Linux it can be as much as 950 MB in resident memory, according to
top.  However, on FreeBSD I start to get ENOMEM always around the time
my resident memory size is about 200 MB.

I read a few posts and have seen people fixing their problems by
adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a swap
file.  I've tried both and for my application, it still seems to be
limited to 200 MB resident memory regardless of maxdsize and swap file
setting.  I wrote a toy application (malloctest below) that calls
malloc in a while(1) and breaks once it gets ENOMEM (doing another
while(1) so it doesn't exit); this application's memory size in top
always matches the kern.maxdsiz setting, however it has a very low
resident memory number, according to top.

I have all the data below from these two applications.  For
malloctest, I can malloc as much as maxdsiz allows (without panic'ing
the kernel).  My main question is, in FreeBSD how can I increase the
permitted resident memory of the system for my application to beyond
200 MB?  Any ideas where this 200 MB resident memory limit is coming
from?  Why (in the last data entry below) does the resident memory
limit become 80 MB after I increase maxdsiz AND use a swap file (the
settings where malloctest can malloc the most!)?

Thanks!
brad


Using FreeBSD 6.3.


kern.maxdsiz  default setting ( 524288 kB )
no swap file.

Mem: 218M Active, 9184K Inact, 36M Wired, 14M Buf, 1739M Free
Swap: 512M Total, 512M Free

  PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
  978 root4 1180   203M   201M RUN  0:12  0.00% osubw_sctpclien

... separate run...

  969 penoff  1 1250   513M  1144K RUN  0:09 90.73% malloctest

--

kern.maxdsiz  default setting ( 524288 kB )
512 MB swap file.

Mem: 218M Active, 9144K Inact, 36M Wired, 12K Cache, 14M Buf, 1739M Free
Swap: 1024M Total, 1024M Free

  PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
  982 root3 1200   203M   201M RUN  0:13  0.00% osubw_sctpclien

... separate run...

  967 penoff  1 1260   513M  1144K RUN  0:10 94.60% malloctest

--


kern.maxdsiz=2147483648   # Set the max data size
no swap file.

Mem: 218M Active, 9168K Inact, 36M Wired, 14M Buf, 1739M Free
Swap: 512M Total, 512M Free

  PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
  967 root3 1220   203M   201M RUN  0:31  0.00% osubw_sctpclien

... separate run...

  980 root1 1290  2050M  2680K RUN  0:12 97.64% malloctest




kern.maxdsiz=2147483648   # Set the max data size
512 MB swap file.

Mem: 220M Active, 12M Inact, 41M Wired, 12K Cache, 20M Buf, 1730M Free
Swap: 1024M Total, 1024M Free

  PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
 1041 root4  200   204M   202M kserel   0:04  0.00% osubw_sctpclien

... separate run...

  967 root1 1210  2050M  2680K RUN  0:07 93.16% malloctest


kern.maxdsiz=30
no swap file

kernel panic


kern.maxdsiz=30   # Set the max data size
512 MB swap file.


Mem: 103M Active, 52M Inact, 106M Wired, 112M Buf, 1742M Free
Swap: 1024M Total, 1024M Free

  PID USERNAME  THR PRI NICE   SIZERES STATETIME   WCPU COMMAND
15286 root2 1280 81172K 79080K RUN  1:47  0.00% osubw_sctpclien

... separate run...

  963 penoff  1 1220  2865M  3500K RUN  0:08 96.62% malloctest

-
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: resident memory limit

2008-05-20 Thread Bill Moran
In response to Brad Penoff [EMAIL PROTECTED]:
 
 I have an application that runs on Linux or Mac OS X but seems to have
 a problem when I run on FreeBSD (6.3 or 7).  The issue is the memory
 footprint for the application (osubw_sctpclien below) is quite large;
 on Linux it can be as much as 950 MB in resident memory, according to
 top.  However, on FreeBSD I start to get ENOMEM always around the time
 my resident memory size is about 200 MB.
 
 I read a few posts and have seen people fixing their problems by
 adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a swap
 file.  I've tried both and for my application, it still seems to be
 limited to 200 MB resident memory regardless of maxdsize and swap file
 setting.  I wrote a toy application (malloctest below) that calls
 malloc in a while(1) and breaks once it gets ENOMEM (doing another
 while(1) so it doesn't exit); this application's memory size in top
 always matches the kern.maxdsiz setting, however it has a very low
 resident memory number, according to top.

Have a look at /etc/login.conf and the associated man pages.

-- 
Bill Moran
http://www.potentialtech.com
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: resident memory limit

2008-05-20 Thread Brad Penoff
On Tue, May 20, 2008 at 1:54 PM, Bill Moran [EMAIL PROTECTED] wrote:
 In response to Brad Penoff [EMAIL PROTECTED]:

 I have an application that runs on Linux or Mac OS X but seems to have
 a problem when I run on FreeBSD (6.3 or 7).  The issue is the memory
 footprint for the application (osubw_sctpclien below) is quite large;
 on Linux it can be as much as 950 MB in resident memory, according to
 top.  However, on FreeBSD I start to get ENOMEM always around the time
 my resident memory size is about 200 MB.

 I read a few posts and have seen people fixing their problems by
 adjusting kern.maxdsiz in /boot/loader.conf and/or by adding a swap
 file.  I've tried both and for my application, it still seems to be
 limited to 200 MB resident memory regardless of maxdsize and swap file
 setting.  I wrote a toy application (malloctest below) that calls
 malloc in a while(1) and breaks once it gets ENOMEM (doing another
 while(1) so it doesn't exit); this application's memory size in top
 always matches the kern.maxdsiz setting, however it has a very low
 resident memory number, according to top.

 Have a look at /etc/login.conf and the associated man pages.


Thanks for the prompt reply.

This system has the default settings for all users set to unlimited
for more or less all login.conf categories.  I've pasted them below.
My application uses a raw socket so I was running it as root, which
also uses the default settings.

It mentioned that setting memoryuse is the same as setting both -cur
and -max ; any ideas why memoryuse is saying it's unlimited even
though it is not?  I tried explicitly setting -cur to 1000M and it
still started giving ENOMEM around 200 MB resident memory in top...

brad


default:\
:passwd_format=md5:\
:copyright=/etc/COPYRIGHT:\
:welcome=/etc/motd:\
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
:path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin
/usr/local/bin /usr/X11R6/bin ~/bin:\
:nologin=/var/run/nologin:\
:cputime=unlimited:\
:datasize=unlimited:\
:stacksize=unlimited:\
:memorylocked=unlimited:\
:memoryuse=unlimited:\
:filesize=unlimited:\
:coredumpsize=unlimited:\
:openfiles=unlimited:\
:maxproc=unlimited:\
:sbsize=unlimited:\
:vmemoryuse=unlimited:\
:priority=0:\
:ignoretime@:\
:umask=022:

root:\
:ignorenologin:\
:tc=default:



 --
 Bill Moran
 http://www.potentialtech.com


___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]