I'm in the future. Like hundreds of years in the future. I've been dead for centuries.
Oh, lovely, you're a cheery one aren't you?

Sunday, March 22


Shorter Nextwave*

* Still not the Warren Ellis comic.  Sorry.  See below for longer Nextwave.

Coming in April: Akane and Mikan (crimson and orange) to replace Aoi and Midori (blue and green).

New hardware:

Xeon 3500 2.66GHz (40% to 80% faster)
12GB of memory (up from 8GB)
1.5TB RAID-5
Adaptec RAID controller with 256MB battery-backed cache
32GB Intel X25-E SSD (25x to 250x as fast as a disk)

New software:

64-bit Linux (we're currently on 32-bit)
Virtualisation of some sort (OpenVZ, Virtuozzo, or Citrix XenServer)

Posted by: Pixy Misa at 12:24 PM | Comments (7) | Add Comment | Trackbacks (Suck)
Post contains 85 words, total size 1 kb.



* Not the Warren Ellis comic.  Sorry.

The current mu.nu / mee.nu server conglomeration consists of Aoi and Midori (blue and green), two Xeon 3220 systems with 8GB of memory and, well, a bunch of disk drives, and Sakura (pink), a Core 2 Duo 6500 system with 8GB of memory and a bunch of disk drives.

When Sakura went wobbly with a sprained disk a couple of weeks ago, I had to move some sites back to Midori, which then also went wobbly, albeit not because it was out of memory or CPU, but because it was out of Apache threads.  That caused me a few sleepless nights until I could get Sakura back in action.

There's plenty of free resources on Aoi, the mee.nu server, because Minx is so memory and CPU-efficient, but I can't easily drop random sites on there because the whole server is configured to run Minx.

That's why I got Sakura in the first place, or one of the reasons, the other being off-site backup in case something horrible happens.

Particularly around election time, I've wished that I could just upgrade the memory in Midori and install OpenVZ; that would solve a lot of problems.  And while I could install OpenVZ, upgrading the memory is not so easy: The motherboard supports a maximum of 8GB, which is kind of what we have already.

So I've been waiting, more-or-less patiently, for Nehalem-based servers to become available.  You see, the current Nehalem processors (Bloomfield and Gainestown) support three memory channels, and at least two DIMMs per channel, which means a single-processor Nehalem system can go to at least 12GB of memory.

And if the motherboard supports registered memory, you can get three DIMMs per channel and 4GB DIMMs, for a total of 36GB.

So at least 12, maybe 24 or even 36.  Any of which is an improvement on 8.

The server version of Nehalem - the Xeon 3500 (single processor) and 5500 (dual processor) ranges - are reportedly due out in exactly a week - March 29.  Intel haven't confirmed this so far as I know, but given that Apple is already shipping them in the new Mac Pro, the launch can't be too far off.

Apart from the improved memory support (up to 4.5x the capacity and 3x the bandwidth) over our current processors, the Nehalem delivers a sizeable performance boost.  On SpecInt a 2.66GHz Nehalem scores 28.6 vs 20.3 for the 2.4GHz 3220, a 40% increase, and on SpecIntRate, the multi-threaded version of the benchmark, it delivers 109 vs 59.2, more than an 80% increase.

The Nehalem supports hyperthreading, just like he good old Pentium 4, only this time it provides a much bigger performance boost.  A single 2.66GHz Nehalem scores about the same in multi-threaded benchmarks as a dual 2.33GHz Xeon of the previous model.  (On multi-threaded floating-point it does even better, about the equivalent of a dual 3GHz previous-model Xeon.  But I'm less interested in floating-point.)

So, that's memory and CPU covered.  What's next?

Well, last November we got an ioDrive in for testing at my day job.  These things are incredible; they deliver 120,000 random IOs per second.  Unfortunately, they're also incredibly expensive; the cheapest card costs $3000.

But SoftLayer now sells Intel's X25-E SSDs.  They're not as fast as an ioDrive, delivering "only" 30,000 read IOPS and 3,000 write IOPS, but that's still 25 to 250 times as fast as the disks we have right now.  We have one in our development server at my day job - I just finished setting it up - and it really seems to work as advertised.

Best part?  Only $50 per month.

So, 2.66GHz Nehalem, 12GB of RAM, 32GB X25-E.  What's next?

Next is RAID.  We're not running RAID at the moment, because when I set up the current servers I simply couldn't afford it - I have to pay for the RAID controller itself, and for twice the number of disks.  For each server.  Instead I have the servers doing a daily rsync to each other - which we'd still need to do, but with RAID we'd only need that for operator or software error, not for simple drive failures.

The good thing there is that SoftLayer's disk pricing is effectively half what it was when I set up the current servers, so I only have to pay for the controller.  So, hardware RAID it is, probably either 1TB RAID-1 or 1.5TB RAID-5.  RAID-5 is no good for databases, but the databases will be on the SSD, so it doesn't matter.

The one big variable is virtualisation.  I'd like to go Virtuozzo, because it's efficient and elegant (it's based on OpenVZ, but has some extra features and a nice control panel), and it integrates cleanly with Plesk.  (And offers substantial discounts on Plesk licenses - about 66%.)

The problem is, a 10-VM Virtuozzo license, the smallest practical size,
costs $100 per month.  Per server.  For that much money I could use Citrix XenServer (which is now free), add 6GB of memory to each server (to make up for Xen's less memory-efficient virtualisation model), and still save enough to pay for the more expensive Plesk license if I wanted it.

So, meh.  We'll see.

There's some other things I'm looking at - hardware firewalls (we sort of have one, but it's just there as a freebie and I don't have access to configure it); hardware load balancers (we use a software load balancer at mee.nu, which works very nicely as long as the server itself doesn't hiccup, but nothing at mu.nu right now); a content delivery network (which I already have, but need to configure); backups to iSCSI or CIFS storage (why don't they offer NFS? sad ).  They all cost money, though, so we'll see.

As to when?  First week of April. smile

Posted by: Pixy Misa at 11:29 AM | No Comments | Add Comment | Trackbacks (Suck)
Post contains 971 words, total size 6 kb.


DIMM, I'm A Registered DIMM

And I dance dance dance, and I dance dance dance...

Okay, what's Pixy going on about now?

This puppy.

No, I'm not planning to buy one.  But in the details, you'll find that it's a single processor Nehalem workstation board, and supports both unbuffered and registered memory.

And what that means is that Akane and Mikan won't be limited to 12GB of memory, but will be able to reach at least 24GB and probably 36GB.

More on that in a moment.

Posted by: Pixy Misa at 10:57 AM | No Comments | Add Comment | Trackbacks (Suck)
Post contains 86 words, total size 1 kb.

Saturday, March 21


Ovbvious URL Is Obvious


Posted by: Pixy Misa at 04:47 PM | No Comments | Add Comment | Trackbacks (Suck)
Post contains 5 words, total size 1 kb.

Friday, March 20


Delicious Meltiness

Both Order of the Stick and Erfworld are busy delivering crowning moments of awesome at the moment.  Unfortunately, that means that the GiantITP server has gone all melty.

Once you do get through, though, you'll find It's worth the wait.

Posted by: Pixy Misa at 06:36 PM | Comments (9) | Add Comment | Trackbacks (Suck)
Post contains 42 words, total size 1 kb.


Half A Yay

Good: Acid Pro 7.0b is out, which fixes the bug I found - it wouldn't let you produce AAC files, even though AAC is officially supported and documented.

Not quite so good: If you double-click on the resulting file to play it in Winamp - and Winamp isn't already running - it will crash.  If Winamp is already running, though, it will play just fine.  Works in iTunes and Quicktime, though, so I can't really blame that on Sony Creative.  I can test it by loading a WAV into iTunes and converting it there, and see how Winamp handles that.

Meh: Still can't output to Real Audio.  Not sure I care; I still have AAC, AC3, MP3, OGG, WMA, WAV and FLAC.

Posted by: Pixy Misa at 06:09 PM | No Comments | Add Comment | Trackbacks (Suck)
Post contains 125 words, total size 1 kb.


History Is Accelerating: Now The First Time Is Farce

Or, This Post No Links

So, our present and bountifully incompetent federal government is bent on censoring this internet thingy, though it appears that they have yet to work out quite what it is.

The ACMA (which apparently stands for "petty-minded bureaucrats") has a list of a thousand-odd sites which are banned in Australia.

This list is secret.

Also, it's just a list.  The sites are banned, and viewing them is illegal, and linking to them incurs an $11,000-a-day fine, but no-one is allowed to know what is on the list, and the banned sites aren't actually blocked in any way.

So when, for example, popular Australian technical forum and news site Whirlpool found itself featuring a comment linking to a banned site, it also found itself facing a huge fine, and understandably removed the comment.

This even though the site in question has not been shown to be in breach of any law or regulation - except, perhaps, for the wonderfully vague clause other material dealing with intense adult themes, something that would be struck down as unconstituionally broad inside of thirty seconds by the US Supreme Court, bless 'em - and that the details of the site were made public by the original complainant, which is also not a breach of any law or regulation.

The secrecy of the list must be maintained, regardless.  And for that reason I can't link to Wikipedia any more either, because the Wikipedia article regarding the ACMA itself contains a link to a banned website.  (And was the subject of a 24-hour revert war as the inevitable result.)

We know some of what is on the list, of course, because after Wikileaks published similar secret censorship lists from other countries (Denmark, Finland, and Thailand, to be precise) Wikileaks was itself banned, and so was linking to the relevant pages on Wikileaks.  So I can't link to them.

Indeed, now we know all of what is on the list, because the list has been leaked to the banned Wikileaks.  Which, as I say, I cannot link to.

It gets better, though.

The leaked list (which, of course, I haven't seen, and won't reproduce, because to do so is to face ten years in jail, never mind the fines) reportedly contains over two thousand banned sites, some of which are reportedly legitimately illegitimate; others including tour operators, religious sites, online gambling sites, and one unfortunate dentist.  None of which, of course, can I link to.

I gets better still.

The Minister for Communication, the estimable Stephen Conroy, claims that the leaking of the list is irresponsible, illegal, and inaccurate - that it is not the real thing at all.

Wikileaks is still banned, of course, and it is still illegal for me to link to or reproduce the not-the-real-list.

So I won't.

I'll just link to the ABC, The Courier-Mail, The Brisbane Times, IT News, news.com.au, The Australian, Computerworld (twice), The Sydney Morning Herald, The Register, Slashdot, Forbes, Wired, ZDnet, Gizmodo, CNetArs Technica, and Google News.

Posted by: Pixy Misa at 12:10 AM | Comments (7) | Add Comment | Trackbacks (Suck)
Post contains 512 words, total size 7 kb.

Tuesday, March 17


Truth Or Consequences

Two-valued (Boolean) logic is easy.  We recognise the basics of it from our everyday lives, and even if we can't immediately grasp some complex logical expression, we can work up to it from basic principles.

But when you start introducing more values, things get weird.

Take the simple if - then - else statement:
if a=b then:
  print "A = B".
  print "A <> B".
With two-valued logic, it couldn't be simpler.  If the expression is true, then you do the first bit, else you do the second bit.  But introduce null values, and hence logical nulls as a result of logical comparisons, and it starts to go pear-shaped.  If A is 1 and B is null, we find that this:
if a=b then:
  print "A = B".
  print "A <> B".
Prints A <> B, which is true from a two-valued perspective.  But this:
if a<>b then:
  print "A <> B".
  print "A = B".
Prints A = B, which is not true from a two-valued perspective.  What's going on?

What's going on is that the answer to the question, does A equal B, is neither true nor false.  It's null.  And so is the answer to the question, does A not equal B.  Since the then clause is taken if the if is true, either way, we take the else clause instead.

The problem is that if - then - else is implicitly two-valued.  What we need is a three-valued branch:
if A = B then:
  print "A = B".
  print "A <> B".
  print "You have a null value somewhere".
Yes, an if - then - else - otherwise structure will make any moderately experienced programmer choke on his cornflakes, but it's the logical consequence of the database null.

Well, that's ternary logic dealt with.  But what about yesterday's topic, quaternary logic?  Now we have four states: true, false, any, and none.  How should our if - then - else behave now?

Well, we can clarify that by looking at yet another variation on the names for the quaternary values: true, false, both and neither.  So the clear way to handle neither is not to take either of the branches - neither then nor else.

And the way to handle both is, well, to take both.

I can hear the anguished screams from here.

Posted by: Pixy Misa at 07:35 PM | Comments (8) | Add Comment | Trackbacks (Suck)
Post contains 391 words, total size 3 kb.

Monday, March 16


Small Wonder

Programmers have a lot of trouble with the concept of null, as found in relational databases.

There's a good reason for that. In regular boolean logic, there are 16 binary operators - the usual suspects like AND, OR, XOR, and implication and its converse; their negations; and the six degenerate forms that aren't truly binary at all - P, Q, their negations, and T and F (tautology and contradiction).


There are 256 ternary boolean operators, as any hardcore Amiga programmer would know. (The Amiga's blitter allowed you to process three image sources into a destination, and you could program it to perform any one of the 256 possible operators.)

If you throw in null, so that you have three-valued, or ternary, logic, you now have 19,683 binary operators. (That is, binary ternary operators.  And 7,625,597,484,987 ternary ternary operators, which is why no-one made a three-valued Amiga.)

In 1990, Codd suggested that four-valued rather than three-valued logic was better for the relational model, dividing the concept of null into Missing but Applicable (A-values) and Missing but Inapplicable (I-values). I call them don't know and don't care, or none and any. (Because if you don't know and it matters, no value will give you the right answer, while if you don't care, any value will do.)

This does give you a more precise way of handling missing data. It also gives you 4,294,967,296 binary operators. That's probably why it hasn't really caught on yet.

Posted by: Pixy Misa at 12:30 AM | Comments (3) | Add Comment | Trackbacks (Suck)
Post contains 245 words, total size 2 kb.

Sunday, March 15


Oh. Is That It?

So that's how R-Trees work.

Sure, it's useful, and generalises well, but they're just trees.

Posted by: Pixy Misa at 02:19 AM | No Comments | Add Comment | Trackbacks (Suck)
Post contains 19 words, total size 1 kb.

<< Page 2 of 3 >>
88kb generated in CPU 0.074, elapsed 1.1182 seconds.
55 queries taking 1.0744 seconds, 392 records returned.
Powered by Minx 1.1.6c-pink.
Using http / http://ai.mee.nu / 390