GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistím, který proces způsobuje, že se kswapd používá?

Řešení 1:

kswapd spravuje odkládací prostor v reakci na požadavky na paměť větší, než je fyzicky dostupné pro všechny procesy.

Je procesně agnostický, zajímá se pouze o to, jaké stránky jsou přístupné a kdy (je to samozřejmě složitější, ale abychom věci zjednodušili, můžeme to vidět i tímto způsobem).

Tedy skutečný otázka je "které procesy nejvíce zatěžují paměť, což způsobuje, že kswapd musí neustále stránkovat."

To je nejsnáze zodpovězeno pomocí 'top' a přepnutím do režimu třídění podle využití paměti.

Řešení 2:

Můžete to naskriptovat, ale můžete to udělat také přes top

Spusťte nahoru a stiskněte O následuje p poté zadejte

Nyní jsou všechny procesy seřazeny podle využití swapu a můžete vidět, které to používají

Řešení 3:

Pokud používáte Ubuntu 15.10 nebo vyšší, může to být ve skutečnosti důsledek chyby, zvláště pokud je váš systém virtuálním počítačem bez odkládacího oddílu (např. AWS EC2). Problém existuje u jiných distribucí, ale při psaní není jasné, zda stejná oprava funguje univerzálně.

Dočasné řešení:

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

Všimněte si, že tím zakážete přidávání RAM/CPU pro virtuální stroje Xen a Hyper-V.

Řešení 4:

Také se zdá, že je chyba v kswapd někde, doufejme, že jen na starších jádrech.

Téměř každý den se kswapd náhodně rozčiluje na některých počítačích ve větším clusteru (avšak s neaktuálním jádrem). 100% CPU na obou procesech kswapd. Žádné další běžící procesy (kromě ssh shellu), spousta volné RAM (více než 700 MB) a vůbec žádný SWAP. Žádná výměna, ani výměna.

Zatím nic nevysvětluje, proč je konkrétní stroj zasažen a jiný nikoli. Zdá se, že to není úplně náhodné, protože obvykle zasáhne více než jeden stroj v krátkém časovém rozpětí. Vypadá to, že stroje, které jsou nečinné, stejně jako stroje, které jsou pod vysokým tlakem, jsou méně (!) pravděpodobně zasaženy tímto efektem. Musí tedy něco dělat s pracovní zátěží a zasáhne pouze v případě, že stroj není nečinný ani příliš vytížený.

Pokud se problém objeví, už nic nepomůže. Zabití všech procesů (které se nestaly nezničitelnými), odpojení všech souborových systémů, nic. kswapd stále zůstává na 100% CPU. Mám podezření na nějaký spinlockový závod v jádrech SMP, ale je také pravděpodobné, že se mýlím.

Možná se podívejte na mou odpověď serverfault.com/questions/316995/#493257

Poznámky:

  • Restartování postižených počítačů se často nezdaří, protože proces vypínání začíná někde viset.
  • Neexistuje žádné přímé připojení k internetu. Cizí příčiny jsou nepravděpodobné.
  • Zdá se, že to závisí na typu zátěže, kterou stroje z hlediska zátěže zpracovávají, protože máme stroje, které nikdy nebyly (zatím) ovlivněny.
  • Omlouvám se, nemohu být konkrétnější, co děláme a proč.
  • Ano, spekuluji. Protože je to dnes extrémně matoucí efekt.

Linux
  1. Co jsou zombie procesy a jak najít a zabít zombie procesy?

  2. Jak použít Ctrl+C k ukončení všech procesů na pozadí spuštěných ve skriptu Bash?

  3. Jak zjistím, jaké soubory má proces otevřené?

  1. Co je příkaz Chown v Linuxu a jak jej používat

  2. Co je příkaz cURL a jak jej používat?

  3. Jak mohu zjistit, které procesy způsobují vysoké zatížení, pokud nevyužívají vysoké cpu?

  1. Chroot „vězení“ – co to je a jak jej používat?

  2. Jak zkontrolovat, jaké signály proces poslouchá?

  3. Jak zjistit, zda se používá připojení ssh ControlMaster