getrusage(2)

الاسم
getrusage - الحصول على استخدام الموارد

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <sys/resource.h>

int getrusage(int who, struct rusage *usage);

الوصف
ترجع getrusage() مقاييس استخدام الموارد لـ who، والتي يمكن أن تكون واحدة مما يلي:

RUSAGE_SELF
    إرجاع إحصائيات استخدام الموارد للعملية المستدعية، وهو مجموع الموارد المستخدمة من قبل جميع الخيوط في العملية.

RUSAGE_CHILDREN
    إرجاع إحصائيات استخدام الموارد لجميع أبناء العملية المستدعية الذين أنهوا وانُتظروا. ستتضمن هذه الإحصائيات الموارد المستخدمة من قبل الأحفاد، والنسل الأبعد، إذا انتظر جميع النسل المتوسط أبنائهم المنتهين.

RUSAGE_THREAD (منذ Linux 2.6.26)
    إرجاع إحصائيات استخدام الموارد للخيط المستدعي. يجب تعريف ماكرو اختبار الميزة _GNU_SOURCE (قبل تضمين أي ملف رأس) للحصول على تعريف هذا الثابت من <sys/resource.h>.

تُرجع استخدامات الموارد في البنية المشار إليها بواسطة usage، والتي لها الشكل التالي:

    struct rusage {
        struct timeval ru_utime; /* user CPU time used */
        struct timeval ru_stime; /* system CPU time used */
        long   ru_maxrss;        /* maximum resident set size */
        long   ru_ixrss;         /* integral shared memory size */
        long   ru_idrss;         /* integral unshared data size */
        long   ru_isrss;         /* integral unshared stack size */
        long   ru_minflt;        /* page reclaims (soft page faults) */
        long   ru_majflt;        /* page faults (hard page faults) */
        long   ru_nswap;         /* swaps */
        long   ru_inblock;       /* block input operations */
        long   ru_oublock;       /* block output operations */
        long   ru_msgsnd;        /* IPC messages sent */
        long   ru_msgrcv;        /* IPC messages received */
        long   ru_nsignals;      /* signals received */
        long   ru_nvcsw;         /* voluntary context switches */
        long   ru_nivcsw;        /* involuntary context switches */
    };

لا تكتمل جميع الحقول؛ تضبط النواة الحقول غير المُدارة على الصفر. (تُوفر الحقول غير المُدارة للتوافق مع الأنظمة الأخرى، ولأنها قد تُدعم يومًا ما على Linux.) تُفسر الحقول كما يلي:

ru_utime
    هذا هو إجمالي الوقت المنفق في التنفيذ في وضع المستخدم، معبرًا عنه في بنية timeval (ثوانٍ زائد ميكروثوانٍ).

ru_stime
    هذا هو إجمالي الوقت المنفق في التنفيذ في وضع النواة، معبرًا عنه في بنية timeval (ثوانٍ زائد ميكروثوانٍ).

ru_maxrss (منذ Linux 2.6.32)
    هذا هو الحد الأقصى لحجم المجموعة المقيمة المستخدم (بالـ KiB). بالنسبة لـ RUSAGE_CHILDREN، هذا هو حجم المجموعة المقيمة لأكبر ابن، وليس الحد الأقصى لحجم المجموعة المقيمة لشجرة العملية.

ru_ixrss (غير مُدار)
    هذا الحقل غير مستخدم حاليًا على Linux.

ru_idrss (غير مُدار)
    هذا الحقل غير مستخدم حاليًا على Linux.

ru_isrss (غير مُدار)
    هذا الحقل غير مستخدم حاليًا على Linux.

ru_minflt
    عدد أخطاء الصفحة التي تمت خدمتها دون أي نشاط إدخال/إخراج؛ هنا، يُتجنب نشاط الإدخال/الإخراج عن طريق “استعادة” إطار صفحة من قائمة الصفحات المنتظرة لإعادة التخصيص.

ru_majflt
    عدد أخطاء الصفحة التي تمت خدمتها والتي تطلبت نشاط إدخال/إخراج.

ru_nswap (غير مُدار)
    هذا الحقل غير مستخدم حاليًا على Linux.

ru_inblock (منذ Linux 2.6.22)
    عدد المرات التي اضطر فيها نظام الملفات إلى تنفيذ إدخال.

ru_oublock (منذ لينكس 2.6.22)
    عدد المرات التي اضطر فيها نظام الملفات إلى تنفيذ إخراج.

ru_msgsnd (غير مُدار)
    هذا الحقل غير مستخدم حاليًا على Linux.

ru_msgrcv (غير مُدار)
    هذا الحقل غير مستخدم حاليًا على Linux.

ru_nsignals (غير مُدار)
    هذا الحقل غير مستخدم حاليًا على Linux.

ru_nvcsw (منذ لينكس 2.6)
    عدد المرات التي نتج فيها تبديل سياق بسبب تخلي عملية طوعيًا عن المعالج قبل اكتمال شريحة وقتها (عادةً لانتظار توفر مورد).

ru_nivcsw (منذ لينكس 2.6)
    عدد المرات التي نتج فيها تبديل سياق بسبب جعل عملية ذات أولوية أعلى قابلة للتشغيل أو لأن العملية الحالية تجاوزت شريحة وقتها.

قيمة الإرجاع
عند النجاح، يُعاد الصفر. وعند حدوث خطأ، يُعاد الرقم -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EFAULT
    يشير usage إلى خارج مساحة العنوان القابلة للوصول.

EINVAL
    who غير صالح.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
getrusage() | سلامة الخيوط | MT-Safe

المعايير
POSIX.1-2024.

يحدد POSIX.1 getrusage()، لكنه يحدد فقط الحقلين ru_utime و ru_stime.

RUSAGE_THREAD خاص بلينكس.

التاريخ
4.3BSD, SVr4, SUSv1, POSIX.1-2001 XSI.

قبل لينكس 2.6.9، إذا تم تعيين تصرف SIGCHLD إلى SIG_IGN فإن استخدامات موارد العمليات الفرعية تُضمّن آليًا في القيمة التي يعيدها RUSAGE_CHILDREN، على الرغم من أن POSIX.1-2001 يمنع ذلك صراحةً. تم تصحيح هذا عدم الامتثال في لينكس 2.6.9 والإصدارات الأحدث.

تعريف البنية الموضح في بداية هذه الصفحة مأخوذ من 4.3BSD Reno.

وفرت الأنظمة القديمة دالة vtimes() بغرض مشابه لـ getrusage(). للتوافق مع الإصدارات السابقة، يوفر glibc (حتى لينكس 2.32) أيضًا vtimes(). يجب كتابة جميع التطبيقات الجديدة باستخدام getrusage(). (منذ لينكس 2.33، لم يعد glibc يوفر تنفيذًا لـ vtimes().)

ملاحظات
يتم الحفاظ على مقاييس استخدام الموارد عبر execve(2).

انظر أيضًا
clock_gettime(2), getrlimit(2), times(2), wait(2), wait4(2), clock(3), proc_pid_stat(5), proc_pid_io(5)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.