التقاط وحدة المعالجة المركزية واستخدام الذاكرة بشكل حيوي
-
03-07-2019 - |
سؤال
وأنا على تشغيل شيل لتنفيذ تطبيق c++, الذي يقيس أداء api.لا يمكن التقاط الكمون (الوقت المستغرق للعودة قيمة مجموعة معينة من المعلمات) api ، ولكن أود أيضا أن التقاط وحدة المعالجة المركزية واستخدام الذاكرة جنبا إلى جنب في فترات من يقول 5-10 ثواني.
هل هناك طريقة للقيام بذلك دون التأثير على أداء النظام كثيرا و هذا أيضا داخل نفس السيناريو ؟ لقد وجدت العديد من الأمثلة حيث يمكن للمرء القيام به في الخارج (مستقلة) من السيناريو نحن الجري ؛ ولكن ليس واحد حيث أننا يمكن أن تفعل في نفس السيناريو.
المحلول
وكنت تشير إلى استخدام ' الوقت "القيادة و أيضا ' vmstat "الأوامر. أول سيعطي استخدام وحدة المعالجة المركزية من تنفيذ قابل للتنفيذ والثانية - تفريغ الدوري (أي مرة واحدة في الثانية الواحدة) وحدة المعالجة المركزية / الذاكرة / IO النظام
مثال:
time dd if=/dev/zero bs=1K of=/dev/null count=1024000
1024000+0 records in
1024000+0 records out
1048576000 bytes (1.0 GB) copied, 0.738194 seconds, 1.4 GB/s
0.218u 0.519s 0:00.73 98.6% 0+0k 0+0io 0pf+0w <== that's time result
نصائح أخرى
إذا كنت تبحث عن التقاط وحدة المعالجة المركزية و ذاكرة استخدام حيوي بالنسبة كامل مربع لينكس ، ثم الأوامر التالية يمكن أن تساعدك أيضا:
وحدة المعالجة المركزية
vmstat -n 15 10| awk '{now=strftime("%Y-%m-%d %T "); print now $0}'> CPUDataDump.csv &
vmstat
يتم استخدام مجموعة من وحدة المعالجة المركزية عدادات
-n
عن التأخر في القيمة ، في هذه الحالة هو 15 يعني بعد كل 15 ثانية, احصائيات سيتم جمعها.
ثم 10
هو عدد فترات ، سيكون هناك 10 التكرار في هذا المثال
awk '{now=strftime("%Y-%m-%d %T "); print now $0}'
وهذا تفريغ الزمني لكل التكرار
في النهاية ملف تفريغ مع &
من أجل استمرار
الذاكرة
free -m -s 10 10 | awk '{now=strftime("%Y-%m-%d %T "); print now $0}'> DataDumpMemoryfile.csv &
free
هو mem احصائيات جمع
-m
هذا هو الوحدات mem (يمكنك استخدام -b
بالنسبة بايت ، -k
بالنسبة كيلو بايت ، -g
بالنسبة غيغابايت)
ثم 10
هو عدد الفترات (سيكون هناك 10 التكرار في هذا المثال)
awk'{now=strftime("%Y-%m-%d %T "); print now $0}'
وهذا تفريغ الزمني لكل التكرار
في النهاية تفريغ &
من أجل استمرار