我们的服务器存在一个问题,即迁移过程需要花费时间,并且服务器的负载也因此而变得很高。
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.3 LTS
Release: 12.04
Codename: precise
Linux kvm-cloud 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
root 6 2 17 Nov25 ? 01:51:10 [migration/0]
root 8 2 16 Nov25 ? 01:44:56 [migration/1]
root 13 2 12 Nov25 ? 01:24:30 [migration/2]
root 17 2 17 Nov25 ? 01:51:03 [migration/3]
root 21 2 13 Nov25 ? 01:26:44 [migration/4]
root 25 2 17 Nov25 ? 01:51:03 [migration/5]
root 29 2 16 Nov25 ? 01:50:09 [migration/6]
root 33 2 16 Nov25 ? 01:49:58 [migration/7]
root 37 2 16 Nov25 ? 01:50:09 [migration/8]
root 41 2 13 Nov25 ? 01:29:26 [migration/9]
root 45 2 13 Nov25 ? 01:25:29 [migration/10]
root 49 2 16 Nov25 ? 01:47:29 [migration/11]
root 53 2 16 Nov25 ? 01:46:22 [migration/12]
root 57 2 16 Nov25 ? 01:45:02 [migration/13]
root 61 2 17 Nov25 ? 01:51:37 [migration/14]
root 65 2 16 Nov25 ? 01:47:59 [migration/15]
root 69 2 16 Nov25 ? 01:47:59 [migration/16]
root 73 2 17 Nov25 ? 01:51:37 [migration/17]
root 77 2 16 Nov25 ? 01:47:53 [migration/18]
root 81 2 17 Nov25 ? 01:54:00 [migration/19]
root 85 2 16 Nov25 ? 01:46:04 [migration/20]
root 89 2 16 Nov25 ? 01:46:04 [migration/21]
root 93 2 12 Nov25 ? 01:21:52 [migration/22]
root 97 2 13 Nov25 ? 01:29:45 [migration/23]
ps -auxf | sort -nr -k 3 | head -10
root 81 17.2 0.0 0 0 ? S Nov25 114:00 \_ [migration/19]
root 73 16.9 0.0 0 0 ? S Nov25 111:37 \_ [migration/17]
root 61 16.9 0.0 0 0 ? S Nov25 111:37 \_ [migration/14]
root 6 16.8 0.0 0 0 ? S Nov25 111:10 \_ [migration/0]
root 25 16.8 0.0 0 0 ? S Nov25 111:03 \_ [migration/5]
root 17 16.8 0.0 0 0 ? S Nov25 111:03 \_ [migration/3
有人遇到过这个问题吗?如果有任何建议,请告诉我
答案1
“迁移”是将进程分布在各个核心上的内核进程,您应该看到每个核心都有一个进程。
通常,那些消耗大量资源的线程只是另一个问题的症状,而不是高负载的原因。
但是:防止进程迁移的一种方法是将它们固定到特定的单个核心或一系列核心上。摘自taskset
:
taskset 用于根据给定的 PID 设置或检索正在运行的进程的 CPU 亲和性,或根据给定的 CPU 亲和性启动新的命令。CPU 亲和性是一种调度程序属性,可将进程“绑定”到系统上的一组给定 CPU。Linux 调度程序将遵守给定的 CPU 亲和性,并且进程不会在任何其他 CPU 上运行。
请注意,Linux 调度程序还支持自然 CPU 亲和性:出于性能原因,调度程序会尝试尽可能长时间地将进程保持在同一个 CPU 上。因此,强制特定的 CPU 亲和性仅在某些应用程序中有用。