Powertweak-Linux

Project Home.

Project overview.

Screenshots.

Support.

Download.

CVS info.

Links.

Contact Info.

About the author.

The story so far.

During the early development of the 2.3 Linux kernel, I wrote a patch which removed a feature called "Tune PCI bridges" from kernel space, and wrote a userspace program that provided the same functionality. I extended this a little, by adding support for extra chipsets, and started work making a user interface to make options selectable.

Just before I was about to make the first release of this code (It was originally intended for inclusion in pciutils as 'tunepci') I was made aware of a Microsoft Windows program called Powertweak. It had features to tune CPU model specific registers, and more importantly (to me at the time) PCI configuration space registers. What caught my attention, was the fact that the author wanted someone to write a Linux port of this tool.

I agreed to name my program 'Powertweak Linux' in exchange for free hosting on powertweak.com, and also we exchanged some ideas. Unlike the Microsoft Windows version, it was agreed, that this port should be Opensourced, GPL'ed, and 100% free. (The Windows version was/is commercial shareware)

As time progressed, Powertweak started to grow. More features were requested by its users, and accomodating them became a more difficult task. After a dozen or so revisions, Arjan van de Ven proposed using XML for one of the features (the /proc/sys tuning). This was included, and after realising how much it had cleaned things up, it was decided that cleaning up the rest of the code was not worth the effort, and a rewrite from scratch was a better option.

Modern times.
So, after sitting down for a month or so designing what we wanted from the new code, we started hacking. 3-4 months later, the first release of the rewrite happened. 0.99.0 came out in December 2000, and stood way above the earlier code. Unlike its monolithic predecessor, we now had a plugin architecture, which allowed us to include new features without disrupting any of the other code. User interfaces would automatically notice the addition of extra plugins, load and use them without modification. Where we had code before that revolved around large obscure C structures, we now had XML description files which makes life a lot easier for adding support for new devices.

Several releases later, and we've now ironed out a lot of bugs, and added a bunch of new plugins. So far we have backends for..

  • PCI configuration space tuning.
  • Adjusting block device elevator algorithms.
  • Changing /proc/sys entries.
  • hdparm type features (Informational only right now)
  • IDE SMART status.
  • CPU Model specific register tuning
  • CPU MTRR registers (Informational only right now)

The future.
No-one knows what the future holds, but we've tried to predict it a little, and started a roadmap for various features over the next few revisions.

  • 0.99.5 - Plugin dependancies. DMI backend. Interrupt->NIC binding backend. Logging support.
  • 0.99.6 - Periodic comms between UI & daemon. Hotplug support. CPU Voltage/speed adjustment. MTRR backend.
  • 0.99.7 - Clustering support (Tweak remote systems).
Other features are also planned, but these are the highlights. These are also just a guideline, extra features may appear, possibly even earlier than predicted. Or, they may be put back.


SourceForge Logo