سؤال هل يستطيع أحد أن يفسر بدقة ما هو Iowaait؟


بقدر ما قرأت عن iowait ، فإنه لا يزال غامضا بالنسبة لي.

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

أيضا ما هي الأدوات الصحيحة لتشخيص ما (العمليات) انتظرت بالضبط ل IO.

وما هي الطرق لتقليل وقت انتظار IO؟


171
2018-05-27 09:52


الأصل


وأيضا ، ما هو iowait عالية؟ - Muhamed Huseinbašić


الأجوبة:


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

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

أيضا ما هي الأدوات الصحيحة ل   تشخيص ما فعلته (العمليات) بالضبط   انتظر IO.

بعض الأدوات التي قد تجدها مفيدة

  • iostatلمراقبة أوقات خدمة الأقراص
  • iotop (إذا كانت النواة تدعمه) ، لمراقبة توزيع طلبات IO لكل عملية
  • strace، للنظر في العمليات الفعلية الصادرة عن العملية

وما هي الطرق لتقليل IO   وقت الانتظار؟

  • تأكد من أن لديك ذاكرة فعلية مجانية بحيث يمكن لنظام التشغيل تخزين كتل الأقراص في الذاكرة
  • الحفاظ على استخدام قرص نظام الملفات لديك أقل من 80٪ لتجنب التجزؤ المفرط
  • ضبط نظام الملفات الخاص بك
  • استخدام وحدة تحكم صفيف مدعوم ببطارية
  • اختيار أحجام عازلة جيدة عند تنفيذ عمليات IO

90
2018-05-27 10:28



لا تنس "تأكد من سرعة التخزين الخلفية لديك بما يكفي لمواكبة حمل I / O". - jgoldschrafe
Dave Cheney ، وعندما تكون عملي في وضع الخمول وهذا لأنه ينتظر على IO. فما هو الفرق بين IOWait و الخمول؟ - ctrl-alt-delor
عندما تكون في IOwait ، تكون العملية في "النوم غير المنقطع" بمعنى أنه لا يمكن قتلها ، لتجنب مخاطر تلف البيانات على الأقراص. عملية الخمول العادية لا تفعل شيئًا ، لذلك هناك مخاطر أقل في قتلها. - mveroone
على القمة من الناحية العملية ، فهذا يعني أن IO الخاص بك بطيء للغاية. يختلف "جعل الخادم أسرع" عما إذا كنت وحدة المعالجة المركزية محدودة أو وحدة المعالجة المركزية الخاصة بك يتضورون جوعا لأن أحدهم قرر أن قرص دفتر الملاحظات البطيء يكفي لتشغيل خادم قاعدة البيانات وأن حمل IO يجعل وحدة المعالجة المركزية تستخدم 2٪ فقط مما يمكنها ، مثل مجنون ل IO إلى النهاية. - TomTom
OMG لا أستطيع أن أصدق أن الإجابات الثلاثة الأولى هنا هي كذلك خطأ. الجواب أدناه من قبل haridsv هو الصحيح. لا يوجد cpu "انتظار" لـ io لإكمال. نعم ، يمكن حظر بعض الإعلام والتوعية - غالباً ما يكون هناك سبب وجيه لذلك ، وفي بعض الظروف ، يمكن أن تقوم جميع io بحظرها. ولكن يمكنك أيضًا مشاهدة iowait الذي يحدث لعمليات غير متزامنة تمامًا. - symcbean


السؤال القديم ، صدم مؤخرا ، لكنه شعر بأن الإجابات الموجودة غير كافية.

تعريف Iowait والخصائص

IOWait (عادة ما يطلق عليه %wa في الأعلى) هي فئة فرعية من الخمول (%idle عادة ما يتم التعبير عنه كجميع الخمول باستثناء الفئات الفرعية المحددة) ، وهذا يعني أن وحدة المعالجة المركزية لا تفعل أي شيء. لذلك ، طالما هناك عملية أخرى يمكن للمعالج معالجتها ، سيقوم بذلك. بالإضافة إلى ذلك ، الخمول ، المستخدم ، النظام ، iowait ، إلخ هي قياس فيما يتعلق وحدة المعالجة المركزية. وبعبارة أخرى ، يمكنك التفكير في iowait كما الخمول الناجم عن انتظار الإعلام والتوعية.

على وجه التحديد ، iowait هو الوقت الذي تستغرقه تلقي وتعالج المقاطعات الأجهزة كنسبة مئوية من القراد المعالج. عادةً يتم عرض مقاطعات البرامج بشكل منفصل %si.

أهمية وسوء فهم محتمل

IOWait مهم لأنه في كثير من الأحيان هو مقياس رئيسي لمعرفة ما إذا كنت اختناق على IO. لكن غثيان iowait لا يعني بالضرورة أن طلبك هو ليس اختناق على IO. النظر في اثنين من التطبيقات التي تعمل على نظام. إذا كان البرنامج 1 هو اختصارًا بشدة io اختناق وبرنامج 2 هو مستخدم CPU ثقيل ، و %user + %system من وحدة المعالجة المركزية قد لا يزال شيء من هذا القبيل ~ 100 ٪ وبالمثل ، سوف تظهر iowait 0. ولكن هذا فقط لأن البرنامج 2 مكثف ويبدو نسبيا أن أقول شيئا عن البرنامج 1 لأن كل هذا من وجهة نظر وحدة المعالجة المركزية.

أدوات للكشف عن IOWait

انظر المشاركات بواسطة ديف تشيني و Xerxes

ولكن أيضا بسيط top سوف تظهر في %wa.

الحد من IOWait

أيضا ، ونحن الآن تقريبا تدخل 2013 ، بالإضافة إلى ما قاله الآخرون ، فإن خيار أجهزة تخزين IO ببساطة رائعة وبأسعار معقولة ، وبالتحديد SSDs. سواقات رائعة!


44
2017-12-25 12:45





iowait

iowait الوقت الذي ينتظر فيه المعالج / المعالجات (أي في حالة حالة خمول و اعمل لا شيئ) ، والتي يوجد فيها في الواقع كان طلبات الإدخال / الإخراج القرص المعلقة.

هذا يعني عادة أن أجهزة الحظر (أي الأقراص المادية ، وليس الذاكرة) بطيئة للغاية ، أو ببساطة مشبعة.

يجب عليك بالتالي ملاحظة أنه إذا كنت ترى معدل تحميل عالٍ على نظامك ، وعلى إشعار الفحص أن معظم هذا في الواقع بسبب انتظار الإدخال / الإخراج ، فهذا لا يعني بالضرورة أن النظام الخاص بك في ورطة - وهذا يحدث عندما يكون الجهاز ببساطة ليس لديها ما تفعله ، بخلاف العمليات I / O- المنضم (أي العمليات التي تفعل المزيد من I / O من أي شيء آخر (مكالمات النظام غير I- O- منضم)). يجب أن يكون ذلك واضحًا أيضًا من حقيقة أن أي شيء تفعله على النظام لا يزال مستجيبًا للغاية.

أدوات

  • sar (من sysstat الحزمة ، المتاحة على معظم * آلات nix)
  • iostat
  • sarface (واجهة أمامية لـ sar)

34
2018-05-27 10:32



لاحظ أنه بالمعنى الدقيق للكلمة ، يكون تعريف وقت الانتظار I / O صالحًا فقط في أنظمة المعالجات الفردية. يجب أن يتم تحسينه إلى حد ما في الأنظمة متعددة المعالجات: veithen.blogspot.be/2013/11/iowait-linux.html - Andreas Veithen
الى أي مدى iowait يؤثر Load Average؟ لنفترض أن 100 سلسلة انتظار في انتظار الشبكة ، هل سيكون LA 100؟ - Ivan Balashov


لقد وجدت الشرح والأمثلة من هذا الرابط مفيدة للغاية: ما هو بالضبط "iowait"؟. راجع للشغل ، من أجل اكتمال ، يشير I / O هنا إلى القرص I / O ، ولكن يمكن أن يشمل أيضا I / O على قرص شبكة محمولة (مثل NFS) ، كما هو موضح في هذا المنصب الآخر.

سأقتبس بعض الأقسام المهمة (في حالة وفاة الرابط) ، فإن بعض تلك ستكون تكرارًا لما قاله الآخرون بالفعل ، ولكن بالنسبة لي على الأقل كانت هذه الأمور أوضح:

لتلخيصها في جملة واحدة ، "iowait" هي النسبة المئوية للوقت   CPU خاملاً وهناك واحد على الأقل I / O قيد التقدم.

يمكن أن يكون كل وحدة المعالجة المركزية في واحدة من أربع حالات: المستخدم ، تميز الكلية ، الخمول ، iowait.

كنت أتساءل ما الذي يحدث عندما يكون لدى النظام عمليات أخرى جاهزة للعمل أثناء انتظار عملية واحدة للإدخال / الإخراج. أدناه يشرح ذلك:

إذا كانت وحدة المعالجة المركزية في وضع الخمول ، فإن النواة تحدد إذا كان هناك على الأقل   واحد I / O حاليا في التقدم إما إلى قرص محلي أو عن بعد   القرص المثبت (NFS) الذي تم بدء تشغيله من وحدة المعالجة المركزية (CPU) هذه. إن كان هناك   هو ، ثم يتم زيادة العداد "iowait" من قبل واحد. إذا لم يكن هناك   I / O في التقدم الذي بدأ من وحدة المعالجة المركزية ، العداد "الخمول"   يتزايد بواسطة واحد.

وهنا مثال على ذلك:

لنفترض أن هناك برنامجين يعملان على وحدة المعالجة المركزية. واحد هو 'د'   قراءة البرنامج من القرص. الآخر هو برنامج لا يوجد I / O   ولكن يقضي 100 ٪ من وقته في القيام بالعمل الحسابي. افترض الآن   أن هناك مشكلة مع النظام الفرعي I / O وأن I / Os المادية   أخذ أكثر من ثانية لإكمالها. كلما كان برنامج "dd"   نائما في انتظار استكمال I / Os لها ، فإن البرنامج الآخر هو   قادرة على تشغيل على وحدة المعالجة المركزية. عندما تحدث المقاطعة على مدار الساعة ، سيكون هناك   يكون دائمًا برنامجًا قيد التشغيل في وضع المستخدم أو وضع النظام.   لذلك ، ستكون قيم٪ idle و٪ iowait 0. على الرغم من iowait   هو 0 الآن ، وهذا لا يعني عدم وجود مشكلة I / O لأن هناك   الواضح هو واحد إذا ما أخذ مادي / أوس المادية ثانية ل   اكتمال.

النص الكامل يستحق القراءة. هنا مرآة هذه الصفحةفي حالة سقوطها.


27
2018-05-27 12:34





بالنسبة لـ Solaris ، أستخدم DTrace للنظر في العمليات التي تقوم بها إذا احتجت لرؤية عمليات I / O قيد التشغيل. بالنسبة لنظام التشغيل Linux ، يوجد برنامج مشابه يسمى systemtap الذي يوفر مستوى مماثل من التعرض للنواة وعملية المكالمات.

أحد الأمثلة التي استخدمتها عند تعلم DTrace هو مقارنة cp الأمر إلى dd أمر. يمكنك مشاهدة هذا dd يفعل الكثير يقرأ للكتابة ، في حين cp لا ، في الغالب بسبب حجم المخزن المؤقت dd يستخدم بشكل افتراضي (إذا كنت أتذكر بشكل صحيح).


1
2018-05-27 10:01





يعتمد نوع عمليات الإدخال / الإخراج (IO) على تطبيقاتك وإعدادك.

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

لتقليل وقت IO ، قم بشراء ذاكرة أكثر وأسرع ، احصل على أقراص أسرع ، قم بإلغاء تجزئة الأقراص لديك.

إذا كان تطبيق في المنزل هو عنق الزجاجة نرى أنه يمكن تحسينه للقراءة في كتل أكبر أو للقيام IO بشكل غير متزامن.


0
2018-01-01 15:50



حسنا ، لذلك iowait هو الوقت الذي يقضيه في حجب عملية IO؟ - Peter Krumins
إذاً ، على سبيل المثال ، إذا قمت بتحديد () أو استطلاع () وحظرت ، فإن الوقت المنتظر حتى يصبح الواصف متاحًا سيشكل وقت iowait؟ - Peter Krumins
أعتقد أن هذا سوف ينتمي إلى SO كما يبدو مثل سؤال البرمجة. - Jeremy French
بيتريس - نعم ، هذه طريقة جيدة للتفكير في الأمر. - user2278


باستخدام ps aux يمكن طباعة عملية STAT
إذا كان stat هو D أو Ds ، تكون العملية في حالة نوم متقطع (عادةً IO)
عندما تدخل عملية النوم غير المتقطع ، يتم إضافة nr_iowait من runquue ، وإذا nr_iowait> 0 ، يتم احتساب وقت الخمول لوحدة المعالجة المركزية iowait

يوضح vmstat أيضًا عدد كتل العمليات
r: عدد العمليات في انتظار وقت التشغيل.
ب: عدد العمليات في النوم غير المنقطع.

http://bencane.com/2012/08/06/troubleshooting-high-io-wait-in-linux/


0