Як я можу сказати, який процес спричиняє використання kswapd?


23

Я бачу kswapd з використанням 100% процесора ... як я можу сказати, від якого імені процес kswapd використовується настільки багато?


1
Ум. kswapd - це процес. Він працює від імені ядра.
mailq


2
@mailq ... так, але хіба це не поміняти пам'ять певного користувальницького простору? і якщо так, то як я можу сказати, яку пам'ять процесу він замінює в цей момент?
Дешаун

Відповіді:


18

kswapd керує свопом простором у відповідь на вимоги пам’яті, ніж фізично доступні всі процеси.

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

Отже, справжнє питання полягає в тому, "які процеси мають найбільше навантаження на пам'ять, які викликають необхідність kswapd весь час створювати сторінки".

На це найлегше відповісти, використовуючи "верхній" та перехід на режим сортування пам'яті.


Спасибі!. Doe smwpd стусає ТІЛЬКИ, коли фактичні сторінки, що торкаються, перевищують фізичні або він забивається, навіть якщо процес виділив пам'ять або відобразив область SHM, але не використовував її? Тобто, це лише тоді, коли виникає проблема чи це робить зберігання книг та обмінювати речі всередині та поза тим, що є фізична пам'ять, але лише тому, що якийсь процес простоює тощо?
Дешаун

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

Навіть якщо машині потрібно використовувати багато місця для обміну, для цього не потрібно 100% процесора. Щось дивно.
Заз

@Zaz Це не так багато, що він використовує процесорну потужність процесора для заміни, це те, що процесор на 100% використовується завдяки IOWAIT. Кожен раз, коли потрібно замінити пам'ять з диска, процесор повинен сидіти там і чекати - IOWAIT, і нічого іншого не робить (в середньому).
Павло

@Paul: Ви впевнені? topговорить мені про те, що в очікуванні IO часу не витрачається, і майже 100% часу витрачається в системі. Більш детальна інформація: kswapd часто використовує 100% CPU , коли своп знаходиться у використанні
Zaz

9

Ви можете його скриптувати .. але ви також можете це зробити за допомогою верху

Запустіть верх, потім натисніть кнопку O, а потім p, тоді введіть

Тепер усі процеси сортуються за допомогою swap-використання, і ви можете побачити, які з них використовують


2
O відкриває для мене параметри фільтра, натискаючи кнопку p, а потім клавіша Enter дає мені "" включити "роздільник фільтра відсутній"
Тінь

@Shadow Та сама проблема, тут альтернативна команда unix.stackexchange.com/questions/128953/…
Björn

8

Якщо ви перебуваєте на Ubuntu 15.10 або новішої версії, це насправді може бути результатом помилки , особливо якщо у вашій системі є віртуальна машина, у якої відсутній розділ swap (наприклад, AWS EC2). Проблема існує і в інших дистрибутивах , але, як це писалося, незрозуміло, чи буде те саме виправлення універсальним.

Тимчасове вирішення:

sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot

Зауважте, що це відключить оперативну оперативну пам'ять / процесори для віртуальних машин Xen та Hyper-V.


Якби це з’явилося з нізвідки в моїй системі на Kubuntu 16.10 з вирішеним способом вирішення, яке вже було включено деякий час тому.
jeteon

@jeteon Є кілька проблем, які можуть спричинити таку поведінку; це, як правило, є особливо поширеним.
Zenexer

Так. Я виявив, що echo 3 > /proc/sys/vm/drop_cachesце полегшує це, як тільки це починається. Я переважаю, що зараз я маю команду на роботі з кроном, і, здається, це допоможе або принаймні обмежить тривалість розправи OOM, коли я не вдома.
jeteon

6

Здається, що kswapdдесь і помилка , сподіваємось лише на старих ядрах.

Зараз майже кожен день kswapd відбувається випадковим чином на деяких машинах у більшому кластері (однак з поточним ядром, однак). 100% процесора для обох процесів kswapd. Жодних інших запущених процесів (крім ssh shell), безлічі безкоштовної оперативної пам’яті (понад 700 Мб) і взагалі не використовуваних SWAP. Ніякого заміни, а також заміни.

Ще нічого не пояснює, чому конкретна машина потрапила, а інша - ні. Здається, це не зовсім випадково, тому що зазвичай за короткий проміжок часу він потрапляє на кілька машин. Схоже, машини, які працюють на холостому ходу, а також машини, що знаходяться під високим тиском, менше (!) Ймовірно вражають ефектом. Отже, він повинен щось робити з робочим навантаженням і лише б’є, якщо машина не працює і не дуже зайнята.

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

Можливо, дивіться мою відповідь serverfault.com/questions/316995/#493257

Примітки:

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

Це історично. RedHat підтвердив: Це була проблема ядра 2.6.18-194.el5 у поєднанні з клієнтом NFS. Це було зафіксовано вже у 2012 році. Дивіться пов'язану відповідь у моєму тексті для отримання додаткової інформації. Якщо ви сьогодні потрапили до цього, це, ймовірно, якась інша причина.
Тіно

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