Some questions and comments:
(1) How can I disable the reapplication check of rules? If I manually override a rule, I assume that I have a good reason for doing so. There does not seem any way to disable this feature. In general, the rules are applied at process creation. Beyond that, I want the ability to override them for the remaining existence of the process. The best I can do, at this point, is just set the interval to 60 minutes.
(2) Another thing I notice different from the version I am using. This version seems unable to remember the dimensions of the main window from the last time it was open. So, you must keep maximizing it or resizing it. I like the ability to set the size once and not worry anymore about it.
(3) I see you added a feature to provide for different priorities and affinities depending on whether the Window is minimized or not. I consider this a valuable feature in the sense it allows someone to build a scheme where all background processing (minimized) goes to a specific processor(s) and all foreground processing goes someplace else. This in effect simulates something which we commonly used on mini-computers and main-frames called batch queues. Of course, besides allocating separate resources for non-interactive jobs, batch queues also facilitated the serializing of jobs. None the less, you open up some interesting possibilities here of usage.
(4) I had previously proposed to you allowing the setting of affinity/priority based on whether a Window had focus. The above scheme you have requires a user to almost conciously demote a task by minimizing it. Since the natural way of working in Windows (unlike UNIX) is to conciously select a window and give it focus, I think there is some value in detecting this and allowing the process to be adjusted based on that. Effectively, priority/affinity can be given to anything which a user activates. This prevents compute intensive applications from hogging the CPU when they are not of immediate interest. Also, it allows for in a very CPU loaded environment for good response to be guaranteed to certain applications when they are needed. For example, one might guarantee fast response to an email program, text editor, or word processor. Of course, a way to do this, independent of BPM is simply to boost the priority of such applications above normal. Assuming they are well behaved, then when the user does not interact with them, they use hardly any CPU. However, when the user is interacting with them they take precedence over anything else which is placing a load on the machine. Of course, if you allowed BPM to detect the focus state of the window, then one could fine tune applications which are not necessarily well behaved. For example, say applications like meta-refreshing or active content Web sites or a financial market watching applications inefficiently running in JAVA.
(5) Although I don't see myself using the Automatic Priority feature, I could have found this to be very useful in the past. Particularly when I only had a single processor. Occassionally, a Web browser or Email application would go rogue and consume 100% of the CPU making it very hard even with Task Manager to regain control. BPM would have at least dealt with the rogue application and made it easier to get control. I don't think I need this feature that much with four processors, since I have potential rogue applications or busy loop games on running on P2 or P4. Most of the O/S is on P1. I have BPM and TM set to run on P3 which has free CPU and very few things assigned at HIGH. Thus, BPM always has CPU to operate and TM always has CPU for me to get into address any issues with a rogue process. But I wish I had this feature when I was running a standard Pentium 4 2.53GHz chip!
(6) Learning mode does look quite useful. I could see this being really handy after doing some installs and running something new. No need to hunt for the new processes by looking for processes lacking rules. Nice! However, what does BPM do about certain system processes in learning mode that refuse to permit rules to be created (like security related applications like Symantec's Norton Anti-Virus)?
(7) I am a little confused by the Normal/Minimized handling. Does Normal simply take precedence if no Minimized options are defined? Will Normal then take precedence in all cases? I just tested and it does. That's good, since it makes it easier if the distinction is pointless and also it makes the newer version backward compatible with what I am running!
8 I see that you have added a lot of special actions. Effectively you have greatly enhanced the functionality of the Windows Task Scheduler. In general, I have built sequences of applications and background management scripts for certain things using a third party windows scripting language called WinBatch (see www.winbatch.com).
However, I see BPM providing such capabilities in a less general purpose sense. Although being less powerful, it is certainly easier to use for a non-technical user seeking to sequence a few programs. For example, maybe something like: defragmentation run, spyware scan, virus scan, and then a backup run. Such a sequence could be done with BPM either detecting the creation/destruction of various processes or the particular process (if always resident) going to idle.
(9) I like the performance graphs.
(10) I am pleased to see that despite all this new functionality, the performance load of BPM is insignificant. Very nice!
(11) I think when PCs really go to 32 processors that you'll have to start thinking of allowing users to define processor groups. It is going to start to become too inconvenient to have to deal with individual processors.
I have been testing this on my laptop which is from 2004 and has a HT CPU which looks like two processors, but really is just a single processor.
I think the only issues I have that I would really like to see resolved before upgrading are #1 and #2. Please
One final comment, I see that BPM is gaining many additional features. On one hand, it is becomming a much more powerful tool. On the other hand, I think as the features become more sophisticated the chance of their use becomes less likely. In essence, they begin to surpass the needs of most users, but for IT power user types.
As you evolve BPM, you can continue to add many esoteric features which touch on other aspects of Windows like: scripting, task scheduler, task manager process display, and services .... or .... you can focus on the initial core premise behind BPM which was the ability to allow the user to realize the full potential of their multi-core system despite the fact XP/Vista/Win7 do little to support such hardware. For example, in the past, we had discussed building an automatic profiler which would after a week of monitoring attempt to build a profile that would maximize the throughput and/or response time. Think of BPM behaving somewhat like a disk defragmentor, but instead of defragmenting disks, it would defragment processing behavior.
Well, this is certainly a long post. I hope it gives you some useful ideas.
Thanks again for your most excellent utility, BPM!