site_archiver@lists.apple.com Delivered-To: darwin-kernel@lists.apple.com Hi Josh, Are you really saying, that one should reboot the system after a program was run which used a lot of mbufs and freed them? Best regards Michael On Aug 15, 2005, at 22:12 Uhr, Josh Graessley wrote: Hello Michael, -josh On Aug 15, 2005, at 12:50 PM, Michael Tuexen wrote: Hi Josh, once again thank you very much! Best regards Michael On Aug 15, 2005, at 17:24 Uhr, Josh Graessley wrote: -josh On Aug 15, 2005, at 7:46 AM, Michael Tuexen wrote: Dear all, I have a simple question: But netstat -m gives for example: [PowerMac:/] tuexen% netstat -m 330 mbufs in use: 325 mbufs allocated to data 1 mbufs allocated to packet headers 3 mbufs allocated to socket names and addresses 1 mbufs allocated to Appletalk data blocks 376/848 mbuf clusters in use 1778 Kbytes allocated to network (46% in use) 0 requests for memory denied 0 requests for memory delayed 0 calls to protocol drain routines Thank you very much for your help. Best regards Michael This email sent to jgraessley@apple.com _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-kernel mailing list (Darwin-kernel@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-kernel/site_archiver%40lists.a... the principal problem I see is, that an Mac OS X system uses more and more mbuf clusters over the time and there is no chance to get them back. From my understanding the state of the system before and after running a user program should be the same (in terms of used kernel buffers and so on). The problem came up when testing the SCTP KAME implementation which does not have this problem on FreeBSD 4.* or 5.*. I believe that once a cluster is used for mbufs, those mbufs are never again collecting in to a cluster. Again, it has been some time since I've mucked with that stuff, so I might be wrong. It sounds like you're using too many mbufs. You might want to look in to ways to reduce the number of mbufs in use. Using your information I was able to find (after a one week search) a 'mbuf cluster leak' in the SCTP KAME implementation when the code runs on Mac OS X. The point is, that it is no leak. What happens is that when a program runs it needs some mbufs. So some clusters are converted to mbufs and the number of free mbuf clusters shrinks. After the program has finished the number of free mbuf clusters is reduced but the number of free mbufs is incremented. During tests this resulted in a scenario where you ran out of mbuf clusters. So the question is: How/when are free mbufs put together to free mbuf clusters again? If I remember correctly, mbufs themselves are stored in clusters. A cluster can be used as a cluster on it's own or it can be used to store mbufs. An mbuf is a fraction of a cluster. If the system runs out of mbufs, it may convert a cluster in to something like 8 mbufs. Normally a used cluster element is one where there exist an mbuf which has a pointer to the cluster element. This happens at least when you get it with m_mclget or the corresponding macro. This would than mean that the number of uses mbufs is not larger than the number of used mbuf clusters. Why can it happen that the number of mbuf clusters is larger than the number of mbufs? _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-kernel mailing list (Darwin-kernel@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-kernel/ jgraessley%40apple.com This email sent to site_archiver@lists.apple.com
participants (1)
-
Michael Tuexen