【问题标题】:How to monitor the CPU time of a running process in a period of time(Linux)?如何监控一段时间内正在运行的进程的CPU时间(Linux)?
【发布时间】:2020-08-29 02:55:00
【问题描述】:

我想在执行查询时测量正在运行的数据库服务器的 CPU 使用率。 目标是获取挂钟时间、总 CPU 时间、用户 CPU 时间和内核(系统)CPU 时间,这样我就可以估计有多少时间用于计算,多少时间用于 I/O。

服务器专门用于这个实验,没有查询运行时CPU使用率接近0%,所以我的计划是

  1. 启动监视器
  2. 运行查询
  3. 停止监视器并在间隔期间收集 CPU 使用率

监视器可以给出该时间段内的 CPU 时间总和,也可以给出采样结果列表,我可以自己总结。

我已经搜索了类似的问题并尝试了几种解决方案,但它们都不能满足我的需求。

  1. pidstatpidstat 看起来不错,但是粒度太粗了。最小的间隔是 1 秒,我需要一个更精细的间隔,比如 100 毫秒。

  2. mpstat 和pidstat一样的问题。间隔大。

  3. toptop 可以批量运行,但采样间隔也很大(2s-3s)。它也不提供用户/内核时间细分。

谢谢大家的建议!

【问题讨论】:

标签: linux cpu-usage


【解决方案1】:

尝试使用“time”或“times”命令。您可能需要采取一些变通方法才能使用这些命令。

时间节目名称

https://man7.org/linux/man-pages/man1/time.1.html

"times" 需要从启动数据库服务器的同一个 shell 中执行。

https://man7.org/linux/man-pages/man2/times.2.html

【讨论】:

  • 详细说明此答案,您的命令应如下所示:time psql -f file_with_sql.sql
猜你喜欢
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2011-08-09
相关资源
最近更新 更多