Interstellar Posted December 15, 2011 Posted December 15, 2011 Got a technical challenge for you guys. Basically I want to improve the way the CPU freq on my machine dynamically changes, because the on demand governor is quite frankly, ****. Even when I tweak the options or use cpufreqd it still doesn't run how I want it to. How easy would it be to code a plugin that does the following: 1. Polls each core for it's utilisation. So if I quad core is at 50% load on core 0, but cores 1-3 are at 0% then clearly core 0 needs to speed up, not the others. And if someone has a Thurban based AMD chip then it even scales voltage per core, not just frequency! 2. Polls specific processes (shfs, afpd, etc) for CPU usage above 10% -> I have benchmarks that show improvements to the performance of the transfers all the way up to 3.2Ghz! 3. Combines this into changing CPU frequency in steps, like: So if the CPU goes to 100% and stays there for 3 polls it moves up to the next C-state, if it's still at 100% after 3 polls, jumps another one.. etc. Until it reaches frequency equilibrium. Then it has to wait for 5 polls before it clocks down to the next C-state, etc. Is this possible? And before people say keep it in performance mode: there is a 15-20W difference between 3.2Ghz and 1.3V and 800Mhz and 0.8V... Combine this with k10ctl and anyone with a k10 chip can make a turbo boost mode for themselves. So if two of my cores are utilised and the other two are idle I can set cores 0 & 1 to 3.6GHz instead of nominal 3.2Ghz for a little extra boost for single threaded apps (again SHFS benefits from this increase - albeit not much). And another benefit would be if I was running a parity check I could force the CPU to 2GHz and a tad above stock voltage during this critical process..
Interstellar Posted December 20, 2011 Author Posted December 20, 2011 Anyone? The on demand governor is ****. Edit: Hmm conservative governor might solve half my issues here...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.