分类: LINUX
2011-02-06 22:27:58
Linux 给我们提供了方便的工具用来手动分配进程到不同的 CPU 上(CPU Affinity),这样我们可以按照服务器和应用的特性来安排特定的进程到特定的 CPU 上,比如 Oracle 要消耗大量 CPU 和 I/O 资源,如果我们能分配 Oracle 进程到某个或多个 CPU 上并由这些 CPU 专门处理 Oracle 的话会毫无疑问的提高应用程序的响应和性能。还有一些特殊情况是必须绑定应用程序到某个 CPU 上的,比如某个软件的授权是单 CPU 的,如果想运行在多 CPU 机器上的话就必须限制这个软件到某一个 CPU 上。
在 CentOS/Fedora 下安装 schedutils:
# yum install schedutils
在 Debian/Ubuntu 下安装 schedutils:
# apt-get install schedutils
如果正在使用 CentOS/Fedora/Debian/Ubuntu 的最新版本的话,schedutils/util-linux 这个软件包可能已经装上了。
计算 CPU Affinity 和计算 SMP IRQ Affinity 差不多:
0x00000001 (CPU0) 0x00000002 (CPU1) 0x00000003 (CPU0+CPU1) 0x00000004 (CPU2) ...
如果想设置进程号(PID)为 12212 的进程到 CPU0 上的话:
# taskset 0x00000001 -p 12212