0

我们需要知道一个 matlab 进程使用了​​多少内存和 CPU 时间来处理它所有的衍生线程。如果我理解正确,所有线程都将作为具有新进程 ID 的新进程弹出,但 CMD 名称将保持不变。

所以我想创建一个恶魔,每 n 秒附加一次用法:

ps -o %cpu,%mem,cmd -C MATLAB | grep "[0-9]+" >> matlab_log

然后计算并总结乘以恶魔滴答时间的比率。

我想知道是否有更简单的方法,或者我遗漏了一些东西,或者只是存在一些对这项工作更方便的工具?

干杯

4

2 回答 2

2

如果您安装 BSD Process Accounting 实用程序(acctDebian 和 Ubuntu 上的软件包),您可以使用该sa(8)实用程序来总结执行或为您提供半详细的执行日志:

$ lastcomm
...
man               F  X sarnold  pts/3      0.00 secs Fri May  4 16:21
man               F  X sarnold  pts/3      0.00 secs Fri May  4 16:21
vim                    sarnold  pts/3      0.05 secs Fri May  4 16:20
sa                     sarnold  pts/3      0.00 secs Fri May  4 16:20
sa                     sarnold  pts/3      0.00 secs Fri May  4 16:20
bzr                    sarnold  pts/3      0.99 secs Fri May  4 16:19
apt-get          S     root     pts/1      0.44 secs Fri May  4 16:18
dpkg                   root     pts/1      0.00 secs Fri May  4 16:19
dpkg                   root     pts/1      0.00 secs Fri May  4 16:19
dpkg                   root     pts/1      0.00 secs Fri May  4 16:19
apt-get           F    root     pts/1      0.00 secs Fri May  4 16:19
...
$ sa
     633      15.22re       0.09cp         0avio      6576k
      24       8.51re       0.03cp         0avio      6531k   ***other*
       2       0.31re       0.02cp         0avio     10347k   apt-get
       3       0.02re       0.02cp         0avio      9667k   python2.7
      18       0.04re       0.01cp         0avio      5444k   dpkg
       2       0.01re       0.01cp         0avio     13659k   debsums
...

文件的格式acct记录在 中acct(5),因此如果没有标准工具可以表达您想要的查询,您可以编写自己的程序来解析文件。

BSD 进程记帐实用程序的最大缺点可能是内核只会在进程退出时更新进程记帐日志,因为许多摘要数字只有在另一个进程wait(2)为其提供时才可用——因此当前正在运行的进程完全被忽略实用程序。

不过,这些实用程序可能就足够了;这些实用程序是计算中心向客户收费的方式,早在计算中心流行时......

于 2012-05-04T23:28:51.157 回答
2

您还可以使用top

top -b -n 1 | grep MATLAB

14226 user      39  19 2476m 1.4g  26m S 337.2  9.2  24:44.60 MATLAB
25878 user      39  19 2628m 1.6g  26m S  92.0 10.6  21:07.36 MATLAB
14363 user      39  19 2650m 1.4g  26m S  79.7  9.1  23:58.38 MATLAB
14088 user      39  19 2558m 1.4g  26m S  61.3  9.1  25:14.53 MATLAB
14648 user      39  19 2629m 1.6g  26m S  55.2 10.5  22:03.20 MATLAB
14506 user      39  19 2613m 1.5g  26m S  49.0  9.4  22:32.47 MATLAB
14788 user      39  19 2599m 1.6g  26m S  49.0 10.3  20:44.78 MATLAB
25650 user      39  19 2608m 1.6g  26m S  42.9 10.2  25:08.38 MATLAB

或获取字段名:

top -b -n 1 | head -n 7 | tail -n 1; top -b -n 1 | grep MATLAB

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
14226 user      39  19 2476m 1.4g  26m S 337.2  9.2  24:44.60 MATLAB
25878 user      39  19 2628m 1.6g  26m S  92.0 10.6  21:07.36 MATLAB
14363 user      39  19 2650m 1.4g  26m S  79.7  9.1  23:58.38 MATLAB
14088 user      39  19 2558m 1.4g  26m S  61.3  9.1  25:14.53 MATLAB
14648 user      39  19 2629m 1.6g  26m S  55.2 10.5  22:03.20 MATLAB
14506 user      39  19 2613m 1.5g  26m S  49.0  9.4  22:32.47 MATLAB
14788 user      39  19 2599m 1.6g  26m S  49.0 10.3  20:44.78 MATLAB
25650 user      39  19 2608m 1.6g  26m S  42.9 10.2  25:08.38 MATLAB
于 2012-05-04T23:47:52.107 回答