Peak memory usage of a linux/unix process

2019-01-03 04:02发布

Is there a tool that will run a command-line and report how much RAM was used total?

I'm imagining something analogous to /usr/bin/time

18条回答
一夜七次
2楼-- · 2019-01-03 04:31

You can use a tool like Valgrind to do this.

查看更多
地球回转人心会变
3楼-- · 2019-01-03 04:31

Please be sure to answer the question. Provide details and share your research!

Sorry, I am first time here and can only ask questions ...

Used suggested:

valgrind --tool=massif --pages-as-heap=yes --massif-out-file=massif.out ./test.sh; grep mem_heap_B massif.out | sed -e 's/mem_heap_B=(.*)/\1/' | sort -g | tail -n 1

then grep mem_heap_B massif.out ... mem_heap_B=1150976 mem_heap_B=1150976 ...

this is very different from what "top" command shows at similar moment :

14673 gu27mox 20 0 3280404 468380 19176 R 100.0 2.9 6:08.84 pwanew_3pic_com

what are measured units from valgrind ??

The

/usr/bin/time -v ./test.sh

never answered - you must directly feed executable to /usr/bin/time like:

/usr/bin/time -v pwanew_3pic_compass_2008florian3_dfunc.static card_0.100-0.141_31212_resubmit1.dat_1.140_1.180 1.140 1.180 31212

Command being timed: "pwanew_3pic_compass_2008florian3_dfunc.static card_0.100-0.141_31212_resubmit1.dat_1.140_1.180 1.140 1.180 31212"

User time (seconds): 1468.44
System time (seconds): 7.37
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 24:37.14
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 574844
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 74
Minor (reclaiming a frame) page faults: 468880
Voluntary context switches: 1190
Involuntary context switches: 20534
Swaps: 0
File system inputs: 81128
File system outputs: 1264
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
查看更多
Evening l夕情丶
4楼-- · 2019-01-03 04:34

/usr/bin/time maybe does what you want, actually. Something like.

 /usr/bin/time --format='(%Xtext+%Ddata %Mmax)'

See time(1) for details...

查看更多
爱情/是我丢掉的垃圾
5楼-- · 2019-01-03 04:35

On Linux:

Use /usr/bin/time -v <program> <args> and look for "Maximum resident set size".

(Not to be confused with the Bash time built-in command! So use the full path, /usr/bin/time)

For example:

> /usr/bin/time -v ./myapp
        User time (seconds): 0.00
        . . .
        Maximum resident set size (kbytes): 2792
        . . .

On BSD, MacOS:

Use /usr/bin/time -l <program> <args>, looking for "maximum resident set size":

>/usr/bin/time -l ./myapp
        0.01 real         0.00 user         0.00 sys
      1440  maximum resident set size
      . . .
查看更多
趁早两清
7楼-- · 2019-01-03 04:39

On MacOS Sierra use:

/usr/bin/time -l commandToMeasure

You can use grep to take what you want maybe.

查看更多
登录 后发表回答