সময়ের মতো কোনও আদেশ আছে, তবে স্মৃতি ব্যবহারের জন্য?


34

এর মতো কোনও কমান্ড আছে কি timeতবে এটি আরও পরিসংখ্যানের প্রতিবেদন করে? আমি ভালো কিছু করতে পারলে দুর্দান্ত হবে:

$ statistics some_command
time:
    real    0m3.002s
    user    0m0.000s
    sys     0m0.000s
memory:
    min     41K
    peak    2.5M
    mean    1.1M
. . .

যদি এটি আরও এগিয়ে যেতে পারে তবে তা দুর্দান্ত। এই মুহূর্তে, ডিবাগিংয়ের জন্য, আমি হয় top(প্রকৃতপক্ষে glances) ইচ্ছাকৃতভাবে ঘুরে দেখছি , বা আমার কোডের মাধ্যমে সমস্ত বিবৃতি ছিটিয়েছি।

যদি এমন কিছু ছিল যা আমি একটি আদেশ পাঠাতে পারি তবে তা দুর্দান্ত।

সম্পাদনা

আমি একটি সমাধান পেয়েছি: perfপ্যাকেজে linux-toolsএবং linux-tools-commonউবুন্টু 12.04 এ।

$ perf stat ./someprocess
Performance counter stats for './someprocess':

      12007.384578 task-clock                #    0.996 CPUs utilized          
             1,092 context-switches          #    0.000 M/sec                  
                16 CPU-migrations            #    0.000 M/sec                  
           295,102 page-faults               #    0.025 M/sec                  
    40,553,682,299 cycles                    #    3.377 GHz                     [83.33%]
    18,400,458,723 stalled-cycles-frontend   #   45.37% frontend cycles idle    [83.35%]
     8,356,832,355 stalled-cycles-backend    #   20.61% backend  cycles idle    [66.64%]
    56,930,684,595 instructions              #    1.40  insns per cycle        
                                             #    0.32  stalled cycles per insn [83.34%]
     9,083,443,825 branches                  #  756.488 M/sec                   [83.35%]
         3,431,737 branch-misses             #    0.04% of all branches         [83.33%]

      12.051963969 seconds time elapsed

( যে পৃষ্ঠাটি সাহায্য করেছে ))


3
আপনার perfফলাফলগুলিতে কোনও মেমরির পরিসংখ্যান নেই ।
BatchyX

"সময়ের মতো তবে মেমরির জন্য" সত্যিকার অর্থে বোঝায় না। আপনি ঠিক কী জানতে চান? স্মৃতি কোনও পরিমাপ নয়।
ডের হচস্টাপলার

1
আপনি কি এমন কোনও অ্যাপ্লিকেশন নিরীক্ষণ করতে যাচ্ছেন? তা হলে কোন ভাষায়?
dset0x

উত্তর:


28

zshtimeআগের চেয়ে আরও শক্তিশালী অন্তর্নির্মিত কমান্ড bashরয়েছে এবং zshসংস্করণটিতে মেমরির পরিসংখ্যানগুলি প্রতিবেদন করতে পারে।

এমনকি যদি আপনি zshপ্রতিদিনের শেল হিসাবে নিয়মিত ব্যবহার না করেন , আপনি যখন এই ধরণের পরিসংখ্যান সংগ্রহ করতে চান তখনই আপনি এটি চালাতে পারেন।

TIMEFMTআপনার পছন্দসই আউটপুটটি নির্দেশ করতে পরিবেশ পরিবর্তনশীল সেট করুন । আমার .zshrcফাইলে যা আছে তা এখানে (সম্ভবত কিছুটা অভিনব, তবে আমি এটি পছন্দ করি):

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 ls
[... the output of ls, followed by:]
ls -G   0.00s  user 0.00s system 91% cpu 0.004 total
avg shared (code):         0 KB
avg unshared (data/stack): 0 KB
total (sum):               0 KB
max memory:                668 MB
page faults from disk:     0
other page faults:         337

আপনার উত্তরটি আমাকে অনেক সাহায্য করেছে তবে আমার একটি প্রশ্ন রয়েছে: এমবি-তে 'সর্বোচ্চ মেমরি'? আমি বিশ্বাস করি এটি কেবি বা বি।
অ্যান্ড্রেস ২

এটি খুব খুশী হয়েছে, @ এন্ড্রেস। আমার পরীক্ষাগুলিতে, 'সর্বাধিক মেমরি' এমবিতে রয়েছে , তবে আপনি এটি gist.github.com/mmorearty/fa34c0f29abe454fd14b সংকলন করে এবং উদাহরণস্বরূপ zsh এ এটি চালিয়ে নিজে পরীক্ষা করতে পারেন time malloc-bytes 10000000। এটি 10 ​​মেগাবাইট ম্যালোক করবে, তাই এটি চেষ্টা করে দেখুন এবং তারপরে দেখুন কি zsh রিপোর্ট করে।
মাইক মোরার্টি

Zsh ডক্স অনুসারে %Mমেগাবাইটে সর্বাধিক স্মৃতি রয়েছে।
gerrard00

%Mকিলোবাইটে
অ্যান্টি হাপাল

16

জিএনইউ সময় বাশ-এ নির্মিত সংস্করণটির চেয়ে কিছুটা বেশি তথ্য জানাতে পারে; এটি command timeকেবল চাওয়ার চেয়ে ব্যবহার করুন timeএবং বিশদটির জন্য ম্যান পৃষ্ঠা বা তথ্য দেখুন।


2
বা কল করুন/usr/bin/time -v ./my_command.sh
ostrokach

3

রিচার্ডের উত্তরের ভিত্তিতে, আপনি জিএনইউ সময় ব্যবহার করতে একটি উপনাম তৈরি করতে পারেন এবং গড় এবং সর্বোচ্চ মেমরির তথ্য সরবরাহ করতে পারেন:

alias time="$(which time) -f '\t%E real,\t%U user,\t%S sys,\t%K amem,\t%M mmem'"

বা আপনার পরিবেশ সামঞ্জস্য করুন:

export TIME='\t%E real,\t%U user,\t%S sys,\t%K amem,\t%M mmem'

তবে সচেতন থাকুন যে এটি কেবল এটির জন্য কাজ করে /usr/bin/timeযা প্রায়শই ডিফল্টরূপে ডাকা হয় না।

ম্যান পৃষ্ঠা থেকে:

K কিলোবাইটে মোট গড় (ডেটা + স্ট্যাক + পাঠ্য) প্রক্রিয়াটির মেমরি ব্যবহার।

এম কিলোবাইটে তার জীবদ্দশায় প্রক্রিয়াটির সর্বাধিক আবাসিক সেট আকার।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.