在Linux中使用“top”作为半永久性仪器

我试图find在运行embedded式Linux的盒子的开发中使用“顶级”作为半永久性仪器的最佳方式。 (仪器将从最终testing和生产版本中删除。)

我的第一步是简单地将此添加到init.d:

top -b -d 15 >/tmp/toploop.out & 

这个每15秒在“批量”模式下运行。 假设/ tmp有足够的空间

问题:

  1. 15秒是一个很好的select通用监测的价值?
  2. 除了磁盘空间以外,这个系统的状态有多严重?
  3. 还有哪些其他(也许更好)的工具可以使用这样的?

看看collectd 。 这是一个非常轻量级的系统监控框架编码的性能。

我们使用sysstat来监视这样的事情。

你可能会发现vmstat和iostat有一个延迟,没有重复计数是一个更好的选择。

我怀疑15秒就足够了,除非你真的想实时看到发生的事情,但是在这里并不是这样。

至于负载,运行Ubuntu(不知道哪个版本,但不超过一年)的空闲PIII 900Mhz瓦特/ 768MB内存我有0.5秒的顶级更新,它的CPU利用率约2%。 在15s更新,我看到0.1%的CPU利用率。

取决于你想要什么,你可以使用正常运行时间,自由和ps的输出获得大部分(如果不是全部的话)顶部的信息。

如果你正在寻找整体负载,正常运行时间可能就足够了。 但是,如果您想要了解有关进程的特定信息,那么您很冒险,并且已启用/ proc文件系统,则可能需要编写自己的工具。 在这种环境中的主要好处是,你可以专注于你想要的,并最小化引入系统的负载。

proc文件系统为您的应用程序提供对内存的读取访问权限,以便跟踪许多有趣的变量。 从/ proc读取是获取这些信息的最简单方法之一。 此外,您可以获得比顶部提供的更多信息。 过去我这样做是为了通过这个过程花费在用户和系统上的时间。 另外,您可以使用它来获取有关进程打开的文件描述符的数量的信息。 您也可以使用它来获取有关网络系统如何工作的详细信息。

大部分这些信息是由其他应用程序预处理,如果您获得所需信息,可以使用这些应用程序。 然而,阅读原始信息是相当直接的。 做一个man proc的更多信息。

可惜你没有说出你在监视什么。

  1. 你应该决定是否15秒是好的。 如果你愿意,可以随意下降(并且有一个快速的硬盘)
  2. 不用担心,除非你正在运行一个软实时系统
  3. 看看在其他答案建议的工具。 我会添加另一个消解:“iotop”,回答“谁是硬盘驱动器”的问题。

在压力测试期间的系统监控工作中,我们使用一个名为nmon的工具。

我喜欢nmon的是它有能力出口到XLS和生成漂亮的图表给你。

它生成统计信息:

  • 内存使用情况
  • CPU使用率
  • 网络使用情况
  • 磁盘I / O

祝你好运 :)