Blogs

First "alpha" release of Apache Traffic Server

We've finally produced our first "alpha" release of Apache Traffic Server. It can be fetched from your local Apache Download Mirror. This first version, v2.0.0-alpha, should be reasonably stable as it does not contain a ton of improvements over the old Yahoo code. The 2.0.0 releases also only supports Linux, but a number of 32-bit and 64-bit distros have been tested.

We're hoping to get some testing done on this release in the next week or two, so we can make the "final" 2.0.0 release. After that, the plan is to aggressively start making "developer" releases of trunk, which has some impressive improvements (like, up to 2x the performance in some cases). Apache Traffic Server is adopting the same versioning scheme as Apache HTTPD, so, v2.0.x is a "stable" release, while v2.1.x is a developer release. This implies, of course, that the next stable release will be v2.2.0, and we're hoping to get that out the door sometime this summer!

People interested in Apache Traffic Server are highly encouraged to join our mailing lists (see the incubator page), or come join us on #traffic-server on freenode.net.

Hacking: 

Synergy is dead? Long live Synergy+!

I used to use Synergy on my Linux desktop and Mac laptop, to allow me to share the same keyboard and mouse between the two. After upgrading to a 64-bit Linux distro (FC12 btw), Synergy would no longer compile. Instead of trying to fix this, I went searching, and found Synergy+ instead. It works great on my boxes, and is even backwards compatible with Synergy. But best of all, it's actively maintained and supported, give it a try.

Now that I found it, I realized that it's even available in the Fedora Core distribution (yum install synergy-plus)

Hacking: 

Traffic Server performance

I just got a new shiny desktop at home, a Quad Core i7 920, running 64-bit Linux 2.6.32 (stock Fedora Core 12). Nothing fancy, it's a $250 CPU, but I did some artificial tests of Traffic Server on it just to see where we are on a modern machine and kernel. The tests are done between two Linux boxes, both on GigE network, and with two Linksys switches in between the two boxes. So, this is definitely not a production quality network in any way. I ran with keep-alive enabled, doing 100 requests per connection, each request fetches a 500 byte body out of cache (i.e. 100% cache hit ratio). I know, this is a completely unrealistic test, but it is still interesting to see what we can do. Here's the best run out of three:

2270442 fetches on 23464 conns, 2000 max parallell, 1.13522e+09 bytes in 30 seconds
500 mean bytes/fetch
75681.40 fetches/sec, 3.78406e+07 bytes/sec
msecs/connect: 0.3878585 mean, 11.1295 max, 0.089 min
msecs/first-response: 16.3695 mean, 459.379 max, 0.1295 min

So, over 75,000 requests per second, at 16ms latency, and I think some of that latency can be attributed to the two switches (wish I had a better setup). An interesting side note, the Traffic Server process can actually use about 470% CPU on this Quad Core box, so an extra 70% of a CPU is "gained" here from Hyper Threading. How does this compare to my old desktop? Well, the old system was a Core2, and in the same test, it was able to pull off around 35k QPS.

Anyways, these results aren't too shabby, and we've just started!

Caveat: This is using the "trunk" version of Traffic Server, the first release that is soon coming out won't be quite this fast.

Update: I updated the numbers with the results after forcing my CPU to run at highest CPU frequency at all time. No overclocking though, this is a standard i7 920 setup.

 

Hacking: 

Modifying a Linux software RAID mirror

While upgrading my desktop to Fedora Core 12, I also decided to modify a software RAID mirror that I had on the old system. In particular, I wanted to do two things, without losing data:

  1. Change the partition layout, the old disks had partitions for OS and swap allocated to them, which I no longer needed. I know, LVM would have been nice here, but alas, I wasn't using it on this older box.
  2. I also wanted to upgrade to EXT4, and I've heard that upgrade process can potentially corrupt the entire disk (ask Bryan Call if you don't believe me).

So, since I'm using mirroring, I figure the "right" approach would be to just break the mirror, and do a migration safely that way. And of course, that does work, and there's plenty of information in the man-pages how to do this, but I figure I'll write down the steps I took so I can remember it myself (and maybe someone else finds it useful too).

The first step is to break the mirror, in my case, the RAID mirror is /dev/md2 using /dev/sdb and /dev/sdd, and then mount the broken mirror half on the file system:

# mdadm --manage /dev/md2 --fail /dev/sdb1
# mdadm --manage /dev/md2 --remove /dev/sdb1
# mkdir /mnt/old-data
# mount /dev/sdb1 /mnt/old-data

We now have a complete "copy" of the mirrored data, make sure /mnt/old-data (or whatever you named it) looks good. The next step is to get rid of the old RAID device, and create a new one. In my case, I need to run fdisk as well, to change the partition layout, but I'm not going into details here exactly what I did, since it's very specific to my setup.

# mdadm --stop /dev/md2
# fdisk /dev/sdd
# mdadm --create /dev/md0 --level 1 --raid-devices=2 missing /dev/sdd1

Finally, we can now create the new filesystem, and migrate the old data over to it:

# mke2fs -t ext4 -j /dev/md0
# mkdir /mnt/new-data
# mount /dev/md0 /mnt/new-data
# rsync -av /mnt/old-data/ /mnt/new-data

The final step is to add back the "old-data" partition into the new mirror, but before doing so, make sure the "new-data" looks alright.

# umount /mnt/old-data
# fdisk /dev/sdb
# mdadm --add /dev/md0 /dev/sdb1

 

That's it! Easy, and very little risk for lost data or corruptions.

Hacking: 

Fedora Core 12 with nVidia drivers

I fried my old CPU while benchmarking Traffic Server (yeah, it's that fast ...), so I spent most of the day replacing the mother board / CPU. I figured I'd take the opportunity to ugprade to Fedora Core 12 as well. This mostly worked well, with one exception: FC12 now comes with the OpenSource nvidia drivers, and they are slow. Unfortunately, these drivers also conflicts with the nVidia closed source drivers (which I install from source), causing the installation to fail. But, with a few changes in my system configs, I worked around it.

First, change /etc/grub.conf and edit the "kernel" line, to include something like

rdblacklist=nouveau

Secondly, edit /etc/modprobe.d/blacklist.conf and add a line

blacklist nouveau

I'm not sure why both are necessary, maybe I did something wrong and you only need one or the other. Let me know if that is the case, I'm happy with what I got, and not wasting any more time on it.

Hacking: 

Fedora Core 12 and focus follow mouse

For some unknown reasons (I'm guessing someone trying to be overzealous about what the Fedora users should do), FC12 no longer includes the control panel to modify the "Window" behavior. This includes the must-have feature of "Select windows when the mouse moves over them". But wait, no need to switch to Ubuntu quite yet, there's a simple fix to restore this control panel:

$ sudo yum install control-center-extra

 

Hacking: 

Spamassassin and 2010

This morning, I noticed emails where going into the spam folder, for no good reason. It seems this rule triggers, from 72_active.cf:

header   FH_DATE_PAST_20XX    Date =~ /20[1-9][0-9]/ [if-unset: 2006]

Unless I complete missunderstand this, this means 2010 is considered a too futuristic date. Clearly not good. For now, I simply disabled this rule, by adding this to my local.cf file:

score FH_DATE_PAST_20XX 0

I probably should fix the regex above, but I have no idea what weight that should have now, so I figure it's better to just turn this rule off entirely.

Traffic Server week 1

Traffic Server has been out for a full week now. And it's been great, the interest is huge (almost overwhelming), and surprsingly, lots of people want to participate and contribute. So far, we've already achieved:

  • 64-bit port on Linux!
  • Port to Solaris (and OpenSolaris I believe)
  • Port to Ubuntu (it required a lot of changes due to glibc changes)
  • MacOSX port is partially done.

Not bad for week. If you are interested, check out our Wiki: http://cwiki.apache.org/confluence/display/TS/Traffic+Server.

Hacking: 

TS in the media

Pages

Subscribe to RSS - blogs