Friday Feb 27, 2009

The Sun Compute Cluster currently uses SLES10 as the OS of choice for the compute nodes. Working on the software stack for the solution, I'm currently looking for more information on tuning the performance of SLES10. Of course the first step is to turn off the unnecessary services that a typical compute node will not require. I took a look at a freshly installed server with the default installation settings and found these services that are running which I think can be safely turned off:

SuSEfirewall2_setup
SuSEfirewall2_init
auditd
alsasound
cups
cron
cupsrenice
smbfs
suseRegister
powersaved
xdm
postfix
fbset
novell-zdm
boot.apparmor

I would also change the default runlevel to 3 to prevent starting up of X. If anyone has other suggestions or tuning guide, please do let me know!

Thursday Feb 19, 2009

Rocks is a great HPC management software that allow very quick and easy deployment of HPC clusters. If using the default configuration and software packages that comes with Rocks, a typical average size cluster can be ready in no more than a few day. Besides doing bare metal provisioning of OS, additional software packaged as Rocks rolls can be added to the base Rocks distribution. Once these rolls are installed, provisioning a compute node will also automatically deploy and configure the service.

Rocks uses a their own way of assign hostnames. The suggested order of provisioning compute nodes is to start from first rack, from top server to bottom server. The default hostname are in the form of "compute-x-y", where x is the rack number and y is the position of the node in the rack. For example, the top most node in the first rack will be compute-0-0, the second node compute-0-1 and so on. The nodes in the next rack will then be compute-1-0, compute-1-1...

Although this works well for most, but definitely not for all. There are several ways to change the hostnames depending on how customized you want it to be. If you want to keep the numbering scheme but just want to change the prefix (e.g. to mynode-0-0), what you can do is to add a new appliance.

$ rocks add appliance mynode membership="My Compute Node" node=compute

What the command does is to add a new appliance using the same compute configuration. Then when provisioning new nodes, in the insert-ethers main menu, select "My Compute Node" appliance. When the new node is provisioned, it will be assigned hostname like mynode-x-y.

If you want to even go to the extend of changing the hostname numbering, what you can do is to fix the hostname and IP address in the Rocks database.

$ rocks add host n00 membership=compute rack=1 rank=1
$ rocks add host n01 membership=compute rack=1 rank=2
...
$ rocks add host n08 membership=compute rack=1 rank=8

In addition, if you want to assign the IP addresses manually:

$ rocks add host interface n00 iface=eth0 ip=10.100.1.8 mac=00:11:22:33:44:55:GG subnet=private name=n00
$ rocks add host interface n01 iface=eth0 ip=10.100.1.9 mac=00:11:22:33:44:55:FF subnet=private name=n01
...

Or if you want to configure a 2nd interface (e.g. ib0), you can add a new network and configure the interface in the Rocks database.

$ rocks set network IB subnet=10.200.0.0 netmask=255.255.0.0
$ rocks add host interface n00 iface=ib0 ip=10.200.1.8 mac=00:11:22:33:44:55:AA subnet=IB name=n00-ib
$ rocks add host interface n01 iface=ib0 ip=10.200.1.8 mac=00:11:22:33:44:55:BB subnet=IB name=n01-ib
...

After the changes are made, make sure to sync the configurations.

$ rocks sync config
$ make -C /var/411 #use "make -C /var/411 force" if necessary, but it's slower
$ insert-ethers --update

Friday Feb 06, 2009

Since I started by education in IT and programming, I've always been very interested in developing games (who isn't?). One of my projects in my tertiary school, I worked on a multiplayer boardgame project using DirectX. That was like 10 years ago and how technology has changed...

I'm now going to start a pet project in virtual world. I think that my experience in HPC is very relevant in gaming and virtual world, as today it's all about pushing the technology and high system performance. So how do you scale a multiplayer virtual gaming world? This article has some interesting points:

* Latency is the enemy of fun—and therefore the enemy of online games and virtual worlds.
* Using multiple servers is a basic mechanism for scaling the server component of a game to the levels that are being seen in the online world today.
* Having multiple servers means that part of building the game is deciding how to partition the load over these servers. The first technique is to exploit the geography of the game or world. The second technique is known as sharding.
* While shards allow scale, they do so at the price of player interaction.

That is why, as Jim Waldo from SunLabs said, they started Project Darkstar. The Darkstar game server is designed to allow horizontal scaling without having to do sharding. Another project from SunLabs is Project Wonderland, a virtual world engine that is based on Darkstar.

This is my first blog entry in this area. I hope to write more as I learn, so do stay tune!

Tuesday Feb 03, 2009

There is a good introductory article on pNFS for those who are interested:

http://queue.acm.org/detail.cfm?id=1317402