Cynbe ru Taren
cynbe at muq.org
Wed Dec 8 15:46:51 New Zealand Daylight Time 1999
Miroslav Silovic <silovic at zesoi.fer.hr> wrote:
| J C Lawrence <claw at kanga.nu> writes:
| > ColdStore is a gigabyte-scale persistent object store ...
| Ok, I did more extensive research into this (mostly because I know the
Thank you for a very informative post!
I've been watching ColdStore out of the corner of my eye
without having had time to take a serious look at it.
I'm particularly interested because I'm planning on converting
Muq to using mmap() next year. Your comments suggest that
perhaps I should retain the ability to run non-mmap()ed when I do.
| With mmap, you're limited to the largest contiguous segment in
| your address space, which really is about 1 gb on most OSes.
Did you mean "most 32-bit OSes"?
I don't mean to carp, but outside of Intel x86 boxes, 32-bits
seems basically dead, and I'd presumed that the 64-bit world
was roomier than this?
| - bug recovery is nonexistent. If your broken C++ code hits mmaped
| memory, you can say goodbye to the entire db.
You obviously have alternatives in mind, but they aren't clear to
I'd guess broken C++ code hitting memory could in principle trash
any db, but you see the risks as several orders of magnitude greater
when the entire db is memory-mapped, vs just a cache of it?
Or do you have solutions in mind for doing bug recovery well in
mmap()ed implementations, which ColdStore merely isn't implementing?
| - db format is highly non-portable. It's not just architecture
| dependant, it's C++ compiler dependant (as object layout may change).
Is the db format COFF? Or what was the relationship to COFF? Or
am I misunderstanding completely some of the ColdStore-related
traffic I vaguely remember?
| BTW, has there been any discussion on the list on incremental/generational
| GC? (that works best for MUDs by far, IMHO - you can really bump up your
| realtime response once you implement incrementality properly).
You sound knowledgable: I'd be interested to hear you comment further.
In Muq, I'm currently using a plain-jane mark-and-sweep monolithic
gc I hacked together one weekend just to have something rather than
I've been contemplating going to a two-generation system and/or
implementing Dijkstra's three-color incremental algorithm.
(I believe Muq's architecture, based on soft pointers indirected
through in essence a software MMU, should make Dijkstra's algorithm
particularly easy to implement.)
Is there prior mud art with other approaches? Are there working
systems or good references I should be boning up on before proceeding?
Once again, thanks for taking time to make a very informative post!
MUD-Dev maillist - MUD-Dev at kanga.nu
More information about the MUD-Dev