سؤال

يحتوي عرض Oracle V$OSSTAT على بعض إحصائيات التشغيل، بما في ذلك:

  • IDLE_TICKS عدد أجزاء المئات من الثانية التي ظل فيها المعالج خاملاً، إجماليًا على جميع المعالجات
  • BUSY_TICKS عدد أجزاء المئات من الثانية التي كان المعالج مشغولاً فيها بتنفيذ تعليمات برمجية للمستخدم أو kernel، إجماليها على جميع المعالجات

الوثائق التي قرأتها لم تكن واضحة بشأن ما إذا كان قد تم إعادة تعيينها أم لا.هل يعلم أحد؟

سؤال آخر لدي هو أنني أرغب في حساب متوسط ​​حمل وحدة المعالجة المركزية الذي يواجهه النظام.للقيام بذلك أتوقع أنني يجب أن أذهب:

busy_ticks / (idle_ticks + busy_ticks)

هل هذا صحيح؟

تحديث 08 نوفمبر

يتضمن Oracle 10g r2 إحصائيات تسمى LOAD في هذا الجدول.يوفر الحمل الحالي للجهاز في وقت قراءة القيمة.وهذا أفضل بكثير من استخدام المعلومات الأخرى حيث أن بيانات *_ticks هي "منذ بدء المثيل" وليس اعتبارًا من النقطة الزمنية الحالية.

هل كانت مفيدة؟

المحلول

ستحتاج إلى تضمين "IOWAIT_TICKS" إذا كانت متوفرة.

IDLE_TICKS - عدد المئات من أ ثانيا أن المعالج كان خاملا ، تم تجميعها على جميع المعالجات

BUSY_TICKS - عدد أجزاء من مائة من الثانية التي أ كان المعالج مشغولا بتنفيذ رمز المستخدم أو kernel ، إجمالي على الكل المعالجات

IOWAIT_TICKS - عدد أجزاء من مائة من الثانية أن أ المعالج كان ينتظر الإدخال / الإخراج كاملة ، إجمالي LED على الكل المعالجات

هنا استفسار.

SELECT (select value from v$osstat where stat_name = 'BUSY_TICKS') /
(
   NVL((select value from v$osstat where stat_name = 'IDLE_TICKS'),0) +
   NVL((select value from v$osstat where stat_name = 'BUSY_TICKS'),0) +
   NVL((select value from v$osstat where stat_name = 'IOWAIT_TICKS'),0)
)
FROM DUAL;

في الإصدار 10.2 وما بعده، تم تغيير الأسماء _TICKS إلى _TIME.

تتم إعادة تعيين القيم التراكمية في طرق العرض الديناميكية عند إيقاف تشغيل مثيل قاعدة البيانات.

يرى إحصائيات الأداء التلقائية و v$OSStat لمزيد من المعلومات.

نصائح أخرى

لست مقتنعًا بأنني بحاجة إلى تضمين USER_TICKS وSYS_TICKS.

تنص وثائق BUSY_TICKS على ما يلي:

"...been busy executing user or kernel code, totalled over all processors"

مما يشير إلى أن BUSY_TICKS يتضمن بالفعل USER_TICKS وSYS_TICKS.

نفس الشيء بالنسبة لـ NICE_TICKS - والذي لا يزال وقت المستخدم (أولوية أقل فقط).

من المحتمل أن يكون تضمين IOWAIT_TICKS ضروريًا.

لنفكر في الأمر، إذا كان هدفي هو التعرف على الحمل الإجمالي للجهاز، فمن الأفضل أن أقوم بتضمين IOWAIT_TICKS في البسط والمقام، للتعرف على مقدار وقت وحدة المعالجة المركزية غير المتاح لعملي.

SELECT (
(select value from v$osstat where stat_name = 'BUSY_TICKS') +
(select value from v$osstat where stat_name = 'IOWAIT_TICKS'))
/
(
   NVL((select value from v$osstat where stat_name = 'IDLE_TICKS'),0) +
   NVL((select value from v$osstat where stat_name = 'BUSY_TICKS'),0) +
   NVL((select value from v$osstat where stat_name = 'IOWAIT_TICKS'),0)
)
FROM DUAL;

وهذا من شأنه أن يضمن أنه إذا كان الجهاز يحتوي على معدل مرتفع من تنافس الإدخال/الإخراج أو الانتظار، فلن أكون مضللاً وسيزيد من المشكلة عن طريق تشغيل المزيد من المهام.

يعتمد على وجهة نظرك.بمعرفة ما تسعى إليه، أعتقد أنك على حق.

أنت على حق فيما يتعلق بقيمة مشغول.لقد قمت بفحص أحد أنظمتي ووجدت أن Busy يساوي User + Sys.

لقد أكدت أيضًا أن حسابي مشغول وخامل طوال الوقت على نظامي (نظامي لا يحتوي على IOWAIT).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top