[导入]Master Your Quantum

In my last blog article I described thread quantum and, at the end of the article, mentioned that one could change this value. Readers, who were driven nuts by my meager attempt to create suspense, could have searched MSDN on their own to find how to change the quantum setting using the Performance Options system dialog. This dialog only lets one change the quantum to favor foreground or background processes. There are, however, a total of seven functionally unique setting for the quantum.

The Performance Options dialog, it turns out, manipulates system registry value HKLM\SYSTEM \CurrentControlSet\ Control\ PriorityControl\ Win32PrioritySeparation. The Win32PrioritySeparation default value is 2 for XPe or XP Pro (and other versions of the Windows OS family, but you’re reading the wrong blog if you’re interested in them). The Performance Options dialog changes the value of Win32PrioritySeparation to either hexadecimal value 0x26, if you select the “Foreground” option, or 0x18, if you select the “Background” option.

If you’re like me, I found this all a bit odd. Well, Win32PrioritySeparation is composed of three 2-bit bit fields. The most significant bit field, represented by bits 0x10 and 0x20, determine if long or short quantum will be used. Bits represented by 0x04 and 0x08 determine if the foreground threads will get more quantum than background threads (i.e. a boost) or they will get the same quantum. The two least significant bits, 0x01 and 0x02, are used, if foreground boost is enabled, to determine the amount of the boost.

Even though I’m an avid bit twiddler, I’ll resist the urge to go into more detail. So here are the seven functionally unique settings for Win32PrioritySeparation with the resulting foreground and background quantums.


Win32PrioritySeparation   Foreground   Background
0x28, 0x29, 0x2A                   18                   18
0x18, 0x19, 0x1A                   36                   36
0x24                                    6                     6
0x25, 0x14                            12                   6
0x26                                    18                   6
0x15                                    24                   6
0x16                                    36                   6


Please remember from my last article to divide the quantum by 3 to get the number of clock ticks each thread will receive. Changing Win32PrioritySeparation does not require a restart to see the effect. Also, setting a bit field in Win32PrioritySeparation to values other than those shown in the table will result in the default option being selected. Of course, this all pertains to XPe and XP Pro and there’s no guarantee that the scheduling gurus will conform to the same pattern of behavior in the future.

- Jim


文章来源:http://blogs.msdn.com/embedded/archive/2006/03/04/543141.aspx

posted on 2006-03-05 09:04 毒菇求Buy 阅读(465) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
<2006年3月>
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿(7)

随笔分类(133)

随笔档案(111)

文章分类(65)

文章档案(53)

相册

收藏夹(30)

BLOG

Book store

Graphics Design

搜索

最新评论

阅读排行榜

评论排行榜