如何在 Ubuntu 上记录 CPU 和 RAM 使用情况?

如何在 Ubuntu 上记录 CPU 和 RAM 使用情况?

我很好奇是否有任何程序可以记录内存和 CPU 使用情况的历史记录。我问这个问题的原因是我想运行某些应用程序和游戏,并查看它们在一段时间内使用了多少 CPU。

答案1

您可以使用内置实用程序vmstat。您可以使用获取技术概述man vmstat。需要注意的是,该软件的默认参数不适合具有充足 RAM 的现代计算机。例如:

$ vmstat 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 578120 827392 3317480    0    0    14    65  250  149 34 17 49  0  0

RAM 以字节为单位列出,导致详细信息行与列标题不对齐。要绕过vmstat以兆字节显示的指示:

$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0    576    808   3236    0    0    14    65  250  149 34 17 49  0  0

以下文档来自:使用 vmstat 监控系统性能

什么是 vmstat?

vmstat是一款实时收集和报告系统内存、交换和处理器资源利用率数据的工具。它可用于确定性能问题和与内存使用相关的问题的根本原因。

如何使用 vmstat

使用vmstat命令运行程序。考虑以下输出:

$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   3532 148760  50700 1397880    0    0     1     2    6    6  3  1 97  0

此数据提供了自上次重启以来虚拟内存和系统使用情况的平均视图。通常使用以下形式的命令:

vmstat [interval] [count]

在此示例中,第一行数据提供了自上次启动以来的平均值。后续报告(直到[count]达到)每秒报告一次系统当前状态的数据[interval]

vmstat 命令

vmstat通常以 1 秒的间隔运行,运行次数取决于管理员尝试诊断的问题类型。以下示例说明了间隔一 (1) 秒运行二十 (20) 次:

$ vmstat 1 20
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   3996 168488  57100 1368636    0    0     1     2    0    0  3  1 97  0
 0  0   3996 168604  57100 1368728    0    0     0     0  144  303  1  0 100  0
 0  0   3996 168604  57100 1368984    0    0   256     0  162  464  1  0 99  0
 0  0   3996 168604  57100 1368972    0    0     0     0  239  638  3  0 97  0
 0  0   3996 168604  57100 1368952    0    0     0     0  242  529  1  1 99  0
 0  0   3996 168604  57100 1368952    0    0     0     0  148  430  1  0 99  0
 1  0   3996 168604  57100 1368952    0    0     0     0  222  451  6  0 94  0
 0  0   3996 168604  57100 1368952    0    0     0     0  141  270  2  0 98  0
 0  0   3996 168604  57100 1368952    0    0     0     0  166  450  1  0 99  0
 0  0   3996 168604  57100 1368952    0    0     0     0  133  410  0  0 99  0
 0  0   3996 168604  57100 1368952    0    0     0     0  196  398  0  0 99  0
 0  0   3996 168604  57100 1368952    0    0     0     0  187  510  1  0 100  0
 0  0   3996 168604  57108 1368952    0    0     0    16  263  677  2  0 97  1
 0  0   3996 168604  57108 1368952    0    0     0     0  205  431  1  0 98  0
 0  0   3996 168604  57108 1368964    0    0     0     0  179  467  1  0 98  0
 0  0   3996 168604  57108 1368964    0    0     0     0  169  446  2  0 98  0
 0  0   3996 168604  57108 1368964    0    0     0     0  202  365  2  0 98  0
 0  0   3996 168604  57108 1369208    0    0   256     0  226  458  2  1 96  0
 0  0   3996 168604  57108 1369208    0    0     0    40  202  501  2  0 98  0
 0  0   3996 168604  57108 1369220    0    0     0     0  154  295  2  0 98  0

vmstat如果您希望实时持续报告系统状态,则可以不使用 [count] 参数运行。在这些情况下,间隔 30 秒或更长可能是理想的。

$ vmstat 30
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   3996 167868  57108 1369788    0    0     1     2    0    0  3  1 97  0
 0  0   3996 167860  57108 1369920    0    0     0     0  274  604  2  0 98  0
 0  0   3996 167860  57108 1369928    0    0     0     0  196  481  1  0 98  0
 0  0   3996 167860  57116 1369908    0    0     0    12  164  414  1  1 97  1
 0  0   3996 167860  57116 1369892    0    0     0     0  168  320  0  0 100  0
 0  0   3996 167860  57116 1369884    0    0     0     0  142  398  1  0 99  0
 0  0   3996 167860  57116 1369880    0    0     0     0  175  450  1  1 98  0
^C

您可以选择将此输出定向到文件进行记录,而不是让它在后台终端会话中无休止地运行。要停止 vmstat 进程,请发送中断字符(^C 或 Control+C),如上所示。

在默认操作中,vmstat 以千字节为单位显示内存统计信息。vmstat 认为 1 千字节等于 1024 字节。要生成 1 千字节等于 1000 字节的 vmstat 报告,请使用以下格式:

$ vmstat -S k 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0   4091 150192  58982 1422041    0    0     1     2    0    0  3  1 97  0
 0  0   4091 150183  58982 1422381    0    0   256     0  201  518  1  0 99  0
 2  0   4091 150183  58982 1422356    0    0     0     0  638 1356  7  1 92  0
 0  0   4091 150183  58982 1422360    0    0     0     0  859 1087  5  2 93  0
 0  0   4091 150183  58982 1422331    0    0     0     0  404 1100  2  0 97  0
 0  0   4091 150183  58982 1422331    0    0     0     0  281  601  2  0 97  0
 0  0   4091 150183  58982 1422327    0    0     0     0  279  468  3  0 97  0
 0  0   4091 150183  58982 1422331    0    0     0     0  250  572  3  0 97  0
 0  0   4091 150183  58990 1422323    0    0     0    16  280  598  4  0 95  1
 0  0   4091 150183  58998 1422319    0    0     0    52  270  451  3  0 96  1

vmstat还可以显示以兆字节为单位的内存大小报告。vmstat带有参数的报告-S m将考虑单个兆字节等于 1000 千字节,如下所示:

$ vmstat -S m 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      4    169 58   1404    0    0 1     2    0    0  3  1 97  0
 0  0      4    169 58   1405    0    0 0     0  194  508  1  0 98  0
 0  0      4    169 58   1405    0    0 0     0  154  443  0  0 99  0
 0  0      4    169 58   1405    0    0 0     0  192  380  0  0 100  0
 0  0      4    169 58   1405    0    0 0     0  287  766  3  0 97  0
 1  0      4    169 58   1405    0    0 0     0  222  583  1  1 99  0
 0  0      4    169 58   1405    0    0 0    36  166  304  1  0 99  0
 0  0      4    169 58   1405    0    0 0     0  189  473  1  0 99  0
 0  0      4    169 58   1405    0    0 0     0  164  430  1  0 99  0
 0  0      4    169 58   1405    0    0 0     0  186  343  0  0 100  0

vmstat还可以使用参数显示兆字节,这样 1 兆字节等于 1024 千字节-S M。请考虑以下示例:

$ vmstat -S M 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      3    162 55   1339    0    0 1     2    0    0  3  1 97  0
 0  0      3    162 55   1339    0    0 0     0  425  700  1  1 98  0
 0  0      3    162 55   1339    0    0 0     0  712  997  1  2 97  0
 0  0      3    162 55   1339    0    0 0    20  479 1079  3  0 96  1
 0  0      3    162 55   1339    0    0 0     0  264  406  2  0 98  0
 0  0      3    162 55   1339    0    0 0     0  273  552  3  0 97  0
 0  0      3    162 55   1339    0    0 0     0  218  467  1  0 99  0
 0  0      3    162 55   1339    0    0 0     0  250  434  1  0 99  0
 0  0      3    162 55   1339    0    0 0     0  200  444  2  0 98  0
 0  0      3    162 55   1339    0    0 0     0  313  771  3  1 96  0

相关内容