Under the grid: Calling cards

Welcome to the eighth installment of "Under The Grid", an irregular look at the mechanics underneath Second Life. Last time we looked at Mono. This time, we're taking a quick look at part of the presence system, specifically: Calling cards.

You see, calling cards are a part of the system few people give much thought to, but can really represent a severe drain on your in-world performance.

You can obtain calling cards in one of two ways. Either someone gives you one, or there is an automatic exchange of cards when someone sends you a friend invitation, and you accept.

Calling cards can be copied, put in assorted folders, and those folders used for ad-hoc group IMs. Unlike other objects, they can't be transferred to other people or put in the inventory of an object.

The problem with calling cards is that they have two states: Online and offline — and that this state is stored with the card in the viewer's copy of it in your inventory.

As people log into and out of Second Life, the presence system automatically sends out notifications to people who are their friends, and to people who have their calling card. That's where we run into problems.

You see, every time one of the people whose calling card you have logs in or out, the system sends you a notification. It may not be a popup (they might not be a friend, or you might have those notifications suppressed) but there's still extra work going on.

The viewer has to then search through every item in your inventory, and check to see if it is (a) a calling card, and (b) if it is the calling card of the person that it has received a login/logout notification for. If it is, it updates the status of that card. You might have more than one card for a given person, and they could be in pretty much any of your inventory folders, so a complete search is needed.

The larger your inventory is, the more work each update takes. The more calling cards you have, the more updates you get.

Ever have those situations where your viewer seems to freeze for half a second? A second? Possibly several seconds? And they happen just here and there? That's probably your viewer grubbing its way through your overly large inventory trying to update your calling cards.

There are certainly ways that this could be improved, but right now calling cards represent an invisible drain on your viewer resources, and one that you should be aware of.

Recommended