Mahlon E. Smith <mahlon@martini.nu> [Fri, 04 Nov 2011 20:34:28 -0700] rev 14
There isn't a fast way to look up ( value exists or null ) for every
piece of data that we're handed from squid -- a full table scan must be
performed for each request, regardless of any indexing in place. With
a decent number of rules, it's much, much slower than I anticipated,
making it fairly pointless to even do parsing in ragel for speed.
Trading some matching features (IPs, for now) for speed, and aiming at
just doing good host/path matching at the moment, using CDB for fast
host keying. Ripped out all the SQLite work, replacing it with a first
round of CDB lookups.
Added a ascii rulefile to cdb converter flag. Churning through the
requests again!
Also, fixed an off-by-one error with line extending.
Mahlon E. Smith <mahlon@laika.com> [Mon, 31 Oct 2011 17:17:07 -0700] rev 13
1st iteration of volta actually doing something. Process the request,
find the best matching rule, and rewrite the request.
Without the DB queries, volta was parsing over 750k requests a second.
Currently, it's down to 129.5 with 1161 rules in place. Yikes. I may
need to re-evaluate some design choices here.
Mahlon E. Smith <mahlon@martini.nu> [Sun, 23 Oct 2011 22:59:59 -0700] rev 12
Clean up redundant parser actions via preprocessor macros, add a
hostname->tld extractor for doing tld "wildcard" queries. Stop tracking
'parser.c' completely.
Mahlon E. Smith <mahlon@martini.nu> [Mon, 17 Oct 2011 09:12:00 -0700] rev 11
Carry the amalgamated sqlite3 around with volta, rather than requiring
it to be installed on the system -- making volta a zero dependency
compile. Add some more Makefile hacks to get things consistently
building across OSX, FreeBSD, and Ubuntu. (There may be more later, but
I'll deal with those then.)
Mahlon E. Smith <mahlon@martini.nu> [Mon, 17 Oct 2011 09:12:00 -0700] rev 10
Get the ragel line parser properly tokenizing the input lines. Add a
"lines per second" timer. General cleanup and memory management.
Mahlon E. Smith <mahlon@martini.nu> [Wed, 28 Sep 2011 09:04:16 -0700] rev 9
Ansi-fy getopt function and variable declarations.
Mahlon E. Smith <mahlon@martini.nu> [Wed, 28 Sep 2011 09:04:16 -0700] rev 8
Add common archive files (LICENCE, README, etc) and a 'release' Makefile
target.