<Попередній | зміст | Наступна>
Майте на увазі, що різні системи будуть вести себе по-різному з однаковим середнім навантаженням. Наприклад, система з відеокартою, яка підтримує апаратне прискорення, не матиме проблем із відтворенням 3D-зображень, тоді як та сама система з дешевою картою VGA буде надзвичайно сповільнена під час візуалізації. Мій старий P133 стане досить незручним, коли я запускаю X-сервер, але на сучасній системі ви майже не помітите різницю в завантаженні системи.
4.3.5. Чи можу я щось зробити як користувач?
Велике середовище може уповільнити вас. Якщо у вас налаштовано багато змінних середовища (замість змінних оболонки), довгі шляхи пошуку, які не оптимізовані (помилки під час встановлення змінної середовища шляху) і більше тих налаштувань, які зазвичай виконуються «на льоту», системі знадобиться більше часу на пошук і читання даних.
У X віконні менеджери та робочі середовища можуть бути справжніми пожирателями ЦП. Справді вишуканий настільний комп’ютер має ціну, навіть якщо ви можете завантажити його безкоштовно, оскільки більшість настільних комп’ютерів забезпечують доповнення до нескінченності. Скромність
це чеснота, якщо ви не купуєте новий комп’ютер щороку.
4.3.5.1. пріоритет
Пріоритетність або важливість роботи визначається її приємно номер. Програма з високим номером nice дружня до інших програм, інших користувачів і системи; це не важлива робота. Чим менше хороша цифра, тим важливіша робота і тим більше ресурсів вона займе, не розділяючи їх.
Поліпшити роботу, збільшивши її кількість, корисно лише для процесів, які використовують багато процесорного часу (компілятори, математичні програми тощо). Процеси, які завжди витрачають багато часу вводу-виводу, автоматично винагороджуються системою і мають вищий пріоритет (нижче приємне число), наприклад, введення з клавіатури завжди отримує найвищий пріоритет у системі.
Визначення пріоритету програми здійснюється за допомогою приємно команда
Більшість систем також забезпечують BSD нирки команду, яка дозволяє змінити приємність запущеної команди. Знову прочитайте сторінку керівництва, щоб отримати інформацію про вашу систему.
Інтерактивні програми
Це НЕ гарна ідея приємно or нирки інтерактивна програма або завдання, що виконується на передньому плані.
Використання цих команд зазвичай є завданням для системного адміністратора. Прочитайте довідкову сторінку, щоб дізнатися більше про додаткові функції, доступні системному адміністратору.
4.3.5.2. Ресурси процесора
У кожній системі Linux багато програм хочуть використовувати ЦП(и) одночасно, навіть якщо ви є єдиним користувачем у системі. Кожна програма потребує певної кількості циклів на ЦП для виконання. Можуть бути випадки, коли циклів недостатньо, тому що центральний процесор занадто зайнятий. The час безвідмовної роботи Команда вкрай неточна (вона відображає лише середні значення, ви повинні знати, що є нормальним), але далеко не марна. Є деякі дії, які ви можете вжити, якщо вважаєте, що ваш процесор винен у тому, що ваша система не реагує:
• Виконуйте важкі програми, коли навантаження низьке. Це може статися у вашій системі вночі. Дивіться наступний розділ для планування.
• Не дозволяйте системі виконувати непотрібну роботу: зупиняйте демони та програми, які ви не використовуєте, використовуйте
знайти замість важкої знахідки, ...
• Виконуйте великі завдання з низьким пріоритетом
Якщо жодне з цих рішень не є варіантом у вашій конкретній ситуації, ви можете оновити процесор. На машині UNIX це завдання для системного адміністратора.
4.3.5.3. Ресурси пам'яті
Коли поточні запущені процеси очікують більше пам’яті, ніж фізично доступна система, система Linux не вийде з ладу; він почне сторінку або обмін, що означає, що процес використовує пам’ять на диску або в просторі підкачки, переміщуючи вміст фізичної пам’яті (частини запущених програм або цілі програми у разі підкачки) на диск, таким чином відновлюючи фізичну пам’ять для обробки більшої кількості процесів. Це значно уповільнює роботу системи, оскільки доступ до диска набагато повільніше, ніж доступ до пам’яті. The топ команду можна використовувати для відображення пам’яті та використання підкачки. Системи, що використовують glibc, пропонують повідомлення та memusagestat команди для візуалізації використання пам'яті.
Якщо ви виявите, що використовується багато пам’яті та місця підкачки, ви можете спробувати:
• Знищення, зупинка або скасування тих програм, які використовують великий шматок пам'яті
• Додавання додаткової пам'яті (а в деяких випадках і місця підкачки) до системи.
• Налаштування продуктивності системи, що виходить за рамки цього документа. Детальніше дивіться список читання в Додатку А.
4.3.5.4. Ресурси вводу-виводу
Хоча обмеження введення-виводу є основною причиною стресу для системних адміністраторів, система Linux пропонує досить погані утиліти для вимірювання продуктивності введення-виводу. The ps, vmstat та топ інструменти дають певну вказівку про те, скільки програм очікує на введення-виводу; NetStat відображає статистику мережевого інтерфейсу, але практично немає інструментів для вимірювання реакції введення-виводу на навантаження системи, а також іостат Команда дає короткий огляд загального використання введення-виводу. Існують різні графічні інтерфейси, щоб надати результат цих команд у зрозумілій людині формі.
Кожен пристрій має свої проблеми, але пропускна здатність, доступна для мережевих інтерфейсів, і пропускна здатність, доступна для дисків, є двома основними причинами вузьких місць у продуктивності вводу-виводу.
Проблеми мережевого вводу/виводу:
• Перевантаження мережі:
Обсяг даних, що передаються по мережі, перевищує потужність мережі, що призводить до повільного виконання всіх завдань, пов’язаних з мережею, для всіх користувачів. Їх можна вирішити шляхом очищення мережі (що в основному передбачає відключення протоколів і служб, які вам не потрібні) або шляхом переналаштування мережі (наприклад, використання підмереж, заміна концентраторів на комутатори, оновлення інтерфейсів та обладнання).
• Проблеми з цілісністю мережі:
Виникає, коли дані передаються неправильно. Вирішити подібну проблему можна лише шляхом ізолювання несправного елемента та його заміни.
Проблеми з дисковим вводом-виводом:
• надто низька швидкість передачі для кожного процесу:
Швидкості читання або запису для одного процесу недостатньо.
• сукупна швидкість передачі занадто низька:
Максимальної загальної пропускної здатності, яку система може надати всім запущеним програмам, недостатньо.
Таку проблему важче виявити, і зазвичай вона вимагає додаткового обладнання, щоб перерозподілити потоки даних по шинах, контролерах і дисках, якщо причиною проблеми є перевантажене обладнання. Одним із рішень для вирішення цієї проблеми є конфігурація масиву RAID, оптимізована для дій введення та виведення. Таким чином, ви зможете зберегти те саме обладнання. Іншим варіантом зазвичай є оновлення до швидших шин, контролерів і дисків.
Якщо перевантаження не є причиною, можливо, ваше обладнання поступово виходить з ладу або погано підключено до системи. Для початку перевірте контакти, роз’єми та штекери.
4.3.5.5. Користувачі
Користувачів можна розділити на кілька класів, залежно від їх поведінки під час використання ресурсів:
• Користувачі, які виконують (велику) кількість невеликих завдань: наприклад, ви, початківець користувач Linux.
• Користувачі, які виконують відносно небагато, але великих завдань: користувачі, які виконують моделювання, обчислення, емулятори або інші програми, які споживають багато пам'яті, і зазвичай ці користувачі мають супровідні великі файли даних.
• Користувачі, які виконують мало завдань, але використовують багато процесорного часу (розробники тощо).
Ви можете помітити, що системні вимоги можуть відрізнятися для кожного класу користувачів, і що може бути важко задовольнити кожного. Якщо ви використовуєте багатокористувацьку систему, корисно (і весело) з’ясувати звички інших користувачів і системи, щоб отримати від неї максимальну користь для ваших конкретних цілей.
4.3.5.6. Графічні інструменти
Для графічного середовища існує ціла купа інструментів моніторингу. Нижче наведено знімок екрана Gnome System Monitor, який має функції для відображення та пошуку інформації про процес, а також моніторингу системних ресурсів:
Малюнок 4-3. Монітор системи Gnome
Також є кілька зручних піктограм, які можна встановити на панелі завдань, наприклад, диск, пам’ять і монітор навантаження. xload це ще одна невелика програма X для моніторингу навантаження системи. Знайди свого улюбленого!
4.3.5.7. Переривання ваших процесів
Як непривілейований користувач, ви можете впливати лише на власні процеси. Ми вже бачили, як можна відображати процеси та відфільтровувати процеси, які належать певному користувачеві, і які можливі обмеження можуть виникнути. Коли ви бачите, що один із ваших процесів споживає занадто багато ресурсів системи, ви можете зробити дві речі:
1. Змусити процес використовувати менше ресурсів, не перериваючи його;
2. Зовсім припинити процес.
Якщо ви хочете, щоб процес продовжував виконуватися, але ви також хочете дати можливість іншим процесам у системі, ви можете нирки процес. Крім використання приємно or нирки команди, топ — це простий спосіб виявити проблемний(і) процес(и) та зменшити пріоритет.
Визначте процес у стовпці «NI», швидше за все, він матиме негативний пріоритет. Тип r і введіть ідентифікатор процесу, який ви хочете переоформити. Потім введіть приємне значення, наприклад "20". Це означає, що відтепер цей процес займатиме максимум 1/5 циклів ЦП.
Прикладами процесів, які ви хочете продовжувати, є емулятори, віртуальні машини, компілятори тощо.
Якщо ви хочете зупинити процес, оскільки він зависає або повністю збожеволіє на шляху споживання вводу-виводу, створення файлів або використання інших системних ресурсів, скористайтеся вбивати команда. Якщо у вас є можливість, спочатку спробуйте м’яко вбити процес, відправивши його СИГТЕРМ сигнал. Це інструкція для припинення того, що вона робить, згідно з процедурами, описаними в коді програми:
Джо:~> ps -еф | GREP Mozilla
joe 25822 1 0 11 березня ?
00:34:04 /usr/lib/mozilla-1.4.1/mozilla-
Джо:~> ps -еф | GREP Mozilla
joe 25822 1 0 11 березня ?
Джо:~> вбити -15 25822
Джо:~> вбити -15 25822
У наведеному вище прикладі користувач Джо зупинив свій браузер Mozilla, оскільки він завис.
Від деяких процесів позбутися трохи важче. Якщо у вас є час, ви можете надіслати їм сигнал SIGINT, щоб перервати їх. Якщо і це не допомагає, використовуйте найсильніший сигнал, SIGKILL. У наведеному нижче прикладі Джо зупиняє заморожену Mozilla:
Джо:~> ps -еф | GREP Mozilla
joe 25915 1 0 11 березня ?
00:15:06 /usr/lib/mozilla-1.4.1/mozilla-
Джо:~> ps -еф | GREP Mozilla
joe 25915 1 0 11 березня ?
Джо:~> вбити -9 25915
Джо:~> ps -еф | GREP 25915
joe 2634 32273 0 18:09 pts/4 00:00:00 grep 25915
Джо:~> вбити -9 25915
Джо:~> ps -еф | GREP 25915
joe 2634 32273 0 18:09 pts/4 00:00:00 grep 25915
У таких випадках ви можете перевірити, чи процес дійсно мертвий, за допомогою GREP знову фільтрувати на PID. Якщо це повертає лише значення GREP процесу, ви можете бути впевнені, що вам вдалося зупинити процес.
Серед процесів, які важко вбити, є ваша оболонка. І це добре: якби їх було легко вбити, ви втрачали б свою оболонку щоразу, коли вводите Ctrl-C випадково в командному рядку, оскільки це еквівалентно відправці SIGINT.
UNIX без каналів майже немислимий
Використання каналів (|) для використання виводу однієї команди як введення іншої пояснюється в наступному розділі, Розділ 5.