Michael Neumann wrote: > Hi, > > With DragonFlyBSD (www.dragonflybsd.org) it's now possible to checkpoint > processes. That means, that you can store a dump of the running > application to disk, from which you can resume later on (possibly on > another machine). I mention this, because it's especially interesting > for Web frameworks like Wee or Borges, which use Continuations and > Threads, that are not marshallable (but checkpointable ;-). > > I've made a Ruby module around the sys_checkpoint syscall. You can find > the module here: > > http://www.ntecs.de/viewcvs/viewcvs/DragonFly/checkpoint/ > > Of course, you have to restore sockets, pipes etc. on resume yourself. Maybe I'll give a simple example: require 'checkpoint' Checkpoint.checkpoint('dump') p '.' Checkpoint.resume('dump') This will loop infinite and print '.' on the screen. Or this one: $conn = TCPServer.... Checkpoint.checkpoint('dump') do # setup sockets on resume $conn = TCPServer.open('localhost', 9999) end .... If you resume from "dump" (type 'checkpt -r dump' on command line, or 'ruby -r checkpoint -e 'Checkpoint.resume("dump")'), the block will be executed. Regards, Michael