Need a meant time to wait for i/o control as we add more cores

Started by MickeyG, January 27, 2010, 02:13:10 PM

Previous topic - Next topic

MickeyG

The next logical step is to address the area that Microsoft is terified of...I/O bottlenecks.  Pure cpu throttling and core affinity only gets you to the point where everybody sits and waits for the disk i/o to complete.

Jeremy Collake

#1
This is something I've researched extensively. Its a very complex issue to solve. Microsoft has been trying for a long time now, and it still seems like things are getting worse instead of better (though not because their efforts are wrong).

I mean, they implemented great new theoretical enhancements for I/O prioitization in Vista, but the overall I/O performance ironically seems worse (to me). I see more glitches in my audio and video, for instance - where they tried to GUARANTEE both I/O and CPU availability in Vista, but I don't see the problem in XP - where they didn't have these enhancements. This is actually probably because of changes to the driver model in Vista, so they (or the driver developers) negated the CPU and I/O scheduling enhancements. Goodness knows what would have been the result without the CPU and I/O scheduling enhancements.

Tangent:
The fact is that modern OSes are complex software environments that have an extensive number of components. Third party drivers often control critical hardware, further complicating things. Improved device drivers from hardware manufacturers would do the Windows world wonders, especially if they interoperated well. This is why Apple is able to have a more stable OS, because they control all the hardware, and thus all the drivers... and can assure quality control. Microsoft has had to take extreme steps to intervene in improving the quality of third-party drivers. They are working towards mandating the review and approval of all hardware drivers for Windows, and are almost there. When they can't get the vendor to cooperate, they'll often write their own driver.

The hardware component manufacturers, meanwhile, don't care much about driver development. They get the drivers they use from the chipset manufactures. For instance, a USB wireless network adaptor may be sold under 100 different brand names. However, the chipset inside it is only one of a handful of choices. These vendors just repackage the drivers from the chipset manufacturers, and often could care less about ensuring updates to the drivers are provided to users. The chipset manufacturers, for their part, will drop support of older chipsets as quickly as they can, because maintaining old drivers costs money...

Back on topic:
The good news is that in Vista+, the I/O priotization that exists is based upon the calling thread's priority, which is based on the process priority class. Therefore, to a certain extent, Process Lasso improves I/O prioritization in Vista+. Hmm, that's something I should mention in the marketing material ;)
Software Engineer. Bitsum LLC.