انتقل إلى المحتوى الرئيسي

الفصل 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