Hard Drive priority (similar to normal task priority)

I noticed that even if I set the priority of one application higher than another, if they both use the same drive (and both use the drive somewhat heavily) the first application running will keep drive priority. For instance, while defragging one partition on my EHDD (External Hard Disk Drive) if I then decide to play a video on that EHDD (whether it's the same partition or not) the video will load very slowly because (presumably) all the heads on the harddrive are focused on defragging and don't want to switch to playing videos. I've also noticed that even if I start my media player (VLC in this case) first when I'm done playing a video and start the next it's slowed (presumably because it was no longer using the disk for the brief period in between). What I want to know is if there's a way to to make my drive prioritize so say only 2 or 3 heads are dedicated to defragging (I'm assuming I have 4 heads and disc rotation isn't as much of a problem).

Any ideas?

Current Machine:HP Compaq 6910p with 4GB RAM, Core2Duo @ 2.20 GHz, Mobile Intel 965 Express Chipset Family, Avast free, Malwarebyte's free, TP-Link wireless card (as the built in card has nothing but problems with empty solutions): The card identifies as "Atheros AR922X Wireless Network Adapter". [Not the best machine but it does internet, docs, and vids, and some games (PvZ, Spore)]

No. The disk heads do not move independely of each other. You'll get terrible performance if you try to use any disk/partition while it is being defragged.

Joe

Alright, I didn't think about it that way. I suppose it would be impossible for the heads to move separately. What about a way to make one program yield to another so if VLC needs to read the disk myDefrag will wait and allow it to do so then resume when disk use is minimal. At least as far as video goes I believe a large portion of the disk access is preloading, then it works from RAM which I have plenty of (3.5 accessible on my 32-bit system). Not sure if I'd have to adjust something in my settings to optimize preloading but, it's a thought.

Current Machine:HP Compaq 6910p with 4GB RAM, Core2Duo @ 2.20 GHz, Mobile Intel 965 Express Chipset Family, Avast free, Malwarebyte's free, TP-Link wireless card (as the built in card has nothing but problems with empty solutions): The card identifies as "Atheros AR922X Wireless Network Adapter". [Not the best machine but it does internet, docs, and vids, and some games (PvZ, Spore)]

The only thing you can do is set the execution priority for each program. That does NOT mean that one preempts another. If a program of lower priority is accessing the disk a higher priority program can't stop the disk command it can make a request. Then the OS will have the higher priority command be the next. It is much easier to have disk intensive programs run at a time when nothing else is running than figuring out execution priorities.

By execution priority do just mean via task manager? In that case I suppose it'll just have to do. So you understand why I'd want to run both things at once: I have a 2TB EHDD that's in major need of defragging. Most of the opportunities I get to use the disk are opportunities I want or need to access it (Unfortunately since I share a room and have an early morning schedule it's extremely impractical to setup at night). MyDefrag doesn't give a time estimate (which is fine as I don't want it using any more power than need be) but, it could easily take 3 days straight which means a lot of stopping, waiting, and starting again.

Originally Posted by joeperez

The only thing you can do is set the execution priority for each program. That does NOT mean that one preempts another. If a program of lower priority is accessing the disk a higher priority program can't stop the disk command it can make a request. Then the OS will have the higher priority command be the next. It is much easier to have disk intensive programs run at a time when nothing else is running than figuring out execution priorities.

Joe

Current Machine:HP Compaq 6910p with 4GB RAM, Core2Duo @ 2.20 GHz, Mobile Intel 965 Express Chipset Family, Avast free, Malwarebyte's free, TP-Link wireless card (as the built in card has nothing but problems with empty solutions): The card identifies as "Atheros AR922X Wireless Network Adapter". [Not the best machine but it does internet, docs, and vids, and some games (PvZ, Spore)]

In my opinion, disk I/O programming is about the most complex aspect of modern computing. Even more complex than Ethernet stacks which is a well defined and documented architecture.

All computing is a many-layered subject of course. Typically easy to intellectually grasp in concept but with details that are mind boggling sometimes, at least for me. In this thread, once the conversation went beyond the general discussion level at which it started out, I think the dialog began to require significant understanding of disk operating prinicples, I/O commands, the machine language of the chips involved, and the internals of the O/S to be fruitful.

There is one thing I'll say with confidence as an old programmer, there is a lot going on at the lower programming layers / levels, beyond that which is apparent at ground level. This is especially true with disk defrag software where reacting to real time events plays a huge role in how the code must be written to work right and get the right things done.

My point is that it follows that there are many I/O considerations that the user has no direct or even indirect control over.

Regarding disk defrag software, just one area of concern and far from the entire scope of potential discussion, the disk defrag software itself may provide capabilities. In the case of Diskeeper, the leading 3rd party alternative to the free Windows defrag tool, there is an internal "priority" setting that would help somewhat in this scenario. With Diskeeper, one usually has it running all the time "in the background" and Diskeeper (in just one example of the low level programming I'm talking about) interrupts I/O write requests (application and O/S requests to the O/S to write a record to the disk), buffers / caches individual requests, thereby to allow fragmentation avoidance on the fly. Obviously Diskeeper must be able to intercede, even when it is running at relatively lowered priority. To explain even conceptually how this occurs would be pages of the densest reading imaginable. That is if Diskeeper would share with us which of course they won't as they have invested heavily to create this competitive differentiator.

Just an aside, and after all that I've just said, it appears that the Diskeeper priority setting only works when a batch defrag process is manually invoked. In other words, the priority of real time processes can not be altered.

Anyway, this is a very complex topic and I'm already beyond my (limited) knowledge regarding modern disk I/O programming so I need to stop typying.
Rodger

Its best to never change the task/process priority of any application. It introduces all sorts of strange behavior. Its really a troubleshooting tool that almost never gets used. At least I know of no one that uses it.

One thing I can tell you with Windows 7 is that once you get it defragged and a useable schedule setup, you'll never need to worry about again.

It is extremely rare for me to not be using my computer and since I'm mostly concerned with Defragging my 2TB External Hard Disk Drive which is far from a portable device (it requires a power outlet and it doesn't have as much shielding as a true portable hard drive) being able to do both at the same time is the only solution I can really think of. I should probably also mention that MyDefrag is a really good optimizer and not just a defrag program. The external hard drive gets a lot of use and thus fragments build rather quickly besides that I almost never have a chance to defrag it. I like to use Optimization because it takes into account where new data will written and puts the largest files in the fastest part of the disk (smaller files don't need the speed boost as much).

Current Machine:HP Compaq 6910p with 4GB RAM, Core2Duo @ 2.20 GHz, Mobile Intel 965 Express Chipset Family, Avast free, Malwarebyte's free, TP-Link wireless card (as the built in card has nothing but problems with empty solutions): The card identifies as "Atheros AR922X Wireless Network Adapter". [Not the best machine but it does internet, docs, and vids, and some games (PvZ, Spore)]

I/O priority can actually be controlled

It seems to be a little known fact, but Windows 7 does have I/O priorities, which can be set independently from the normal (CPU) priorities. I only know one program that lets you set I/O priorities by hand. It's Process Lasso (both the free and paid versions, according to their site). I must say, however, that I have tried changing those priorities a few times for processes that make many disk accesses, and the effectiveness of that measure was not very clear to me.

Thanks, I'm trying it out and I'll try to remember to post when I know how well it's working.

Originally Posted by kabluiii

It seems to be a little known fact, but Windows 7 does have I/O priorities, which can be set independently from the normal (CPU) priorities. I only know one program that lets you set I/O priorities by hand. It's Process Lasso (both the free and paid versions, according to their site). I must say, however, that I have tried changing those priorities a few times for processes that make many disk accesses, and the effectiveness of that measure was not very clear to me.

Current Machine:HP Compaq 6910p with 4GB RAM, Core2Duo @ 2.20 GHz, Mobile Intel 965 Express Chipset Family, Avast free, Malwarebyte's free, TP-Link wireless card (as the built in card has nothing but problems with empty solutions): The card identifies as "Atheros AR922X Wireless Network Adapter". [Not the best machine but it does internet, docs, and vids, and some games (PvZ, Spore)]

I realize the actual scripting capabilities of MyDefrag may also offer a solution but I'd rather just let the script work as it wants while placing restrictions on the outside. The reason I say this is because 1.) I like the default scripts and don't want to screw them up and 2.) I don't know nearly enough about the internal operation of my disk to write such a script (I know the basics and the theories).

That being said: I have been trying the processLasso program kabluiii mentioned before and with very little configuration I've actually noticed a difference in responsiveness (I've been having issues with responsiveness in general lately but I just figured it was time to reformat and get rid of the old/extra crap).

I should also mention that the drive I was defragging just broke. The USB connector within the drive actually snapped and I'm currently looking to see what kind of support I can get (and I better get support since I paid an extra $10 for the extended warrenty). With any luck I'll be able to get all my data back (I really hope so since a few hundred Gigs was backup data and installers I'd rather not try to replace including my copy of Windows 7 Pro 32-bit installer and a couple versions of XP).

Originally Posted by joeperez

Rather than messing around with the OS, you should check out the scripting capabilities of MyDefrag. See MyDefrag scripts.

Joe

Current Machine:HP Compaq 6910p with 4GB RAM, Core2Duo @ 2.20 GHz, Mobile Intel 965 Express Chipset Family, Avast free, Malwarebyte's free, TP-Link wireless card (as the built in card has nothing but problems with empty solutions): The card identifies as "Atheros AR922X Wireless Network Adapter". [Not the best machine but it does internet, docs, and vids, and some games (PvZ, Spore)]

You just need to add the "slowdown" command to any script. Check the command in their online documentation. IMO, you are much better off using tools within a program such as MyDefrag that using an external tool such as Process Lasso. Often, external tools that manipulate OS settings are designed to be debugging tools.