управління процесами

Робота для системного адміністратора

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







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

Малюнок 4.2. Ти не міг би йти швидше?

управління процесами

Скільки часу це займе?

Bash надає вбудовану команду time. яка відображає, скільки часу займає виконання команди. Вона розраховує час з високою точністю і може бути використана з будь-якою командою. У прикладі нижче, проходить близько півтори хвилини to make this book:

Команда GNU time в / usr / bin (на відміну від версії, вбудованої в shell) відображає більше інформації, яка може бути відформатована різними способами. Вона також показує статус завершення команди і загальне минулий час. Така ж команда, як вище, що використовує незалежний time. дає наступний висновок:

Для отримання повної інформації знову зверніться до info-сторінок.

виконання

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

  • програма, що виконується погано написана або використовує комп'ютер належним чином
  • доступ до дисків, контролерам, дисплею та всім іншим видам інтерфейсів
  • досяжність віддалених систем (продуктивність мережі)
  • кількість користувачів в системі, кількість користувачів, що одночасно працюють на насправді.
  • час дня
  • .

Коротше кажучи, навантаження залежить від того, що є нормальним для вашої системи. На моєму старому P133 працює брандмауер, SSH сервер, файловий сервер, служба маршрутизації, sendmail сервер, проксі сервер і деякі інші служби, всі вони не скаржаться на сім підключених користувачів; навантаження як і раніше 0 або в межах норми. Деякі (багатопроцесорні) системи, які я бачила, були цілком щасливі з навантаженням в 67. Існує тільки один спосіб дізнатися, що навантаження нормальна, - це перевіряти її регулярно. Якщо так не робити, ви тільки зможете оцінити завантаження системи за часом відгуку в командному рядку, що є дуже грубим виміром, оскільки ця швидкість залежить від сотні інших причин.

Я можу що-небудь зробити як користувач?

Велике оточення уповільнює роботу. Якщо у вас встановлено безліч змінних оточення (замість змінних оболонки), довгих шляхів пошуку, які не оптимізовані (помилки в налаштуваннях змінної оточення PATH), і є багато налаштувань, які зазвичай робляться "на льоту", системі буде вимагатися більше часу на пошук і читання даних.

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

Пріоритет або важливість роботи визначається її числом nice. Програма з великим nice-числом дружня до інших програм, іншим користувачам і системі; тобто ця програма - не важливо справу. Низьке nice-число позначає більш важливе завдання, яке вимагатиме більше ресурсів, що не ділячись ними.

Поліпшення виконання завдання за рахунок збільшення його nice-числа корисно тільки для процесів, які використовують багато процесорного часу (компілятори, математичні додатки тощо). Процеси, які постійно звертаються до вводу / виводу мають більш високий пріоритет (низький nice-число), наприклад, введення з клавіатури завжди отримує найвищий пріоритет в системі.

Визначення пріоритетів програм здійснюється за допомогою команди nice.

Інтерактивні програми.
Погана ідея, виконувати nice або renice по відношенню до інтерактивної програми або завданням, що працює на передньому плані.

ресурси процесора

На кожній системі Linux безліч програм одночасно потребують ресурсів процесора (ів), навіть в тому випадку, якщо ви є єдиним користувачем в системі. Кожна програма для роботи потребує певної кількості циклів центрального процесора. Бувають випадки, коли циклів процесора недостатньо, оскільки він дуже зайнятий. Команда uptime надзвичайно неточна (відображає тільки середні, ви повинні знати, що це нормально), але далеко не марна. Є деякі дії, які можна зробити, якщо ви думаєте, що ваш процесор є причиною зависання вашої системи:

  • Виконуйте важкі програми, коли навантаження невелика. Це можна робити в вашій системі в нічний час. Див. Наступний розділ про планування.
  • Запобігайте систему від виконання непотрібної роботи: зупиніть демонів і програми, які ви не використовуєте, використовуйте locate замість важкої find.
  • Виконуйте більше завдань з низьким пріоритетом.






Якщо жодне з цих рішень не варіант у вашій конкретній ситуації, ви можете оновити процесор. На машині UNIX це робота для системного адміністратора.

ресурси пам'яті

Коли поточні працюють процеси очікують більше пам'яті, ніж доступно фізично в системі, Linux не зруйнується; вона почне підкачування або своппинг, сенс в тому, що процес використовує пам'ять на диску або з простору підкачки, переміщаючи вміст фізичної пам'яті (частини працюючих програм або цілих програм у разі своппинга) на диск, тим самим даючи фізичної пам'яті обробляти кілька процесів. Це в достатній мірі уповільнює роботу системи, оскільки доступ до диска набагато повільніше, ніж доступ до пам'яті. Команда top може бути використана для відображення того, наскільки пам'ять і підкачка використовуються. Системи, що використовують glibc, пропонують команди memusage і memusagestat для візуалізації використання пам'яті.

Якщо ви виявите, що використовується багато пам'яті і простору підкачки, ви можете спробувати:

  • Переривання, зупинку або перевизначення nice для тих програм, які використовують велику частину пам'яті.
  • Додавання додаткової пам'яті (а в деяких випадках більше простору підкачки) системі.
  • Налаштування продуктивності системи, що виходить за рамки цього документа. Див. Список в Додатку А, «Куди йти далі?» За доповненням.

Ресурси I / O (введення / виведення)

Хоча обмеження введення-виведення є основною причиною стресу системних адміністраторів, системи Linux пропонує досить бідні утиліти для вимірювання I / O продуктивності. Інструменти ps. vmstat і top дають деяке уявлення про те, скільки програм чекають введення-виведення; netstat відображає інтерфейс мережевої статистики, але по суті немає інструментів нормального вимірювання I / O відгуку при завантаженні системи, а команда iostat дає короткий огляд загального I / O використання. Існують різні графічні додатки для відображення виводу цих команд в зрозумілому вигляді.

Кожен пристрій має свої власні проблеми, але пропускна здатність мережевих інтерфейсів і пропускна здатність дисків два основних вузьких місця в продуктивності вводу-виводу.

Мережеві I / O проблеми:

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

  • Проблеми мережевий цілісності:

Трапляється, коли дані передаються неправильно. Рішення такого роду проблем може бути виконано тільки шляхом ізоляції несправного елемента і його заміною.

Дискові I / O проблеми:

  • для кожного процесу швидкість передачі занадто низька:

Швидкість читання і запису для певного процесу не є достатньою.

  • сукупна швидкість передачі занадто низька:

Максимум загальної пропускної здатності, які система може забезпечити для всіх виконуються програм, недостатня.

Виявити такого роду проблеми складніше, і зазвичай це вимагає додаткове обладнання для того, щоб розділити потоки даних по шинах, контролерам і дискам, якщо причина проблеми - це перевантаження устаткування. Одним з рішень цього є оптимізована конфігурація RAID-масиву для дій введення-виведення. Так у вас з'являється можливість залишитися при тому ж обладнанні. Перед оновленням пропускної здатності шин, контролерів і дисків завжди можна спробувати інші варіанти.

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

користувачі

Користувачі можуть бути розділені на кілька класів у залежності від їх ставлення до використання ресурсів:

  • Користувачі, які запускають велике число маленьких завдань: ви, досвідчений користувач Linux, наприклад.
  • Користувачі, які запускають відносно небагато, але великих завдань: користувачі, що працюють з моделюванням, розрахунками, емуляторами або іншими програмами, які з'їдають багато пам'яті, і зазвичай цих користувачів супроводжує великий обсяг файлів даних.
  • Користувачі, які запускають трохи завдань, але використовують багато процесорного часу (розробники і т.п.).

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

графічні інструменти

Для графічного середовища доступний цілий букет інструментів моніторингу. Нижче наведено знімок екрана Системного Монітору Gnome, який здатний відображати і шукати інформацію про процеси і контролювати системні ресурси:

Малюнок 4.3. Системний Монітор Gnome

управління процесами

Також існує кілька корисних іконок, які ви можете встановити на панелі завдань, таких як монітори диска, пам'яті і завантаженості. Xload - це інше невеликий додаток X для моніторингу завантаження системи. Визначтеся самі зі своїми уподобаннями.

Переривання ваших процесів

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

  • Змусити процес використовувати менше ресурсів, не перериваючи його;
  • Зупинити процес взагалі.

У разі, якщо ви хочете, щоб процес продовжив роботу, але також хочете дати шанс іншим процесам в системі, ви можете перевизначити nice процесу. Поряд з використанням команд nice або renice. top є простим способом виявлення процесу (ів), що заподіює занепокоєння, і зниження пріоритету.

Дізнайтеся процес в стовпці "NI", у нього, швидше за все, буде негативний пріоритет. Наберіть r і введіть ID процесу, для якого ви хочете перевизначити число nice. Потім введіть значення nice, наприклад, "20". Це означає, що відтепер цей процес буде займати найбільшу 1/5 циклів процесора.

Приклади процесів, які ви захочете зберегти в робочому стані, - це емулятори, віртуальні машини, компілятори і т.д.

Якщо ви хочете зупинити процес, тому що він висить або збирається повністю вивести з робочого стану введення-виведення, створення файлу або використання інших ресурсів системи, використовуйте команду kill. Якщо у вас є можливість, спробуйте спочатку завершити процес "по тихому", відправивши йому сигнал SIGTERM. Це вказівка ​​до припинення будь-якої активності відповідно до процедур, описаними в коді програми:

У наведеному вище прикладі, користувач joe зупинив його браузер Mozilla, оскільки він подвіс.

Від деяких процесів позбутися трохи важче. Якщо у вас є час, ви можете відправити їм сигнал SIGINT, перервавши їх. Якщо цей трюк не спрацює, використовуйте найсильніший сигнал SIGKILL. У наведеному нижче прикладі joe зупиняється Mozilla, яка повисла остаточно:

У таких випадках ви можете захотіти перевірити, що цей процес дійсно перерваний, використовуючи фільтр grep знову ж по PID. Якщо це повертає тільки процес grep. ви можете бути впевнені, що вам вдалося зупинити той процес.

Серед процесів є ті, які складно перервати у вашій оболонці. І це добре: якби їх можна було легко перервати, то ви б втрачали вашу оболонку кожен раз при випадковому введенні Ctrl-C в командному рядку, тому що це рівносильно відправці SIGINT.

UNIX без конвеєрів майже немислимий.
Використання вертикальної риси (|) при використанні висновків однієї команди в якості вхідних даних інший пояснюється в наступному розділі, Глава 5, "Перенаправлення вводу-виводу".

У графічному середовищі, програма xkill дуже проста у використанні. Просто введіть ім'я команди, потім натисніть Enter і виберіть у вікні додаток, яке ви хочете зупинити. Це досить небезпечно, тому що програма відправляє SIGKILL за замовчуванням, тому використовуйте її, тільки коли додаток зависає.







Схожі статті