Measuring the User For CPU Frequency Scaling
An anonymous reader writes "The Empathic Systems Project a Northwestern University demonstrate up to 50% power savings by controlling CPU frequency scaling based upon the end user. They measure the user with eye trackers, galvanic skin response, and force sensors to find a CPU frequency that the user is satisfied with.
They are currently studying user activity and system performance on mobile architectures, specifically the Android G1 phone."
Does this mean that clicking a button multiple times and yelling at my computer will finally make my it go faster? Sweet!
I cannot imagine that, in the near future, a mobile device will draw more power by just using full processor speed than it would by having to power all those sensors and interpret their data.
# cat
Damn, my RAM is full of llamas.
Most of the drain users see today is OS bloat and Virus scan software bloat. Face it, A "fully updated" WinXP SP3 with a fully updated, modern antivirus package needs ~4 times the hardware a base WinXP (or even Win2K SP4) system would want.
Any word on how this compares to the current recieved wisdom of "when you have a job, do it as fast as possible, then go to sleep"?
I don't want to be "that guy on the internet who says it can't possibly work from the comfort of his armchair"; and I'm all for new and interesting sensor integration schemes; but this strikes me as the sort of problem that is already mostly solved with far simpler techniques.
We can already rank processes by priority, via nice or similar, and we already know a decent amount about user psychology(people hate waiting and find unresponsive interfaces enormously frustrating), and determining "what combination of speed states across time will execute this sequence of instructions with the lowest energy cost, subject to the desireability of having the results sooner rather than later?" is a solvable problem.
Can we really learn individual quirks, not covered by general rules, or is this basically a system that underclocks your phone until just before the point where your head explodes?
Way I read it, it'll just make sure it goes just fast enough to want to make you scream for real anyway. I doubt that faking screaming alone will take care of the other variables they mention. But being genuinely stressed, probably will. And they'll underclock the computer until they start seeing what they consider an acceptable level of stress, regardless of whether you're actually screaming or not.
I seriously wonder who comes up with that kind of ideas. If the user seems to actually be enjoying his experience at the computer for a change, by all means, let's start degrading his/her experience until he starts showing some stress.
And it's good 'cause you can save a few watts! At the expense of probably reducing the user's life expectancy a little due to a constant baseline of stress, not just make him enjoy that life less. But it's teh green!
How much self-hate does someone need to actually want to punish themselves to save the planet? I guess we'll soon know.
A polar bear is a cartesian bear after a coordinate transform.
What a useless study. I can tell you what system I need.
The correct CPU and frequency is currently a 100GHz 16 Core beast with 4TB of RAM. Of course I will NEED a machine that is twice as fast in 18 months.
If I were God, wouldn't I protect my churches from acts of me?
Except, this technology is NOT for computing applications, but for mobile applications - e.g., a phone.
For a phone, you do not want background processing tasks - they force the processor to stay "awake" and drain the battery very quickly. Even a simple task that wakes the CPU up every second will easily cause battery life to diminish from the 2+ weeks standby to a few days. (Take your battery capacity and divide it by the standby time - you'll find you have around 2-3mA to play with, which is just enough to maintain the radio connectivity).
Mobile processors have a technique known as DVFS - dynamic voltage and frequency scaling. The goal is to keep the voltage as low as possible (power consumed is proportional to voltage squared), which may mean you run the CPU at a lower frequency. There's a bit of overhead in switching frequencies, including having to ramp up core voltages and adjusting clocks, waiting for them to stabilize, etc.
The trick though, is to realize when the user really doesn't care for speed, and thus keep the CPU in a lower frequency (e.g., playing music), versus the user is actively doing stuff, and it would be desirable to have it finish as fast as possible (e.g., browsing the web) so while the user ponders, you can put the CPU into a low power state immediately, versus keep it at a slow clock and have the user wait. Also, you have to figure out when the user is doing something that really is requiring a lot of CPU power (playing movies), so you have to bump the speed up and hold it there, and not at the first instance of idleness, drop back down.
Basically, having this feedback ltes you find out what is going on - is the user not caring, and thus you should pick the slowest speed that'll get things done? Is the user actively engaged in the device, but the usage is bursty, so you should go into a low power state after the processing is done, or is the user doing something that requires processor, and dropping down wastes power due to overhead?
Actually, I'd say that's just the start of the problems. The next problem will be that half of anything you install nowadays, will want to preload itself or parts of itself in your tray, or install some services, or God knows what else.
And I'm not even talking proper spyware. E.g., even when I install OOo, the first thing I have to do is deactivate its preloading itself. 'Cause obviously they thought my RAM is there just so they can willy-wave about loading faster than MS Office, instead of fixing their brain-dead code to actually be fast. (Though apparently in the last release they actually did get around to optimizing a bit for a change.)
E.g., I install Sun's Java, 'course, it has to keep something in the tray just to make sure it can pester me to download the latest release I don't even want.
E.g., I install my old Audigy 4's software after moving it to another computer, and I promptly remember what I hated about its software in the first place. By default it installs a brain-dead bloated skinned second toolbar, so to speak, just in case I'm too stupid to launch its control pannels normally. And so it can get in my way when I accidentally move the mouse to its edge. It also installs stuff like its own CD/DVD detector (and launcher of the apropriate program for it), for no obvious reason, since Windows already does a perfectly good job there. It also blesses my computer with a bloated, slow loading splash screen, 'cause obviously doubling my computer's startup time is perfectly ok if it lets them shove in my face again that it runs an Audigy. Obviously my time and RAM are there just so they can advertise to me. Etc.
I'm not even singling out OOo or Java there, mind you. Lots of others do the same.
And then come the games, with their retarded DRM drivers and whatnot.
My point is that it used to be a time when you actually had to get virused or click on spyware to get half a gigabyte of your RAM full with crap. Increasingly in the last decade, you don't even need to do that. Just installing perfectly legit software can make your computer swap, if you're not savvy enough to find that crap in the registry and disable its auto-loading. Sometimes twice, because some are smart enough to re-enable themselves.
A polar bear is a cartesian bear after a coordinate transform.
You might be surprised, but a lot of commercial HPC sales are already based on flops/watt.
Lots of companies make extensive use of computational models these days, but have offices in older buildings that don't have sufficient power infrastructure. When your power supply maxes out at 50kW, flops/watt becomes more important than straight flops.
What about the commuter crowd? Driving that gas hog as much as 100 miles each way, 5 days a week, because they are to damned good to live in the neighborhoods in which they work.
In a lot of cases, the commuter crowd lives this way because the gas is cheaper than rent near work.
The trick though, is to realize when the user really doesn't care for speed, and thus keep the CPU in a lower frequency (e.g., playing music), versus the user is actively doing stuff, and it would be desirable to have it finish as fast as possible (e.g., browsing the web) so while the user ponders, you can put the CPU into a low power state immediately, versus keep it at a slow clock and have the user wait. Also, you have to figure out when the user is doing something that really is requiring a lot of CPU power (playing movies), so you have to bump the speed up and hold it there, and not at the first instance of idleness, drop back down.
Basically, having this feedback ltes you find out what is going on - is the user not caring, and thus you should pick the slowest speed that'll get things done? Is the user actively engaged in the device, but the usage is bursty, so you should go into a low power state after the processing is done, or is the user doing something that requires processor, and dropping down wastes power due to overhead?
Everything you say is true, but it makes vastly more sense to determine the amount of processor speed needed by what the device is actually being asked to do rather than trying to glean the user's mood and how that relates to required processor speed. Decoding an mp3 is a low intensity activity, and you don't need to know the user's heart rate or any nonsense like that to know you can afford to turn down the cpu frequency if that's all its being asked to do. Similarly, no matter how emotional the user is getting over the text message they are typing, the processor is still going to be sitting in its idle loop 99% of the time waiting for the next keypress so it's perfectly safe to lower the frequency there too. If they're doing something that requires a lot more processor, well, again this is obvious from the processor's point of view. And while the switches themselves are slow from the processor's point of view, they are too fast to notice from the user's point of view so it's perfectly feasible to switch from one to the other as processor load indicates.
So given that we already know how* to tune a processor's frequency to match the work being asked of it in a way that minimizes power consumption but never appears "slow" to the user, what exactly does this add? Is it for when someone starts playing a CPU intensive game on their iPhone, but isn't actually playing it? Yeah I'm sure you could save a lot of power by realizing that the user isn't in the same room as the device, so their Quake framerate really dosen't matter. So would an auto-shutoff after two minutes of no user input, and my phone already has that too.
* It's not like there's some proven ideal algorithm for it, but nevertheless existing devices do a pretty good job and are getting better.
The enemies of Democracy are