I have been resisting it for years! GNU automake and autoconf are such hairballs I did not want to deal with it. So for years I've worked around it and ignored it.
No more. It just has to happen, I want to support more and different platforms and this just seems like the way to best do it.
So, the next beta release of phoenix and mcache will use autoconf's configure to build and install.
Yahoo, the most visited site on the web, gets 10 million hits a week. That means, on average, 1.4 million hits a day, or about 60,000 hits an hour, or about 1000 hits a minute, or roughly 20 hits a second.
If we calculate peek at 100 times the average, we are looking at about 2000 hits a second maximum.
MCache on modern hardware has been tested at 4000 session dialogs per second. The size of session information is a factor because of network bandwidth issues and that may effect throughput, but MCache should be able to handle even the most busiest of sites with ease.
After being side tracked for about 6 months, MCache 64bit is currently in CVS and in the process of being tested.
The Phoenix library on which MCache is built is kind of old. It contains code generated over a span of more than 20 years. While it has been ported from 16 bit to 32 bit in the past, assumptions about bit depth changes made in the past were not true about the move to 64 bit from 32 bit.
The big issue is the size of "int," "unsigned int," and pointers. At the time when the code was created it, it was standard that the size of these types were the natural bit width of the machine and size of a pointer would most likely be the size of an int. In the switch to x86/AMD 64 bits, the "int" type remained 32 bits wide and pointers grew to 64 bits. This wasn't a surprise, but it presented challenges to the code base.
The tiger line parser has been updated to work with the 2006 Second Edition files. Also added is a utility built with libzip to extract, parse, and output to PostgreSQL the data with no intermediate extraction of the census files.
Phoenix, MCache, and Mohawk customer applications should not be built from CVS in the coming months as a major rewrite is underway after a rather lengthy hiatus.
Phoenix, MCache, and all Mohawk Software private applications are being ported to 64 bit and this will take some time.
After a few discussions with some fellow developers, I think the policy of timeout and expire should be this:
timeout remains as it is, that is, sessions that have not been used within the "timeout" period of time will be flushed from the MCache. If you use a persistent storage system, a flushed session will be saved to disk, otherwise the session is lost.
A new parameter, "expire" will be used by persistent storage systems and ignored by MCache generally. The persistent storage system will use this parameter to delete sessions that have expired.
The only remaining issue not addressed by this solution is what I'll call "timely expire" in which sessions are actively removed (from MCache and persistent storage) at the moment they expire. Since timeout and expire are more or less along the lines of "garbage collection," I think lazy deletes are appropriate for the functionality. If you need something more active, there is a delete mechanism that can be used to explicitly delete a session in MCache and persistent storage.
MCache 2.0 has really been a lot of work, I'm not even sure it is a worthwhile effort, but 2.0 will be released before I give up.
Ironically, CGR or FTSS would probably be more interesting, but I really think MCache has some serious real word applications that a LOT of web sites or application servers that rely on NFS or SQL databases to share and distribute information for processing can benefit.
Up coming in Beta7 will be mfsvacuum, which will scan and clean up a filestore directory.
There are two issues being ironed out for Beta7
(1) The difference between removing an object from memory and permanently deleting it for disuse. In a purely RAM based implementation there is no difference. In a deployment where there is a persistent storage system, there is a difference. There are a few ways to handle this, the task is choosing the correct one.
By mohawk software at 2007-04-16 14:36 | login or register to post comments
Mohawk Software has been independently developing software for over a decade, and there are a lot of internal projects that can be brought out as GPL projects, here is a list of the top four:
FTSS: Full Text Search System
A scalable pre-indexing text search system with phrase ranking and metaphone translation. FTSS has a variety of "plugins" allowing custom input interfaces and formats, search request output communications protocol and formats, word translators and more. FTSS currently supports PGSQL, ODBC, Sqlite, and MySQL as input sources, and provides HTTP request, with raw text or XML output formats.
MCache is on beta 6, but what is a beta? While a lot of projects have differing views on what constitutes a beta, our view of a beta is that it is "fully functional" and should be usable, but may have a few small issues. In fact, it doesn't get put up as a beta unless it is "in use" at Mohawk Software.
This web site, for instance, always uses the latest beta of MCache. So, simply by using this site, you are providing useful QA data.
|