- يقوم irqbalance بتوزيع المقاطعات خردوات بين النوى لتجنب الاختناقات في أنظمة SMP، وهو أمر مفيد بشكل خاص في الخوادم ذات حركة المرور العالية.
- يعتمد الأداء الفعلي على الجمع بين irqbalance و NAPI وقوائم انتظار الشبكة ومخازن TCP ذات الحجم المناسب و qdisc الحديثة وخوارزميات التحكم في الازدحام مثل BBR.
- تتيح إعدادات NIC المتقدمة (المخازن المؤقتة الحلقية، RSS/RPS، عمليات التفريغ) وتعيين تقارب IRQ اليدوي مزيدًا من الضبط الدقيق لتوزيع الحمل بين وحدات المعالجة المركزية.
- التحسين الشامل لـ لينكس يتم ذلك من خلال إجراء تغييرات على الذاكرة، ومساحة التبديل، وذاكرة الوصول العشوائي المؤقتة، وأنظمة الملفات المؤقتة، ومعلمات سطح المكتب والتطبيقات مثل فايرفوكس.

عندما تبدأ في التلاعب بأداء نظام GNU/Linux، عاجلاً أم آجلاً يظهر بطل متكرر: irqbalance وتوزيع مقاطعات الأجهزة بين وحدات المعالجة المركزيةيتم الحديث عنه في المنتديات، وفي وثائق التوزيع، وفي الدروس التعليمية حول "ضبط" النظام لجعله يعمل... ولكن نادراً ما يتم شرحه جيداً ما يفعله بالفعل، وفي أي سيناريوهات يساهم، وفي أي سيناريوهات لن تلاحظ أي شيء على الإطلاق.
علاوة على ذلك، كل هذا يتعلق موازنة مقاطعات IRQ يتشابك الأمر مع مفاهيم متقدمة أخرى: NAPI، وقوائم انتظار استقبال النواة، ومخازن NIC المؤقتة، وخوارزميات التحكم في ازدحام TCP، وRSS/RPS، وBBR، وإعدادات sysctl، وبرامج الأداء مثل التحميل المسبق، وذاكرة التبديل المضغوطة zram، وتحسين GTK، والملفات المؤقتة في ذاكرة الوصول العشوائي، وما إلى ذلك. من السهل جدًا أن تضيع بين هذه المعلمات. الأوامر وملفات التكوين دون فهم واضح لوظيفة كل عنصر.
ما هو IRQbalance وما هو استخدامه الفعلي في نظام لينكس؟
irqbalance هو برنامج خفي يعمل في مساحة المستخدم وهو مسؤول عن توزيع مقاطعات الأجهزة (IRQs) بين نوى وحدة المعالجة المركزية المختلفة. في أنظمة المعالجة المتعددة (SMP). هدفها ليس سحريًا: إنها ببساطة تحاول منع جميع أعمال صيانة الأجهزة (الشبكة، الأقراص، ذراع USBإلخ) تقع دائمًا على نفس النواة.
عندما يُصدر جهاز ما مقاطعة (IRQ)، يقوم نظام التشغيل بتنفيذ معالج المقاطعة. إذا تركزت العديد من هذه المقاطعات على وحدة معالجة مركزية واحدة، فقد تُصبح هذه الوحدة مُحمّلة فوق طاقتها بينما تبقى الوحدات الأخرى في وضع الخمول. يقوم irqbalance بتحليل حجم المقاطعات لكل جهاز وتعيين كل IRQ إلى نواة "مناسبة" لتوزيع الحمل.، مع محاولة تقليل خسائر ذاكرة التخزين المؤقت في نفس الوقت واحترام التقارب المنطقي (على سبيل المثال، الحفاظ على مقاطعات IRQs الخاصة بنفس واجهة الشبكة ذات الصلة).
في الأنظمة ذات وحدة معالجة مركزية واحدة أو أنوية تتشارك بالكامل في ذاكرة التخزين المؤقت من المستوى الثانييكتشف برنامج irqbalance تلقائيًا أنه لا يوجد ما يفعله، فيُغلق. هذا ليس خطأً، بل ببساطة لا مجال للتحسين. مع ذلك، في الخوادم التي تحتوي على وحدات معالجة مركزية متعددة أو أنوية كثيرة، وخاصةً مع حركة مرور شبكية كثيفة أو عمليات إدخال/إخراج عالية، قد يُحدث ذلك فرقًا في زمن الاستجابة والاستقرار.
يمكن تشغيل البرنامج الخفي في الخلفية (وضع الخدمة) أو حسب الحاجة باستخدام الخيار – لقطة واحدة. وعلاوة على ذلك، يسمح باستبعاد طلبات IRQ محددة عن طريق الخيار --banirq ومنعها من استخدام أنوية معينة باستخدام قناع وحدة المعالجة المركزية المحدد في متغير البيئة IRQBALANCE_BANNED_CPUSيتم التحكم في كل هذا عادةً من خلال ملف التكوين الخاص بك، والذي يوجد في العديد من التوزيعات في /etc/default/irqbalance o /etc/irqbalance.env.
موازنة المقاطعات: مقارنة بين موازنة النواة وموازنة المقاطعات، ومتى يكون ذلك ملحوظًا
يمتلك نظام لينكس بالفعل آلية داخلية خاصة به لتحديد وحدة المعالجة المركزية التي تخدم كل مقاطعة، دون الحاجة إلى irqbalance. يمكن للنواة تحديد تقارب المقاطعات وتوزيعها باتباع قواعد استدلالية بسيطة.وفي العديد من أجهزة الكمبيوتر المكتبية، يكون ذلك أكثر من كافٍ: لن يلاحظ المستخدم العادي أي فرق من خلال تشغيل أو إيقاف irqbalance.
ولهذا السبب من الشائع نسبياً أن يقوم شخص ما بتجربة irqbalance على توزيعة سطح المكتب الخاصة به ويقول: "لا ألاحظ أي تحسن، ولكن لا شيء سيئ أيضاً."هذا أمر طبيعي تماماً. في جهاز كمبيوتر محمول مزود بمعالج رباعي النواة وبطاقة شبكة واحدة بدون حمل إدخال/إخراج ثقيل، فإن مُجدول لينكس وآليات النواة الداخلية (NAPI، وقوائم انتظار الشبكة، وما إلى ذلك) تحافظ بالفعل على توازن الأمور بشكل معقول.
حيث يكون الأمر منطقياً هو في خوادم متعددة النوى وحركة مرور كثيفة: قواعد البيانات خوادم بروكسي عكسية كبيرة، وخوادم ويب ذات حركة مرور عالية، تخزين من النسخ الاحتياطية، الآلات الافتراضية ذات الأحمال الثقيلةإلخ. قد يؤدي ربط العديد من مقاطعات الشبكة أو القرص بنواة واحدة إلى حدوث اختناق. ويؤدي توزيعها بشكل صحيح إلى تقليل قوائم الانتظار وأوقات الخدمة وارتفاعات زمن الاستجابة.
يفضل بعض المستخدمين استخدام irqbalance بدلاً من irqbalance قم بتخصيص النواة باستخدام خيارات مثل acpi_irq_balance في GRUB. يؤثر هذا المعامل على كيفية تخصيص ACPI ونواة النظام لمقاطعات IRQ، ولكنه لا يوفر نفس المرونة الديناميكية التي يوفرها irqbalance، الذي يعيد تقييم التخصيص بناءً على الحمل الفعلي. إنهما نهجان مختلفان: الأول أكثر ثباتًا وأقل تعقيدًا؛ والثاني أكثر تكيفًا.
في بيئات زمن الاستجابة المنخفض للغاية (على سبيل المثال، بعض منصات التداول أو الشبكات التي تستخدم DPDK)، يحدث العكس: عادة ما يتم تعطيل irqbalance ويتم تعيين IRQs يدويًا إلى أنوية محددة.إلى جانب الربط الدقيق بين قوائم انتظار بطاقات الشبكة ووحدات المعالجة المركزية. في هذه السيناريوهات، يُسعى إلى التحكم المطلق، ويتم التضحية ببعض الأتمتة.
المقاطعات، وNAPI، وقوائم انتظار الشبكة: كيف يتناسب IRQbalance معها
لفهم دور irqbalance بشكل أفضل، نحتاج إلى التعمق أكثر والنظر في كيفية تعامل نظام Linux معها. انقطاعات الشبكة واستقبال الحزميجمع النظام الفرعي للشبكة في النواة عدة مكونات رئيسية: NAPI، وقوائم انتظار الاستقبال (مخزن DMA المؤقت)، ومعلمات net.core.*، خوارزميات إدارة قائمة الانتظار (qdisc) والتوسع الجانبي (RSS/RPS).
NAPI (واجهة برمجة التطبيقات الجديدة) هذه هي الآلية التي يقلل بها نظام التشغيل من عاصفة المقاطعات عند وصول كمية كبيرة من البيانات. فبدلاً من إطلاق مقاطعة لكل حزمة، تُولّد بطاقة الشبكة مقاطعة تشير إلى "وجود عمل معلق"، ويقوم نظام التشغيل بـ المجسات تُعالَج قائمة انتظار الاستقبال حتى تُصبح فارغة أو حتى ينفد الوقت/عدد الحزم المسموح به. هذا يُقلل من التذبذب ويُحسّن الأداء، على الرغم من أنه قد يُؤدي أيضًا إلى بعض التباين في زمن الاستجابة.
يُطلق عادةً على قائمة الانتظار التي تهبط فيها الحزم قبل معالجتها بواسطة مكدس الشبكة اسم قائمة استقبال النواة أو مخزن DMA المؤقتتُحدَّد سعتها بمعايير مثل:
net.core.netdev_max_backlog: الحد الأقصى لعدد الحزم في قائمة انتظار استقبال البرامج عندما لا تستطيع النواة معالجتها بالمعدل الذي تصل به.net.core.netdev_budget_usecs: "ميزانية" الوقت بالمايكروثانية التي يمتلكها NAPI لتفريغ قوائم الانتظار في كل دورة.net.core.dev_weightعدد الحزم التي تتم معالجتها لكل واجهة في كل جولة ضمن تلك الميزانية.
Si قيمة netdev_max_backlog منخفضة للغاية وإذا أرسلت بطاقة الشبكة حزم بيانات أكثر مما يستطيع نظام التشغيل معالجته، فسنبدأ بملاحظة "فقدان الحزم" في /proc/net/softnet_statتكون نقطة البداية النموذجية لضبط الإعدادات الدقيقة على الخوادم ذات حركة المرور العالية في نطاق 4000 عبوات، تم تكوينه في /etc/sysctl.conf بشيء من هذا القبيل:
net.core.netdev_max_backlog = 4000
بعد تعديله، يتم تطبيقه مع sysctl -p أو sysctl -w الالتزام بالمواعيد. وبهذه الطريقة، يمتص الذيل قمم الوصول بشكل أفضل دون فقدان الحزم، طالما أن بقية مسار المعالجة يعمل بشكل سليم.
في جميع أنحاء هذه الدائرة، يحدد irqbalance وحدة المعالجة المركزية التي تتعامل مع مقاطعات IRQ المرتبطة بواجهة الشبكة. إذا قمنا بتركيز جميع مقاطعات بطاقة الشبكة على نواة واحدة، فستقوم تلك النواة بتشغيل إجراءات NAPI وتفريغ قائمة الانتظار من تلقاء نفسها.إذا قمنا بتوزيع مقاطعات IRQs بشكل صحيح واستخدمنا آليات مثل RSS أو RPS، فيمكن للعديد من وحدات المعالجة المركزية التعاون لمعالجة الحزم، مما يقلل من قوائم الانتظار والخسائر.
اضبط قوائم الانتظار والمخازن المؤقتة ونافذة TCP بدقة للتعامل مع حركة المرور الكثيفة
عندما يقوم الخادم بنقل الكثير من البيانات (على سبيل المثال، النسخ الاحتياطية، حركة مرور FTP، الملفات الكبيرة أو نسخ قواعد البيانات)، فإن مجرد "تمكين irqbalance" لا يكفي. هناك حاجة إلى تنسيق عدة مستويات: قوائم انتظار النواة، ومخازن البطاقات، وأحجام نوافذ TCP، ومعلمات الازدحام.بحيث يجدف الجميع في نفس الاتجاه.
توجد كتلة الضبط الأولى في مخزن استقبال الحزم ونافذة TCPيعرض نظام لينكس معلمات مثل:
net.ipv4.tcp_rmem: ثلاثية (الحد الأدنى، الافتراضي، الحد الأقصى) من ذاكرة استقبال TCP لكل مقبس.net.ipv4.tcp_wmem: ما يعادل تكلفة الشحن.net.core.rmem_maxynet.core.wmem_max: الحد الأقصى لحجم المخزن المؤقت الصلب الذي يمكن للتطبيق طلبه.
تتمثل إحدى الطرق العملية لضبطها لوصلة جيجابت منخفضة زمن الوصول في حساب BDP (ناتج عرض النطاق الترددي والتأخير) وتطبيق عامل قياس (بفضل خيار توسيع نطاق نافذة TCP(مفعّلة افتراضيًا في معظم أنظمة التشغيل الحديثة). عمليًا، ينتهي المطاف بالعديد من المسؤولين بقيم قصوى تصل إلى عدة ميغابايت، على سبيل المثال:
net.ipv4.tcp_rmem = 4096 16384 10880000
net.ipv4.tcp_wmem = 4096 16384 10880000
هذا الحد الأقصى من ~10,8 ميجابايت هذا ناتج عن حسابات محددة لوصلات بسرعة 1 جيجابت في الثانية ذات زمن استجابة منخفض للغاية (حوالي 0,00017 ثانية). كلما زاد معدل نقل البيانات أو زمن الاستجابة، زادت الحاجة إلى حجم المخزن المؤقت للاستفادة من عرض النطاق الترددي دون التقيد بحدود النافذة.
من المهم ربط هذا الحد الأقصى بحجم قائمة انتظار استقبال الحزم. إذا netdev_max_backlog = 4000 ويبلغ حجم كل حزمة فعالة حوالي 1480 بايت، ويمثل هذا الطابور حوالي 5,9 ميجابايت. يجب أن يكون حجم مخزن نافذة TCP أكبر من حجم ما يتسع له الطابوروإلا سنفقد الحزم بسبب امتلاء المخزن المؤقت قبل قائمة الانتظار.
لرصد الخسائريمكن استخدام الأوامر مثل الأوامر التالية:
cat /sys/class/net/eth0/statistics/rx_dropped: فقدان الحزم في بطاقة الشبكة.watch -n 1 -t -d cat /proc/net/softnet_stat: الأعمدة التي تمت معالجتها، وإسقاطها، وضغط الوقت، وما إلى ذلك لكل وحدة معالجة مركزية.watch -n 1 -t -d "netstat -s | grep err": أخطاء في حزمة الشبكة.
Si يشير netstat إلى وجود أخطاء، لكن /proc/net/softnet_stat لا يُظهرها.على الأرجح، تحدث الخسائر خارج نطاق خادمنا (على طول المسار، عبر جدار حماية وسيط، إلخ). سيظل هناك دائمًا بعض الخسائر بسبب خوارزميات التحكم في الازدحام، ولكن ينبغي أن تبقى تحت السيطرة وتتزامن مع ذروة حركة البيانات.
إدارة قوائم الانتظار (qdisc)، وجودة الخدمة، والتحكم في ازدحام بروتوكول TCP
على الرغم من أن قوائم الانتظار الداخلية للنواة بالغة الأهمية، فإن... نظام إدارة قوائم الانتظار (qdisc) المرتبط بواجهات الشبكةهذا ما يحدد كيفية ترتيب الحزم وتجميعها والتخلص منها في المخرجات، ويمكن أن يحدث فرقًا في مواجهة ظواهر مثل تضخم المخزن المؤقت.
يوفر نظام لينكس العديد من الأقراص ذات الصلة:
- pfifo_fast: نظام افتراضي قديم، نظام FIFO بثلاث نطاقات أولوية.
- fq_codel: مزيج من نظام الانتظار العادل مع CoDel لمكافحة تضخم المخزن المؤقت، موصى به بشدة لأجهزة التوجيه والاستخدام العام.
- fq: نظام بسيط وعادل لتنظيم الطوابير، مفيد للغاية على الخوادم ذات الأحمال العالية.
- كعكة (sch_cake): الأكثر تقدماً اليوم، ولكنه يتطلب تجميعًا أو وجود الوحدة النمطية في النواة.
يبدو ملف qdisc الافتراضي كالتالي:
sysctl net.core.default_qdisc
ويمكن استبداله أثناء التشغيل بما يلي:
sysctl -w net.core.default_qdisc=fq_codel
لضمان استخدام واجهة معينة لتخصص معين، يلجأ المرء إلى tc:
sudo tc qdisc replace dev eth0 جذر fq_codel
وفي هذا الصدد، فإن خوارزمية التحكم في ازدحام بروتوكول TCP كما أنه يُحدث فرقًا في بيئات الشبكات الواسعة (WAN) أو تلك التي تشهد حركة مرور كثيفة. توفر النواة العديد من الخيارات (مثل كيوبيك، رينو، إلخ)، وتتضمن الإصدارات الحديثة منها BBR طور بواسطة جوجلمما يُحسّن عادةً الإنتاجية المستدامة دون زيادة زمن الاستجابة. ويتم تفعيله بواسطة:
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
يمكن الاطلاع على قائمة الخوارزميات المتاحة من خلال عرض الوحدات النمطية. tcp_* en /lib/modules/<versión>/kernel/net/ipv4/. قم بدمج BBR مع qdisc مناسب (fq/fq_code) وتكوين مخزن مؤقت جيد وينتج عن ذلك تدفقات بيانات أكثر استقراراً.
إعدادات متقدمة لبطاقة الشبكة: مخازن مؤقتة حلقية، وRSS، وRPS، وتفريغ العمليات
تحتوي بطاقة الشبكة نفسها أيضًا على مجموعة خاصة بها من قوائم الانتظار والمخازن المؤقتة: مخازن حلقية للاستقبال (RX) والإرسال (TX)يعتمد حجمها الأقصى على الجهاز ويتم عرضه باستخدام:
ethtool -g ethX
مجالات "حدود قصوى محددة مسبقًا" تُشير هذه القيم إلى مقدار الزيادة الممكنة. إذا كانت البطاقة تسمح بذلك، فيمكن زيادة قيم RX وTX إلى قيم مثل 4096 أو 8192 أو 16384 باستخدام:
ethtool -G ethX rx 4096 tx 4096
إذا ظهر خطأ مثل "لا يمكن ضبط معلمات حلقة الجهاز: وسيطة غير صالحة"، تتجاوز هذه القيمة قدرات بطاقة الشبكة وسيتعين علينا تجربة قواسم أصغر.
إلى منع وحدة المعالجة المركزية الواحدة من التعامل مع جميع أعمال الاستقبالتُنفذ العديد من بطاقات الشبكة الحديثة RSS (قياس جانب الاستقبال)إنشاء عدة قوائم انتظار للأجهزة مرتبطة بنوى مختلفة. في لينكس، تبدو هذه التوزيعة كالتالي:
cat /proc/interrupts | grep
في البطاقات التي لا تحتوي على RSS، يمكن "محاكاة" شيء مشابه باستخدام توجيه حزم البيانات (RPS)، وتخصيص وحدات المعالجة المركزية لقوائم انتظار برامج الواجهة:
echo f > /sys/class/net/enp4s0f0/queues/rx-0/rps_cpus
القيمة عبارة عن قناع سداسي عشري. على سبيل المثال، f في النظام الثنائي (1111)، يشير ذلك إلى استخدام النوى الأربع الأولى. يجب تجميع النواة باستخدام CONFIG_RPS والعمل على انجاحه.
يمكنك أيضًا اللعب بـ تفريغ التحقق من المجموع وتقسيم البيانات لتفريغ العمل من وحدة المعالجة المركزية إلى معالج بطاقة الشبكة. ethtool -k تظهر الإمكانيات المُفعّلة، ويمكن تشغيل أشياء مثل ما يلي:
ethtool -K ethX rx on (التحقق من المجموع الاختباري في مكتب الاستقبال)
ethtool -K ethX tso on (تفريغ تجزئة بروتوكول TCP)
لكي تكون هذه التغييرات دائمةتُوضع عادةً في نصوص الشبكة (/etc/network/interfaces في نظامي ديبيان/أوبونتو، /etc/sysconfig/network-scripts/ifcfg-ethX في Red Hat) أو في قواعد udev.
اضبط تقارب IRQ يدويًا وتعايش مع IRQbalance
في أنظمة التشغيل القديمة أو في الحالات التي نرغب فيها بالتحكم الدقيق، يكون ذلك ممكناً قم بتعيين وحدة المعالجة المركزية التي تتعامل مع مقاطعة معينة يدويًا.جميع المعلومات موجودة في /proc/irq y /proc/interruptsسيكون التدفق النموذجي على النحو التالي:
- عرض الانقطاعات: قط / بروك / المقاطعات وحدد موقع خط واجهة الشبكة (على سبيل المثال، IRQ 25 لـ enp0s8).
- تحقق من التقارب الحالي: cat /proc/irq/25/smp_affinity (قناع سداسي عشري: 02 = CPU1، 01 = CPU0، 04 = CPU2، إلخ).
- تغييره: echo 1 > /proc/irq/25/smp_affinity لنقله إلى وحدة المعالجة المركزية 0.
وبهذه الطريقة يمكنك، على سبيل المثال، تخفيف العبء عن وحدة المعالجة المركزية المثقلة نقل مقاطعة IRQ إلى نواة أقل انشغالاً. إذا كان لديك برنامج irqbalance مثبتًا ومفعلاً، فمن المهم إخباره بعدم التعامل مع تلك المقاطعة تحديدًا عن طريق إضافة خيار مثل:
OPTIONS="--banirq=25"
en /etc/default/irqbalanceأو باستخدام الخيار --banirq=25 عندما يبدأ الشيطان. هكذا تستبعدها من منطق التوزيع التلقائي الخاص بها. وأنت تحترم مهمتك اليدوية.
لذا فإن ذلك يتغير مثل echo 1 > /proc/irq/25/smp_affinity النجاة من عمليات إعادة التشغيلعادة ما تضاف إلى الكلاسيكية /etc/rc.local (إذا تم تمكينها) أو لوحدات systemd محددة.
إعدادات الأداء الأخرى ذات الصلة: تبديل الملفات، وذاكرة الوصول العشوائي المخصصة (zram)، والملفات المؤقتة، والتحميل المسبق
عادةً ما يصاحب كل هذا العمل لتحسين استجابة الشبكة وتوزيع مقاطعات الأجهزة (IRQ) ما يلي: ضبط النظام الآخر وهذا، على الرغم من أنه لا يرتبط بشكل مباشر بتوازن المقاطعات، إلا أنه يكمل صورة الأداء.
في مجال الذاكرة، يقوم العديد من المسؤولين بتقليل استخدام مكثف لمبادلة التعديل /etc/sysctl.conf بمعايير مثل:
- vm.swappiness: مقدار تفضيل النواة لاستخدام مساحة التبديل (من 0 إلى 100، القيمة الافتراضية 60). القيم المنخفضة (من 1 إلى 10) تعطي الأولوية لذاكرة الوصول العشوائي (RAM).
- vm.vfs_cache_pressureالضغط على ذاكرة التخزين المؤقت للملفات (inode) وذاكرة التخزين المؤقت لبيانات الدليل (dentry). تقليل هذا الضغط يساعد في الحفاظ على البيانات الوصفية في ذاكرة الوصول العشوائي (RAM).
- vm.dirty_writeback_centisecs y vm.dirty_expire_centisecs: تكرار ومدة صلاحية كتابة الصفحات المتسخة على القرص.
- نسبة اتساخ الجهاز الظاهري y vm.dirty_background_ratio: نسبة الذاكرة التي يمكن ملؤها ببيانات غير نظيفة قبل عمليات الكتابة القسرية.
بقيم مناسبة (على سبيل المثال vm.swappiness = 1, vm.vfs_cache_pressure = 50إلخ.) يتم تحقيق ذلك سيستخدم النظام المزيد من ذاكرة الوصول العشوائي (RAM) قبل البدء في الترحيل.، وهو أمر مرغوب فيه في الخوادم ذات الذاكرة الكبيرة.
مقياس كلاسيكي آخر هو نقل الدلائل المؤقتة إلى ذاكرة الوصول العشوائي (RAM) تركيبها كـ tmpfs en /etc/fstab:
tmpfs /tmp tmpfs noatime,nodiratime,nodev,nosuid,mode=1777,defaults 0 0
tmpfs /var/tmp tmpfs noatime,nodiratime,nodev,nosuid,mode=1777,defaults 0 0
وبذلك، يتم إجراء عمليات وصول مؤقتة (عمليات التجميع، وملفات عمل التطبيق، وما إلى ذلك) إلى سرعة ذاكرة الوصول العشوائي (RAM) ويقلل من تآكل الأقراص SSD.
ومن الشائع أيضاً في البيئات ذات الموارد المحدودة تفعيل مبادلة zramجهاز تبديل مضغوط في ذاكرة الوصول العشوائي (RAM). يتم تثبيته من مستودع (على سبيل المثال، باستخدام Git عن طريق الاستنساخ). zram-swap وتنفيذه install.sh) ويقوم بإنشاء جهاز كتلة مضغوط حيث يقوم النظام بالتبديل قبل اللجوء، إن وجد، إلى تبديل القرص. ستحصل على ذاكرة فعالة على حساب زيادة طفيفة في وحدة المعالجة المركزية.مما يعوض عن العديد من الأحمال.
وأخيرًا، شياطين مثل التحميل المسبق تقوم هذه البرامج بتحليل التطبيقات الأكثر استخدامًا وتحميل ملفاتها التنفيذية ومكتباتها مسبقًا في ذاكرة الوصول العشوائي (RAM)، مما يُسرّع بدء التشغيل على حساب استهلاك الذاكرة. يُعدّ هذا الأمر منطقيًا على أجهزة الكمبيوتر المكتبية ذات ذاكرة الوصول العشوائي الكبيرة؛ أما على الخوادم ذات الموارد المحدودة، فعادةً ما يتم الاستغناء عنه.
GTK وGRUB وFirefox وغيرها من التحسينات التي تُحسّن تجربة المستخدم
وبعيدًا عن أداء الخادم فحسب، تتضمن العديد من الدروس التعليمية أقسامًا طويلة جدًا حول تحسين تجربة سطح المكتبأوقات استجابة قائمة GTK، والخطوط، والسمات الداكنة، والصوت، وسلوك الماوس، وما إلى ذلك. على الرغم من أنها لا تؤثر بشكل مباشر على توازن IRQ أو حركة مرور الشبكة، إلا أنها تساهم في نظام أكثر استجابة.
في GTK2 و GTK3 و GTK4، يمكن إجراء التعديلات. عشرات المعلمات في ملفات مثل ~/.gtkrc-2.0, ~/.config/gtk-3.0/settings.ini o ~/.config/gtk-4.0/settings.iniالرسوم المتحركة، وتوقيت النقر المزدوج، وحجم المؤشر، وتصميم شريط العنوان، واستخدام السمات الداكنة، وسلوك تلميحات الأدوات، وتنعيم حواف الخطوط، وما إلى ذلك. يتم تحرير هذه الملفات يدويًا (مع nano) أو عن طريق إضافة أسطر عبر echo >> من محطة.
كما يتم تعديل الإصدارات عادةً. "عالمي" من هذه المعايير في /etc/gtk-2.0/gtkrc, /etc/gtk-3.0/settings.ini y /etc/gtk-4.0/settings.iniبحيث تؤثر على جميع المستخدمين، مع مراعاة أنه في هذه الحالات يجب أن تكون مستخدمًا بصلاحيات الجذر (عبر su - o sudo).
El وقت انتظار المدير حذاء GRUB يصبح النص أقصر عن طريق التحرير. /etc/default/grub وتعديل GRUB_TIMEOUT (على سبيل المثال، من 10 إلى 3 ثوانٍ)، وإضافة معلمات إلى النواة مثل noresume o acpi_irq_balance en GRUB_CMDLINE_LINUX_DEFAULT. ثم يتم تنفيذه update-grub (ديبيان/أوبونتو) أو grub-mkconfig -o /boot/grub/grub.cfg (الأرشيفات والمشتقات).
أما بالنسبة للمتصفح، فهناك ملفات مثل user.js لفايرفوكس تتيح لك هذه الإعدادات تطبيق مجموعات من التفضيلات التي تهدف إلى تسريع التصفح: عدد الاتصالات، وسلوك التخزين المؤقت، والضغط، وWebSockets، وما إلى ذلك. الإجراء المعتاد هو إعادة ضبط الملف الشخصي، وفتح دليل الملف الشخصي من "معلومات استكشاف الأخطاء وإصلاحها"، وإغلاق Firefox، ولصق ما يلي: user.js في مجلد الملف الشخصي، ثم أعد فتح المتصفح.
على الرغم من أن كل هذا يتوازى مع موضوع عدم توازن المقاطعات، إلا أنه يوضح فكرة مهمة: تحسين نظام لينكس عملية شاملةالأمر لا يتعلق فقط ببرنامج خفي أو معلمة سحرية، بل يتعلق بضبط وحدة المعالجة المركزية والذاكرة والقرص والشبكة وسطح المكتب والتطبيقات بدقة حتى تتناسب مع الاستخدام الفعلي للجهاز.
بالنظر إلى الحزمة الكاملة - تخصيص IRQ باستخدام irqbalance أو يدويًا، وNAPI وقوائم الانتظار المُحسّنة، ومخازن TCP المؤقتة ذات الحجم المناسب، وأقراص qdisc الحديثة مثل fq_codel أو fq، والتحكم في ازدحام BBR، ومخازن الحلقة الموسعة، وRSS/RPS المُفعّلة، والتحكم في swap وzram، والملفات المؤقتة في ذاكرة الوصول العشوائي، وبيئة سطح مكتب مُحسّنة بدقة - يتضح أن يُعد irqbalance مجرد قطعة أخرى من أحجية كبيرة نوعًا مايُعد دورها حيويًا في الخوادم متعددة النوى وحركة المرور العالية، وغير ذي صلة في العديد من أجهزة سطح المكتب، وضارًا في أنظمة زمن الاستجابة القصوى حيث يُفضل استخدام التقارب اليدوي؛ إن فهم هذا السياق جيدًا هو المفتاح لتحديد ما إذا كان ينبغي السماح لها بالعمل، أو تقييدها، أو ببساطة تعطيلها.
كاتب شغوف بعالم البايت والتكنولوجيا بشكل عام. أحب مشاركة معرفتي من خلال الكتابة، وهذا ما سأفعله في هذه المدونة، لأعرض لك كل الأشياء الأكثر إثارة للاهتمام حول الأدوات الذكية والبرامج والأجهزة والاتجاهات التكنولوجية والمزيد. هدفي هو مساعدتك على التنقل في العالم الرقمي بطريقة بسيطة ومسلية.