time
adalah perintah yang brilian jika Anda ingin mengetahui berapa banyak waktu CPU yang diberikan perintah.
Saya mencari sesuatu yang serupa yang dapat mengukur penggunaan maksimal RAM program dan setiap anak. Lebih disukai itu harus membedakan antara memori yang dialokasikan yang digunakan dan yang tidak digunakan. Mungkin bahkan bisa memberikan penggunaan memori median (jadi penggunaan memori yang Anda harapkan saat berjalan untuk waktu yang lama).
Jadi saya ingin melakukan:
rammeassure my_program my_args
dan dapatkan output yang mirip dengan:
Max memory allocated: 10233303 Bytes
Max memory used: 7233303 Bytes
Median memory allocation: 5233303 Bytes
Saya telah melihat memusg
https://gist.github.com/526585/590293d6527c91e48fcb08edb8de9fd6c88a6d82 tapi saya menganggapnya sebagai peretasan.
./tstime -t bash -c 'perl -e "\$a=\"x\"x100000000;\$b=\$a.\$a;\$b=\"\";\$a=\"\";sleep 10;"'
glibc
(dan berbagai perpustakaan lainnya, mereka disebut "dibagikan" untuk sesuatu). Banyak daemon yang memuat konfigurasi ke dalam memori dan fork (2) anak-anak, yang kemudian membagikan data konfigurasi. Lalu ada data di buffer readahead / writebehind yang dikelola oleh kernel. Dan kemudian ada layanan yang merupakan kawanan proses longgar digabungkan (pikirkan lingkungan desktop Anda dan semua applet dan hal-hal latar belakang).time
adalah built-in dari shell Anda. Jika Anda sukatime
tetapi memerlukan informasi lebih lanjut, coba GNUtime
dalam-v
mode verbose ( ):Cari paket "waktu" atau "gnutime" di manajer paket Anda.
sumber
wait3
mengisi struktur yang dijelaskan dalamgetrusage(2)
: 'Tidak semua bidang bermakna di Linux. [..] '.tstime
melaporkan 10652 KiB. Lagi di bawah Ubuntu 10,04./usr/bin/time -v perl -e '$a="x"x100000000;$b=$a.$a;sleep 10;'
. top mengatakan butuh sekitar 570 MB, tetapi waktu mengatakan 2.3 GB. Dalam praktiknya angka itu tidak bisa saya gunakan.Mungkin berlebihan, tetapi saya baru saja menemukan yang
valgrind
memiliki alat bagus bernamamassif
. Saya mengujinya padaxterm
:Dan Anda mendapatkan grafik penggunaan memori yang bagus:
bersama dengan info penggunaan memori yang terlalu rinci. Detail dalam manual valgrind .
Program akan berjalan sekitar 20x lebih lambat. Juga, saya menjalankan beberapa perintah di dalam
xterm
. Jejak memori mereka telah diperhitungkan karena--trace-children=yes
opsinya ada!sumber
Meskipun topiknya sudah cukup lama, saya ingin berbagi proyek lain yang muncul dari fitur cgroups Linux kernel.
https://github.com/gsauthof/cgmemtime :
sumber
Sepertinya tstime tidak berfungsi lagi di bawah non-root di Linux> = 3.0. Inilah utilitas polling yang saya tulis untuk meretas masalah ini: https://github.com/jhclark/memusg/blob/master/memusg
sumber
/usr/bin/time -v
memberikan hasil yang benar dalam versi yang lebih baru. Dalam versi yang lebih lama Anda hanya perlu membagi dengan 4 untuk mendapatkan jumlah yang benar.