我试图find在运行embedded式Linux的盒子的开发中使用“顶级”作为半永久性仪器的最佳方式。 (仪器将从最终testing和生产版本中删除。)
我的第一步是简单地将此添加到init.d:
top -b -d 15 >/tmp/toploop.out &
这个每15秒在“批量”模式下运行。 假设/ tmp有足够的空间
问题:
看看collectd 。 这是一个非常轻量级的系统监控框架编码的性能。
我们使用sysstat来监视这样的事情。
你可能会发现vmstat和iostat有一个延迟,没有重复计数是一个更好的选择。
我怀疑15秒就足够了,除非你真的想实时看到发生的事情,但是在这里并不是这样。
至于负载,运行Ubuntu(不知道哪个版本,但不超过一年)的空闲PIII 900Mhz瓦特/ 768MB内存我有0.5秒的顶级更新,它的CPU利用率约2%。 在15s更新,我看到0.1%的CPU利用率。
取决于你想要什么,你可以使用正常运行时间,自由和ps的输出获得大部分(如果不是全部的话)顶部的信息。
如果你正在寻找整体负载,正常运行时间可能就足够了。 但是,如果您想要了解有关进程的特定信息,那么您很冒险,并且已启用/ proc文件系统,则可能需要编写自己的工具。 在这种环境中的主要好处是,你可以专注于你想要的,并最小化引入系统的负载。
proc文件系统为您的应用程序提供对内存的读取访问权限,以便跟踪许多有趣的变量。 从/ proc读取是获取这些信息的最简单方法之一。 此外,您可以获得比顶部提供的更多信息。 过去我这样做是为了通过这个过程花费在用户和系统上的时间。 另外,您可以使用它来获取有关进程打开的文件描述符的数量的信息。 您也可以使用它来获取有关网络系统如何工作的详细信息。
大部分这些信息是由其他应用程序预处理,如果您获得所需信息,可以使用这些应用程序。 然而,阅读原始信息是相当直接的。 做一个man proc
的更多信息。
可惜你没有说出你在监视什么。
在压力测试期间的系统监控工作中,我们使用一个名为nmon的工具。
我喜欢nmon的是它有能力出口到XLS和生成漂亮的图表给你。
它生成统计信息:
祝你好运 :)