Re: resident memory limit
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
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
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
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
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
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
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
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
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
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]