Simulator User Group/Transcripts/2011.08.23
|Prev 2011.08.19||Next 2011.08.26|
List of Speakers
|Andrew Linden||Arawn Spitteler||Fancy Greeter|
|Flip Idlemind||Jonathan Yap||Kaluura Boa|
|Kelly Linden||Leonel Iceghost||Liisa Runo|
|Pauline Darkfury||Qie Niangao||Rex Cronon|
|Sahkolihaa Contepomi||Simon Linden||Techwolf Lupindo|
[12:00] Andrew Linden: Hello everyone.
[12:00] Meeter: Welcome to the Server User Group
[12:01] Andrew Linden: First bit of news is that I've completed my optimization project on the SL script engine.
[12:02] Andrew Linden: I put it up on the 'bispinor' channel on aditi.
[12:02] Andrew Linden: The two regions are: "Sandbox - Weapons Testing" and "Sandbox - Bispinor"
[12:02] Rex Cronon: hello everybody:)
[12:03] Andrew Linden: So if any of you are interested in running LSL benchmarks there I'd be interested to hear about the results.
[12:03] Andrew Linden: Hi Rex.
[12:03] Rex Cronon: hi andrew
[12:04] Simon Linden: Those are on Aditi, right?
[12:04] Andrew Linden: Yes.
[12:04] Rex Cronon: what is going on with weeapons testing. i missed the first part
[12:04] Andrew Linden: I expect to see slight improvements in both Mono and LSL
[12:04] Liisa Runo: hi everybody
[12:04] Rex Cronon: hi lissa
[12:05] Rex Cronon: thanks
[12:05] Andrew Linden: because the work was done in the actual callback functions that scripts execute, not in the bytecode or fundamental script engines
[12:05] Andrew Linden: Rex, my optimization project on the script engine is deployed to two regions on aditi.
[12:05] Andrew Linden: The channel is "bispinor"
[12:05] Rex Cronon: oh.ok
[12:06] Andrew Linden: and the regions are "Sandbox - Weapons Testing" and "Sandbox - Bispinor"
[12:06] Andrew Linden: I only ran a few benchmarks to make sure there was some improvement
[12:06] Andrew Linden: to make sure there were reasons to proceed.
[12:06] Fancy Greeter: Kelly Linden has arrived!
[12:06] Rex Cronon: thank u 4 repeating that:)
[12:06] Andrew Linden: So I don't really know what kind of results we'll see.
[12:07] Andrew Linden: But if anyone is curious they can try running benchmarks there.
[12:07] Pauline Darkfury: sounds interesting :)
[12:07] Andrew Linden: In particular, I don't expect any improvement for Mono scripts that do math processing
[12:08] Andrew Linden: but scripts that access or set data on the objects themselves should run a little faster
[12:08] Pauline Darkfury: Damn, so that 1000th decimal place of PI is still going to be slow? ;)
[12:08] Andrew Linden: because my work was all about removing some lookups to find the relevant objects
[12:08] Kelly Linden: So llGetPos or llGetRot should be better?
[12:09] Andrew Linden: instead the code has a backpointer to the object, or at least a backpointer that lets it look up the right pointer
[12:09] Andrew Linden: yeah, llGet* for object properties should be where the improvements show the most
[12:09] Andrew Linden: llSet* methods typically have a built in delay
[12:09] Rex Cronon: something like: until now it was looking in a table/array/que/stack to find object, and now is finding it based on a hash value?
[12:10] Andrew Linden: so those kinds of benchmarks might not be affected as much
[12:10] Pauline Darkfury: My gut says that should be a nice win for a lot of different things
[12:10] Techwolf Lupindo: Will llsetprimfast be faster?
[12:10] Andrew Linden: llSet* will be a little bit faster, but probably not noticably. However...
[12:10] Pauline Darkfury: llSLPPF to save the typing ;)
[12:11] Andrew Linden: when running lots of scripts in regions with lots of objects speedups should be more visible
[12:11] Andrew Linden: the old lookup was using a map, which is of Order(log(n))
[12:11] Techwolf Lupindo: I know the old prim set was slow and delayed and couldn't do child prims from root. The new FAST was without delay and can do child prims. I was wondering if that was somehow even faster then it is now.
[12:11] Andrew Linden: the new lookup is just a pointer dereference, which is of Order(1)
[12:12] Sahkolihaa Contepomi: Your tops scripts script should use display names, Simon. :p
[12:12] Andrew Linden: oh hrm... yeah the fast (without delay) calls are probably faster
[12:12] Simon Linden: That's a good idea too
[12:12] Liisa Runo: (this is not RP area, so no display names thanks)
[12:13] Andrew Linden: also, I expect percentage improvements to be higher for Mono, because Mono tends to run faster anyway and the improvement is really a constant value for each call
[12:13] Rex Cronon: so all the functions that deal with objects properties should run faster?
[12:13] Techwolf Lupindo: I know one creater that took advantage of the FAST to speed up the HUD changing colors/texture on the avatar by over 100 times.
[12:13] Andrew Linden: (given some # of objects and other scripts)
[12:13] Kelly Linden: The w/o delay calls still only look up the object in the map once per call. So it will help if you have a lot of calls, but not so much if you have few calls with large lists.
[12:13] Kelly Linden: (for llsetprimparams and related)
[12:13] Andrew Linden: yeah, kelly is right.
[12:14] Pauline Darkfury: And, presumably, if you call them often
[12:14] Andrew Linden: as it turns out... the lookup isn't terribly slow compared to some other operations (such as working with lists)
[12:14] Pauline Darkfury: i.e. on a short-ish timer, or similar
[12:14] Andrew Linden: oh yeah, one other thing...
[12:15] Kaluura Boa: Yeah... I was about ask. No chance to see any speed increase for all the llList functions?
[12:15] Andrew Linden: I found at least one bug (and fixed it) in the script engine as a result of my changes...
[12:15] Andrew Linden: a line that was accidentally deleted
[12:15] Kelly Linden: Yeah LSL list operations are at best O(n) though many degrade to O(n^2) or worse. Even with the potentially much larger n (objects in region vs. list size) O(log n) is much faster.
[12:15] Andrew Linden: if you notice any script bugs let me know, I'm sure they'll be easy to fix
[12:15] Simon Linden: I'd love to look at the list functions someday
[12:16] Kaluura Boa: =^_^=
[12:16] Kelly Linden: Some are optimized in mono already and have better than O(n) behavior. I don't think there will be a huge win until we can get better data structures.
[12:16] Techwolf Lupindo: Heh, good job there. I went almost an entire day trying to fix one bug in the client and it trun out to be a missing line that was requred to set up the callback correctory in the client.
[12:16] Andrew Linden: and, if you manage to crash the simulators via a new crash mode I will hand out awards of L$20k on agni
[12:17] Rex Cronon: on main grid?
[12:17] Rex Cronon: i mean we crash there and get the $ here?
[12:17] Andrew Linden: yeah, the awards will be given on the main grid, but only for *new* crash modes via scripts
[12:18] Techwolf Lupindo: LL is getting lose with Lindens? I got one bug bounty, but after a year delay/fix.
[12:18] Pauline Darkfury: the slush fund has probably grown due to all the L$1/sq.m. from abandonments ;)
[12:19] Andrew Linden: first-finder would win the award, and you need to send me an email saying "I crashed region 'foo' at 'such and such' time with the attached script'
[12:19] Andrew Linden: or something to that effect
[12:19] Rex Cronon: techwolf. u know that the lindens can "print" as much money as they want:)
[12:20] Andrew Linden: We used to have an award system for reported exploits. Phoenix Linden ran that for a while.
[12:20] Simon Linden: we're going to augment the fund by sending all the Linden $ rounding remains to that account
[12:20] Flip Idlemind: Aditi is a parallel universe, where crashing get's you cash awards
[12:20] Kaluura Boa: ROFL
[12:20] Pauline Darkfury: The reward for valid and new SECs is still there, Oskar has promoted it a few times recently
[12:21] Andrew Linden: the changes I made feed "valid" memory pointers to the script engine, which it uses to look up the C++ class instance of the object involved
[12:21] Andrew Linden: if any of those pointers are ever invalid, then the region will probably crash
[12:22] Andrew Linden: I don't think it is possible for an invalid pointer to be passed, but I'm only 98% sure.
[12:22] Pauline Darkfury: race conditions on newly rezzed objects?
[12:23] Pauline Darkfury: Hopefully scripts don't start running until the threaded rez has completed?
[12:23] Andrew Linden: right, scripts do not start executing until they are on an object
[12:24] Andrew Linden: Lesse... other news...
[12:25] Andrew Linden: Mesh was promoted to the main channel on agni today.
[12:25] Sahkolihaa Contepomi: Yup. Been playing with it on stable regions. :p
[12:25] Andrew Linden: I think only the Bluesteel RC is non mesh now.
[12:25] Sahkolihaa Contepomi: Nyx said it's getting upgraded tomorrow.
[12:25] Andrew Linden: It will be updated tomorrow, I would guess.
[12:26] Andrew Linden: There is already a mesh maintenance branch in the works
[12:26] Techwolf Lupindo: Right now, I got a pleamrity report of crash on selecting face of an object. We are checking to see if it mesh regine related now. Trying to repro it now.
[12:26] Andrew Linden: and it is mostly done. I'll have to see about getting it up for test on aditi this week
[12:27] Andrew Linden: I don't see any reason to delay it -- it is just server-side fixes, but I'll converse about it with the other server devs.
[12:27] Andrew Linden: Techwolf, was that a server crash? or a viewer crash?
[12:28] Techwolf Lupindo: They are looking, we just got a JIRA report a few mintues ago.
[12:28] Flip Idlemind: Andrew I don't know your email address, so
[12:28] Flip Idlemind: I crashed region 'Sandbox - Weapons testing' at '1 minute ago' time
[12:29] Andrew Linden: Flip, send it to firstname.lastname@example.org
[12:29] Pauline Darkfury: No crash for me selecting a single face of random objects here, but I'm not on a standard build
[12:29] Andrew Linden: to remind me
[12:30] Flip Idlemind: I actually can't remember the last time I sent an email .()
[12:30] Flip Idlemind: But okie dokie
[12:30] Meeter: Timecheck : User Group is half over
[12:31] Rex Cronon: andrew. u need a bounty page, that list what u looking for, and how much u pay for it:)
[12:31] Rex Cronon: lists*
[12:31] Andrew Linden: That's all the news I had.
[12:31] Andrew Linden: Hrm... I don't usually have open bounties. This is a limited time offer.
[12:32] Andrew Linden: If the regions are too crashy I may just bring them down.
[12:32] Andrew Linden: I don't expect many *new* crash modes.
[12:32] Arawn Spitteler: Standing Bounty on new crash modes?
[12:33] Andrew Linden: But for any llFooBar() LSL call there is a chance that a crash bug has been introduced
[12:33] Rex Cronon: how far do u want this bounty to be known?
[12:33] Andrew Linden: or if there is a way to make scripts still execute after their objects have been deleted... that would crash the simulator.
[12:33] Andrew Linden: Hrm... good question. How far to advertise?
[12:34] Rex Cronon: yes
[12:34] Pauline Darkfury: group notice in the beta group
[12:34] Andrew Linden: Feel free to announce it to anyone you know. I'll publish this transcript soon after this meeting anyway.
[12:34] Andrew Linden: However, I only have two regions up at the moment.
[12:35] Andrew Linden: If they get too crowded it may be hard to tell who actually crashed the region.
[12:35] Andrew Linden: I'll give the bounty a deadline: midnight SLT tonight.
[12:36] Andrew Linden: I may open it up again later. We'll see how stable the changes are.
[12:36] Flip Idlemind: Ok Andrew, email sent. And just for fun I went back to see if I could reproduce it, or if it was a one time thing, and I was able to crash the region again
[12:36] Andrew Linden: excellent. Thanks Flip.
[12:37] Andrew Linden: I'll probably try to fix it and update the regions today so others don't stumble on that one.
[12:37] Andrew Linden: Dunno how it actually crashed yet.
[12:37] Techwolf Lupindo: Darn it...there goes the bounty. Flip got it allready. ;-)
[12:38] Jonathan Yap: Was the bounty only for the first bug?
[12:38] Pauline Darkfury: first reporter of each individual bug, I thought?
[12:38] Andrew Linden: No. Any *new* crash mode will produce an award.
[12:38] Andrew Linden: That is, any *new* crash mode that uses scripts to work.
[12:39] Andrew Linden: Overloading the simulator with too many dynamic objects, or hacked network packets, don't count.
[12:39] Andrew Linden: That's all the news I had. Table is open.
[12:40] Leonel Iceghost: any plans to fix "overloading with many dynamic objects" in the future?
[12:40] Simon Linden: That's been fixed many times already :)
[12:40] Andrew Linden: Leonel, it is much harder to overwhelm the simulators with so many dynamic objects that it crashes, these days.
[12:40] Leonel Iceghost: no just crash, but real performance..
[12:41] Andrew Linden: Yeah, that is a work in progress.
[12:41] Pauline Darkfury: SVC-635 - should be a really easy, low risk fix, blocks using some off the shelf web-RPC libraries
[12:41] JIRA-helper: http://jira.secondlife.com/browse/SVC-635
[#SVC-635] support all plain text document formats in http_response
[12:41] Arawn Spitteler: Move the dynamic physics frames to where the agents are most active, and let the rest freeze
[12:42] Kelly Linden: That should be an SCR issue
[12:42] Pauline Darkfury: Yup, it is mostly SCR
[12:42] Andrew Linden: Kelly, what do you think of SVC-635?
[12:42] Andrew Linden: As to simulator performance for too many dynamic objects...
[12:43] Pauline Darkfury: Right now, the server sends "Accept: text/*"
[12:43] Andrew Linden: we already have some code that locks objects down if things slow down too much
[12:43] Pauline Darkfury: I'd like that to be extended to allow "application/*" as well
[12:43] Kelly Linden: It is pretty easy to add now with the infrastructure recently added to support HTML output.
[12:44] Andrew Linden: progress on that aspect of the physics engine would be to improve things so that we can lower the thresholds for when that lockdown behavior kicks in
[12:44] Leonel Iceghost: that's great Andrew, we don't care if top colliders get less physic acuracy
[12:45] Andrew Linden: The "costly pile of dynamic objects" problem is complicated and I don't see a way of "solving" it ouright.
[12:46] Andrew Linden: We can only make the phys engine faster and the response smarter.
[12:46] Leonel Iceghost: don't you have a way of "if many collisions for this object this frame skip to next frame"?
[12:46] Kelly Linden: For any new content types we would need to be sure that it does not create new easy ways of phishing or scamming - largely this just means that external browsers won't suddenly start to render it.
[12:46] Andrew Linden: We currently dynamically change some objects collision shape when things slow down... concave objects may be replaced with convex shapes to help things forward
[12:47] Pauline Darkfury: That ticket is for incoming responses to llHTTPRequest, Kelly. Should be near zero phishing risk there that isn't also present with accepting text/*
[12:47] Andrew Linden: "all plain text document formats"... what sort of formats are there?
[12:47] Andrew Linden: what would be the first format to support?
[12:47] Kaluura Boa: That is something that I don't understand: Why is it vital to prevent external browsers to render what a prim sends?
[12:47] Pauline Darkfury: application/xml
[12:48] Pauline Darkfury: application/json
[12:48] Pauline Darkfury: application/x-www-form-urlencoded
[12:48] Pauline Darkfury: And literally unlimited application/something+xml
[12:48] Kelly Linden: Ah Pauline, I was thinking the wrong one then, I'm not sure about anything for that then, right now.
[12:49] Pauline Darkfury: Also, pretty much unlimited application/x-some-cool-new-thing
[12:49] Andrew Linden: What format do we currently support?
[12:49] Pauline Darkfury: text/*
[12:49] Kelly Linden: Kaluura: all urls served by LSL scripts appear served by Linden Lab and it is difficult to impossible to further track the owner to the actual responsible party. As such we do not want to become a way for people to publish phishing etc. under the Linden Lab / Second Life name.
[12:50] Kaluura Boa: I see...
[12:50] Kaluura Boa: Now, that's clear.
[12:50] Rex Cronon: there r some lsl functions that allow others to find your ip
[12:50] Andrew Linden: so, if we had a way to unambigously identify the object and owner in the url, perhaps we could expand the types?
[12:50] Pauline Darkfury: It would be very good if script HTTP servers could also serve application/xml, application/x-www-form-urlencoded outbound
[12:50] Flip Idlemind: I believe I've narrowed down the exact cause of that crash bug I found. Well, I say "cause", I mean very specific way to reproduce it
[12:51] Andrew Linden: I'm assuming the current URL's are quite messy and unmemorizable.
[12:51] Pauline Darkfury: llHTTPRequest already sends object UUID, owner UUID, and names outbound
[12:51] Andrew Linden: cool Flip, I'd love to get a simple repro recipe
[12:51] Kelly Linden: There are two sides andrew: Making http requests from scripts (in which case we don't need to be concerned with the browser rendering issue) and serving http content from scripts where we do.
[12:51] Andrew Linden: I can examin the coredumps from the crashes which may give me enough clues to fix it.
[12:51] Kaluura Boa: Current URL can be retrieved easily with that fake DNS for Google App Engine...
[12:52] Pauline Darkfury: Yup. llHTTPRequest really shouldn't have any major issues. It already makes the requests to almost any destination, just the response gets binned if it's not text/*
[12:52] Flip Idlemind: It is extremely simple, can I just drop a script on you? Or should I tell you some different way
[12:53] Andrew Linden: Flip, no need actually. I just looked a the callstack for that crash. I think I can fix it.
[12:53] Pauline Darkfury: I really do have to scratch my head at how major a risk the phishing thing is when the URL begins http://sim1234.agni.lindenlab.com/cap/<uuid>
[12:53] Pauline Darkfury: It just doesn't seem like a URL that any sane person is going to think is legit
[12:54] Pauline Darkfury: *legit for some other thing
[12:54] Kelly Linden: That is a agni.lindenlab url. Whatever content is served from there appears to be from Linden Lab.
[12:54] Kelly Linden: Whether the url looks legit or not sometimes just doesn't matter.
[12:54] Leonel Iceghost: you can make a different domain
[12:54] Pauline Darkfury: mmm, yeah, I guess
[12:55] Kelly Linden: Even if we used a different domain, it would still of course be *our* domain and look like *our* content.
[12:55] Meeter: Timecheck : User Group is almost over
[12:55] Kelly Linden: I can't make it look like Leonel Iceghost's domain.
[12:56] Leonel Iceghost: you can ask prims to specify their domain :P
[12:56] Rex Cronon: if u use a public wireless u r open to man in the middle attack, as we don't seem to be using https
[12:56] Kelly Linden: You can already set up a proxy server on your host that fetches and serves up content from LSL scripts with any content type and/or extra formatting you want.
[12:57] Kelly Linden: That would also help you solve the urls-are-always-changing problem for legitimate content.
[12:57] Kelly Linden: You can get https urls for LSL servers.
[12:57] Flip Idlemind: llRequestSecureURL if I remember right
[12:57] Flip Idlemind: Something like that at least
[12:57] Kelly Linden: Yup
[13:00] Andrew Linden: Hrm... interesting that the Weapons Testing crash didn
[13:00] Andrew Linden: didn't save simstate.
[13:00] Pauline Darkfury: Being able to serve up stuff like application/xml & application/json from scripts could be an interesting enabler for serving HTML from an outside server, then pulling in data direct from scripts to augment the base web page
[13:00] Meeter: Thank you for coming to the Server User Group
[13:01] Kelly Linden: Yup Pauline.
[13:02] Kelly Linden: Bye everyone. o/
[13:02] Flip Idlemind: Baiii
[13:02] Rex Cronon: tc kelly
[13:02] Andrew Linden: Well the different HTML types is an intresting idea. I wonder if there is some clever way to support them.
[13:02] Sahkolihaa Contepomi: See you kelly.
[13:02] Pauline Darkfury: Thanks, Kelly, take care :)
[13:02] Simon Linden: Thanks everyone for coming today
[13:02] Qie Niangao: Thanks Kelly, all
[13:02] Liisa Runo: thanks everybody
[13:02] Sahkolihaa Contepomi: And Simon & Andrew.
[13:02] Rex Cronon: tc simon
[13:02] Rex Cronon: tc andrew
[13:02] Rex Cronon: tc everybody
[13:02] Leonel Iceghost: anyone remembers any news from yesterday scripting meeting? or perhaps any transcripts
[13:02] Pauline Darkfury: And thanks, Andrew, Simon :)
[13:03] Andrew Linden: See you all later.
[13:03] Leonel Iceghost: see you Andrew
[13:03] Rex Cronon: have fun;)
[13:03] Sahkolihaa Contepomi: Also, new viewer is out by the way: http://secondlife.com/support/downloads/
|Prev 2011.08.19||Next 2011.08.26|