User:Babbage Linden/Office Hours/2010 04 14

From Second Life Wiki
Jump to: navigation, search

Transcript of Babbage Linden's office hours:

[02:52] Imaze Rhiano: has Babbie hold his OH's lately? I haven't logged in couple weeks

[02:53] Ardy Lay: I think he has but I missed last week.

[03:01] Xugu Madison: Morning all!

[03:01] Memorial Dae: Greetings

[03:07] Ovaltine Constantine: Teehee

[03:08] Xugu Madison: hey Babbage!

[03:08] Babbage Linden: morning all!

[03:08] Xugu Madison: I see 1.38 is going to pilot regions today :)

[03:08] Babbage Linden: (or whatever time of day it is for you)

[03:08] Ovaltine Constantine: 1.38.1

[03:09] Lycia Undercroft: good morning Mr Babbage

[03:09] Babbage Linden: yes, 1.38.1 is going out now

[03:09] Skills Hak: mornin

[03:09] Mo Noel: Hello.

[03:09] Babbage Linden: minus the sim freeze fixes, unfortunately

[03:09] Ovaltine Constantine: D:

[03:09] Skills Hak: when will you update mono?

[03:09] Ovaltine Constantine: 2012

[03:09] Babbage Linden: what would people like to talk about today

[03:10] Babbage Linden: when we'll update mono, anything else?

[03:10] Xugu Madison: Debian updates, Mono updates, mostly updaets

[03:10] * Xugu Madison hmmmms "ETA on Viewer 2.1 and HTTP textures?"

[03:10] Babbage Linden: ok, http textures, good one

[03:10] Mo Noel: hm.. acess / manipulation of linked prims ?

[03:11] Babbage Linden: couple more?

[03:11] Xugu Madison: Any progress on animating multiple avatars from a single script?

[03:11] Ardy Lay: http://jira.secondlife.com/browse/SVC-5598

[03:12] Babbage Linden: multiple avs from a single script

[03:13] Babbage Linden: ok, that's a good list to get started with

[03:13] Xugu Madison: Oh! Someone pointed out that you might want to look at the XCite ToKon HUD, when thinking memory usage, and XCite stuff generally, as both being widely used and swamped with scripts

[03:14] Babbage Linden: so, mono updates

[03:14] Babbage Linden: internally we're currently working with Mono 2.6.1

[03:14] Babbage Linden: which we've got integrated in the csharp-sim branch

[03:15] Babbage Linden: that's proving to be pretty stable, but obviously we're not stressing it as much as it would be in production

[03:15] Babbage Linden: the current plan is to upgrade to Mono 2.x in production when we can get an official lenny backport of Mono 2.x

[03:16] Babbage Linden: talking to the Mono for Debian folks

[03:16] Babbage Linden: http://pkg-mono.alioth.debian.org/

[03:16] Babbage Linden: there is likely to be a 2.6.x or 2.8.x Mono backport in the next couple of months

[03:16] Skills Hak: so that's around 1.38.4 then?

[03:17] Babbage Linden: the current release plan is to ship Havok 7 in 1.40

[03:17] Hug & Kiss NX Attachment: M&P Hug & Kiss NX Animations ready.

[03:17] Babbage Linden: then TC malloc in 1.42

[03:17] Skills Hak: oh

[03:17] Babbage Linden: so, hopefully Mono 2.x will be ready in time for 1.44

[03:17] Xugu Madison: TC malloc?

[03:17] Babbage Linden: which will be in the summer

[03:17] Babbage Linden: TC malloc is a new memory allocator

[03:17] Babbage Linden: that includes heap profiling tools

[03:18] Xugu Madison: Ah, cool!

[03:18] Babbage Linden: we want move the simulator to TC malloc as it's both faster

[03:18] Babbage Linden: and will allow us to analyse the memory use of bloated sims in production

[03:18] Babbage Linden: at the moment we see sims get up to 2GB footprints

[03:18] Memorial Dae: *caugh*Hyboria*cough*

[03:18] Skills Hak: :x

[03:19] Babbage Linden: but can't get the same sims to consume 2GB in laboratory conditions

[03:19] Babbage Linden: so, we need to have a profiler running in production

[03:19] Babbage Linden: and TC malloc lets us do that

[03:19] Babbage Linden: we've had a beta of TC malloc running on aditi since the end of last year

[03:19] Babbage Linden: but Oskar is hopefully going to be taking that over

[03:19] Babbage Linden: and running it for us soon

[03:20] Mo Noel: next to a quality system about mmory usage, will there also be a quality system about cpu usage? Is anything planned?

[03:20] Babbage Linden: at the moment memory is the big problem

[03:20] Babbage Linden: when simulators swap, their performance dives

[03:20] Babbage Linden: and that is the cause of lots of lag

[03:20] Babbage Linden: hence TC malloc for analysis and script limits for control of memory resources

[03:21] Babbage Linden: the other big cause of lag is blocking operations

[03:21] Babbage Linden: which Simon is mitigating by multithreading certain operations on the sim

[03:21] Babbage Linden: so, its generally not that the sims are not fast enough

[03:21] Babbage Linden: it's that they're spending too much time either swapping memory or waiting on blocking operations

[03:22] Babbage Linden: which we're working on now

[03:22] Mo Noel: I but notice, hwne I change products from using a single tiny script in any prim, to have one prim controlling them all, I need quote a database (lists) to save their states and to control that I will control the correct prim, if I do 'something'

[03:22] Mo Noel: So, I am not sure if this will save memory at all?

[03:22] Talarus Luan: Aye, I proposed a solution for some of that problem.

[03:23] Babbage Linden: Mo, you will be saving memory as there is a per-script overhead

[03:23] Babbage Linden: if you're just recording a few bytes of data per prim, you'll still be ahead

[03:23] Xugu Madison: There's fairly hefty overheads per-script, per-state and per-function from when I was looking at how script design changed memory usage...

[03:24] Lycia Undercroft: and i imagine fewer context changes would be helpfull too

[03:24] Skills Hak: ok so that means the mono rez sim freeze fix will probably be some time in late summer?

[03:24] Mo Noel: I need more 'controlling' overhead, as the bound 'memory to exact link' is no longer there - and it micht couase trouble, if aou add or remove links - also need more over head to compute repositioning and rotating linked prims of opjcts and attachemnts.

[03:24] Babbage Linden: in the case of LSL scripts, they cost 16KB of sim memory whether they're using all of it or not

[03:24] Talarus Luan: Well, for some things, but for setting something like the texture only of a group of prims in the linkset, we pretty much can't use the new functions to reduce script count.

[03:25] Xugu Madison: Talarus, you can, but it'll just look laggy. Possibly we need to be able to have an llStartPrimUpdate() and llFinishPrimUpdate() so changes don't show until completed....

[03:26] Babbage Linden: so, yes mono sim freeze fix should be back this summer

[03:26] Skills Hak: fair enough :>

[03:26] Talarus Luan: Because the xSetPrimitiveParams functions only support composite settings of certain prim params.

[03:26] Rosalie Reverie: omg

[03:26] Memorial Dae: woot

[03:26] Rosalie Reverie: LGG

[03:26] Babbage Linden: the goal is to get C# in to public beta in Q3

[03:26] * Xugu Madison lives in naive hope that with more efficient resizer scripts around, we can get script count down and reduce lag

[03:26] Babbage Linden: and we'll want to have Mono 2.x in production before then

[03:26] Talarus Luan: Xugu: Already analyzed it; in certain situations, it is literally not possible to get it to work.

[03:27] Lycia Undercroft: will there be reference guide for the C# api's?

[03:27] Babbage Linden: we've also been adding more unit tests around script lifecycle to try to track down the problems with 1.38

[03:27] Babbage Linden: so I'm more confident that we can get it to work with Mono 2.x

[03:27] Xugu Madison: Talarus, when?

[03:27] Babbage Linden: the proposed API docs are planned to be released this quarter

[03:27] Xugu Madison: Babbage, great!

[03:27] Lycia Undercroft: yay

[03:27] Babbage Linden: we've mostly settled on a V1 API

[03:27] Talarus Luan: In the example I gave where you only want to set the texture UUID for a subset of the linkset, and only on certain faces, for example.

[03:28] Babbage Linden: and Rand is writing the docs up at the moment

[03:28] Talarus Luan: llGetLinkPrimitiveParams (llGetPrimitiveParams in general) does not return proper face identification for such settings.

[03:29] Mo Noel: the llStartPrimUpdate() and llFinishPrimUpdate() is soemthign I woudl pretty much favour, as iwith the single scritp former 'smooth, simultanious movements become ugly.

[03:29] Babbage Linden: so, next up HTTP textures

[03:29] Skills Hak: :D

[03:29] Babbage Linden: that is planned as a feature in viewer 2.1

[03:29] Babbage Linden: and will hopefully ship in 1.40

[03:29] Xugu Madison: Sounds like we need an llGetLinkNumberOfSides() or somesuch

[03:29] Babbage Linden: on the server side

[03:30] Babbage Linden: we're getting it in to QA at the moment

[03:30] Talarus Luan: Well, really, we just need atomic primitive param settings.

[03:30] Babbage Linden: the big issue there is that we'll be moving around 90% of our traffic from UDP to TCP as we roll it out

[03:31] Babbage Linden: and we don't have a grid the size of agni we can test on

[03:31] Lycia Undercroft: ohh

[03:31] Talarus Luan: PRIM_TEXTURE_ONLY, PRIM_TEXTURE_REPEATS, PRIM_TEXTURE_OFFSETS, PRIM_TEXTURE_ROT, PRIM_COLOR_ONLY, PRIM_ALPHA

[03:31] Babbage Linden: so, we need to be careful with our deploy plan and monitoring

[03:31] Lycia Undercroft: tcp has a lot more overhead

[03:31] Babbage Linden: I've been meeting with some of our network people this week to work out how to do that

[03:32] Mo Noel: @ Xugu: we need also something to make sure to adress a prim by exact, persitant name or something, not by maybe-changing link numbers.

[03:32] Babbage Linden: we've done a lot of lab testing and are confident that HTTP textures will be a big win

[03:32] Babbage Linden: we've tested on big and small pipes when conjested and unconjested

[03:32] Talarus Luan: TCP with time-critical/dynamic data is scary.

[03:33] Babbage Linden: and TCP rezzes textures faster in all cases

[03:33] Imaze Rhiano: http allows better caching around networks

[03:33] Babbage Linden: we're using HTTP Imaze

[03:33] Xugu Madison: Talarus; yes, but the textures aren't time-critical

[03:33] Babbage Linden: at the moment it's using caps, which breaks caching at the linden boundary

[03:33] Babbage Linden: but we're talking about ways to extend the caching beyond the linden network

[03:34] Skills Hak: oh then we can make texture squids :O

[03:34] Babbage Linden: the internal caching is still very useful

[03:34] Babbage Linden: as it allows us to use squids on the sim hosts

[03:34] Talarus Luan: Aye. Assets and other streamed data would work best under TCP, or just a streamlined version under UDP.

[03:34] Babbage Linden: instead of caches in sim memory

[03:34] Babbage Linden: it's very difficult to build reliable protocols over UDP

[03:35] Babbage Linden: I've done it twice and in both cases it was outperformed by TCP

[03:35] Talarus Luan: Not really; you're just implementing the same layers that are in TCP over UDP.

[03:35] Babbage Linden: as is the linden reliable UDP path currently used for textures

[03:35] Babbage Linden: talarus, that is harder than you think

[03:35] Babbage Linden: as is the linden reliable UDP path currently used for textures

[03:35] Skills Hak: that will be such a huge performance boost

[03:35] * Xugu Madison nods to Talarus "Things is, by the time you've added reliability, congestion control and in-order delivery to UDP, you've just re-made TCP in userspace instead of the kernel"

[03:35] Babbage Linden: a fun excercise, but very tricky to get right

[03:35] Skills Hak: experience-changing

[03:36] Memorial Dae: :)

[03:36] Babbage Linden: the only real big win you get by adding optional reliability to UDP is that you can use the conjestion feedback you get from reliable packets to control the flow of unreliable packets

[03:36] Talarus Luan: I've done work on such protocols *shrugs*. More often than not, things like the Nagle algorith cause issues leading to it being turned off in TCP connections.

[03:37] Babbage Linden: without it you need to add conjestion probing packets to your unreliable stream to maintain TCP friendliness anyway

[03:38] Babbage Linden: basically, it's very rarely wise to use UDP

[03:38] Babbage Linden: so, anyway, HTTP textures should be in server 1.40 and viewer 2.1

[03:38] Babbage Linden: the next item was linked prims

[03:38] Babbage Linden: what was the question there?

[03:39] Mo Noel: one problem is, that you only can access tehm by link number

[03:39] Talarus Luan: The main problems I've encountered with reliable UDP implementations have more to do with traffic prioritization that some backbone providers often do in their ham-fisted attempts to impose their own concepts of QoS. <.<

[03:40] Mo Noel: so, if you replace scripts inside every single prim, you never know if or when link numbers may change and how they may change and you might loose the assignments.

[03:40] Talarus Luan: Aye, did you read that proposal I gave you a couple weeks ago on the subject, Babbage?

[03:40] Babbage Linden: mo, there is more book keeping, yes

[03:40] Babbage Linden: i can't remember talarus, sorry, what was it

[03:40] Mo Noel: the only workarround I do knowis, that you need to give every link a unique name and then search for that.

[03:41] Mo Noel: and also this will kill smooth 'changes' you now can do in parallel.

[03:41] Talarus Luan: yeah, you have to do that, for sure.

[03:41] Talarus Luan: It would be nice to be able to specify subset identification.

[03:42] Talarus Luan: But I don't see any nice and easy way to do that. <.<

[03:42] Mo Noel: e.g. I do things like this skit - and move the prims to change appearence

[03:42] Babbage Linden: talarus, I agree, SL should support scene graphs for orgnanising objects in to heirarchies

[03:42] Mo Noel: works like a curtain now ...

[03:42] Babbage Linden: which would easily allow you to group sub parts of an object

[03:42] Babbage Linden: and transform them together

[03:43] Talarus Luan: Well, that is mainly solving the problem of not having to retrieve parameters that you don't want to change before changing an associated parameter.

[03:43] Babbage Linden: but, it doesn't and may never

[03:43] Babbage Linden: so, objects are just a list of bits

[03:43] Talarus Luan: As it stands now, I can't use the new functions to "fix" this AV's script load, because I can't reliably guarantee I am getting the right parameters. <.<

[03:43] Babbage Linden: which you need to keep track of

[03:43] Babbage Linden: i'm reading the proposal

[03:44] Babbage Linden: maybe you should post it somewhere public, give us the URL and we should discuss it next week?

[03:44] Talarus Luan: If I don't want to change the texture repeats/offsets/rot

[03:44] Talarus Luan: OK. Can JIRA it, I suppose.

[03:44] Talarus Luan: I just wanted feedback to know if it is remotely possible.

[03:45] Babbage Linden: i'm definitely interested in the feedback

[03:45] Talarus Luan: Because as it stands, I'm stuck

[03:45] Talarus Luan: Because as it stands, I'm stuck

[03:46] Mo Noel: ok.. but there are no plans to make assignemts between links and 'memors' more persitant?

[03:46] Babbage Linden: ok, it looks like it would be possible

[03:46] Mo Noel: reliable

[03:46] Babbage Linden: but, it looks like a pretty horrible API

[03:46] Babbage Linden: as you get a combinatorial explosion

[03:46] Vextra Messing: being able to assign subsets in linksets could be great for animating objects, as right now you can only move child prims in relation to the root prim.

[03:46] Babbage Linden: PRIM_A_AND_B

[03:47] Babbage Linden: PRIM_A_AND_C

[03:47] Babbage Linden: for example

[03:47] Babbage Linden: really you want to be able to define bit fields for parameters maybe

[03:47] Babbage Linden: anyway, I suggest putting it on JIRA and having the discussion there

[03:48] Mo Noel: and more over you can only get the positios and rotations in relation to simulator

[03:48] Babbage Linden: mo, you need a scene graph again :-D

[03:48] Mo Noel: a scene graph?

[03:48] Babbage Linden: a heirachical organisation of a scene

[03:49] Talarus Luan: Well, that's not quite what I am referring to. Selectivity of links in SLPP isn't what I am after, but rather breaking out certain sets of prim properties which shouldn't be forcefully grouped.

[03:49] Babbage Linden: that allows you to work in relative positions

[03:49] Babbage Linden: ok, talarus, that makes sense

[03:49] Talarus Luan: I mean, yes, that would be nice, too, but that's not what the proposal is about. :P

[03:49] Talarus Luan: Change texture UUID without changing texture repeats, offsets, and rotation. :D

[03:50] Babbage Linden: so, last thing was http://jira.secondlife.com/browse/SVC-5598

[03:50] Mo Noel: well, the present means work to manipulate objects and attachments - its but not that consistent, asPRIM_POSITION is local when you set and globel when you get.

[03:50] Babbage Linden: which it looks like is on Kelly's plate

[03:50] * Xugu Madison has to run. Thanks for hosting, Babbage!

[03:50] Talarus Luan: yeah, that's a problem, too

[03:50] Babbage Linden: so, I'll ask him about that later

[03:51] Ardy Lay: Almost all the land I work on is like that.

[03:51] Babbage Linden: thanks for coming xugu

[03:51] Babbage Linden: ok, we have a few more minutes

[03:51] Babbage Linden: anything else you'd like to talk about?

[03:51] Ardy Lay: I am hoping it turned out to be a viewer bug.

[03:52] Talarus Luan: Megaprims? :D That's more Andrew's bailiwick, I think. <.<

[03:52] Babbage Linden: yes, megaprims is andrew's bag

[03:52] Mo Noel: llStartPrimUpdate() and llFinishPrimUpdate() you are planning to do that?

[03:53] Babbage Linden: not sure I've heard about those?

[03:53] Babbage Linden: is there a JIRA?

[03:53] Mo Noel: I but heared that today in this meeting - don't know who suggested it.

[03:53] Talarus Luan: He's trying to get the parcel encroachment issue resolved before they will be "allowed" officially (even though it seems rather pointless with them everywhere as it is <.< )

[03:54] Mo Noel: but it would help to make object changes smooth with but one script, as its now with script per prim.

[03:54] Chaley May: i didnt see much about animating multiple people from a single script yet.. i want that to become possible

[03:54] Talarus Luan: I think I suggested it four years ago in the old forums when Torley was asking for ideas in the scripting forum. :P

[03:55] Talarus Luan: Batch prim updates, basically.

[03:55] Babbage Linden: ok, got it

[03:55] Babbage Linden: ah yes, chaley, multiple people from a single scritp

[03:55] Mo Noel: hzm.. maybe llStartPrimUpdate() and llFinishPrimUpdate() is not the best command name for that feature.

[03:56] Babbage Linden: i don't think there are any plans currently

[03:56] Talarus Luan: I think I called it "BeginUpdate" and "CommitUpdate" or something like that.

[03:56] Chaley May: although with that being able to control multiple peoples controls and camera from a ingle script could have its used

[03:56] Babbage Linden: you should make a JIRA if there isn't one and point Gisele and I to it

[03:56] Babbage Linden: at the moment most scripting work is on C#

[03:56] Talarus Luan: animating people from a single script would be interesting..

[03:57] Talarus Luan: Multiple-av perms. :P

[03:57] Chaley May: *uses

[03:57] Babbage Linden: but, we are still considering API changes and additions for later

[03:57] Chaley May: i will when i dont f3eel so ill :)

[03:58] Babbage Linden: we should have a way to tag scripting issues...

[04:00] Talarus Luan: Maybe a new JIRA category.. SCR :D

[04:00] Lycia Undercroft: is there a minute left to dicuss one more jira?

[04:00] Babbage Linden: if we're quick :-D

[04:01] Lycia Undercroft: ok

[04:01] Lycia Undercroft: https://jira.secondlife.com/browse/VWR-18960

[04:01] Lycia Undercroft: its a proposal for llLIstenTimed

[04:02] Lycia Undercroft: i thought it might help aleveate some of the script overhead with cleaning up listeners for menus

[04:02] Mo Noel: I love that one

[04:02] Babbage Linden: is it needed?

[04:03] Talarus Luan: Primairly I use timeouts in the timer() event to handle those.

[04:03] Babbage Linden: i normally set a timer when I great a listener for a dialog, then just clean up the listen in the timeout

[04:03] Lycia Undercroft: i coould use it qujite a bit

[04:03] Mo Noel: it is not needed as SL is not needed ;) - its very handy!

[04:03] * Babbage Linden likes minimal APIs, I don't think we should implement it

[04:03] Lycia Undercroft: i have multiple synthetic timers quite frequently

[04:03] Mo Noel: just imagin you need to handle like 5 or more times the same script - not needtin to care for one more is great benefit.

[04:03] Babbage Linden: I do think we should do a better job with UI control from scripts however...

[04:03] Lycia Undercroft: having this would decrease a lot of complexity

[04:04] Babbage Linden: ok, time's up

[04:04] Schmu Abdallah: llName2Key() would be nice to have too

[04:04] Babbage Linden: happy scripting

[04:04] Talarus Luan: use lists with handles and timeouts :)

[04:04] Talarus Luan: Thanks Babbage.