Помилкові оцінки використання оперативної пам'яті з інструментами командного рядка


-1

Я намагаюся виміряти використання оперативної пам'яті MyProcess args

Час GNU

Слідом за цією публікацією

gtime -v ./MyProcess args

[..]
Maximum resident set size (kbytes): 303316992 # (303 GB)
[..]

Я точно не маю 303 ГБ оперативної пам’яті на своєму комп’ютері!

zsh - час

Слідом за цією публікацією

zsh
TIMEFMT='%J   %U  user %S system %P cpu %*E total'$'\n'\
'avg shared (code):         %X KB'$'\n'\
'avg unshared (data/stack): %D KB'$'\n'\
'total (sum):               %K KB'$'\n'\
'max memory:                %M MB'$'\n'\
'page faults from disk:     %F'$'\n'\
'other page faults:         %R'

time ./MyProcess args

avg shared (code):         0 KB
avg unshared (data/stack): 0 KB
total (sum):               0 KB
max memory:                73204 MB # (73 GB)
page faults from disk:     0
other page faults:         18528

У мене також немає 73 ГБ оперативної пам’яті на моїй машині!

tstime

Після цієї публікації ... Не вдалося встановити її!

Монітор активності

Монітор активності дає мені оперативну пам'ять близько 60 Мб. Зазвичай це очікуване використання оперативної пам'яті.

Звичайно, MyProcessце детерміновано, і використання оперативної пам’яті не повинно змінюватись від одного запуску до іншого.

Чи можете ви допомогти мені розібратися, що відбувається не так (якщо що-небудь), і як я можу виміряти використання оперативної пам’яті в процесі з timeподібним типом команди?


FYI, я використовую Mac OS X 10.11.3


Я не розумію розділ usz-time, питання, яке ви згадуєте, не показує usz або time, і перший пост насправді дає вам відповідь. Перевірте, що ви написали, оскільки URL-адреси не говорять про те, що ви цитуєте
Марк

Також час ./MyProcess arfs не робить того, про що ви кажете
Марк

Відповіді:


4

По-перше, OS X не є Linux, тому не слід вважати, що доксументація Linux працює.

Я думаю, ви насправді отримали правильну відповідь у висновок часу - максимальний розмір набору резидентів - 73 Мб. (Цей фрагмент коду означає, що не macOS має розмір у кілобайтах, тоді як Apple, як в нижченаведеній документації, знаходиться в байтах)

Використовувати довідкові сторінки OSX починаються з man time- так time -l ./processдає

-l Вміст структури русажу надруковано.

Встановлюється rusageструктура, за допомогою getrusage()якої входять поля

struct rusage {
             struct timeval ru_utime; /* user time used */
             struct timeval ru_stime; /* system time used */
             long ru_maxrss;          /* max resident set size */

і

ru_maxrss - максимально використаний розмір набору резидентів (у байтах).

тому time -l ./MyProcess argsслід давати те, що ти хочеш.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.