الفصل 4.5 - العمليات والموارد
الأهداف التعليمية
في نهاية هذا الفصل، ستكون قادرًا على:
- فهم استخدام CPU من قبل العمليات
- فهم استخدام الذاكرة
- مراقبة الموارد باستخدام أدوات مختلفة
- تحديد العمليات المستهلكة
- تحديد الموارد
استخدام CPU
قياس CPU
# باستخدام ps
ps aux --sort=-%cpu | head
# باستخدام top
top
# عمود %CPU
# باستخدام htop
htop
# أشرطة CPU لكل عملية
وقت CPU
# إجمالي وقت CPU المستخدم
ps -eo pid,time,comm
# التنسيق: HH:MM:SS
# مثال: 01:23:45 = 1h 23min 45s
حمل CPU (متوسط الحمل)
# رؤية الحمل
uptime
# مثال: load average: 1.25, 0.85, 0.65
# 1 دقيقة، 5 دقائق، 15 دقيقة
# التفسير:
# < عدد CPUs: جيد
# = عدد CPUs: استخدام كامل
# > عدد CPUs: تحميل زائد
# عدد CPUs
nproc
lscpu | grep "^CPU(s)"
استخدام الذاكرة
الذاكرة لكل عملية
# باستخدام ps
ps aux --sort=-%mem | head
# تنسيق قابل للقراءة
ps aux --sort=-%mem -o pid,%mem,rss,comm | head
# باستخدام top
top
# عمود %MEM، RES (RSS)
# RSS = حجم المجموعة المقيمة (الذاكرة الفعلية)
أنواع الذاكرة
# رؤية التفاصيل
cat /proc/PID/status | grep -i mem
# VSZ: الحجم الافتراضي (الذاكرة الافتراضية)
# RSS: حجم المجموعة المقيمة (الذاكرة الفعلية)
# Shared: الذاكرة المشتركة
الذاكرة الكلية
# نظرة عامة
free -h
# تفاصيل
cat /proc/meminfo
# لكل عملية
ps aux --sort=-%mem | head -10
أدوات المراقبة
vmstat - إحصائيات النظام
# إحصائيات كل ثانية
vmstat 1
# الأعمدة المهمة:
# r: العمليات في الانتظار
# b: العمليات المحظورة
# swpd: التبديل المستخدم
# free: الذاكرة الحرة
# si/so: التبديل الداخل/الخارج
# us/sy/id: CPU المستخدم/النظام/الخامل
iostat - إحصائيات I/O
# التثبيت إذا لزم الأمر
sudo apt install sysstat # Ubuntu/Debian
# إحصائيات I/O
iostat -x 1
# الأعمدة:
# %util: استخدام القرص
# r/s, w/s: قراءات/كتابات في الثانية
sar - تقرير نشاط النظام
# تاريخ CPU
sar -u
# تاريخ الذاكرة
sar -r
# تاريخ I/O
sar -b
# في الوقت الحقيقي
sar -u 1 10 # CPU، 1 ثانية، 10 مرات
تحديد العمليات المستهلكة
أعلى 10 CPU
ps aux --sort=-%cpu | head -11 | tail -10
أعلى 10 ذاكرة
ps aux --sort=-%mem | head -11 | tail -10
العمليات حسب المستخدم
# CPU حسب المستخدم
ps aux | awk '{cpu[$1]+=$3} END {for (user in cpu) print user, cpu[user]"%"}'
# الذاكرة حسب المستخدم
ps aux | awk '{mem[$1]+=$4} END {for (user in mem) print user, mem[user]"%"}'
تحديد الموارد
ulimit - حدود لكل عملية
# رؤية الحدود
ulimit -a
# تحديد الذاكرة الافتراضية
ulimit -v 1000000 # 1GB في KB
# تحديد العمليات
ulimit -u 100
# تحديد الملفات المفتوحة
ulimit -n 1024
# دائم: /etc/security/limits.conf
cgroups - التحكم المتقدم
# رؤية cgroups
systemd-cgtop
# تحديد CPU
systemd-run --slice=my-slice --property=CPUQuota=50% commande
# تحديد الذاكرة
systemd-run --slice=my-slice --property=MemoryLimit=1G commande
ملخص
في هذا الفصل، تعلمت:
CPU: %CPU، وقت CPU، متوسط الحمل
الذاكرة: %MEM، RSS، VSZ، أنواع الذاكرة
المراقبة: vmstat، iostat، sar للإحصائيات
التحديد: ps مع الفرز للعمليات المستهلكة
الحدود: ulimit، cgroups للتحكم في الموارد
الخطوات التالية
الفصل 4.6: الوظائف والمهام في الخلفية
الوحدة 5: المستخدمون والأذونات
تم إنشاء الفصل في: ديسمبر 2024