User:Ama Omega/archive/Office Hours/2010-09-20

From Second Life Wiki
Jump to: navigation, search

List of Attendees

Transcript

[08:58] Kelly Linden: Good morning. :)
[08:58] Ardy Lay: Ow.... Log-storm
[08:59] Zep Palen: Morning Kelly
[08:59] Ardy Lay: HTTP fetch getting 499
[08:59] Kaluura Boa: Morning... hehehe
[08:59] Kelly Linden: How is everyone doing?
[08:59] Ardy Lay: Kelly, Oz is being scary.
[08:59] Liisa Runo is doing good
[08:59] Levio Serenity: tired, but good
[08:59] Haravikk Mistral: Yay! I actually got the time right for a change ^^
[08:59] Zep Palen is good
[09:00] Kelly Linden: heh, welcome haravikk
[09:00] Kelly Linden: scary good or scary bad ardy?
[09:00] Ardy Lay: He wants to be able to make other people automatically rebake when a viewer cannot download their baked skin.
[09:00] Kelly Linden: that is kind of what the system already does
[09:00] Ardy Lay: I say fix the cause, don't employ a resource intensive workaround.
[09:00] Ardy Lay: Is this a topic for your meeting? :-)
[09:01] Kelly Linden: probably not. it has been a long time since I completely broke baked textures.
[09:01] Ardy Lay: Hehe
[09:01] Kelly Linden: but a part of the current 'design' is indeed that if we can't find the baked textures we ask them to rebake and reupload.
[09:02] Levio Serenity: so how does this work? do we just all blurt out our questions?
[09:02] Ardy Lay: The way I understand it, baked avatar skins are stored on a mini-asset store in the region the avatar was in when the baked skin was uploaded.
[09:03] Kelly Linden: I don't have an agenda today, so .... pretty close.
[09:03] Kelly Linden: ardy: yup. but sometimes we clean those out.
[09:03] Levio Serenity: what i came to ask is, why does making a new function incur such a huge memory overhead in mono?
[09:03] Kaluura Boa: So... What's new on the LSL front? What new functions are coming?
[09:03] Ardy Lay: Kelly, Oz saw me as a "plasma cloud" and asked me to manually rebake. That resolved the appearance issue.
[09:04] Kelly Linden: levio: can you be more specific?
[09:04] Kelly Linden: ardy: the back end of the baking system needs some reworking.
[09:05] Levio Serenity: take a default script and check freemem, then add functions above the states and watch the memory start dropping like crazy
[09:05] Ardy Lay: Kelly, I had logged in to region Lusk, changed outfits, including a rebake, chatted for a few minuted then teleported to Hippotropolis to meet with Oz. Nobody in Hippotropolis could see me.
[09:05] Kelly Linden: kaluura: I don't have anything new on that front this week. I think we have a PRIm_ROT_LOCAL in the pipeline.
[09:05] Ardy Lay: Would a baked skin less than 30 minutes old be "cleaned out"?
[09:05] Kelly Linden: Ardy: yup.
[09:05] Kaluura Boa: Wow! SVC-92... or 93... The miracle of the year!
[09:06] Kelly Linden: Ardy no but it may not have finished baking and uploading before you TPd out
[09:06] Ardy Lay: I was there for about 12 minutes.
[09:06] Ardy Lay: Plenty of time to upload.
[09:07] Ardy Lay: Hmm... Nobody said anything but maybe the upload failed and I was incomplete when in Lusk.
[09:07] Haravikk Mistral: Levi's point is one I'm interested in too, in larger scripts I've seen a function eat up 1kb or more compared to inlining the same code
[09:07] Levio Serenity: exactly
[09:07] Levio Serenity: i had to start using lslp because it has an option to magically inline all your functions, but thats horrible from a code design aspect
[09:08] Levio Serenity: something is borked in the mono implementation imo
[09:08] Haravikk Mistral: As long as you stick to LSL+ it's fine, I use it for nearly everything now, though the dev seems to have spiralled off into space or something =(
[09:08]
[09:08]
[09:09] Kelly Linden: I was not aware that this was an issue. Is there a jira for it?
[09:09] Haravikk Mistral: I think so, actually I think it's one of mine, one min
[09:09] Kaluura Boa: Yes, there is a jira...
[09:09] Qie Niangao: (Sorry to be late, so hope this isn't redundant: I gather that each Mono-compiled function must be aligned on a 512-byte boundary; that might be part of it.)
[09:09] Levio Serenity: ooo link plz
[09:09] Pauline Darkfury: Are you maybe seeing some quantum effect caused by page sizes, or is this specific to BlueSteel. I just moved a small chunk of code that was used twice into a function for better maintainability, and didn't notice any huge impact on free memory as a result of it.
[09:09] Liisa Runo: intresting topic for sure, and hopefully fixed soon. Self made functions are pretty ?
[09:09] Pauline Darkfury: I suspect possibly some quantum effect on memory, maybe due to page sizes or alignment, tbh
[09:10] Haravikk Mistral: SVC-4387 covers it, it's hard to get particularly good examples for it though
[09:10] Kelly Linden: man uploading scripts in this region is really slow
[09:10] Haravikk Mistral: The worst cases are in especially large scripts though I dunno if that's just circumstantial, as I don't usually work in smaller scripts anyway =)
[09:10] Liisa Runo: https://jira.secondlife.com/browse/SVC-4387
[09:11] Levio Serenity: yea i have an AO i wrote thats all done in a single script and its killing me
[09:12] Free Mem: 61664
[09:12] Free Mem: 61664
[09:12] Kelly Linden: So a trivial case doesn't reproduce it.
[09:12] Kelly Linden: Adding a foo() { } function adds no size
[09:13] Zep Palen: I think they mean when vars are defined
[09:13] Levio Serenity: yea its not 100% repro'able
[09:13] Haravikk Mistral: Moon Metty has some example scripts on the JIRA that show it off a bit better
[09:13] Zep Palen: and vars is known to take more memory outside events as far a I remember
[09:14]
[09:14] Kelly Linden: Haravikk's first example could be timing on the GC
[09:15] Levio Serenity: yea, if we had a function to force a GC for testing these kinds of things would sure help
[09:15] Kelly Linden: usually a llSleep(1) is sufficient
[09:15] Levio Serenity: if if the freemem always forced one
[09:16] Zep Palen: i just checked the variable memory list. I was wrong..it is the other way around...so a global function should actually take less memory..not more
[09:17] Levio Serenity: it should, but i had cases where inlining a function twice that was like 12 lines long used less memory than a single global function
[09:17] Zep Palen: from the http://wiki.secondlife.com/wiki/LSL_Script_Memory it is said that: " http://wiki.secondlife.com/wiki/LSL_Script_Memory "
[09:18] Zep Palen: ohh nice...let me get the last one again
[09:18] Zep Palen: "Functions require 16 bytes to be created, with 3 bytes per parameter, plus bytes commensurate with the return type. "
[09:18] Pauline Darkfury: Hmmmm, interesting. I am seeing it, just not the 1k mentioned earlier
[09:19] Pauline Darkfury: I'm seeing a 512 byte increase in using the following as a function, instead of twice inline:
[09:19] Pauline Darkfury: if (mode & MODE_RECEIVED)
mode = mode & ~MODE_RECEIVED;
[09:19] Pauline Darkfury: that's in a script which has 49246 / 49758 free
[09:20] Zep Palen: it seems like vars in global functions take 1 more byte than just ordinary globals vars...but yet there is a long way up to 1K
[09:20] Zep Palen: but
[09:20] Zep Palen: "21 bytes to call a function with no return

21 bytes to call a function with any return + type of return

[09:20] Pauline Darkfury: that gives exactly a 512 byte difference reported by having that as a function
[09:21] Zep Palen: so I guess if a function is called many times it will add up
[09:23] Kelly Linden: If we are seeing exactly 512, that is quite suspicous
[09:23] Levio Serenity: yes i am
[09:23] Pauline Darkfury: yup, 512 more by having that snippet as a function called twice, vs having it inline twice
[09:23] Kelly Linden: If we can work down to some really simple repros it will be easier to track down.
[09:24] Pauline Darkfury: It's a commercial script, but can hand you a copy if you want, Kelly, as long as it doesn't end up with the whole thing on the public Jira
[09:24] Levio Serenity: u can use those scripts i gave u, they throw aways
[09:24] Kelly Linden: Unfortunately if it is complex enough to be comercial it isn't going to be a simple enough repro
[09:25] Haravikk Mistral ruffles Levio's tummy while he purrs gently in delight!
[09:25] Levio Serenity: that just repro'd a 512 byte diff for me
[09:25] Haravikk Mistral: Moon Metty posts a simple script in a comment here: https://jira.secondlife.com/browse/SVC-4387?focusedCommentId=139472&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel #action_139472
[09:25] Kelly Linden: thanks levio
[09:25] Qie Niangao: it seems from Moon's 128 function example that the effect only obtains when it calls a library function.
[09:25] Pauline Darkfury: Yeah, it was just the most recent product I'd been working on, had moved a good test case to a function just yesterday, so seemed apt to double-check it
[09:25] Qie Niangao: ("it" being the function defined, duh. Sorry.)
[09:26] Levio Serenity: plz let me know if u see the diff kelly
[09:26] Pauline Darkfury: The variables inside that are mostly integers, and MODE_* are #defined constants (using the Emerald/Phoenix preprocessor)
[09:26] Free Mem: 61664
[09:26] Free Mem: 62176
[09:26] Qie Niangao: Pauline, what happens if you omit the llRegionSay() ?
[09:26] Haravikk Mistral: I think ultimately we just need to know if it's a bug or not; if we had a list of known, accurate byte-counts for each operation (and maybe some explaination way for the really large ones) then it'd help a great deal
[09:27]
[09:27] Free Mem: 62176
[09:27]
[09:27] Free Mem: 61644
[09:27] Haravikk Mistral: I mean, obviously Mono isn't C so function calls have more overhead, but how much is expected and why? Any ways it could be trimmed? etc.
[09:27] Kelly Linden: so there is a quick example. I can throw it on my board for anyone that has media enabled
[09:28] Levio Serenity: yea if all funcs have to start at a 512 page, dats not happy
[09:28] Pauline Darkfury: Good call, Qie - with the llRegionSay commented from the function one and replaced by "mode = mode;" as a NOP, the scripts report the same size for function vs 2x inline (inline still has the llRegionSay())
[09:29] Kelly Linden: neat.
[09:29] Kelly Linden: so there is my minimal example based on Qie's hint.
[09:29] Kelly Linden: which 3 of you can see. :p
[09:30] Levio Serenity: well id luv to use the new viewer if it didnt crash constantly for me : (
[09:30] Liisa Runo: 3? that must be a record, 80% of v2 users in same sim
[09:30] Kaluura Boa: hehehe
[09:30] Kelly Linden: llSay(0,"Foo") inline is 62176 free and as the only thing in foo() is 61644 free
[09:30]
[09:30] Kelly Linden: actually 4 if you count me. :p
[09:30] Liisa Runo: we dont count you :P
[09:31] Kelly Linden: bah!
[09:31] Ardy Lay: oops
[09:31] Levio Serenity: u got your work cut out for you this week : D
[09:31]
[09:32] Levio Serenity: im assuming this wont make any one script actually use less memory on the server tho, just the script will have more room within its own address space
[09:33] Haravikk Mistral: That's actually one other question I had, if we're ready to move on?
[09:33] Kaluura Boa: This will matter when we'll have small/large scripts...
[09:33] Levio Serenity: what are small/large scripts?
[09:33] Pauline Darkfury: Got a trivial example:
[09:33]
[09:33] Inline Test: 62204
[09:33] Function Test: 61692
[09:34] Pauline Darkfury: That's with "llOwnerSay(llGetScriptName()+": "+(string)llGetFreeMemory());" in a function vs. not
[09:34] Kaluura Boa: Supposedly, we should be allowed one day in the future to have less or more memory for Mono scripts... More or less than 64 KB
[09:34] Haravikk Mistral: I was wondering how Mono memory is actually allocated, as I read ages ago (back when it was being introduced) that all scripts would be allocated in 16kb blocks, which would mean nothing for LSO scripts, but means that Mono scripts can take up less space using less memory
[09:34] Levio Serenity: im guessing where i saw 1k jumps were in cases where the function was 513-1023 bytes long
[09:34] Kaluura Boa: ...If that's still on the agenda of LL...
[09:34] Ardy Lay: Hmm, Mono script memory allocation is dynamic, according to a presentation Babbage gave a while back.
[09:34] Kelly Linden: ok I added that repro to the jira and assigned the jira to me.
[09:34] Kelly Linden: I will *not* be looking into it more this week though.
[09:35] Levio Serenity: long as it gets in the queue i spose : )
[09:35] Zep Palen: Ardy it is not dynamic yet
[09:35] Ardy Lay: Zep, citation please?
[09:35] Kelly Linden: Mono memory allocation is dynamic
[09:36] Haravikk Mistral: What block size does it use?
[09:36] Levio Serenity: any webpages that explain how it works kelly?
[09:36] Zep Palen: if it is dynamic then why does it then still take up 64 b kb?
[09:37] Kelly Linden: It uses mono's memory management, and enforces the SL specific limits when we timeslice and save off the stack.
[09:37] Ardy Lay: I think this is the presentation I am remembering: http://www.youtube.com/watch?v=QGneU76KuSY
[09:37] Zep Palen: ok
[09:37] Ardy Lay: It's LOONG, watch later. :-)
[09:37] Haravikk Mistral: Any idea what time in it covers the memory management?
[09:38] Ardy Lay: Nope.
[09:38] Ardy Lay: Been a while since I watched it.
[09:38] Kelly Linden: it is a good presentation though
[09:38] Haravikk Mistral: Will watch it later though, looks interesting, don't remember seeing it before!
[09:38] Pauline Darkfury: Anyone who wants a copy of a test that does a very trivial demo of the 512, buy the black cube in front of me for L$0
[09:39] Pauline Darkfury: (scripts should be full perm)
[09:39] Kelly Linden: I'm going to be setting up to have an LSL jira triage every other week during my office hours. I haven't quite got the specifics of how that will work yet though.
[09:39] Haravikk Mistral: Uhm, I had a really minor JIRA I wanted to point out as well, SVC-1492, was meant to have been fixed last year, but nothing seems to have come of it. Basically the issue is about uncompiled scripts being limited to 65536, even though they can compile down to within Mono's memory space
[09:40] Haravikk Mistral: *65536 characters
[09:40] Zep Palen: Kelly maybe same way as Soft do the bug triage
[09:40] Haravikk Mistral: Oh sorry, Kelly, yeah that'd be great!
[09:40] Kelly Linden: Haravikk, I think a fix for that will come with one of the mono2 performance deploys
[09:40] Kelly Linden: The latter one.
[09:41] Levio Serenity: i had a friend who ran into that a couple weeks ago hara, i had her make a function to reduce the size of the script, but then the script would run out of memory due to this 512byte overhead on functions, doh
[09:41] Haravikk Mistral: Any particular reason way? It just seems an arbitrary limit on the source code size?
[09:41] Kelly Linden: I think we set it to something ridiculous
[09:41] Haravikk Mistral: *reason why, my typing is horrible
[09:41] Kelly Linden: it is arbitrary.
[09:42] Kelly Linden: and we changed it in the csharp code branch, most of which is going in with the mono performance work.
[09:42] Haravikk Mistral: Okay, any ETA on that, even rough? I have me a 90,000 character script I'll need to split apart even though I know it'll compile just fine =(
[09:42] Kelly Linden: you should split it. :-/
[09:42] Kelly Linden: we are still fighting mono version tolerance issues.
[09:42] Haravikk Mistral: k
[09:42] Kelly Linden: so I am not sure when we will be able to get this out.
[09:43] Kelly Linden: We have a new person on our team this week, but only part time while he finishes some other work.
[09:43] Liisa Runo: cake is a lie and there is no spoon
[09:43] Kaluura Boa: I guess it's not worth asking about the arrival of C#...
[09:43] Kelly Linden: yeah. not worth asking.
[09:43] Kaluura Boa: hehehe
[09:43] Pauline Darkfury: but not "never"?
[09:44] Kelly Linden: I hear mesh is moving forward though.
[09:44] Levio Serenity: hey! nice bait & switch : D
[09:44] Zep Palen: LoL
[09:44] Zep Palen: I have a question that many of you might be able to answer
[09:44] Kaluura Boa: Will there be associated LSL functions at least?
[09:44] Haravikk Mistral: It figures that meshes appear just as I finish learning to make sculpties =D
[09:44] Liisa Runo: im sure C# (or some other real language) will be here some day, too sexy to completely ignore it
[09:45] Kelly Linden: shoot zep. what do you mean kaluura
[09:45] Zep Palen: it is regarding "Home" and llTeleportAgentHome(). Wiil a resident always have a "home" set? And if not...what happens if they are teleported home by script without having a home set?
[09:45] Kelly Linden: they always have a home set
[09:45] Pauline Darkfury: they get sent to the nearest infohub, don't they?
[09:45] Haravikk Mistral: Don't they go to a telehub?
[09:45] Kaluura Boa: I don't know... At least a PRIM_TYPE_MESH added to llSLPP(F)
[09:45] Liisa Runo: they go to LL telehub
[09:45] Kelly Linden: and yeah if that region is not available they get routed to a telehub
[09:46] Kelly Linden: oh! for mesh. I'm not really sure right now. I need to talk with them about that.
[09:46] Zep Palen: ok..so anyone got a home also if they never set one
[09:46] Kelly Linden: as soon as you leave welcome island your home is set
[09:46] Liisa Runo: if you dont have ever ser a real home, your home is some telehub
[09:46] Zep Palen: good
[09:46] Liisa Runo: set*
[09:46] Qie Niangao: (I gather Meshes are handled as PRIM_TYPE_SCULPT for now, just supply the mesh's UUID instead of the sculptmap's. or something like that, if you're loading in a new one)
[09:46] Kelly Linden: if you never go to welcome island it is set before you enter the world
[09:47] Kelly Linden: Qie: I don't think so actually.
[09:47] Kelly Linden: meshes are completely separate from scultpies
[09:47] Qie Niangao: good, cuz that sounded exceedingly lame. :)
[09:47] Kelly Linden: there is a chance there is no PRIM_TYPE_MESH yet.
[09:47] Zep Palen: hmmm mesh is already a "prim" when it is uploaded right?
[09:48] Haravikk Mistral: So with this triage idea, will that raise feature requests as well, if not how will they be handled? A separate triage for features might be nice =)
[09:48] Kelly Linden: mesh actually gets a 'prim equivalent' number that may be higher than 1
[09:48] Zep Palen: but you can rez a mesh...you dont have to put it on a prim first as you do with sculpt
[09:49] Zep Palen: or?
[09:49] Kelly Linden: I will be honest, my goal for a triage is going to differ from yours, to some degree. I want to start cleaning out the items that are not feasible or bin those that are on the very long term track
[09:49] Kelly Linden: Zep: correct.
[09:50] Pauline Darkfury: surely long term issues shouldn't be binned, just put on a different pile to be revisited much later?
[09:50] Kelly Linden: we have next to 0 resources for working on scripts at this time, so a triage is not going to make new LSL features happen or drastically improve the rate that fixes come out.
[09:50] Kelly Linden: Pauline: that was my definition of binned sorry.
[09:50] Pauline Darkfury: ahh, that's fine
[09:50] Pauline Darkfury: thanks for clarifying :)
[09:50] Levio Serenity: but scripts should be fast, easy, and fun!
[09:51] Kelly Linden: I want to put them in their own pile for later, and I'ld like to if possible make it clear to residents looking at the issue that it is in a pile for 'later'
[09:51] Kelly Linden: levio: o/ of course
[09:51] Haravikk Mistral: Will new features be more feasible once C# is released (whenever that happens to be)?
[09:52] Qie Niangao: It probably behooves us to pile the shiniest ones on top, in case it entices resources to the scripting pile someday.
[09:52] Kaluura Boa: C#... X-Mas... Ask Santa... =^_^=
[09:52] Kelly Linden: C# is a new feature, still. What features exist isn't what effects the rate of adding new features. Management decisions and "resource allocations" decide that
[09:53] Kelly Linden: it is all a very simple function based on the number of employees working on it.
[09:53] Ardy Lay: Linden Lab is operating in "Good of the many" mode right now.
[09:53] Liisa Runo: lot of work for c# has already been done, if we never get it, the work was done for nothing
[09:53] Liisa Runo: Kelly has tried C# in SL and he liked it
[09:54] Pauline Darkfury: would they put resources into something which could significantly improve memory efficiency (and maybe a bit of CPU as well), such as fixed size integer arrays for LSL?
[09:54] Levio Serenity: well they can hire me, ive written dozens of parsers/interpreters
[09:54] Kaluura Boa: For the good of the many, put llParcelSay() on top of the list...
[09:54] Qie Niangao: Ardy: good point. Stuff that benefits scripters won't sell, but scripting stuff that keeps new users would sell.
[09:54] Kelly Linden: Programming C# in SL is awesome, I must say.
[09:54] Haravikk Mistral: Sorry I suppose I was a bit general, I mean really there are probably hundreds of scripting feature requests that are minor new versions of existing functions, perhaps with an additional argument, or argument in a new format, will those not be much easier to do with C# as it supports things like different method signatures etc.?
[09:54] Kelly Linden: Probably not Pauline: if we work on improving the core language we will be working on doing C#
[09:55] Kelly Linden: Haravikk: yes, many of those kinds of functions we really just do not want to even start for LSL and will have to wait for C#
[09:55] Pauline Darkfury: yup, given a choice between slightly more efficient LSL and C#, my vote is for C#
[09:56] Haravikk Mistral: I would cut off my leg in return for proper arrays, don't suppose you're in need of a spare leg Kelly? =)
[09:56] Kelly Linden: nope, I've got enough. Thanks.
[09:56] Kelly Linden: :)
[09:56] Kaluura Boa: =^_^= I'll give a leg too for arrays
[09:56] Levio Serenity: u can get a pegleg
[09:56] Pauline Darkfury: yeah, I could probably find a small bag of souls in return for arrays ;)
[09:57] Kelly Linden: arrays and hashmaps and .....
[09:57] Kelly Linden: structs.
[09:57] Liisa Runo: ....and more mem
[09:57] Haravikk Mistral: native AES =(
[09:57] Kelly Linden: my soul for structs.
[09:57] Haravikk Mistral: I coded an AES library for LSL, it was horrifying =)
[09:58] Ardy Lay: Hehe, you are not scripters, you are programmers.
[09:58] Zep Palen: some of us are both ?
[09:58] Kelly Linden: :)
[09:59] Ardy Lay: Programmers stuck with a scripting language must be an unhappy lot.
[09:59] Levio Serenity: imma super evil genius
[09:59] Kelly Linden: All right 2 min warning - any parting shots?
[09:59] Haravikk Mistral: Well I'd like VWR-20449 fixed as it's stopping me scripting easily, but I don't think that's your thing really
[09:59] Haravikk Mistral: More a viewer 2.0 issue I think
[10:00] Zep Palen: what is it Haravikk?
[10:00] Kaluura Boa: The best fix to avoid V2 bugs: Avoid V2...
[10:00] Kelly Linden: -login ? really?
[10:00] Kelly Linden: how bizarre
[10:00] Liisa Runo: or wait 3 years for v2 to get fixed
[10:00] Haravikk Mistral: If you open Second Life with the -login argument it screws up copy/paste for notecards and scripts
[10:00] Ardy Lay: V2.0.x is dead anyway. Try V2.1.2
[10:00] Kelly Linden: -login shouldn't effect available keys at all
[10:01] Kelly Linden: are you really sure it is -login?
[10:01] Levio Serenity: yea thats wacky side effect if i ever heard one
[10:01] Haravikk Mistral: Even the delete (not backspace) stops working, and it complains your home region isn't available when it is, it's the craziest bug I've encountered yet
[10:01] Kelly Linden: why are you using -login?
[10:01] Haravikk Mistral: Yeah it's the only argument I'm using atm =)
[10:01] Haravikk Mistral: So I can quickly sign in to my main and my alt
[10:01] Pauline Darkfury: Are you also using -multiple?
[10:01] Kelly Linden: wacky
[10:01] Zep Palen: yes God forbid 30 keystrokes extra ?
[10:02] Haravikk Mistral: I use huge randomly generated passwords =P
[10:02] Haravikk Mistral: Kinda niche I know but it's the most bizarre issue I've encountered in viewer 2.0, can't understand why it would break
[10:02] Kelly Linden: all right, I'm out. Thanks for coming all. I'll try and come up with a process for triage for next week.

Generated with SLog Wikifier