在windows系统中,进程如何被CPU调度体现在进程的优先级和进程和CPU的绑定方式。
1.一个进程会被更高优先级的进程抢占。如何修改进程的优先级?在任务管理器中,选中进程,右键点击设置优先级。什么时候需要编辑进程的优先级呢?大多数情况下并不需要这样做,因为Windows可以进行很好的调度,改变进程优先级不是解决瓶颈的长期方案,提升系统性能最终还是要靠增加CPU数量或提高CPU速度。注意:改变优先级可能使系统不稳定,提高某个进程的优先级会限制其他进程,包括系统服务的运行。特别需要注意的是不要将很多进程的优先级都设置为High,也要尽量避免使用Realtime优先级,这样可能使系统停止响应。
2.在SMP(对称多处理,Symmetrical Multi-Processing)系统上,Windows调度将就绪的线程依照其基本优先级分发到所有处理器上,虽然如此,Windows常常试图将已知线程联系到特定的CPU上(称为软绑定),线程将不再分发到多处理器上。硬绑定可以将进程持久地绑定在给定的CPU或CPU组,在2级缓存比较大的时候使用这种方式可以获得很好的性能提升,但是CPU绑定不是提高性能的常用的方法。如何修改进程和CPU的绑定方式呢?有三种方式,一种是在任务管理器中,选中进程,右键点击关系设置(在多cpu的系统中才会有这个选项哦),选中需要绑定的cpu。第二种是应用程序提供的参数配置。第三种是应用程序编程的时候绑定。
在AIX操作系统下,如何在操作系统层面进行进程的硬绑定呢?假设进程 p1 运行于多 CPU 硬件中。您需要将这个进程绑定到 CPU1。
1.要查询计算机中可用的处理器,可以使用:# bindprocessor -q
The available processors are 0 1
2.要将进程 ID 为 14662 的进程 p1 绑定到处理器 1,可以使用命令:# bindprocessor 14662 1
3.要确保该进程已绑定到指定的处理器,可以使用下面的命令进行查看:#ps -emo THREAD grep p1
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
root 4460 5428 - A 0 60 7 f0145c10 240001 - - usrsbinrpc.mountd
root 4710 5428 - A 0 60 4 240001 - - usrsbintftpd -n
root 14662 10566 - A 120 126 0 - 200001 pts0 1 .p1
4.取消进程的绑定:# bindprocessor -u 14662
5.查看上述命令的结果:# ps -emo THREAD grep p1
USER PID PPID TID ST CP PRI SC WCHAN F TT BND COMMAND
root 12672 10566 - A 1 60 1 50a05e84 200001 pts0 - grep p1
root 14662 10566 - A 78 111 0 - 200001 pts0 - .p1