افهم بسهولة استخدام Linux RAM الخاص بك مع Smem

نشرت: 2022-01-29
شاشة كمبيوتر محمول تعرض شعار Bash shell فوق خلفية حمراء
fatmawati achmad zaenuri / Shutterstock

قد يكون من الصعب تفسير استخدام ذاكرة Linux ومن الصعب فهمه. باستخدام smem ، من السهل معرفة الذاكرة التي تستخدمها العملية ، والعمليات الأكثر استخدامًا.

استخدام الذاكرة

يمنحك Linux العديد من الطرق للتحقق مما يحدث مع ذاكرة الوصول العشوائي للكمبيوتر الخاص بك. تكمن المشكلة في أن إدارة الذاكرة تمثل تحديًا معقدًا لنظام التشغيل الخاص بك. يجب أن توفق بين ذاكرة الوصول العشوائي الفعلية وذاكرة الوصول العشوائي الافتراضية في شكل مساحة مبادلة ومتطلبات الأنواع المختلفة من العمليات التي يتم تشغيلها في أي وقت.

ما مقدار ذاكرة الوصول العشوائي التي يحتاجها جهاز الكمبيوتر الخاص بك لألعاب الكمبيوتر؟
ذات الصلة كم يحتاج جهاز الكمبيوتر الخاص بك من ذاكرة الوصول العشوائي لألعاب الكمبيوتر؟

تستهلك العمليات ذاكرة الوصول العشوائي أثناء تحميلها في الذاكرة. ثم يطلبون المزيد من ذاكرة الوصول العشوائي بحيث يكون لديهم مساحة لأداء المهام التي تم تصميمهم للقيام بها. بعض العمليات بالكاد تؤثر على ذاكرة الوصول العشوائي ، والبعض الآخر متعطش للذاكرة.

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

كيفية التحقق من استخدام الذاكرة من Linux Terminal
ذات صلة كيفية التحقق من استخدام الذاكرة من Linux Terminal

محاولة فك كل هذا والتوصل إلى إجابة بسيطة على السؤال "ما مقدار ذاكرة الوصول العشوائي التي يستخدمها هذا البرنامج أو العملية؟" يمكن أن يكون تحديا مفاجئا. تعد التقسيمات أمرًا رائعًا ولها مكانها ، ولكن بالمثل ، يمكن أن يكون الإفراط في استخدام المعلومات عائقًا.

الإعلانات

على سبيل المثال ، أدى استخدام cat لإلقاء نظرة خاطفة على نظام الملفات الزائف / proc / meminfo إلى إرجاع 50 سطرًا من الإخراج على الجهاز المستخدم للبحث في هذه المقالة. من أين تبدأ؟

 cat / proc / meminfo

وبعض أدوات Linux تعطي إجابات مختلفة. على جهاز الاختبار الخاص بنا ، كان لدينا مثيل less قيد التشغيل ، والذي كان به معرف العملية 2183.

يمكننا استخدام الأداة المساعدة pmap مع الخيار -x (الموسع) للحصول على صورة كاملة لاستخدام الذاكرة لعملية ما. سنستخدمها مع معرف العملية لمثيلنا less :

 pmap -x 2183 

الاستعلام عن خريطة الذاكرة لعملية واحدة

في الجزء السفلي من الإخراج ، نحصل على إجمالي حجم مجموعة Resident ، وهو مقدار ذاكرة الوصول العشوائي الرئيسية المستخدمة.

إخراج pmap لمثيل واحد من أقل

ثم استخدمنا الأداة المساعدة ps مع الخيار -o (الإخراج) ، وحددنا عمود RSS ، وقمنا بتمرير معرف العملية لنفس المثيل less :

 ps -o rss 2183 

استخدام ps لرؤية RSS لنفس المثيل أقل

نحصل على نتيجة مختلفة. هذا قرار تصميم من جانب مؤلفي ps . هذا من صفحة ps man :

لا يحسب حقلا SIZE و RSS بعض أجزاء العملية بما في ذلك جداول الصفحات ومكدس kernel و بنية thread_info و هيكل Task_struct. هذا عادة ما يكون على الأقل 20 كيلوبايت من الذاكرة التي تكون مقيمة دائمًا. SIZE هو الحجم الافتراضي للعملية (كود + بيانات + مكدس).
الإعلانات

مؤلفو المرافق الأخرى لديهم وجهات نظرهم الخاصة حول كيفية قياس استخدام ذاكرة الوصول العشوائي.

خدمة RSS و USS و PSS

حجم المجموعة المضمنة (RSS) هو مقدار ذاكرة الوصول العشوائي المخصصة لعملية ما ، باستثناء مساحة التبادل ، ولكن بما في ذلك أي ذاكرة RAM مطلوبة من قبل المكتبات المشتركة التي تستخدمها العملية.

لماذا من الجيد أن تكون ذاكرة الوصول العشوائي للكمبيوتر الخاص بك ممتلئة
ذات صلة لماذا من الجيد أن ذاكرة الوصول العشوائي للكمبيوتر الخاص بك ممتلئة

غالبًا ما تقوم خدمة RSS بالإفراط في الإبلاغ عن استخدام ذاكرة الوصول العشوائي. إذا كانت هناك عمليتان أو أكثر تستخدمان مكتبة مشتركة واحدة أو أكثر ، فسيقوم RSS ببساطة بإضافة استخدام ذاكرة الوصول العشوائي لكل مكتبة إلى عدد استخدام ذاكرة الوصول العشوائي لكل من هذه العمليات. بالإضافة إلى عدم الدقة ، هناك بعض السخرية في هذا الأمر. تعني المكتبات المشتركة أن كل عملية لا تحتاج إلى تحميل مثيلها الخاص من مكتبة. إذا كانت المكتبة موجودة بالفعل في الذاكرة ، فستقوم بمشاركة تلك المكتبة - وتقليل سعة ذاكرة الوصول العشوائي (RAM).

يحاول "حجم المجموعة النسبي" معالجة ذلك عن طريق قسمة مقدار الذاكرة المشتركة بين العمليات التي تشاركها. إذا كانت هناك أربع عمليات تشترك في بعض الذاكرة ، فإن PSS تفيد بأن 25٪ من ذاكرة الوصول العشوائي المشتركة تستخدم بواسطة كل من هذه العمليات. هذا تقدير تقريبي ولكنه يشبه إلى حد بعيد ما يحدث من الصورة التي يرسمها RSS.

حجم المجموعة الفريد هو مقدار ذاكرة الوصول العشوائي (RAM) التي يتم استخدامها حصريًا من خلال عملية ما سواء تم استهلاكها بشكل مباشر بواسطة العملية ، أو استخدامها بواسطة المكتبات التي يتم استخدامها فقط بواسطة العملية. مرة أخرى ، يتجاهل مساحة التبادل. إنه مهتم فقط بذاكرة الوصول العشوائي الفعلية.

USS و PSS هي المصطلحات والمفاهيم التي اقترحها Matt Mackall ، مؤلف smem .

فائدة smem

تُبلغ الأداة المساعدة smem عن الذاكرة المستخدمة بواسطة العمليات أو المستخدمين أو الخرائط أو على مستوى النظام. في جميع التوزيعات التي اختبرناها ، كان يتطلب التثبيت. لتثبيته على Ubuntu ، استخدم هذا الأمر:

 sudo apt تثبيت smem 

تثبيت smem على أوبونتو

لتثبيت smem على Fedora تحتاج إلى كتابة:

 sudo dnf تثبيت smem 

تركيب smem على فيدورا

لتثبيت smem على Manjaro استخدم:

 sudo pacman -Sy smem 

تثبيت smem على Manjaro

الإعلانات

يمنحك استخدام smem بدون خيارات قائمة بالعمليات التي تستخدم ذاكرة الوصول العشوائي.

 سميم 

استدعاء smem بدون خيارات سطر الأوامر

يتم عرض جدول المعلومات في نافذة المحطة.

الإخراج الافتراضي لـ smem

الأعمدة هي:

  • PID : معرف العملية للعملية التي تستخدم الذاكرة.
  • المستخدم : اسم المستخدم الذي يملك العملية.
  • الأمر : سطر الأوامر الذي أطلق العملية.
  • المبادلة : مقدار مساحة التبديل التي تستخدمها العملية.
  • USS : حجم المجموعة الفريدة.
  • PSS : حجم المجموعة النسبي.
  • RSS : حجم مجموعة المقيمين.

لرؤية الأحجام المعبر عنها كنسب مئوية ، استخدم الخيار -p (النسبة المئوية).

 smem -p 

استخدام خيار smem -p لطلب النسب المئوية

تم استبدال الأحجام بالبايت بالنسب المئوية.

إخراج smem يظهر النسب المئوية

لرؤية الأشكال معروضة بشكل أكثر ملاءمة للإنسان ، استخدم الخيار -k (اختصار). يؤدي هذا إلى تقليص الأرقام وإضافة مؤشرات الوحدة.

 smem -k 

استخدام خيار smem -k لإظهار الأحجام بمؤشرات الوحدة

بدلاً من البايت الخام ، تظهر الأحجام بالميغابايت والجيجابايت وما إلى ذلك.

إخراج smem باستخدام مؤشرات الوحدة مثل K و M و G

الإعلانات

لإضافة سطر إجماليات ، استخدم الخيار -t (إجماليات).

 smem -k -t 

استخدام خيار smem -t لإضافة سطر إجماليات إلى الإخراج

يعرض السطر الأخير من الناتج الإجماليات لكل عمود.

خط الإجماليات في الجزء السفلي من إخراج smem

تنقيح التقرير

يمكنك أن تطلب من smem الإبلاغ عن استخدام الذاكرة من قبل المستخدمين أو التعيين (المكتبات) أو على مستوى النظام. لتصفية الإخراج من قبل المستخدم ، استخدم الخيار -u (المستخدم). لاحظ أنه إذا كنت تريد رؤية أكثر من مجرد استخدامك الخاص ، فستحتاج إلى تشغيل smem مع sudo .

 smem -u
 sudo smem -u 

استخدام خيار smem -u مع sudo وبدونه

كما ترى ، فإن الإخراج ينحني عن الشكل لأسماء المستخدمين التي تزيد عن ثمانية أحرف.

لمعرفة الاستخدام المعين للمكتبات قيد الاستخدام ، بغض النظر عن العمليات التي تستخدم المكتبات ، أو المستخدمين الذين يمتلكون هذه العمليات ، استخدم الخيار -m (تعيين).

 smem -m -k -t 

استخدام خيار smem -m للحصول على تقرير مخطط

لقد طلبنا أيضًا قيمًا يمكن قراءتها وإجماليها.

يعرض التقرير المعين smem استخدام الذاكرة بواسطة المكتبات

لمعرفة استخدام الذاكرة على مستوى النظام ، استخدم الخيار -w (على مستوى النظام).

 smem -w -k -t 

تقرير smem على مستوى النظام

الإبلاغ عن برنامج واحد

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

الإعلانات

سنستخدم الخيار -c (الأعمدة) مع smem بالأعمدة التي نريد تضمينها في الإخراج. سنقتصر هذا على عمود الحجم المتناسب للمجموعة. يسمح لنا الخيار -P (مرشح العملية) بإعطاء سلسلة بحث إلى smem . سيتم تضمين خطوط الإخراج المطابقة فقط.

 smem -c pss -P firefox -k -t | الذيل ن 1 

استخدام smem لإظهار استخدام memeory من خلال عملية وأطفالها

هذه طريقة سريعة وأنيقة لمعرفة استهلاك ذاكرة الوصول العشوائي لبرنامج ما والعمليات التابعة له.

توليد الرسوم البيانية

يمكنك تمرير خيارات --pie أو --bar لجعل smem يولد الرسوم البيانية. يجب أن يقال أنه مع وجود عدد كبير جدًا من الفئات ، تصبح الرسوم البيانية غير مفهومة بسرعة ، ولكنها يمكن أن تكون مفيدة للحصول على نظرة عامة مرئية سريعة.

تنسيق الأمر هو:

 smem - اسم بي اسم يو إس إس 

مطالبة smem بإنتاج مخطط دائري

يظهر المخطط الدائري في نافذة العارض الخاصة به.

مخطط دائري صغير في نافذة العارض الخاصة به

لمشاهدة قطع الأرض الأخرى ، استخدم pss أو rss بدلاً من uss . لمشاهدة الرسم البياني الشريطي ، استخدم --bar بدلاً من --pie .

الإعلانات

لكي يعمل هذا ، ستحتاج إلى تثبيت Python ، جنبًا إلى جنب مع مكتبة matplotlib . تم تثبيت هذه بالفعل على توزيعات Ubuntu و Fedora و Manjaro التي اختبرناها.

الأشياء الجيدة تأتي في مجموعات صغيرة

تحتوي الأداة المساعدة smem على بعض الحيل الأخرى في جعبتها ، ونحن نشجعك على مراجعة صفحة man الخاصة بها. مرجعها الرئيسي هو ما أوضحناه هنا ، وهي أداة صغيرة رائعة في صندوق أدوات CLI الخاص بك.

ذات صلة: 37 أمرًا مهمًا من أوامر Linux يجب أن تعرفه