افهم بسهولة استخدام Linux RAM الخاص بك مع Smem
نشرت: 2022-01-29 قد يكون من الصعب تفسير استخدام ذاكرة Linux ومن الصعب فهمه. باستخدام smem
، من السهل معرفة الذاكرة التي تستخدمها العملية ، والعمليات الأكثر استخدامًا.
استخدام الذاكرة
يمنحك Linux العديد من الطرق للتحقق مما يحدث مع ذاكرة الوصول العشوائي للكمبيوتر الخاص بك. تكمن المشكلة في أن إدارة الذاكرة تمثل تحديًا معقدًا لنظام التشغيل الخاص بك. يجب أن توفق بين ذاكرة الوصول العشوائي الفعلية وذاكرة الوصول العشوائي الافتراضية في شكل مساحة مبادلة ومتطلبات الأنواع المختلفة من العمليات التي يتم تشغيلها في أي وقت.
تستهلك العمليات ذاكرة الوصول العشوائي أثناء تحميلها في الذاكرة. ثم يطلبون المزيد من ذاكرة الوصول العشوائي بحيث يكون لديهم مساحة لأداء المهام التي تم تصميمهم للقيام بها. بعض العمليات بالكاد تؤثر على ذاكرة الوصول العشوائي ، والبعض الآخر متعطش للذاكرة.
إن النواة وبقية نظام التشغيل ، وبيئة سطح المكتب ، وكل تطبيق أو جلسة سطر أوامر تقوم بتشغيلها كلها تطالب بجزء من الكمية المحدودة من ذاكرة الوصول العشوائي المثبتة في جهاز الكمبيوتر الخاص بك. بعض العمليات تفرخ عمليات أخرى. تشترك بعض العمليات في ذاكرة الوصول العشوائي مع العمليات الأخرى.
محاولة فك كل هذا والتوصل إلى إجابة بسيطة على السؤال "ما مقدار ذاكرة الوصول العشوائي التي يستخدمها هذا البرنامج أو العملية؟" يمكن أن يكون تحديا مفاجئا. تعد التقسيمات أمرًا رائعًا ولها مكانها ، ولكن بالمثل ، يمكن أن يكون الإفراط في استخدام المعلومات عائقًا.
على سبيل المثال ، أدى استخدام cat
لإلقاء نظرة خاطفة على نظام الملفات الزائف / proc / meminfo إلى إرجاع 50 سطرًا من الإخراج على الجهاز المستخدم للبحث في هذه المقالة. من أين تبدأ؟
cat / proc / meminfo
وبعض أدوات Linux تعطي إجابات مختلفة. على جهاز الاختبار الخاص بنا ، كان لدينا مثيل less
قيد التشغيل ، والذي كان به معرف العملية 2183.
يمكننا استخدام الأداة المساعدة pmap
مع الخيار -x
(الموسع) للحصول على صورة كاملة لاستخدام الذاكرة لعملية ما. سنستخدمها مع معرف العملية لمثيلنا less
:
pmap -x 2183
في الجزء السفلي من الإخراج ، نحصل على إجمالي حجم مجموعة Resident ، وهو مقدار ذاكرة الوصول العشوائي الرئيسية المستخدمة.
ثم استخدمنا الأداة المساعدة ps
مع الخيار -o
(الإخراج) ، وحددنا عمود RSS
، وقمنا بتمرير معرف العملية لنفس المثيل less
:
ps -o rss 2183
نحصل على نتيجة مختلفة. هذا قرار تصميم من جانب مؤلفي ps
. هذا من صفحة ps
man
:
مؤلفو المرافق الأخرى لديهم وجهات نظرهم الخاصة حول كيفية قياس استخدام ذاكرة الوصول العشوائي.
خدمة RSS و USS و PSS
حجم المجموعة المضمنة (RSS) هو مقدار ذاكرة الوصول العشوائي المخصصة لعملية ما ، باستثناء مساحة التبادل ، ولكن بما في ذلك أي ذاكرة RAM مطلوبة من قبل المكتبات المشتركة التي تستخدمها العملية.
غالبًا ما تقوم خدمة RSS بالإفراط في الإبلاغ عن استخدام ذاكرة الوصول العشوائي. إذا كانت هناك عمليتان أو أكثر تستخدمان مكتبة مشتركة واحدة أو أكثر ، فسيقوم RSS ببساطة بإضافة استخدام ذاكرة الوصول العشوائي لكل مكتبة إلى عدد استخدام ذاكرة الوصول العشوائي لكل من هذه العمليات. بالإضافة إلى عدم الدقة ، هناك بعض السخرية في هذا الأمر. تعني المكتبات المشتركة أن كل عملية لا تحتاج إلى تحميل مثيلها الخاص من مكتبة. إذا كانت المكتبة موجودة بالفعل في الذاكرة ، فستقوم بمشاركة تلك المكتبة - وتقليل سعة ذاكرة الوصول العشوائي (RAM).
يحاول "حجم المجموعة النسبي" معالجة ذلك عن طريق قسمة مقدار الذاكرة المشتركة بين العمليات التي تشاركها. إذا كانت هناك أربع عمليات تشترك في بعض الذاكرة ، فإن PSS تفيد بأن 25٪ من ذاكرة الوصول العشوائي المشتركة تستخدم بواسطة كل من هذه العمليات. هذا تقدير تقريبي ولكنه يشبه إلى حد بعيد ما يحدث من الصورة التي يرسمها RSS.
حجم المجموعة الفريد هو مقدار ذاكرة الوصول العشوائي (RAM) التي يتم استخدامها حصريًا من خلال عملية ما سواء تم استهلاكها بشكل مباشر بواسطة العملية ، أو استخدامها بواسطة المكتبات التي يتم استخدامها فقط بواسطة العملية. مرة أخرى ، يتجاهل مساحة التبادل. إنه مهتم فقط بذاكرة الوصول العشوائي الفعلية.
USS و PSS هي المصطلحات والمفاهيم التي اقترحها Matt Mackall ، مؤلف smem
.
فائدة smem
تُبلغ الأداة المساعدة smem
عن الذاكرة المستخدمة بواسطة العمليات أو المستخدمين أو الخرائط أو على مستوى النظام. في جميع التوزيعات التي اختبرناها ، كان يتطلب التثبيت. لتثبيته على Ubuntu ، استخدم هذا الأمر:
sudo apt تثبيت smem
لتثبيت smem
على Fedora تحتاج إلى كتابة:
sudo dnf تثبيت smem
لتثبيت smem
على Manjaro استخدم:
sudo pacman -Sy smem
يمنحك استخدام smem
بدون خيارات قائمة بالعمليات التي تستخدم ذاكرة الوصول العشوائي.
سميم
يتم عرض جدول المعلومات في نافذة المحطة.
الأعمدة هي:
- PID : معرف العملية للعملية التي تستخدم الذاكرة.
- المستخدم : اسم المستخدم الذي يملك العملية.
- الأمر : سطر الأوامر الذي أطلق العملية.
- المبادلة : مقدار مساحة التبديل التي تستخدمها العملية.
- USS : حجم المجموعة الفريدة.
- PSS : حجم المجموعة النسبي.
- RSS : حجم مجموعة المقيمين.
لرؤية الأحجام المعبر عنها كنسب مئوية ، استخدم الخيار -p
(النسبة المئوية).
smem -p
تم استبدال الأحجام بالبايت بالنسب المئوية.
لرؤية الأشكال معروضة بشكل أكثر ملاءمة للإنسان ، استخدم الخيار -k
(اختصار). يؤدي هذا إلى تقليص الأرقام وإضافة مؤشرات الوحدة.
smem -k
بدلاً من البايت الخام ، تظهر الأحجام بالميغابايت والجيجابايت وما إلى ذلك.
لإضافة سطر إجماليات ، استخدم الخيار -t
(إجماليات).
smem -k -t
يعرض السطر الأخير من الناتج الإجماليات لكل عمود.
تنقيح التقرير
يمكنك أن تطلب من smem
الإبلاغ عن استخدام الذاكرة من قبل المستخدمين أو التعيين (المكتبات) أو على مستوى النظام. لتصفية الإخراج من قبل المستخدم ، استخدم الخيار -u
(المستخدم). لاحظ أنه إذا كنت تريد رؤية أكثر من مجرد استخدامك الخاص ، فستحتاج إلى تشغيل smem
مع sudo
.
smem -u
sudo smem -u
كما ترى ، فإن الإخراج ينحني عن الشكل لأسماء المستخدمين التي تزيد عن ثمانية أحرف.
لمعرفة الاستخدام المعين للمكتبات قيد الاستخدام ، بغض النظر عن العمليات التي تستخدم المكتبات ، أو المستخدمين الذين يمتلكون هذه العمليات ، استخدم الخيار -m
(تعيين).
smem -m -k -t
لقد طلبنا أيضًا قيمًا يمكن قراءتها وإجماليها.
لمعرفة استخدام الذاكرة على مستوى النظام ، استخدم الخيار -w
(على مستوى النظام).
smem -w -k -t
الإبلاغ عن برنامج واحد
مع القليل من سحر سطر الأوامر ، يمكننا الإبلاغ عن برنامج واحد وجميع عملياته الفرعية. سنقوم بتوجيه الإخراج من smem
إلى tail
ونطلب من tail
إظهار السطر الأخير فقط. سنطلب من smem
استخدام قيم يمكن للبشر قراءتها وتقديم إجمالي. سيكون الإجمالي هو السطر الأخير ، وهذا هو خط tail
الذي سيعرضه لنا.
سنستخدم الخيار -c
(الأعمدة) مع smem
بالأعمدة التي نريد تضمينها في الإخراج. سنقتصر هذا على عمود الحجم المتناسب للمجموعة. يسمح لنا الخيار -P
(مرشح العملية) بإعطاء سلسلة بحث إلى smem
. سيتم تضمين خطوط الإخراج المطابقة فقط.
smem -c pss -P firefox -k -t | الذيل ن 1
هذه طريقة سريعة وأنيقة لمعرفة استهلاك ذاكرة الوصول العشوائي لبرنامج ما والعمليات التابعة له.
توليد الرسوم البيانية
يمكنك تمرير خيارات --pie
أو --bar
لجعل smem
يولد الرسوم البيانية. يجب أن يقال أنه مع وجود عدد كبير جدًا من الفئات ، تصبح الرسوم البيانية غير مفهومة بسرعة ، ولكنها يمكن أن تكون مفيدة للحصول على نظرة عامة مرئية سريعة.
تنسيق الأمر هو:
smem - اسم بي اسم يو إس إس
يظهر المخطط الدائري في نافذة العارض الخاصة به.
لمشاهدة قطع الأرض الأخرى ، استخدم pss
أو rss
بدلاً من uss
. لمشاهدة الرسم البياني الشريطي ، استخدم --bar
بدلاً من --pie
.
لكي يعمل هذا ، ستحتاج إلى تثبيت Python ، جنبًا إلى جنب مع مكتبة matplotlib
. تم تثبيت هذه بالفعل على توزيعات Ubuntu و Fedora و Manjaro التي اختبرناها.
الأشياء الجيدة تأتي في مجموعات صغيرة
تحتوي الأداة المساعدة smem
على بعض الحيل الأخرى في جعبتها ، ونحن نشجعك على مراجعة صفحة man
الخاصة بها. مرجعها الرئيسي هو ما أوضحناه هنا ، وهي أداة صغيرة رائعة في صندوق أدوات CLI الخاص بك.
ذات صلة: 37 أمرًا مهمًا من أوامر Linux يجب أن تعرفه