Cool, thanks for the update. On Friday, July 23, 2010, David T. Lewis <le...@mail.msen.com> wrote: > Yes, it really is true. That said, I would expect the practical impact > to vary depending on how busy the main image is. > > If you are running a Squeak/Pharo image that is not busy, such as your > own personal desktop image or a Seaside image that is not currently > receiving requests, then the additional system memory used by the > forked background image is extremely small (it's pretty amazing > actually, try watching it on a system monitor such as xosview). > However, I would expect that if you were to do this with a busy > Seaside image, then that image would be doing a lot of updates to > memory and possibly garbage collection, so that will force the OS > to use more memory. > > Unfortunately this means that the busier your image is, the less > benefit you get from a memory usage point of view. But even at that, > you still get the advantage of doing the image save in a background > OS process running at lower OS scheduling priority. > > I do not actually run any Seaside server images, so someone would > need to try this on a real system to find out how much benefit it > delivers in practice. I would be interested to know the results. > > Dave > > > On Fri, Jul 23, 2010 at 02:12:14PM +0200, Lukas Renggli wrote: >> David, is what is said about memory management really true? I thought >> that saving the image triggered a garbage collect what forces to copy >> the whole memory anyway. >> >> Lukas >> >> On 23 July 2010 14:00, David T. Lewis <le...@mail.msen.com> wrote: >> > On Fri, Jul 23, 2010 at 09:49:46AM +0200, Lukas Renggli wrote: >> >> > But How I can do that without fork? I track changes in another process >> >> > and >> >> > when I do update I save image in this process. >> >> > How I can initiate image saving from ui process? >> >> >> >> I don't understand what you are saying. >> >> >> >> The thing is that using #fork to save the image has no effect (other >> >> than wrecking the image), because #snapshot:andQuit: is eventually >> >> calling a primitive that locks the complete VM anyway. >> >> >> >> If you want to fork while saving the image you need to use an OS-level >> >> fork, not a Smalltalk-level fork. You can do this with OSProcess for >> >> example (check the Seaside mailing-list archive). >> > >> > "UnixProcess saveImageInBackgroundNicely" >> > >> > Explained in the method comment: >> > >> > UnixProcess class>>saveImageInBackground: savedImageName nice: niceFlag >> > ? ? ? ?"When Squeak is used as a server it is sometimes desirable to >> > periodically >> > ? ? ? ?save image snapshots. This method forks a headless Squeak to >> > perform a >> > ? ? ? ?snapshot without impacting the server Squeak. Very little >> > additional memory >> > ? ? ? ?is required to do this because Unix copy-on-write memory management >> > allows >> > ? ? ? ?the two Squeak images to share object memory while the save is >> > performed. >> > ? ? ? ?The saved image is given a time stamped name, and the image name of >> > ? ? ? ?the main server Squeak remains unchanged. If niceFlag is true, the >> > ? ? ? ?background OS process runs at lowered scheduling priority." >> > >> > Dave >> > >> > >> > _______________________________________________ >> > Pharo-project mailing list >> > Pharo-project@lists.gforge.inria.fr >> > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >> > >> >> >> >> -- >> Lukas Renggli >> www.lukas-renggli.ch >> >> _______________________________________________ >> Pharo-project mailing list >> Pharo-project@lists.gforge.inria.fr >> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project > > _______________________________________________ > Pharo-project mailing list > Pharo-project@lists.gforge.inria.fr > http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project >
-- Lukas Renggli www.lukas-renggli.ch _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project