[MUD-Dev] ColdStore

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
| authors).

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 mailing list