From: "Logic" Newsgroups: comp.parallel.pvm Subject: Re: PVM Buffer management Date: Mon, 12 Oct 1998 13:03:05 -0500 Organization: OnRamp, http://www.onramp.net/ Message-Id: <6vtgal$5s$1@news.onramp.net> References: <6vornl$l9n$1@news.onramp.net> FYI: Turns out that the send requests were coming faster than PVM was delivering the packets. The simple solution is to request an acknowledgement from the clients periodically and block on the ACK --this ensures that all of the requested information was sent. Logic wrote in message <6vornl$l9n$1@news.onramp.net>... >There's a tiny portion of an application that sends my poor "master" deep >into swap. It sends several thousand small packets to other PVM participants >to synchronize a subset of information after it's been modified and >collected by the "master". > >Note that pvm_initsend() *is* called for each packet going. It is my >understanding that this essentially free's then makes a buffer. The routine >is behaving as if the buffer is never freed up and the application soon >wanders into swap. > >There are other ways to do this which cause fewer transmits, but it really >bothers me that this code hits swap. Any suggestions? (Master is running on >Linux 2.0.35, RedHat 5.1, pvm3.4beta7, 96MB RAM, 128MB swap, Pentium Pro >200, glibc2, etc...) > >---snip--- >pvm_initsend(PvmDataDefault); >if(portals[iPortalIndex].portalfront && > portals[iPortalIndex].portalflood && > portals[iPortalIndex].portalvis) >{ > sprintf(pcPackFmt, "%%+ %%d %%%ic %%%ic %%%ic %%d", portalbytes, >portalbytes, portalbytes); > pvm_packf(pcPackFmt, > PvmDataDefault, > iPortalIndex, > portals[iPortalIndex].portalfront, > portals[iPortalIndex].portalflood, > portals[iPortalIndex].portalvis, > portals[iPortalIndex].nummightsee); > pvm_mcast(TaskList, iTaskCount, MSG_PORTAL_UPDATE); > pvm_initsend(PvmDataDefault); >} >---snip--- > >