Avatar ·

كيفية تحديد استهلاك وحدة المعالجة المركزية والذاكرة من داخل العملية في C++؟

مرحبًا بالجميع! أكتب بلغة C++ منذ حوالي عام، وواجهت مهمة أربكتني. أحتاج أن يتتبع برنامجي (خادم لمعالجة الصور) في الوقت الفعلي مقدار الذاكرة ووحدة المعالجة المركزية التي يستهلكها. المشكلة أنني لا أفهم كيفية الحصول على هذه البيانات من داخل العملية نفسها. على سبيل المثال، أريد إخراج شيء مثل هذا في السجل: "ذروة استهلاك الذاكرة: 150 ميجابايت، تحميل وحدة المعالجة المركزية: 45%". حاولت استخدام متغيرات بسيطة مثل `sizeof()` للكائنات، لكن هذا لا يعطي صورة حقيقية — لأن الذاكرة تُخصص في الكومات (heap)، بالإضافة إلى النفقات العامة للمكدس والموارد النظامية. مع وحدة المعالجة المركزية الأمر أصعب: يمكنني قياس وقت تنفيذ جزء من الكود باستخدام `clock()`، لكن هذا الوقت هو فقط لخيطي، وليس للبرنامج بأكمله، ولا يأخذ في الاعتبار وقت انتظار الإدخال/الإخراج. أرجو إرشادي، هل هناك طريقة قياسية أو مكتبات تسمح بالحصول على هذه المقاييس من داخل العملية؟ يُفضل أن تكون عبر المنصات، لكن على الأقل لنظامي Linux وWindows.