Чому високий диск / вхід знижує чутливість / продуктивність системи?


19

Я ніколи не розумів, чому високі дискові введення / виведення настільки сповільнили систему. Мені це дивно, тому що я б очікував, що уповільнення вплине лише на ті процеси, що залежать від даних жорсткого / оптичного накопичувача, але сповільнення торкається навіть матеріалів, завантажених на оперативну пам'ять. Я тут маю на увазі iowait .

Чому процесор чекає, замість того, щоб виконувати інші роботи? Чи може хтось пояснити це обмеження і чому воно не вирішено в ядрі Linux? Чи є там ядро, у якого немає цієї проблеми?

[ Примітка ] У цій галузі було досягнуто певного прогресу . Для одного, більш пізні ядра (2.6.37 в моєму випадку) набагато чуйніші.


Хіба Xeno не пояснив, як саме це вирішено в ядрі Linux останній раз, коли ви запитували?
Майкл Мрозек

2
Враховуючи зміни, я думаю, що наміром є попереднє питання щодо прогресу, який досягається у вирішенні проблеми, тоді як це питання про те, чому існує проблема.
Стівен Д

@mic Steven має рацію. Ми довго обговорювали, що я мав на увазі під попереднім питанням. Відповідь ксенона була настільки хорошою, що я відредагував це питання, щоб відповісти, і я знову задав тут оригінальне запитання.
tshepang

Я розумію, але ваше питання, здається, суперечить іншому; тут ви говорите "Чи може хтось пояснити це обмеження і чому воно не вирішено в ядрі Linux? Чи є там ядро, яке не має цієї проблеми?", але відповідь xeno починається з "Я думаю, що це здебільшого це вирішено ".
Майкл Мрозек

@mic Не дуже. Ядро по- , як і раніше робить iowait , що означає , що все ще чекає. Я розглядаю відповідь ксенона як більшу реакцію системи було вдосконалено . І що я згоден, як я зазначив у питанні.
tshepang

Відповіді:


9

Операційні системи використовують віртуальну пам'ять, щоб можна було використовувати більше пам’яті, ніж є фізична ОЗУ. Коли ядро ​​вирішить, що його краще використовувати для сторінки фізичної пам’яті, його вміст може бути «викинуто на екран» для зберігання на диску. Коли доступ до такої сторінки віртуальної пам’яті під час тимчасового виклику, вона генерує помилку сторінки і переміщується назад з диска в оперативну пам’ять.

Несправності сторінки є катастрофою для продуктивності, оскільки затримка диска вимірюється в мілісекундах, а затримка ОЗУ вимірюється в наносекундах. (1 мілісекунда = мільйон наносекунд!)

Пам'ять використовується не тільки процесами користувачів, але і ядром для таких речей, як кешування файлової системи. Під час діяльності з файловою системою ядро ​​буде кешувати нещодавно використані дані. Припущення полягає в тому, що є хороший шанс, що незабаром знову будуть використані ті самі дані, тому кешування повинно покращити продуктивність вводу / виводу.

Фізична пам'ять, що використовується для кешу файлової системи, не може використовуватися для процесів, тому під час діяльності файлової системи буде завантажено більше пам'яті процесора та збільшаться помилки сторінки. Крім того, менша пропускна здатність вводу / виводу диска доступна для переміщення сторінок пам'яті з та на диск. В результаті процеси можуть затримуватися.


Я знаю, що це давно, як бруд, але залежно від того, яким чином він надходить, велика кількість вводу / виводу може призвести до створення безлічі перерв, а результуючі контекстні комутатори витрачають час на процесор.
Братчлі

5

Наскільки я розумію, IOwait означає, що процес, а не процесор, чекає, коли IO стане доступним. Процесори набрали набагато більшу швидкість, ніж жорсткі диски, тобто більше коду закінчиться швидше, і тоді диск потрібно буде прочитати. Коли потрібно прочитати кілька разів більше, ніж накопичувач може зробити досить швидко, ви закінчите очікування процесора. Те, як вирішено, хто має читати / записувати на диск, визначається планувальником блоків, в більшості випадків зараз CFQ. Якщо ви використовуєте CFQ, і вам потрібен процес, щоб використовувати менше загального часу вводу-виводу для підвищення чутливості системи, ви можете використовувати ionice -c3 <processid>. Це говорить системі, щоб давати цьому процесу IO лише тоді, коли нічого іншого не потрібно.

Це все ще цікаво і краще пояснює проблему iowait.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.