我们需要知道一个 matlab 进程使用了多少内存和 cpu 时间及其所有衍生线程。如果我理解正确,所有线程都将作为具有新进程 ID 的新进程弹出,但 CMD 名称将保持不变。
所以我考虑创建一个恶魔,它在每 n 秒内追加用法:
ps -o %cpu,%mem,cmd -C MATLAB | grep "[0-9]+" >> matlab_log
然后计算并总结乘以恶魔节拍时间的比率。
我想知道是否有更简单的方法,或者我遗漏了什么,或者只是存在一些更适合这项工作的工具?
干杯
最佳答案
如果你安装了 BSD Process Accounting 实用程序(Debian 和 Ubuntu 上的软件包 acct
),你可以使用 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)
支持它——因此当前正在运行的进程完全被实用程序忽略了。
不过,这些实用程序可能就足够了;这些公用事业是计算中心向客户收费的方式,回到计算中心流行的时候......
关于linux - 报告内存和 cpu 使用情况 - matlab - 在多核 linux 服务器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10457172/