在重磁盘IO期间sssd_nss的CPU使用率很高

时间:2018-04-02 20:04:26

标签: linux centos redhat oracle-enterprise-linux

我在Oracle Enterprise Linux 7u2上执行频繁,重型的maven构建,这会产生大量的jar / wars / ear。我最近注意到的(在一些崩溃/幽灵补丁之后)这个过程的CPU利用率非常高:

/ usr / libexec / sssd / sssd_nss --uid 0 --gid 0 --debug-to-files

当我的服务器空闲时?没问题。但是在我的maven构建的重磁盘IO部分,maven java进程和sssd_nss争夺CPU,每个占用总数的50%。 (供参考,我有一个4核Xeon服务器)

我真的不知道这个过程(除了它可能会处理LDAP?)或者为什么它会关心java文件复制和压缩。 (这都在本地/非NFS磁盘上)

1 个答案:

答案 0 :(得分:2)

sssd_nss是守护进程,它从下游服务(如LDAP)中抽象出用户/组信息请求。它实际上并不进行查找,而是向执行此操作的服务发出请求,首先检查本地磁盘缓存。

这让我觉得繁重的I / O部分正在围绕用户和组进行大量操作(例如,查找UID的用户名,查找组以获取UID)。

您还应该查看高sssd_nss CPU是否属于IOWAIT。这表明您确实正在进行大量的用户/组查询,并且不知何故被磁盘I / O阻止。您可以使用top查看整个系统IOWAIT(查找wa)和iotop以获取每个进程的指标。

如果主要是IOWAIT,您可能需要单独添加I / O容量或将构建卷与系统卷分开。我怀疑这是你问题的根本原因。

你提到这是在熔化/幽灵补丁之后发生的。这可能表明构建过程正在sssd_nss中启动大量系统调用,这些调用现在速度较慢。您可能希望查看构建过程并查看是否存在不必要的用户/组相关命令。您可以使用strace -p $pid_of_sssd_nssuse sysdig for even fancier analysis查看正在调用的系统调用。如果该服务正在进行大量系统调用,请查看它正在进行的调用,并找出构建过程启动这些调用的位置。然后尽量减少它们。