当内核模块可疑时如何解决高负载问题?

当内核模块可疑时如何解决高负载问题?

我注意到 Ubuntu 14.04.4 LTS 存在一个错误;如果 NFS 客户端失去与 NFS 服务器的连接,该系统上的负载将飙升至 30 以上。

我注意到降低负载的唯一方法是延迟卸载 NFS 共享:umount -l /path/to/share

问题是;所有告诉我系统资源使用情况的常规工具都没有帮助:tophtopiotopperf topsarmpstat表明系统没有任何问题;没有任何正在运行的进程或线程可以解释为什么负载如此之高。

我的假设是,由于 NFS 是在 Linux 的内核中实现的,因此这些工具根本看不到发生了什么;有没有办法更好地解决这个问题?因为传统的工具似乎不起作用。有没有办法监控Linux中的运行队列?

答案1

通过计算以下进程的数量来计算负载平均值:

  1. 当前正在运行
  2. 已准备好运行,但正在等待调度(CPU 被其他进程占用)
  3. 阻塞等待 I/O(不间断睡眠,在top/中显示为“D” ps

并通过加权平均值(随着时间的推移,获得 1、5 和 15 分钟的值)。

因此,您的高平均负载并不意味着 CPU 过载(查看 中的 %Cputop等进行检查);这可能只是意味着您在尝试访问(关闭的)NFS 服务器时被阻止了一堆进程。

相关内容