time
如果您想弄清楚给定命令需要多少 CPU 时间,这是一个很棒的命令。
我正在寻找类似的东西,可以测量程序和任何孩子的最大 RAM 使用量。最好应该区分已使用和未使用的已分配内存。也许它甚至可以给出中值内存使用量(因此在长时间运行时您应该期望内存使用量)。
所以我想做:
rammeassure my_program my_args
Run Code Online (Sandbox Code Playgroud)
并获得类似于以下内容的输出:
Max memory allocated: 10233303 Bytes
Max memory used: 7233303 Bytes
Median memory allocation: 5233303 Bytes
Run Code Online (Sandbox Code Playgroud)
我看过memusg
https://gist.github.com/526585/590293d6527c91e48fcb08edb8de9fd6c88a6d82但我认为这有点像黑客。
我想尝试 cgroup v2 但不确定它是否安装在我的 linux 机器上
>> uname -r
4.14.66-041466-generic
Run Code Online (Sandbox Code Playgroud)
由于 cgroup v2 在 4.12.0-rc5 中可用,我认为它应该在我使用的内核版本中可用。
https://www.infradead.org/~mchehab/kernel_docs/unsorted/cgroup-v2.html
但是,我的系统似乎没有 cgroup v2,因为其文档中提到的内存接口文件在我的系统上不可用。
https://www.kernel.org/doc/Documentation/cgroup-v2.txt
好像我还有 cgroup v1。
/sys/fs/cgroup/memory# ls
cgroup.clone_children memory.kmem.failcnt memory.kmem.tcp.usage_in_bytes memory.memsw.usage_in_bytes memory.swappiness
cgroup.event_control memory.kmem.limit_in_bytes memory.kmem.usage_in_bytes memory.move_charge_at_immigrate memory.usage_in_bytes
cgroup.procs memory.kmem.max_usage_in_bytes memory.limit_in_bytes memory.numa_stat memory.use_hierarchy
cgroup.sane_behavior memory.kmem.slabinfo memory.max_usage_in_bytes memory.oom_control notify_on_release
docker memory.kmem.tcp.failcnt memory.memsw.failcnt memory.pressure_level release_agent
memory.failcnt memory.kmem.tcp.limit_in_bytes memory.memsw.limit_in_bytes memory.soft_limit_in_bytes tasks
memory.force_empty memory.kmem.tcp.max_usage_in_bytes memory.memsw.max_usage_in_bytes memory.stat
Run Code Online (Sandbox Code Playgroud)
后续问题 感谢 Brian 的帮助。请让我知道我是否应该创建一个新问题,但我认为如果我在这里问我的问题可能对其他人有帮助。
1)我无法按照文档中的命令添加 cgroup 控制器
>> echo "+cpu +memory -io" > cgroup.subtree_control
Run Code Online (Sandbox Code Playgroud)
但是,我得到了“回声:写错误:无效的参数”。我是否缺少此步骤的先决条件?
2) 我运行了一个 docker 容器,但 docker …