<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"
>

<channel>
	<title>xyzzy xyzzy... &#187; opensim</title>
	<atom:link href="http://xyzzyxyzzy.net/tag/opensim/feed/" rel="self" type="application/rss+xml" />
	<link>http://xyzzyxyzzy.net</link>
	<description>...you are in a grid of twisty, little links, all alike. there's a teleport gate here.</description>
	<lastBuildDate>Mon, 22 Jun 2009 08:54:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>21</title>
		<link>http://xyzzyxyzzy.net/2009/06/19/21/</link>
		<comments>http://xyzzyxyzzy.net/2009/06/19/21/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 18:33:18 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[stress test]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=334</guid>
		<description><![CDATA[after our intoxicating stress test ten days ago we repeated the stress test today with a group of volunteers &#8212; thus, real SL clients instead of bots.

the result: 21.  

somewhere around the 21 avatar mark we are got stuck and the (single) region standalone system started becoming very laggy: avatars could not move anymore [...]]]></description>
			<content:encoded><![CDATA[<p>after our <a href="/2009/06/09/81/">intoxicating stress test ten days ago</a> we repeated the stress test today with a group of volunteers &#8212; thus, real SL clients instead of bots.</p>

<p>the result: <strong>21</strong>. <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>

<p>somewhere around the 21 avatar mark we are got stuck and the (single) region standalone system started becoming <em>very</em> laggy: avatars could not move anymore (or erratically at best), chat got relayed occasionally. interestingly enough we still saw new users logging in. looking at OpenSim&#8217;s log we saw that OpenSim was busy processing new user requests &#8212; a lot of new user requests.</p>

<p>so, the current hypothesis is that new users clog the out-pipe with large amount of texture requests, causing the existing users to starve and the system becoming unresponsive.</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/06/19/21/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<georss:point featurename="[47.131074826701266, 8.747992515563965]">47.131074826701266 8.747992515563965</georss:point>
	</item>
		<item>
		<title>avatar machine</title>
		<link>http://xyzzyxyzzy.net/2009/06/18/avatar-machine/</link>
		<comments>http://xyzzyxyzzy.net/2009/06/18/avatar-machine/#comments</comments>
		<pubDate>Thu, 18 Jun 2009 16:31:11 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[appearance]]></category>
		<category><![CDATA[avatar]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[quick-hack]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=326</guid>
		<description><![CDATA[for stress testing i needed to create 100 avatar accounts quickly. instead of going via opensim&#8217;s console i started ipython and entered the following python script:


import xmlrpclib
os = xmlrpclib.Server('http://127.0.0.1:9000/')
for i in range(100):
    os.admin_create_user(dict(password = 'SECRET', 
                 [...]]]></description>
			<content:encoded><![CDATA[<p>for stress testing i needed to create 100 avatar accounts quickly. instead of going via opensim&#8217;s console i started <a href="http://ipython.scipy.org/moin/">ipython</a> and entered the following python script:</p>

<pre><code><pre class="brush: python;">
import xmlrpclib
os = xmlrpclib.Server('http://127.0.0.1:9000/')
for i in range(100):
    os.admin_create_user(dict(password = 'SECRET', 
                              user_firstname = 'Bot%d' % i,
                              user_lastname = 'Dude', 
                              user_password = 'b0tb0tb0t', 
                              start_region_x = 1000, 
                              start_region_y = 1000, 
                              model = 'Bot Dude')) 
</pre>
</code></pre>

<p>a couple of minutes later i had successfully created 100 avatar
accounts, &#8221;Bot0 Dude&#8221; to &#8221;Bot99&#8242;, all wearing the same outfit as
&#8221;Bot Dude&#8221;, an avatar i had prepared earlier.</p>

<p>voila! avatar machine <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/06/18/avatar-machine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
		<item>
		<title>81</title>
		<link>http://xyzzyxyzzy.net/2009/06/09/81/</link>
		<comments>http://xyzzyxyzzy.net/2009/06/09/81/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 20:38:37 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[bots]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=318</guid>
		<description><![CDATA[it was a dark and stormy night. lightning was ripping the heavens
apart, thunder was rolling through the valley. no living soul dared
venture outside&#8230;1

&#8230;and i wasn&#8217;t. i sat in front of my screen, mesmerized by the
numbers coming up: 20&#8230;27&#8230;34&#8230;38&#8230;40&#8230;43&#8230;48&#8230;52&#8230; eventually
peaking at 81! we were stress testing our opensim server and our
in-world build. the numbers represented rather [...]]]></description>
			<content:encoded><![CDATA[<p>it was a dark and stormy night. lightning was ripping the heavens
apart, thunder was rolling through the valley. no living soul dared
venture outside&#8230;<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup></p>

<p>&#8230;and i wasn&#8217;t. i sat in front of my screen, mesmerized by the
numbers coming up: 20&#8230;27&#8230;34&#8230;38&#8230;40&#8230;43&#8230;48&#8230;52&#8230; eventually
peaking at <strong>81!</strong> we were stress testing our opensim server and our
in-world build. the numbers represented rather brutal bots, that, as
soon as they were in-world started running around, chatting with one
another and grabbing all the textures they could find &#8212; we&#8217;d
lovingly nicknamed them &#8220;hooligan bots&#8221; as they&#8217;d successfully managed
to demolish a number of our opensim test instances and reduced them to
nothing more than a pile of broken bits and bytes.</p>

<p>after fixing another memory gobbling piece of code and some tetchy ODE
physics engine part, we&#8217;d gone past the 20 mark that had meant the end
of our opensim instance in the past couple of trials and the numbers
kept on climbing. during the test we had to create more and more test
accounts to be able to keep sending in the bots. the system behaved
extraordinarily stable: not only were we able to keep moving around
and not only did opensim keep chugging along but also our scripts
(themselves not exactly shy when it comes to CPU cycles and memory)
did!</p>

<p>our test system, a 4 core intel system, running in 32-bit <a href="http://en.wikipedia.org/wiki/Physical_Address_Extension">PAE
mode</a> with
about 8GB of memory, coped rather well on the memory front: with about
5 regions (script heavy) we clocked at about 1.3 &#8212; 1.5 GB memory
usage &#8212; CPU load, however, was a different story: that went up like
crazy: up to 390% CPU utilization, load level of about 9&#8211;10. still,
the only effect was that things became a bit sluggish.<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup></p>

<p>note, this was a one off! a pleasant and encouraging one off but
nevertheless so far just a one off. we need to carry out further
testing to corroborate this.</p>

<p>still, 81 avatars in one region!</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>always wanted to start a blog like that. and there <em>was</em> a
severe thunderstorm going on in our valley while we were doing the
test <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> &#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>to be honest, at one point during the test, the lights did dim
quite a bit in my office&#8230;but with the test server being located in
chicago and my home office being in switzerland, i don&#8217;t think it was
due to our opensim server but rather due the thunderstorm that was
raging outside.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/06/09/81/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<georss:point featurename="[47.131074826701266, 8.747992515563965]">47.131074826701266 8.747992515563965</georss:point>
	</item>
		<item>
		<title>OpenSim: sending inventory client side&#8230;and have the avatar take notice!</title>
		<link>http://xyzzyxyzzy.net/2009/06/04/opensim-sending-inventory-client-side/</link>
		<comments>http://xyzzyxyzzy.net/2009/06/04/opensim-sending-inventory-client-side/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 07:54:19 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[inventory]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[SL client]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=295</guid>
		<description><![CDATA[recently i was in need of being able to send inventory items (well, a whole folder full of stuff) to the inventory of a logged-in avatar.

just copying the the inventory items to the avatar inventory (for example, using Scene.GiveInventoryItem() or Scene.GiveInventoryFolder()) will not cause your avatar to notice that there is additional junk in her [...]]]></description>
			<content:encoded><![CDATA[<p>recently i was in need of being able to send inventory items (well, a whole folder full of stuff) to the inventory of a logged-in avatar.</p>

<p>just copying the the inventory items to the avatar inventory (for example, using <code>Scene.GiveInventoryItem()</code> or <code>Scene.GiveInventoryFolder()</code>) will not cause your avatar to notice that there is additional junk in her inventory all of a sudden &#8212; once the avatar is logged out and logs in again, she will find the stuff in her inventory. kicking the avatar out every time you want to send some inventory her way is a tad bad on the user experience side<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>. clearly not something we want to do.</p>

<p>after trying a 101 ways of sending inventory to the avatar and none of them catching, i finally remembered that avatars can give inventory to one another, even whole folders!<sup id="fnref:3"><a href="#fn:3" rel="footnote">2</a></sup> taking my favorite tool to the OpenSim source tree<sup id="fnref:4"><a href="#fn:4" rel="footnote">3</a></sup> i found code in the <code>InventoryTransferModule</code> that seemed to take care of this process. the first attempt of just sending a <code>GridInstantMessage</code> via the usual means was not producing the right result: the avatar would get the pop-up that a folder was being given to her and would she like to keep it? looked good but checking the inventory revealed it to be a big blue lie.</p>

<p>here&#8217;s what i finally figured out. you need:</p>

<ul>
<li>a <code>ScenePresence</code> object representing the avatar</li>
<li>the <code>UUID</code> of the sending &#8220;avatar&#8221;</li>
<li>the name of the sending &#8220;avatar&#8221;</li>
<li>the <code>InventoryNodeBase</code> object (actually you would pass in a subclass such as <code>InventoryItemBase</code> or <code>InventoryFolderBase</code> or similar)</li>
</ul>

<p>here&#8217;s the &#8220;pseudo-code&#8221;:</p>

<pre><code><pre class="brush: c-sharp;">
// pseudo code: send inventory content to a logged in avatar's
// inventory 
//
// avatar: ScenePresence object
// src: struct containing &amp;quot;UUID&amp;quot; and &amp;quot;Name&amp;quot; of the source &amp;quot;avatar&amp;quot;

// get the CachedUserInfo object for the target avatar
CachedUserInfo cuiAvatar = 
    m_commsManager.UserProfileCacheService.GetUserDetails(avatar,UUID);
if (!cuiAvatar.HasReceivedInventory) cuiAvatar.FetchInventory();

// target folder is the Clothing folder (type 5)
InventoryFolderImpl dstFolder = cuiAvatar.FindFolderForType(5);

// copy source folder from src avatar to dstFolder
copyFolder = scene.GiveInventoryFolder(avatar.UUID, src.UUID, 
                                       dstFolder.ID);

// content is in the target folder, ping target avatar and let her
// know about it: we do this through a GridInstantMessage

// GridInstantMessage: prepare bucket byte array first byte is asset
// type, remaining bytes are the UUID of the InventoryItem
byte[] idBytes = item.ID.GetBytes();
byte[] bucket = new byte[1 + idBytes.Length];

if (item is InventoryFolderBase)
    bucket[0] = (byte)AssetType.Folder;
else if (item is InventoryItemBase)
    bucket[0] = (byte)(item as e).AssetType;

Array.Copy(idBytes, 0, bucket, 1, idBytes.Length);

GridInstantMessage im = 
    new GridInstantMessage(scene, src.UUID, src.Name, avatar.UUID,  
                           (byte)InstantMessageDialog.InventoryOffered,
                           false, item.Name, item.ID,
                           Vector3.Zero, bucket);

// send bulk update inventory message and GridInstantMessage
avatar.ControllingClient.SendBulkUpdateInventory(item);
avatar.ControllingClient.SendInstantMessage(im);
</pre>
</code></pre>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>though, i was reminded of windows&#8217;s tendency of asking you to reboot ever time you installed some piece of software&#8230;<sup id="fnref:2"><a href="#fn:2" rel="footnote">4</a></sup>&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:3">
<p>yes, i&#8217;m a bit dense sometimes&#8230;or&#8230;too focused! <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> &#160;<a href="#fnref:3" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:4">
<p>no, not <em>that</em> one. <em>emacs&#8217;s</em> <code>M-x grep-find</code>!&#160;<a href="#fnref:4" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>on second thoughts, that just proves the earlier point about this not being very user friendly&#8230;&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/06/04/opensim-sending-inventory-client-side/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.131074826701266, 8.747992515563965]">47.131074826701266 8.747992515563965</georss:point>
	</item>
		<item>
		<title>using the regioninfo REST call</title>
		<link>http://xyzzyxyzzy.net/2009/05/11/using-the-regioninfo-rest-call/</link>
		<comments>http://xyzzyxyzzy.net/2009/05/11/using-the-regioninfo-rest-call/#comments</comments>
		<pubDate>Mon, 11 May 2009 09:08:38 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[regioninfo]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=287</guid>
		<description><![CDATA[a couple of weeks ago i added the regioninfo REST call to OpenSim. here is a little python script that shows you how to use it:


#!/usr/bin/python
# -*- encoding: utf-8 -*-

import sys
import urllib2
import xml.etree.ElementTree as ET

def RegionInfo(url):
    if not url.endswith('/'):
        url = '%s/' % url
  [...]]]></description>
			<content:encoded><![CDATA[<p>a couple of weeks ago i added the <code>regioninfo</code> REST call to OpenSim. here is a little python script that shows you how to use it:</p>

<pre><code><pre class="brush: python;">
#!/usr/bin/python
# -*- encoding: utf-8 -*-

import sys
import urllib2
import xml.etree.ElementTree as ET

def RegionInfo(url):
    if not url.endswith('/'):
        url = '%s/' % url
    regionInfoUri = '%sadmin/regioninfo/' % url
    print '== OpenSim server %s ==' % url

    riXml = ET.parse(urllib2.urlopen(regionInfoUri)).getroot()
    print 'regions (curr): %d' % int(riXml.attrib['number'])
    print 'regions (max):  %d' % int(riXml.attrib['max'])

    totalAvatars = 0
    totalObjects = 0

    for region in riXml:
        print '- region %-20s: avatars: %d' % (region.attrib['name'], int(region.attrib['avatars']))
        print '         %-20s  objects: %d' % (' ', int(region.attrib['objects']))

        totalAvatars += int(region.attrib['avatars'])
        totalObjects += int(region.attrib['objects'])

    print 'total avatars: %d' % totalAvatars
    print 'total objects: %d\n' % totalObjects


if __name__ == '__main__':
    for opensim in sys.argv[1:]:
        RegionInfo(opensim)
</pre>
</code></pre>

<p>invoke it like this:</p>

<pre><code>% osinfo http://opensim.zurich.ibm.com:9000
</code></pre>

<p>and you will get output similar to this:</p>

<pre><code>== OpenSim server http://opensim.zurich.ibm.com:9000/ ==
regions (curr): 6
regions (max):  10
- region ST3D theatre        : avatars: 0
                               objects: 494
- region ST3D collaboration  : avatars: 0
                               objects: 283
- region ST3D boardroom      : avatars: 0
                               objects: 243
- region Zurich ISL          : avatars: 0
                               objects: 0
- region IBM ACVWS 2009      : avatars: 0
                               objects: 283
- region Sametime 3D         : avatars: 0
                               objects: 16
total avatars: 0
total objects: 1319
</code></pre>

<p>quite useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/05/11/using-the-regioninfo-rest-call/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
		<item>
		<title>i hear voices&#8230;or: why we dropped AsteriskVoice from OpenSim</title>
		<link>http://xyzzyxyzzy.net/2009/04/22/i-hear-voicesor-why-we-dropped-asteriskvoice-from-opensim/</link>
		<comments>http://xyzzyxyzzy.net/2009/04/22/i-hear-voicesor-why-we-dropped-asteriskvoice-from-opensim/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 09:02:20 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[voice]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=276</guid>
		<description><![CDATA[followers of the riveting1 opensim-dev mailing list will have
noticed that i &#8220;culled&#8221; AsteriskVoiceModule and SIPVoiceModule
yesterday. the reason is quite simple: with the recent addition of the
FreeSwitchVoiceModule we now have a voice module
that works! and works without having to replace the SLVoice
client that is part of the standard SecondLife® clients2

AsteriskVoiceModule which ansgar schmidt and i started [...]]]></description>
			<content:encoded><![CDATA[<p>followers of the riveting<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> <a href="https://lists.berlios.de/mailman/listinfo/opensim-dev">opensim-dev mailing list</a> will have
noticed that i &#8220;culled&#8221; <code>AsteriskVoiceModule</code> and <code>SIPVoiceModule</code>
yesterday. the reason is quite simple: with the recent addition of the
<a href="http://opensimulator.org/wiki/Freeswitch_Module"><code>FreeSwitchVoiceModule</code></a> we now have a voice module
that <strong>works!</strong> and works without having to replace the <code>SLVoice</code>
client that is part of the standard SecondLife® clients<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup></p>

<p><code>AsteriskVoiceModule</code> which <a href="http://xyzzyxyzzy.net/2008/04/18/opensim-voice-support-the-goal-is-in-sight/">ansgar schmidt and i started last
year</a> &#8212; and which, together with work that alan
webb and i did for the soon-to-be-released <code>VivoxVoiceModule</code>,
provided the basis for the excellent work <a href="http://robsmart.co.uk/">rob smart</a> did for
<code>FreeSwitchVoiceModule</code> &#8212; never really led to a complete voice
solution as it required replacing <code>SLVoice</code> on the client side. rob
figured out that <a href="http://wiki.freeswitch.org/"><code>FreeSwitch</code></a> supported the same voice
codecs that <code>SLVoice</code> was using and started experimenting. though
<code>FreeSwitchVoiceModule</code> doesn&#8217;t (yet?) do spatial voice nor speaker
indication it already works together quite nicely with <code>SLVoice</code>, so
we decided to drop <code>AsteriskVoice</code> (and its little brother <code>SIPVoice</code>) from the opensim tree.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>only half joking here. opensim is one of the most exciting
  projects i&#8217;ve ever encountered: the rate of change, the rate of
  change towards progress, is sometimes a quite breathtaking.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>&#8230;and recent hippo clients (release 0.5.1 and later) as well.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/04/22/i-hear-voicesor-why-we-dropped-asteriskvoice-from-opensim/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
		<item>
		<title>threading opensim through mono needles</title>
		<link>http://xyzzyxyzzy.net/2009/04/22/threading-opensim-through-mono-needles/</link>
		<comments>http://xyzzyxyzzy.net/2009/04/22/threading-opensim-through-mono-needles/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 08:07:04 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[sametime3d]]></category>
		<category><![CDATA[threading]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=274</guid>
		<description><![CDATA[our Sametime3D test server is running a number of regions, some of
them are rather on the monster side of things with gazillion scripts
(ah, those brainstorming boards). until recently our opensim startup
scripts would just grap a copy of mono and let it loose on
OpenSim.exe and things would be working just fine.

sometime over the course of the [...]]]></description>
			<content:encoded><![CDATA[<p>our Sametime3D test server is running a number of regions, some of
them are rather on the monster side of things with gazillion scripts
(ah, those brainstorming boards). until recently our opensim startup
scripts would just grap a copy of mono and let it loose on
<code>OpenSim.exe</code> and things would be working just fine.</p>

<p>sometime over the course of the last 10&#8211;14 days opensim must have
crossed some (invisible) line drawn in the sandy thread beaches of
monomania, as all of a sudden we noticed that three-avatar-meetings
were working fine (chat &amp; movement work) but as soon as we were joined
by the fourth avatar, things came to a grinding halt: no movement, no
chat (voice was still working but that&#8217;s to be expected as SL voice is
pretty much running independent most of the time from what&#8217;s going on
inside the region).</p>

<p>after some nose cone polishing, some more befuddled staring at the log
files, and not finding anything immediately obvious, i went and
discussed this problem with fellow opensimers on our intranet IRC
opensim channel &#8212; <a href="http://dague.net/">sean</a> had the good idea of mentioning the
<a href="http://www.mono-project.com/ThreadPool_DeadLocks"><code>MONO_THREADS_PER_CPU</code> environment variable.</a> checking
our startup script (just to make sure) showed that we were not setting
it &#8212; and, thus, it was at its default setting of 50&#8230;</p>

<p>&#8230;so we went ahead and added it, setting it to 500. why 500? good
question. and a question to which there is no clear answer: ask two
opensimers and you&#8217;ll likely get three different recommendations, i&#8217;ve
heard 75, 500, 1000, and also 2000. <a href="http://www.mail-archive.com/mono-list@lists.ximian.com/msg29284.html">ralf haifisch recently tried to
obtain clarity on this issue</a> but so far the exact
value for <code>MONO_THREADS_PER_CPU</code> remains a bit of magic.</p>

<p>and, guess what? that did the trick, it seems. we got over the three-avatar-limit.</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/04/22/threading-opensim-through-mono-needles/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
		<item>
		<title>updated mono build script: mono 2.2</title>
		<link>http://xyzzyxyzzy.net/2009/02/17/updated-mono-build-script-mono-22/</link>
		<comments>http://xyzzyxyzzy.net/2009/02/17/updated-mono-build-script-mono-22/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 14:55:20 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=264</guid>
		<description><![CDATA[here is the updated mono-build script for ubuntu hardy (intrepid might work as well).

update: since posting this i&#8217;ve been experiencing intermittent (that is, non-deterministic) mono crashes when running OpenSim, and have reverted to mono 2.0.1 which runs much more stable.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://xyzzyxyzzy.net/wp-content/uploads/2009/02/mono-22-build2.sh">here is the updated mono-build script</a> for ubuntu hardy (intrepid might work as well).</p>

<p><strong>update:</strong> since posting this i&#8217;ve been experiencing intermittent (that is, non-deterministic) mono crashes when running OpenSim, and have reverted to mono 2.0.1 which runs much more stable.</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/02/17/updated-mono-build-script-mono-22/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
		<item>
		<title>OSgrid metaversity!</title>
		<link>http://xyzzyxyzzy.net/2009/02/05/osgrid-metaversity/</link>
		<comments>http://xyzzyxyzzy.net/2009/02/05/osgrid-metaversity/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 18:15:08 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[metaversity]]></category>
		<category><![CDATA[opensim]]></category>
		<category><![CDATA[osgrid]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=259</guid>
		<description><![CDATA[charles krinke, stellar director of osgrid, blogged about the first OSgrid metaversity C# classes that took place on teravus plaza yesterday:


  Normally, I am one of the most conservative members of OpenSim, but to see a teacher, SnowDrop Short gather 12 students together, form teams of three, exchange e-mails, assign a little independent study [...]]]></description>
			<content:encoded><![CDATA[<p>charles krinke, stellar director of osgrid, <a href="http://opensimulator.wordpress.com/2009/02/04/osg-metaversity/">blogged about the first OSgrid metaversity C# classes</a> that took place on <a href="rezzme://www.osgrid.org:8002/Teravus%20Plaza/112/118/22">teravus plaza</a> yesterday:</p>

<blockquote>
  <p>Normally, I am one of the most conservative members of OpenSim, but to see a teacher, SnowDrop Short gather 12 students together, form teams of three, exchange e-mails, assign a little independent study is so exhilarating that I needed to describe it tonight.</p>
</blockquote>

<p>this is really what 3D platforms are about: collaboration, learning together, accomplishing something together! excellent stuff!</p>

<p>also, considering that OpenSim is just a bit over <a href="http://xyzzyxyzzy.net/2009/01/29/happy-2nd-birthday-opensim/">2 years old</a> &#8212; not a bad accomplishment!</p>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/02/05/osgrid-metaversity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
		<item>
		<title>happy 2nd birthday OpenSim!</title>
		<link>http://xyzzyxyzzy.net/2009/01/29/happy-2nd-birthday-opensim/</link>
		<comments>http://xyzzyxyzzy.net/2009/01/29/happy-2nd-birthday-opensim/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 15:04:08 +0000</pubDate>
		<dc:creator>DrScofield</dc:creator>
				<category><![CDATA[from the grid]]></category>
		<category><![CDATA[happy birthday]]></category>
		<category><![CDATA[opensim]]></category>

		<guid isPermaLink="false">http://xyzzyxyzzy.net/?p=245</guid>
		<description><![CDATA[guess what? today is OpenSim&#8217;s second birthday! that&#8217;s right it&#8217;s just two years old and already a pretty strong little (?) bugger. to quote the official OpenSim 2nd birthday page:


  The consensus is that OpenSim was &#8216;born&#8217; on Jan 29 2007, when Darren
  Guard (MW) made his prototypical c# 3D world server publicly
 [...]]]></description>
			<content:encoded><![CDATA[<p>guess what? today is OpenSim&#8217;s second birthday! that&#8217;s right it&#8217;s just two years old and already a pretty strong little (?) bugger. to quote the <a href="http://opensimulator.org/wiki/Second_Birthday">official OpenSim 2nd birthday page</a>:</p>

<blockquote>
  <p>The consensus is that OpenSim was &#8216;born&#8217; on Jan 29 2007, when Darren
  Guard (MW) made his prototypical c# 3D world server publicly
  available.</p>
</blockquote>

<p><img class="size-full wp-image-246 g2image_centered" title="opensim_2nd_birthday_banner" src="http://xyzzyxyzzy.net/wp-content/uploads/2009/01/opensim_2nd_birthday_banner.png" alt="Happy 2nd Birthday OpenSim!" width="432" height="122" align="center" /></p>

<p>i became involved with OpenSim almost about a year ago: <a href="http://dague.net/">sean dague</a> asked me whether i could help with trying to figure out why OpenSim on <a href="http://en.wikipedia.org/wiki/Powerpc">PowerPC</a> was not quite working<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>, which i eventually did<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> &#8212; and got hooked&#8230;</p>

<p>&#8230;since then i&#8217;ve been working on <a href="http://xyzzyxyzzy.net/2008/04/22/testing-opensim-and-secondlife-voice-settings/">voice support</a>, <a href="http://xyzzyxyzzy.net/2008/05/27/splitting-opensims-chat-module/">splitting the chat module</a>, <a href="http://xyzzyxyzzy.net/2008/05/14/restful-regions/">adding a couple of REST interface for regions</a>, and have been heavily involved in <a href="http://www-03.ibm.com/press/us/en/pressrelease/25038.wss">IBM&#8217;s Sametime3D effort</a> which extends IBM&#8217;s Sametime instant messaging product with the capability to extend a chat session into a 3D meeting space:</p>

<p><object class="g2image_centered" width="425" height="350" data="http://www.youtube.com/v/SfqGwKFStuw" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/SfqGwKFStuw" /></object></p>

<p>considering that it&#8217;s just two years since</p>

<blockquote>
  <p>&#8230;MW came on [#libsl] and said &#8216;I have a prototype for an c# SL server, but before I publish it I need somebody to log onto it to see if it supports multiple clients&#8217;&#8230; <em>[<a href="http://opensimulator.org/wiki/History">OpenSim turns 2</a>]</em></p>
</blockquote>

<p>it is utterly amazing how far OpenSim has come already!</p>

<p><strong>here&#8217;s to a brilliant future! to virtual world domination! <img src='http://xyzzyxyzzy.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  happy birthday OpenSim!</strong></p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:1">
<p>he suspected byte ordering problems in <a href="http://www.libsecondlife.org/wiki/Main_Page">libOMV</a> and i had been working with libOMV for my <a href="http://xyzzyxyzzy.net/2007/11/23/retiring-perl-after-almost-20-years/">vugate</a> project and thus had some familiarity with it (libOMV was called libSL back then).&#160;<a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>

<li id="fn:2">
<p>it turned out that there where endian issue in both libOMV <strong>and</strong> OpenSim.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a></p>
</li>

</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://xyzzyxyzzy.net/2009/01/29/happy-2nd-birthday-opensim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point featurename="[47.308883299155255, 8.544209003448486]">47.308883299155255 8.544209003448486</georss:point>
	</item>
	</channel>
</rss>
