centos 7 cpu绑定+I/O 调度算法调优
一、cpu绑定(CPU Affinity)
1、属性
什么是CPU Affinity? Affinity是进程的一个属性,这个属性指明了进程调度器能够把这个进程调度到哪些CPU上。
在Linux中,我们可以利用CPU affinity把一个或多个进程绑定到一个或多个CPU上,CPUAffinity分为2种,softaffinity和hardaffinity。softaffinity仅是一个建议,如果不可避免,调度器还是会把进程调度到其它的CPU上。hardaffinity是调度器必须遵守的规则。
为什么要进行CPU 的绑定:
1):增加CPU缓存率
CPU之间是不共享缓存的,如果进程频繁的在各个CPU间进行切换,需要不断的使旧CPU的cache失效。如果进程只在某个CPU上执行,则不会出现失效的情况。
2)增加CPU缓存的命中率
在多个线程操作的是相同的数据的情况下,如果把这些线程调度到一个处理器上,大大的增加了CPU缓存的命中率。但是可能会导致并发性能的降低。如果这些线程是串行的,则没有这个影响。
3)适合time-sensitive
应用在real-time或time-sensitive应用中,我们可以把系统进程绑定到某些CPU上,把应用进程绑定到剩余的CPU上。典型的设置是,把应用绑定到某个CPU上,把其它所有的进程绑定到其它的CPU上。
2、示例
[root@compute ~]# ps -e |grep kvm //我这里列出了一下kvm的进程号
953 ? 00:00:00 kvm-irqfd-clean
6852 ? 00:01:55 qemu-kvm
6859 ? 00:00:00 kvm-pit/6852
7820 ? 00:00:53 qemu-kvm
7827 ? 00:00:00 kvm-pit/7820
18943 ? 00:44:56 qemu-kvm
18953 ? 00:00:00 kvm-pit/18943
[root@compute ~]# taskset -h //这里是关于taskset命令的用法
Usage: taskset [options] [mask | cpu-list] [pid|cmd [args...]]
Options:
-a, --all-tasks operate on all the tasks (threads) for a given pid
-p, --p