/usr/bin/random 使用大量 CPU

/usr/bin/random 使用大量 CPU

使用 QNX 6.4.1,有一个名为 的命令pidin times可以显示有关进程的信息。我认为这意味着PID信息。除此之外,您还可以查看进程自启动以来使用了多少 CPU。

/usr/sbin/random我的系统在运行大约 10 小时后显示处理器利用率近 2 分钟。这看起来很多,因为我的代码中没有任何内容调用/usr/sbin/random.

不过,现在有很多网络活动(UDP 和 TCP),所以我想知道网络驱动程序是否random由于数据包冲突而调用以获得动态冲突退避时间。

这个理论可能是正确的吗? (好吧,这有多可信?)如果不是,我还应该检查其他什么吗?该系统目前存在昨天不存在的延迟问题,我想了解到底发生了什么。这个特定的线索可能有助于隔离问题。


更新

进一步的调查nicinfo显示根本没有数据包冲突。我的动态碰撞退避时间理论就这样结束了。还有其他想法吗?


另一个更新

虽然这有助于找到我的问题的答案(当然,SSHD 使用随机!!),但要小心。如果您使用 SSH,则需要进行工作random才能登录。由于某种原因,我的脚本中的调用random.old不起作用,我的嵌入式系统几乎变砖了。所以要小心。

答案1

疯狂的故障排除想法:制作一个蜜罐/穷人的进程会计。

  1. 进行备份/usr/bin/random

    cp -p /usr/bin/random /usr/bin/random.bak
    
  2. touch /tmp/who_is_calling_random.log ; chmod 622 /tmp/who_is_calling_random.log

  3. 替换/usr/bin/random为此 shell 脚本(请注意,如果需要,您可以使用与 /tmp 不同的路径,但请确保它是全局可写的)。

    #!/bin/sh
    echo "`date` $USER $$ $@" >> /tmp/who_is_calling_random.log
    /usr/bin/random.bak "$@"
    
  4. chmod 755 /usr/bin/random

  5. 重新启动系统。

  6. 查看蜜罐日志中收集的内容。这应该是使用随机程序背后的人/事的日志。

    tail -f /tmp/who_is_calling_random.log
    
  7. random从您在第 1 步中所做的备份进行恢复。

  8. 重启系统。

相关内容