【问题标题】:Using "top" in Linux as semi-permanent instrumentation在 Linux 中使用“top”作为半永久性工具
【发布时间】:2008-10-08 18:27:47
【问题描述】:

在开发运行嵌入式 Linux 的机器时,我正在尝试找到使用“top”作为半永久性工具的最佳方式。 (仪器将从最终测试和生产版本中删除。)

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

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

这在“批处理”模式下每 15 秒运行一次。假设 /tmp 有足够的空间……

问题:

  1. 15 秒是否适合用于通用监控?
  2. 除了磁盘空间之外,这对系统状态的干扰有多严重?
  3. 还有哪些其他(或许更好的)工具可以像这样使用?

【问题讨论】:

    标签: linux monitor instrumentation


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您可能会发现带有延迟且没有重复计数器的 vmstat 和 iostat 是更好的选择。

        【讨论】:

          【解决方案4】:

          我怀疑 15 秒会绰绰有余,除非您真的想实时观看正在发生的事情,但这里似乎并非如此。

          就负载而言,在运行 Ubuntu 的空闲 PIII 900Mhz w/768MB RAM(不确定哪个版本,但不超过一年)上,我每 0.5 秒进行一次最高更新,CPU 利用率约为 2%。在 15 秒更新时,我看到 CPU 利用率为 0.1%。

          根据您的具体需求,您可以使用 uptime、free 和 ps 的输出来获取 top 的大部分(如果不是全部)信息。

          【讨论】:

            【解决方案5】:

            如果您正在寻找整体负载,正常运行时间可能就足够了。但是,如果您想了解有关进程的特定信息、喜欢冒险并且启用了 /proc 文件系统,则可能需要编写自己的工具。这种环境的主要好处是您可以准确地专注于您想要的内容,并将引入系统的负载降至最低。

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

            这些信息中的大部分都由其他应用程序进行了预处理,如果您获得了所需的信息,就可以使用这些应用程序。但是,阅读原始信息相当简单。请发送man proc 了解更多信息。

            【讨论】:

            • +1。是的,我对 /proc 很熟悉!我希望不必写一些东西,但你对能够专注于你所追求的东西的优势是正确的。好的,我的 emacs 窗口在哪里...
            【解决方案6】:

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

            1. 您应该决定 15 秒是否可以。如果您愿意(并且拥有快速硬盘),请随意降低它
            2. 不用担心,除非您运行的是软实时系统
            3. 查看其他答案中建议的工具。我将添加另一个建议:“iotop”,用于回答“谁在破坏 HDD”的问题。

            【讨论】:

              【解决方案7】:

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

              我喜欢 nmon 的地方在于它能够导出到 XLS 并为您生成漂亮的图表。

              它生成以下统计数据:

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

              祝你好运:)

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2011-10-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-12-12
                相关资源
                最近更新 更多