Given such differences in the top level applications, there's certainly plenty of room for differences to get introduced there. But for the sake of argument, assuming your "gut feel" is right and there's something more systemically slower about the system, a few things that I'd also consider might be:
- Has the 512 been up longer, and had more time to get more of its working set into memory/cache than the 768? It wouldn't be that unusual for a cold system to underperform a warm one. Do they perform more similarly immediately after a reboot? Or conversely, do they approach parity over time.
- Any difference in filesystem types or kernel's? There have been various changes to how syncs are handled by filesystems/kernels over time that can affect certain operations, especially database related. A lot has been ext4-specific, but there's some generic stuff too at various points in the 2.6.3x series. I'd suggest testing with Linode 2.6.18 stable, but I don't think that works with 10.04, but at the least you might try to ensure the two systems are using the same kernel and thus subject to the same internals.
- Any difference in filesystem journaling modes (e.g., ordered/writeback, with/without barriers) parameters or the kernel I/O scheduler (e.g., cfq, deadline, etc...). I can't keep track of which distribution is using which of the various settings by default, but at the least you could ensure the two systems are using the same ones when doing an A/B comparison.
- It's possible one host just has busier neighbors, and any disk I/O is just going to be more expensive on that box. Can you detect any differences in average I/O wait percentage between the two? Something like munin might help identify that, or even just leaving top running and manually watching during some heavier use periods. I suppose CPU could be in contention too with busier neighbors but in my experience that's so rarely an issue on Linodes (whereas I/O capacity is much more often a bottleneck)
-- David