 afternoon on Wacken the droids thank you so I stole the title from John Corbett he doesn't seem too upset about it yet anyway this isn't I'd been actually very happily ignoring this is send locker debate for about a year and a half actually and was prepared to ignore it indefinitely actually but we IBM joined this consortium called in our which is interested in Linux and ARM and of course Android uses Linux kernel it runs mostly on ARM and so I figured that I had to end my self-imposed isolation from it and and all I can say is like it says there you know this is a really small thing to cause so much trouble I mean if you look at LKML there's been there were flame wars in late 2009 and early 2009 and in 2010 multiple of them it was and without any real seeming resolution or forward progress of any kind but I guess these days I mean my in my day to cause any trouble all you had to have a room full of equipment when I was younger and I guess today you know big trouble come in small packages I think I presented this before but I think it really bears repeating especially when you think in terms of the Android experience how many people of know what the parable of the six penguins in the elephant is again we got one okay very good so as I've said before in this forum I'm actually a recovering proprietary program programmer I was actually doing a little bit proprietary programming my first year or so at IBM and before that it was almost all proprietary programs so I can really identify with this guy here you know so he's got this thing he knows exactly what it is he knows the requirements he knows what he has to do he's gonna get it done on time under budget on schedule no problem there he is he's got the problem solved and the problem is sooner or later sooner or later the rest of the problem is gonna make itself known and when that happens it might be painful for both the penguin and the elephant and I've been there I mean I've lived that in 1996 I thought I knew everything there was to know about RCU and in the last 10 years I've proven myself pretty thoroughly wrong now the thing is this may be somewhat controversial for some of the people but I'm here to tell you that open source programmers aren't any smarter than proprietary programmers I'm not any smarter for being part of the Linux community in fact you know look at my hair color right as this is correlated with the quickly moving brain cells so there just is confused you can see they're all over the elephant they got different ideas of what's going on but there's one really critical difference one really critical difference between the proprietary and the open source experience these guys are going to get together and when they do it's gonna be just another day on a linear mailing list we've all seen these I've participated in a few the saving grace is that sometimes not always not always sometimes what happens is they actually listen to each other as well as talking and they achieve consensus and sometimes that consensus actually has some relation to what what real is going on a reality when that happens they can cover the solution that really works for the entire elephant and if I hit the right thing and kept it there we would be on the same slide throughout and sometimes it's happened quite often really we've had things that work really well we've had cases where a single mechanism worked for mainframes doing virtualization and also for battery held battery powered handhelds dynamic ticks for example there's been a number of things like that where a single technical solution survived served a very surprising range of different users in different environments the problem is with some of the Android features we seem to be really stuck right there you know year and a half two years and there's not really been any progress they're still yelling a little bit you know there's been a little bit of movement I suppose but it seemed that maybe it'd be worthwhile to try to dig in and see what was going on so we'll talk about how to go about this I'm going to ask a question to kind of get things started we're going to talk about there's a lot of different kinds of flame wars and if you want to try to get requirements for a flamethrower which is what I was trying to do there's this flamethrower I wasn't even sure what the heck the Andrew guys wanted all right and other people didn't seem to be understand either and so the idea was to go through and try to figure that out but you need to choose which flame where you pick you understand what you're trying to do you need to do a bunch of homework then you need to actually analyze the flamethrower we'll have some example passages take from the flamethrower I'm not going to identify the people there are some people that are closely associated with the litnics confey you that do this very well I'm not one of them so I'll just stick with the text and let you figure out the Google if you really care you use a Google right and then some lessons I learned in going through this any answers why the heck do people flame what are they doing that for in the first place because it's fun okay any others I didn't quite hear that an evolutionary trait that could be I never really thought of it that way I mean he any care you guess as to how that would help male aggression I mean male aggression okay verbal male aggression I thought it was a female or more verbal actually but I'll bounty your knowledge on that we got the he's he gets first the answer is so obvious and yet you don't get it it's answers so obvious and you don't get it yeah I think that fits in with that last cartoon there with them screaming each other yeah that's true people just promoting their own baby people voting their own baby we will get to you we'll get to you it's it's maybe they've been working in in a particular area for a while and some newbie has just posted a giant patch set that completely changes everything and change so many different mistakes so old versus new kind of thing yeah a little bit of contention with old versus new of course I don't know anything about that it's much easier to insult someone when they can't directly punch you in the face it's certainly safer I'll agree with that yeah it's much safer so you want people much more likely to do it it was a slight tendency any others so what I did was I actually posed this question face-to-face with somebody who grew nameless but now it is quite adept at flaming let's just put it that way his answer was to make people go away in other words and it's fairly closely related to several people's things there when when it got to the point in conversation where he couldn't see a way to resolve things but he wanted to start getting work done again he start flaming so they go away and he could do whatever he's gonna do for good or for bad so that was that was you know from the from the flamers mouth take it or leave it so the first thing you got to be careful of if you want to go and look at a flame war and try to see what technical realities might be behind the flamage you want to choose the flame war you have to be kind of careful about this if the flame war has only been going on for a couple hours you're gonna have to know quite a bit to have a chance of doing something in time because if it's only a last for two hours you have to go do it go spend a week studying it'll be over before you do that and then that might be useful later but it's not help with that particular flame war in addition it you're gonna have to study a lot you have to know quite a bit about you have people reacted real time to what people are saying and that takes quite a bit knowledge and skill on the other hand if the flame war is going in going on for a long time you might make quite a bit of progress just by stating the participants positions in a neutral tone and also if the flame war is two years old and it's gonna see you spend a couple weeks studying so what right the time spent studying ends up being negligible and it took me a few weeks to go through things we'll talk about that a little bit later but again it was it may be recurring to go on for a long time and so going and spending that time wasn't a problem it was really obvious when I took a look at the messages that people were talking past each other they had no we idea what each other was trying to do or what each other was trying to say and the more that's happening the more you have a flame where people are screaming past each other the more help they need of course you can't expect them to welcome the help all right there's a you know what's a saying as the paradoxical amendments is actually there's a really cute set of 10 things this guy came up with one of them is people really need help but may attack you if you help them help them anyway and so what that means is that you're gonna need a thick skin okay yeah I've looked on eBay but I don't know where to buy a thick skin worked on a big don't know if I buy a thick skin where where I get one where do you get one one really good way to do it I think would be to hang on Ella out on L came out for a while I don't know it's I've I guess it's I've my things my skin's got thicker over the years so maybe when your hair is same colors my mine is you'll be in great shape so know your goals what are you trying to achieve why are you even bothering why why not just let them flame each other and get your work done if your goal is to have fun you're probably just being another flamer there's not necessarily anything oh go ahead not necessarily wrong with that but that's not the subject of this talk flaming for fun and profit I'll leave to others yeah but you might but you might be a better flamer might be a better flamer that's true how do you rate flamers so the so so it's a number of quotes of the news and that's okay very good we have the down here please where you get this guy is his exercise he's young he can handle it well the obvious answers scoville units the measure of temperature of chilies yeah scoville units okay all right so if you have a quarter million scoville units so that's a quarter power flame okay so the things I can imagine these are the goals I can imagine would be reasonable so having fun I don't have a problem having fun I don't really have a problem people flaming actually as long as as long as it's not something that's causing trouble I suppose as long as they aren't flaming people who don't want to be flamed one thing is just learning more about it maybe the topic is of interest and and it's some excitement about it and maybe learning more about it would be a good thing might be you want to understand the positions of the various flamers you might want to present a neutral view of one of the positions you know it's not unusual that somebody who's flaming is their own worst enemy they're they're talking about what a position that might be reasonable but you read this email your skin crawls every time they say something you agree with right and so sometimes just taking a stating it in a neutral tone can do wonders you might want to advocate for one of the positions of course doing that and not flaming is a challenge but you know what's life without a challenge you might want to present a neutral view of all of the positions I've done that a few times in the long past and it often can produce quite a bit of progress you might want to present a neutral view of the positions along with a critique of each and this does take more skill in the previous one people might not react as well to critiques as they might and you might really want to go the full distance and propose a solution that actually satisfies all what participants needs and goals and wants but sometimes just presenting a neutral view of all the positions will get somebody else to figure this out somebody who's been involved in and understands it much better than than I would say coming as an outsider in this case though what I was trying to do was present a neutral view of one of the positions namely the android ones position because I didn't know what the heck they were looking for and from the email didn't like anybody else did either you have to do your homework and again the shorter the flame or the quickly more quickly you have to do this homework in my case I was lucky I had a few weeks if I could spend to do that and what prompted this actually again was joining Lenaro and so suddenly I had to pay attention it was Linux and arm textbooks are good if they if there are any that apply if it's something that's cut and dried and it might be in a textbook there's probably not much flaming going on about it but it can happen data sheets and technical websites can be really helpful see what the stuff with technology is really doing a lot of time the flaming involves misconceptions about the technology and sometimes throwing out a few hard facts can call the flames and get a solution the axe grinding it's usually not helpful to point out the axe grinding that just gets people more upset but sometimes it's helpful to understand what axis there are and how they might be in ground so that you can present a neutral view despite that then it's time to read the flame war this takes a long time I probably spent time 10 times as long reading each message as it did for the guy to write it it's kind of a thing like okay I know this person I know they're reasonably intelligent what on earth caused them to write this okay or this other thing was so obvious it looks like it matches this guy's are against it what what's going on here what what I would what I do when you do that you have to keep some notes you have to do some paperwork so sometimes you look at this and why is this guy saying this well there might be two or three reasons that may sound stupid but write him down write him down because you can keep a list of that and then you see a message later and you go back and refer to that and if you keep that in a small area can help you over a period of messages build up an idea of what this guy's really thinking what he might understand you don't what he may be missing that would help resolve the problem so another thing is to keep a written log of the technical content in other words you come across a message that's pulling in something new keep a URL to it write it down somewhere so you can find it again later these flameless will go for hundreds and sometimes thousands of messages and so having to go in and find this one message there was something that oh I see there's something that was this where the heck is it you know being able to writing that down and keeping a track of it is is good and avoid taking sides which is always harder than a looks but it's important I didn't find any data sheets or textbooks but there were some of the narrow folks that really brought me up to speed on how different embedded is we'll talk about that a little bit later a few slides later but this is not your father's server this is not your father's desktop this is not your father's laptop this stuff is different data sheets were helpful as well as a number of elevian write-ups I'm gonna have a slide that just list them out which the slides that will be put up I don't know if I can read them here and of course read the flame war messages I think I ended up with about 1600 lines of commentary that I wrote based on the messages and so there were a lot of messages there been a lot of flaming and that's not counting the actual requirements I was writing down along the way and looking through slide set later this is a place to get some background information on this whole thing so it turned out I had some relevant experience that I hadn't expected this energy efficiency I'm not gonna go through and detail what this is but we thought we had dyentic idle set up so that the kernel worked really well in other words the CPU goes idle it goes in dyentic idle mode there's no schedule clock interrupts and go into deep sleep and everybody's happy and I thought that until early last year early 2010 and I got a rather angry call this guy was really upset he's working on a project he didn't want everybody to know about so he called me on my phone rather than emailing or anything like that he was really angry about how RCU is burning his battery life this is after we put everything asleep and we you know went through all this idleness stuff and everything and he still was upset to see that we'll go through a little bit of a diagram of what's happening so we have two CPUs he had a dual core handheld battery power device so we've got the first CPU on the top and on the bottom time is advancing from left to right facing the screen so what happened is that CPU zero would get done with doing it's doing the red boxes are with where the CPU is actually actively doing something green is where it's in dyentic idle with the CPU presumably powered off and so green is good here and what was happening is CPU one would go along and do something and then it would get to this point it would be done processing but it had some RCU work left to do so stay alive for a couple ticks it's yellow here it's not really doing much but it but it's having to take the schedule clock interrupts to get the DRCU do artwork done and only here would it finally turn the second CPU off this guy was upset for a few milliseconds of extra processing happening every once in a while this was reducing his battery life these guys you know the old thing about the performance benchmarkers killing for 5% well these guys will kill for 5% battery life they get 5% more battery life they'll do amazing things to get that and his argument was look RCU is not doing anything anywhere so you know you're an American for Christ's sake act you don't laterally and just shut everything off like this that's what he wanted so he wants as soon as this thing you want this thing to figure out that nothing was happening on their CPU therefore it can immediately figure that out and shut everything down and not and not keep the CPU alive for the extra little while so I actually did that he never did test it but some other people did thankfully and that was there but that was kind of a first hint that you know I've been doing servers for a long time and we now have energy efficiency is a hard requirement but the guys in the battery-powered embedded arena don't merely have energy efficiency as a hard requirement they have energy efficiency as a fundamentalist religion okay so if you're doing servers laptops off the desktop you may think you understand energy efficiency you don't I'm sorry you don't all right if you think you do you don't too bad here's kind of an idea of what they're up against you might have an embedded you have server might be a hundred watts per socket full bore low power maybe 10 walks if you have an extreme low power server you might get down to two watts per socket and this will be decreasing over time that's kind of a snapshot a little bit ago high power embedded embedded running full power with a fairly hefty CPU might be 500 milliwatts so as you can see where a couple orders of magnitude below the the server more than two hours of magnitude below the high power server at this point if you have in low power mode the CPU is still running but not doing much 20 milliwatts and the thing is a lot of these devices have a battery lifetime requirement that implies an average power consumption of 500 micro watts which is a lot smaller than 20 milliwatts and really a lot smaller than 500 milliwatts okay so they're making this thing operate is doing useful work an mp3 player for example is going to be playing music while using three orders of magnitude less energy than the CPU would if running full bore how do they do that they may know yeah we need to give them a microphone sorry I shouldn't say yeah so fast sorry about that the key words average I assume it means it's got to leap into life and do something and then sleep again yep so that's exactly right but it's that but it's actually playing music the whole time yeah you end up needing to turn off a lot more than just the CPU as well there's a whole bunch of buses a whole bunch of other stuff on that ship that can be pretty power hungry so you need to turn them off as well which can be tricky oh yeah okay and then let's let's take a look okay so we got a bunch of stuff all the all the little boxes there are things that will be powered independently and on a typical system on a ship there'll be maybe 20 30 40 different chunks of electronics and we powered down individually as a gentleman here said actually doing that and having the things still be alive when you're dead when you're done can be tricky but you can do it and that's what these guys do so the trick is that people here understand how many people don't how many people understand what scattergathered EMA is okay so what it is is that you is we had device instead of just saying DMA from here to this place on the disc you give it a big list of things to do you know from here to here put it over there from here to put over there and you just give a big list and the device sucks it up and and spews it all out and allows you to get a lot more IO done without having to copy stuff back and forth in memory or without having to have separate IOs for each one these guys take it a step further they had a time component to that DMA from here to here right now next thing in list in 500 milliseconds DMA from here to here 500 milliseconds after that DMA from here to here the thing is the CPU doesn't have to be around at all for that to happen so they can have the if they're playing back MP3 they could have the memory actually containing the MP3 data powered up the other four three banks powered down the audio powered up because it's actually playing and they could have the antenna in case it's also a cell phone and you want to get in coming call the CPU is powered down the vector unit as well the cache SRAMs have been flushed to memory and powered down any memory that's in the three banks has been pushed out to flash which is also powered down the display in the backlighter turned off so the reason that it can average so much less than the CPU is the CPU is not doing anything we actually have hardware assist doing these DMAs periodically so what happens if we look at what's gonna what's going to happen as we go forward through time this is kind of just shows the data flowing through the system from flash the CPU is gonna wake up maybe decode it throw it in DRAM that decode may be hardware but let's assume we got a stupid one then the CPU sets up the copy and then once the copy goes it just pushes it out to the speakers if you have MP3 decode the CPU will be powered down for minutes up to about three minutes I think is what you get with high-end devices just totally powered off the thing will be playing music that whole time it'll wake up dump the rest of the data in turn yourself off and keep going so the power would look like this so we have time going from left to right and power consumption going up so we would load the buffer we would be putting memory in that first chunk of memory in bank zero and then we would go and power the power things down we'd wait for a while then we'd have to load the buffer again and then again load the buffer so what are the green bars signify there starting into a song no not quite that's a good guess but not starting into the song we're gonna get this guy some exercise all right up the stairs good show effectively the power latency around the CPU you need to power up the CPU before you can use it and then get all the work done before you shut it off again it takes the energy to turn the CPU on and off exactly so we're gonna load things up and then we're gonna we're gonna take and flush out the caches turn the memory off flush thing is disk turn things off and that takes consumes power and then we're gonna power things up to do it the next little round that's consumes power again and so on exactly so let's suppose that we got this guy with a smartphone and he works for in for sound pollution so he's going around with a little microphone and checking to see if the workplace is sufficiently quiet to be meet regulations but he also wants to listen music when he's doing this and let's say that I was just going the opposite direction right you have music playing from the flash into his ears and you got a microphone that's picking stuff up and dumping into flash so it's just audio stuff going both directions and they're both heavily optimized all right so we've got reading and decoding and playing music and we've got hearing the coming through the microphone and coding that and putting out to flash in the other direction what's the problem here what's wrong we'll get him suboptimal with the power up and off again rather than batching exactly we aren't batching the stuff we could what we really want to do is what's shown here we want to turn the CPU on we want to get our money's worth turn the CPU on process the output also process the input turn it off and then keep the intervals where we have CPU off as long as possible what this means is that power efficiency is a system-wide attribute it's not just an application if you take an application to make it power efficient that's okay but if you combine it with another power efficient application as we saw you might have something inefficient so in some sense it's more challenging than performance programming for parallelism if you take and paralyze a couple of programs around together it'll probably do something reasonable in this case we can see it's not okay but so what this all means is there's a lot of stuff you have to worry about in in the power battery power embedded you don't in servers and that there's a lot of information you have to pay attention to of course that doesn't mean the Android guys are always right it just means that there's some more things you have to keep that I had to keep in mind than from my experience when evaluating it okay so let's take a look at a few snippets from the flame war we'll go through and let's see we can analyze them let's start with that one I don't think x86 is relevant anyway it doesn't suspend and resume anywhere near fast enough for this to be usable my laptop still takes several seconds to suspend it's a Lenovo T 500 and resume aside from some users face busting takes the same amount of time that's quick enough for manuals to spend I hate to try it for auto suspend okay so this is an argument against why this the Android stuff is useless for laptop any assumptions there any things that you need to keep track of get the microphone over there please his entire argument is based on x86 and that's that x86 was never designed for power efficiency or fast shut up and speed up and shut down mm-hmm we got one down here please depending on how you look at it neither was arm arm was a desktop chip it just happened to be a rather nice one to convert for power use there's also particularly on older ones the 500 pulling you enough not to have it but lighting a screen takes time especially if it's a fluoro lit mm-hmm okay up there and then we'll catch in the back there so he's he's basing his his assumption on on that there's something in the system that's slowing down suspend maybe user space for example and so he's basing his assumption on that user space will never be fixed user space will never suspend fast and so there's no point in actually fixing the kernel itself mm-hmm that's certainly and think there we we had the gentle in the middle here was well okay whichever it also assumes that the full suspended resume as implemented on the x86 is the most power efficient you could use C states or something else would be similar perhaps more similar to what's usable for the art for the Android okay so depending on the hardware you might have different strategies that are gonna be there the gentleman in green in the middle there I see some requirements of they're expecting this suspended resume to be under seconds so I would be pulling something like that as a requirement mm-hmm well so those are some good points one key thing is that they're assuming with an Android the suspend is very quick it's noticeable you can see it but it happens sub-second and they're assuming that if you were to apply this to a desktop or server you'd be using suspend and resume for the same thing that you're using it for an Android and that might be true but maybe there'd be other things you might use it for let's try another one there is no solution besides suspend blockers I kept the misspelling it was too much fun there is no solution besides suspend blockers that's a good point yes a good question what was the problem yeah I fundamentally that the author I'm gonna say he in a bold assumption has assumed that their problem is the lack of suspend blockers mm-hmm and that point of view yep yeah I've not thought of anything else besides suspend blockers there must not be anything else solutions to the problem already exist this was something by somebody who didn't like the Android approach was saying we can order you know essentially outside of Android we have solutions to this problem I think the part of the common the sentence they haven't finished there is and I've already told you what they are yeah showed up in other messages right it's again a question of yeah are we talking about same problem and secondly is an implicit assumption that we have the best solution already yeah the solution is adequate for everybody it's good for me so it should be good for you right yeah he believes he understands the problem and yeah who knows maybe he does maybe he doesn't I certainly didn't understand the problem before I started I was going through there I still don't see how blocking applications will cause missed wake-ups and anything but a buggy application at worst and even those will eventually get the event when they unblock so this is by somebody who does again doesn't like the Android approach so go ahead therefore obviously you're not as smart as I am that's certainly a lot of these isn't it if the one thing is a guy he says it's buggy well what's buggy mean okay I mean if I have an application that gets a segful is that buggy well it might or might not be depending on what the application is trying to do you know it's one way of measuring how much memory I've got already is go to like out of segful and the other thing is is it really okay for the event to be delayed how long can it be delayed what can the application tolerate so again it's kind of do they understand the problem so I think we've gotten the general gist of these are some more that in here but just some things that kind of get on me when I was going through this it's not enough to listen to what the people say all right as and we and I think you guys understand that from your picking apart the various messages you have to you have to work the thing requires the work is to understand what they're thinking what's behind the words and to do that you're really going to have to understand the technology because what we were seeing in a lot of these was guys who'd lived in server and guys who'd lived in battery embedded just talking past each other because they didn't have a neither of them understood what the forces acting in the other guys arena were and the thing is is that that you'd expect that to be a fair amount of work because if understanding the whole problem is easy there probably wouldn't be a flame war to start with they would already understand it these are not stupid people okay we may be making fun of them but these guys are not stupid all right and the other thing is that if somebody strongly opposed something they're probably not going to think much about ways to make it work they're not likely to come up with the use case requiring that thing they don't like and there also might not be real happy if somebody else comes up with a use case for it so there's bound to be a little resistance and the same thing happens for the exactly same thing in the opposite for the guy that's wedded to a solution they aren't going to think of a different solution and they aren't be happy if somebody points up a different solution so I did come up with a reasonable set of wake locks I published a mail came out and triggered another weeks-long flame war during which time I refined the requirements and I think I've got something more or less right I've there's a I'll show a quick look at them I ended up with 18 requirements too nice to haves and three non requirements and a lot of those were things I would not have guessed upfront at this point one of at this point it seems like wake locks are actually likely to have server deck desktop uses there's something called a RTC a real-time clock and all the x86 boxes I see around here this thing is a timer it runs even when the box is powered off so you shut down your your laptop your desktop your your PC whatever it is and there's a little clock that goes and you can make that thing wake the system up even if it's powered off and if things been powered down it'll boot it if it's been suspended it'll wake it up it'll resume it so there's a guy I work with I was wondering well okay what would you use I always got people saying you can't use this as an Android when well what could you use it for I was coming up empty I couldn't think of any use it for myself but a guy where I worked with will says well you know I got the server at home and I really I'm really worried about my carbon footprint so I wanted to shut down if I'm not using it but I don't need to shut down in a second if it's easy you know after 15 minutes of disuse is okay if it turns itself off and if it takes a minute or so to do that's fine but I wanted to its backups at three in the morning whether it's turned on or not I wanted to wake up and do its backups and then only when its backups are done go to sleep and if I start using it I want to wake up and if it takes a second or so to wake up that's fine you know I don't expect it to be my cell phone so there might there might be some more information on this forthcoming I think he's gonna submit an article somewhere another benefit it hasn't shown up yet but I think it'll be showing up soon and who knows if this is actually compelling use case he's excited about it okay but but he's one guy I can imagine that things like that might be important but we'll see and another thing is that if somebody does a solution based on what he wants to do he's done some things with making what he's done so far is he's got some patches that are on the way to mainline so you can use the normal POSIX clock functions you can sort of set a wake-up timer as you normally would and have it happen in contrast without those patches you have to know which hardware you're dealing with and you write to a hardware register and that means you have two different applications I want to wake this thing up at a different time well last guy to write wins and so that means so things like like myth TV use this but if you have myth TV plus your backups they they get in a fight and they both lose so now this will have some I think it'll have some good use cases maybe it'll mean the wakelocks are needed maybe not and if even if they are it's going to be an interesting question as to whether the solution you'd get by doing this work would actually satisfy the Android guys there is some PMQS functionality under development Raphael Weissachie and Alan Stern have been big working on this and it's not clear that it's actually going to do with the Android guys need but it looks like it will make it so that the Android drivers can hit mainline which would be quite important that'd be a big step forward so I mean legal sponsor that page and more questions well if not whoa okay so just for everybody playing along who may not be as familiar with the actual flame wall that I mean because we all came along we know that there's been an Android flame wall but we know it's about these things called wakelocks but just a quick precess of of Android's position what they actually want okay yeah what I should do is kind of show what a quick thing of if I can get my so they what they do is they split applications are two types they have power oblivious applications which are things that were just written for the old-style PCs that just do something and don't care about power which are most of them and then they have some that are PM driving in other words if you have it if you start that download in the Android and the download doesn't take too long what it'll do is will continue the download and keep the system awake even though it would normally without the download of shut it off and then when the download finishes it shuts it off or if it times download off is taking long little so that's a PM driving one one that an application that can control the power state of the whole device keep it on when it otherwise go off shut it off whatever power optimized applications are kind of like that microphone thing where it where they work together and make sure that they they work well and then we're not worried about the rest of us not that important the questions I'm going to worry about too much at this point obviously they wanted energy efficiency that's the whole reason for being they want to allow power oblivious opera applications to run on their platform their view is that people when they write things aren't going to do the right thing with power it's energy efficiency it's new thing and most people don't know what what to do but they want people to be able to write those they want phone users to be able to use them but they want them to not destroy the battery okay so this is the part that gets the Lynch community upset what they want to do is even if one of those is runnable if there aren't any of the power optimum power driving up to my applications running they want to just spend it they want to spend itself and then if something happens an incoming call somebody set a timer that goes off or you hit a hit a button that wakes it up they wanted to unsuspect wake itself up and then those things keep running so the standard application like that might be something just updates your screen okay or just tells you you know for example just here you are right now and then if you let the display go off well obviously you aren't looking at us there's no point in running it that kind of a that logic I just gave is not is it best an acquired taste in some circles okay and I'm not going to go through all of them but you can look them up but there's just various levels of detail on what you do in various situations things about if you're getting ready to power down and an event comes up how do you make it so that it stays awake and doesn't just go to sleep immediately before it hands things off if you have an event that's supposed to go to a power oblivious thing what do you do you don't want the thing to stack up in the kernel they they handle that and number of things like that it's please feel free to take a look at the document and if you see something funny or these improvement please let me know yeah so has anyone outside someone outside the image space done any work using doing more low-level analysis of bigger things laptops desktops big hulking servers and the wake-ups there I mean power tops one sort of thing but it's got issues and it sort of seemed that it came out people fixed a bunch of things and now genomes back to waking up hundreds of times a second so there's definitely two different schools of thought the Android school of thought is that we want to tolerate applications that aren't really very power optimized the power top school of thought is if there's something application misbehaving let's fix it and until it's fixed well the batteries are gonna gonna have problems and it's it's gonna be interesting to see what whether there's you know what kind of common ground shows up between those two but your point I hadn't realized that no one was back to waking things up hundred times a second okay okay well Android guys would jump on that as evidence for their position and the power top guys who jump on that is for the people should be more careful I'll let them fight for the moment anyway if there are more questions Paul thank you very much indeed in appreciation of your magnificent talk thank you a little gift and a miniature of the one that was handed out each morning together for Paul