006-CPU优化常见方法

2019-07-06  本文已影响0人  0981b16f19c7

应用程序优化

编译器优化

算法优化

使用复杂度更低的算法,可以显著加快处理速度。

异步处理

使用异步处理,可以避免程序因为等待某个资源而一直阻塞,从而提升程序的并发处理能力。比如,把轮询替换为事件通知,就可以避免轮询耗费 CPU 的问题。

多线程替代多进程

线程的上下文切换成本小于进程的上下文切换成本。

善用缓存

经常访问的数据或者计算过程中的步骤,可以放到内存中缓存起来,,这样在下次用时就能直接从内存中获取,加快程序的处理速度。

系统优化

一方面要充分利用CPU缓存的本地性,加速缓存访问;另一方面,要控制进程的CPU使用情况,减少进程间的相互影响。

CPU绑定

把进程绑定到一个或者多个 CPU 上,可以提高 CPU 缓存的命中率,减少跨 CPU 调度带来的上下文切换问题。

CPU独占

跟 CPU 绑定类似,进一步将 CPU 分组,并通过 CPU 亲和性机制为其分配进程。这样,这些 CPU 就由指定的进程独占,换句话说,不允许其他进程再来使用这些 CPU。

优先级调整

使用 nice 调整进程的优先级,正值调低优先级,负值调高优先级。

为进程设置资源限制

使用 Linux cgroups 来设置进程的 CPU 使用上限,可以防止由于某个应用自身的问题,而耗尽系统资源。

NUMA优化

中断负载均衡

无论是软中断还是硬中断,它们的中断处理程序都可能会耗费大量的 CPU。开启 irqbalance 服务或者配置 smp_affinity,就可以把中断处理过程自动负载均衡到多个 CPU 上。

上一篇下一篇

猜你喜欢

热点阅读