БпСстСтС 15% ΠΎΡ‚ всички хостинг услуги

ВСствай умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠžΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
Заглавия
ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми

Команди ΠΈ инструмСнти Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° консумацията Π½Π° RAM Π² Linux

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΡŠΡ‚ Π½Π° RAM ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π² Linux ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° заявяванС Π½Π° подсистСмата Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π° ядрото Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° физичСската ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° swap ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ Π½Π° рСзидСнтния Π½Π°Π±ΠΎΡ€ Π·Π° всСки процСс. Най-ΠΏΡ€Π΅ΠΊΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ β€” free, top, htop, ps, vmstat ΠΈ smem β€” всяка ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ слой ΠΎΡ‚ йСрархията Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΎΡ‚ ΠΎΠ±Ρ‰ΠΈΡ‚Π΅ стойности Π·Π° цялата систСма Π΄ΠΎ пропорционалния Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π½Π°Π±ΠΎΡ€Π° (PSS) Π·Π° всСки процСс.

ΠŸΡ€Π΅ΠΊΠΎΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° задСйства Linux ΡƒΠ±ΠΈΠ΅Ρ†Π° ΠΏΡ€ΠΈ ΠΈΠ·Ρ‡Π΅Ρ€ΠΏΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (OOM), ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ прСкратява процСси, Π·Π° Π΄Π° освободи RAM. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΊΠΎΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π°Ρ‚ ΠΊΠΎΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ β€” ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Ρ‚ Ρ‚Π΅Π·ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ β€” Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ справянС с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚Π°. Π’ΠΎΠ²Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΎΠ±Ρ…Π²Π°Ρ‰Π° всСки основСн инструмСнт, ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π½Π° ядрото, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚Π΅ Ρ‡Π΅Ρ‚Π°Ρ‚, ΠΈ Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΈΡ‚Π΅ случаи, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°Ρ‚ Π΄ΠΎΡ€ΠΈ ΠΎΠΏΠΈΡ‚Π½ΠΈ администратори.

Π—Π°Ρ‰ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΡŠΡ‚ Π½Π° RAM Π΅ Π²Π°ΠΆΠ΅Π½ Π½Π° Linux ΡΡŠΡ€Π²ΡŠΡ€ΠΈ

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² Linux Π΅ ΡƒΠΌΠΈΡˆΠ»Π΅Π½ΠΎ агрСсивно. Π―Π΄Ρ€ΠΎΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° цялата Π½Π°Π»ΠΈΡ‡Π½Π° RAM ΠΊΠ°Ρ‚ΠΎ кСш Π½Π° страници Π·Π° ускоряванС Π½Π° дисковия I/O, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ систСма, ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Ρ‰Π° ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΡƒΠ»Π΅Π²Π° свободна ΠΏΠ°ΠΌΠ΅Ρ‚, Π½Π΅ Π΅ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ β€” тя ΠΌΠΎΠΆΠ΅ просто Π΄Π° ΠΊΠ΅ΡˆΠΈΡ€Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ. ΠŸΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡ‚ΠΎ Ρ‚ΡŠΠ»ΠΊΡƒΠ²Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ Π½Π°ΠΉ-чСститС Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ стойности Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚.

Основни ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π·Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° RAM:

  • ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΡΠ²Π°Π½Π΅ Π½Π° OOM ΡƒΠ±ΠΈΠ΅Ρ†Π°: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΉΡ‚Π΅ процСси, консумиращи ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΏΡ€Π΅Π΄ΠΈ ядрото Π΄Π° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ услуги.
  • ΠžΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° swap: Π˜Π½Ρ‚Π΅Π½Π·ΠΈΠ²Π½Π°Ρ‚Π° swap активност (суапванС) ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈΠ·Ρ‡Π΅Ρ€ΠΏΠ²Π°Π½Π΅ Π½Π° RAM ΠΈ причинява сСриозна I/O латСнтност.
  • Диагностика Π½Π° ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚: ΠŸΡ€ΠΎΡ†Π΅ΡΠΈ с постоянно нарастващ RSS с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ сигнализират Π·Π° изтичания Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
  • ΠŸΠ»Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚Π°: Π”Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΠΈΡ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π° Π·Π° Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ.
  • Настройка Π½Π° производитСлността: Π Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° vm.swappiness, ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΈ страници ΠΈ NUMA топология изисква Π±Π°Π·ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.

Π’ срСда Π·Π° VPS Π₯остинг, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ рСсурситС сС сподСлят ΠΈΠ»ΠΈ са ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ ΠΎΡ‚ Π»ΠΈΠΌΠΈΡ‚ΠΈΡ‚Π΅ Π½Π° Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€Π°, точният ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° RAM Π΅ особСно ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ β€” достиганСто Π½Π° Ρ‚Π°Π²Π°Π½ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π±Π΅Π·ΡˆΡƒΠΌΠ½ΠΎ влошава производитСлността, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° сС задСйства ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ ΠΈ Π΄Π° Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° тСрминологията Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² Linux

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠ²Π°Ρ‚ΠΎ ΠΈ Π΄Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°, трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ прСдставляват ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ.

Π’Π΅Ρ€ΠΌΠΈΠ½ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅
TotalΠ˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π° физичСска RAM (ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° машина)
UsedΠŸΠ°ΠΌΠ΅Ρ‚, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ консумирана ΠΎΡ‚ процСси ΠΈ структури Π½Π° ядрото
FreeНапълно Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° RAM β€” чСсто ΠΏΠΎΠ΄Π²Π΅ΠΆΠ΄Π°Ρ‰ΠΎ ниска
SharedΠŸΠ°ΠΌΠ΅Ρ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΎΡ‚ tmpfs ΠΈ сподСлСна ΠΌΠ΅ΠΆΠ΄Ρƒ процСси
Buff/CacheΠ‘ΡƒΡ„Π΅Ρ€ΠΈ Π½Π° ядрото ΠΈ кСш Π½Π° страници β€” ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС освободСна ΠΏΡ€ΠΈ поискванС
AvailableРСалистична ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° RAM, Π½Π°Π»ΠΈΡ‡Π½Π° Π·Π° Π½ΠΎΠ²ΠΈ разпрСдСлСния Π±Π΅Π· суапванС
Swap UsedΠ”Π°Π½Π½ΠΈ, измСстСни ΠΎΡ‚ RAM към swap дяла ΠΈΠ»ΠΈ swap Ρ„Π°ΠΉΠ»Π°
VSZ (Virtual Size)ΠžΠ±Ρ‰ΠΎΡ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΎ адрСсно пространство, Π·Π°ΠΏΠ°Π·Π΅Π½ΠΎ ΠΎΡ‚ процСс
RSS (Resident Set Size)ЀизичСска RAM, Π·Π°Π΅Ρ‚Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΎΡ‚ процСс
PSS (Proportional Set Size)RSS, ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ Π·Π° сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚ β€” Π½Π°ΠΉ-Ρ‚ΠΎΡ‡Π½Π°Ρ‚Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° Π·Π° всСки процСс
USS (Unique Set Size)ΠŸΠ°ΠΌΠ΅Ρ‚, ΠΏΡ€ΠΈΡ‚Π΅ΠΆΠ°Π²Π°Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΎΡ‚ процСс; напълно освободСна ΠΏΡ€ΠΈ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΎΠ·Ρ€Π΅Π½ΠΈΠ΅: Π’ΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° Available ΠΎΡ‚ free -h, Π° Π½Π΅ ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° Free, ΠΊΠΎΠ³Π°Ρ‚ΠΎ оцСняватС Π΄Π°Π»ΠΈ систСмата ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ RAM Π·Π° Π½ΠΎΠ²ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅. ΠšΠΎΠ»ΠΎΠ½Π°Ρ‚Π° Free ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π° освобоТдаСмия кСш, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ Π°Π»Π°Ρ€ΠΌΠΈ.

Π€Π°ΠΉΠ»ΡŠΡ‚ /proc/meminfo: АвторитСтният ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ

ВсСки инструмСнт, описан Π² Ρ‚Π°Π·ΠΈ статия, Ρ‡Π΅Ρ‚Π΅ ΠΎΡ‚ /proc/meminfo, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ Ρ„Π°ΠΉΠ», ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ ΠΎΡ‚ ядрото Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π”ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎΡ‚ΠΎ ΠΌΡƒ инспСктиранС Π²ΠΈ Π΄Π°Π²Π° Π½Π°ΠΉ-Π΄Π΅Ρ‚Π°ΠΉΠ»Π½ΠΈΡ‚Π΅ Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ:

cat /proc/meminfo

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π·Π° наблюдСниС:

  • MemTotal β€” ΠΎΠ±Ρ‰Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌΠ° RAM
  • MemFree β€” напълно Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Π° RAM
  • MemAvailable β€” ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π½Π° Π½Π°Π»ΠΈΡ‡Π½Π° RAM Π·Π° Π½ΠΎΠ²ΠΈ процСси
  • Buffers β€” суров кСш Π½Π° дискови Π±Π»ΠΎΠΊΠΎΠ²Π΅
  • Cached β€” кСш Π½Π° страници Π·Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅
  • SwapTotal / SwapFree β€” ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚ ΠΈ наличност Π½Π° swap
  • Dirty β€” ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ‡Π°ΠΊΠ°Ρ‰Π° Π΄Π° бъдС записана Π½Π° диск (високитС стойности ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ I/O Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅)
  • HugePages_Total / HugePages_Free β€” статус Π½Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΈ страници
  • Slab β€” кСш Π½Π° структури ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π½Π° ядрото (ΠΌΠΎΠΆΠ΅ Π΄Π° нараснС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π΅Π½ΠΈ NFS ΠΈΠ»ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ)

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° /proc/meminfo Π²ΠΈ позволява Π΄Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΈΠ·Ρ…ΠΎΠ΄Π° Π½Π° всСки Π΄Ρ€ΡƒΠ³ инструмСнт с пълСн контСкст.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° RAM с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° free

free Π΅ Π½Π°ΠΉ-Π±ΡŠΡ€Π·ΠΈΡΡ‚ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° снимка Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π·Π° цялата систСма. Π§Π΅Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ /proc/meminfo ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π° ΠΈΠ·Ρ…ΠΎΠ΄Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°, Ρ‡Π΅Ρ‚ΠΈΠΌΠ° ΠΎΡ‚ Ρ‡ΠΎΠ²Π΅ΠΊ.

Основна ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°

free

Π˜Π·Ρ…ΠΎΠ΄ΡŠΡ‚ Π΅ Π² ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π·Π° ΠΏΠΎ-Ρ‡Π΅Ρ‚ΠΈΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ:

free -h        # Human-readable (MB/GB)
free -m        # Output in megabytes
free -g        # Output in gigabytes
free -s 5      # Refresh every 5 seconds (continuous monitoring)
free -h --si   # Use SI units (1000-based) instead of binary (1024-based)

ОбяснСниС Π½Π° примСрния ΠΈΠ·Ρ…ΠΎΠ΄

              total        used        free      shared  buff/cache   available
Mem:           15Gi       4.2Gi       1.1Gi       312Mi       9.8Gi       10.9Gi
Swap:         2.0Gi       128Mi       1.9Gi

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ систСмата ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Ρ‡Π΅ ΠΈΠΌΠ° само 1,1 GB свободна ΠΏΠ°ΠΌΠ΅Ρ‚, Π½ΠΎ 10,9 GB Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ са Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π·Π° Π½ΠΎΠ²ΠΈ процСси, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ядрото Ρ‰Π΅ освободи buff/cache ΠΏΡ€ΠΈ поискванС. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π·Π° ΠΈΠ·Ρ…ΠΎΠ΄Π° Π½Π° free.

Π“Ρ€Π°Π½ΠΈΡ‡Π΅Π½ случай: Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° swap ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚Π΅Π»Π΅Π½ сигнал

Π”ΠΎΡ€ΠΈ ΠΌΠ°Π»ΠΊΠΎ количСство ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° swap (Swap: used > 0) Π½Π° производствСн ΡΡŠΡ€Π²ΡŠΡ€ заслуТава разслСдванС. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ядрото Π²Π΅Ρ‡Π΅ Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΎ, Ρ‡Π΅ някои страници с ΠΏΠ°ΠΌΠ΅Ρ‚ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π½Π° диск, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π² RAM β€” Π·Π½Π°ΠΊ, Ρ‡Π΅ работният Π½Π°Π±ΠΎΡ€ надвишава физичСската ΠΏΠ°ΠΌΠ΅Ρ‚.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° RAM с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° top

top прСдоставя Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΈΠ·Π³Π»Π΅Π΄ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмнитС рСсурси, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΉΠΊΠΈ статистики Π·Π° CPU ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚ с класиран списък Π½Π° процСситС.

top

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² top

Π’ Π³ΠΎΡ€Π½Π°Ρ‚Π° част Π½Π° интСрфСйса Π½Π° top Π΄Π²Π° Ρ€Π΅Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ статистики Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°:

MiB Mem :  16384.0 total,   1126.4 free,   4301.2 used,  10956.4 buff/cache
MiB Swap:   2048.0 total,   1920.0 free,    128.0 used.  11200.0 avail Mem

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° с процСси Π½Π°ΠΉ-Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ са:

  • VIRT β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ (Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ Π½Π° VSZ)
  • RES β€” Ρ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π½Π° физичСска ΠΏΠ°ΠΌΠ΅Ρ‚ (RSS)
  • SHR β€” сподСлСна част ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° RES
  • %MEM β€” ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ ΠΎΠ±Ρ‰Π°Ρ‚Π° физичСска RAM, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°

ПолСзни ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° top

ΠšΠ»Π°Π²ΠΈΡˆΠ”Π΅ΠΉΡΡ‚Π²ΠΈΠ΅
MΠ‘ΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° процСситС ΠΏΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (%MEM)
PΠ‘ΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ ΠΏΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° CPU
kΠŸΡ€Π΅ΠΊΡ€Π°Ρ‚ΡΠ²Π°Π½Π΅ Π½Π° процСс ΠΏΠΎ PID
1ΠŸΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° статистики Π·Π° всяко CPU ядро
fДобавянС/ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π° Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅
WΠ—Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° конфигурация

ИзпълнСниС Π½Π° top Π½Π΅ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ

Π—Π° скриптиранС ΠΈ запис Π½Π° ΠΆΡƒΡ€Π½Π°Π»ΠΈ, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ top Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ:

top -b -n 1 | head -30

Π’ΠΎΠ²Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π° снимка β€” ΠΏΠΎΠ»Π΅Π·Π½Π° Π·Π° скриптовС Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° cron.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° RAM с htop

htop Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° ncurses ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° процСси, ΠΊΠΎΠΉΡ‚ΠΎ прСдставя ΡΡŠΡ‰ΠΈΡ‚Π΅ основни Π΄Π°Π½Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ top със Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-ΡƒΠ΄ΠΎΠ±Π΅Π½ интСрфСйс. НС Π΅ инсталиран ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ дистрибуции.

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ

# Debian / Ubuntu
apt-get install htop

# RHEL / CentOS / AlmaLinux / Rocky Linux
yum install htop
# or on newer versions:
dnf install htop

# Alpine Linux
apk add htop

Какво добавя htop спрямо top

  • Π¦Π²Π΅Ρ‚ΠΎΠ²ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ Π»Π΅Π½Ρ‚ΠΈ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‰ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚, Π±ΡƒΡ„Π΅Ρ€ΠΈΡ‚Π΅ ΠΈ кСша с Π΅Π΄ΠΈΠ½ ΠΏΠΎΠ³Π»Π΅Π΄
  • Π₯ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π΅Π½ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π΅Π½ ΠΈΠ·Π³Π»Π΅Π΄ Π½Π° Π΄ΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π° процСситС (F5)
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° мишка Π·Π° ΠΊΠ»ΠΈΠΊΠ²Π°Π½Π΅ ΠΈ ΠΏΡ€Π΅Π²ΡŠΡ€Ρ‚Π°Π½Π΅
  • ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½ ΠΈΠ·Π±ΠΎΡ€ Π·Π° Π³Ρ€ΡƒΠΏΠΎΠ²ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° процСси
  • Π’Π³Ρ€Π°Π΄Π΅Π½ΠΎ Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ (F3) ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ (F4) Π±Π΅Π· запомнянС Π½Π° клавишни ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ
  • Π”ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π½Π°Π»ΠΈΡ‡Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π° Π²ΠΈΠ΄Π½ΠΎ място Π² Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π°

Π›Π΅Π³Π΅Π½Π΄Π° Π½Π° Ρ†Π²Π΅Ρ‚ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π»Π΅Π½Ρ‚Π°Ρ‚Π° Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² htop

ЦвятЗначСниС
Π—Π΅Π»Π΅Π½Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ (процСси)
Π‘ΠΈΠ½Π‘ΡƒΡ„Π΅Ρ€Π΅Π½ кСш
Π–ΡŠΠ»Ρ‚/ΠžΡ€Π°Π½ΠΆΠ΅Π²ΠšΠ΅Ρˆ Π½Π° страници
Π§Π΅Ρ€Π²Π΅Π½Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½ swap

ΠŸΡ€ΠΎΡ„Π΅ΡΠΈΠΎΠ½Π°Π»Π΅Π½ ΡΡŠΠ²Π΅Ρ‚: Π’ htop, натиснСтС F2 (Настройки) > ΠžΠΏΡ†ΠΈΠΈ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ > Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ β€žΠŸΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° чСстотата Π½Π° CPU” ΠΈ β€žΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ CPU врСмС” Π·Π° ΠΏΠΎ-пълна ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Π·Π°Π΅Π΄Π½ΠΎ с Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° RAM с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° ps

ps (статус Π½Π° процСса) заявява Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π½Π° процСситС Π½Π° ядрото ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС сортиран ΠΈ Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½ Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ консуматори Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° процСситС ΠΏΠΎ консумация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚

ps aux --sort=-%mem

ОбяснСниС Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ

КолонаОписаниС
USERБобствСник Π½Π° процСса
PIDΠ˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° процСса
%CPUИзползванС Π½Π° CPU ΠΎΡ‚ стартиранСто Π½Π° процСса
%MEMΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°Ρ‚Π° физичСска RAM (RSS / MemTotal)
VSZΠ Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² KB
RSSΠ Π°Π·ΠΌΠ΅Ρ€ Π½Π° рСзидСнтния Π½Π°Π±ΠΎΡ€ Π² KB
TTYУправляващ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»
STATΠ‘ΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° процСса (S=спящ, R=ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ сС, Z=Π·ΠΎΠΌΠ±ΠΈ, D=Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΊΡŠΡΠ²Π°Π΅ΠΌΠΎ Ρ‡Π°ΠΊΠ°Π½Π΅)
STARTЧас Π½Π° стартиранС Π½Π° процСса
TIMEΠšΡƒΠΌΡƒΠ»Π°Ρ‚ΠΈΠ²Π½ΠΎ консумирано CPU Π²Ρ€Π΅ΠΌΠ΅
COMMANDИмС ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΈ Π΅Π΄Π½ΠΎΡ€Π΅Π΄ΠΎΠ²ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

ПоказванС Π½Π° Ρ‚ΠΎΠΏ 10 процСси, консумиращи ΠΏΠ°ΠΌΠ΅Ρ‚, с Ρ‡Π΅Ρ‚ΠΈΠΌ ΠΎΡ‚ Ρ‡ΠΎΠ²Π΅ΠΊ ΠΈΠ·Ρ…ΠΎΠ΄:

ps aux --sort=-%mem | head -11

ПоказванС Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° процСс (Π½Π°ΠΏΡ€. Apache):

ps aux | grep apache2 | awk '{sum += $6} END {print sum/1024 " MB"}'

Π’ΠΎΠ²Π° сумира RSS стойноститС Π½Π° всички Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ процСси Π½Π° apache2 β€” ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π·Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° истинския ΠΎΡ‚ΠΏΠ΅Ρ‡Π°Ρ‚ΡŠΠΊ Π½Π° многопроцСсни ΡƒΠ΅Π± ΡΡŠΡ€Π²ΡŠΡ€ΠΈ.

Π’Π°ΠΆΠ½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ps ΠΏΠΎΠΊΠ°Π·Π²Π° RSS, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π²ΠΎΠΉΠ½ΠΎ Π±Ρ€ΠΎΠΈ сподСлСнитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Ако 20 Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° Π½Π° Apache всСки ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π° ΡΡŠΡ‰Π°Ρ‚Π° 50 MB сподСлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ps ΠΎΡ‚Ρ‡ΠΈΡ‚Π° 1 000 MB ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° сподСлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π° тях, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ дСйствитСлната физичСска Ρ†Π΅Π½Π° Π΅ само 50 MB. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ smem Π·Π° Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° RAM с smem

smem Π΅ Π½Π°ΠΉ-точният инструмСнт Π·Π° ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π·Π° всСки процСс, Π½Π°Π»ΠΈΡ‡Π΅Π½ Π² Linux, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‚Π° PSS (ΠŸΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π½Π°Π±ΠΎΡ€Π°) β€” сподСлСната ΠΏΠ°ΠΌΠ΅Ρ‚ сС раздСля ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ всички процСси, ΠΊΠΎΠΈΡ‚ΠΎ я ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Ρ‚, Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°ΠΉΠΊΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π΄Π²ΠΎΠΉΠ½ΠΎΡ‚ΠΎ Π±Ρ€ΠΎΠ΅Π½Π΅, ΠΏΡ€ΠΈΡΡŠΡ‰ Π½Π° инструмСнтитС, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° RSS.

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ

# Ubuntu / Debian
apt-get install smem

# CentOS / RHEL 7
yum install smem

# RHEL 8+ / AlmaLinux / Rocky Linux
dnf install smem

# Alternatively, install via pip
pip install smem

Основна ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°

smem

ПолСзни ΠΎΠΏΡ†ΠΈΠΈ Π½Π° smem

smem -r              # Sort by RSS (descending)
smem -s pss -r       # Sort by PSS (most accurate, descending)
smem -u              # Aggregate by user
smem -m              # Show system-wide memory map
smem -p              # Show percentages instead of raw KB
smem -k              # Show values in KB
smem -t              # Show totals row
smem --pie name      # Generate a pie chart (requires matplotlib)
smem -P apache2      # Filter by process name pattern

PSS срСщу RSS: Π—Π°Ρ‰ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ

Π Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€, ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ 10 Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ процСса Π½Π° Node.js, всСки сподСлящ 100 MB Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° V8 runtime:

  • RSS Π½Π° процСс: 200 MB (100 MB сподСлСна + 100 MB частна)
  • ΠžΠ±Ρ‰ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅Π½ RSS: 2 000 MB
  • PSS Π½Π° процСс: 110 MB (10 MB дял ΠΎΡ‚ 100 MB + 100 MB частна)
  • ΠžΠ±Ρ‰ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅Π½ PSS: 1 100 MB
  • ДСйствитСлно ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° физичСска RAM: 1 100 MB

RSS надцСнява ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ с ΠΏΠΎΡ‡Ρ‚ΠΈ 2 ΠΏΡŠΡ‚ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ сцСнарий. ΠŸΡ€ΠΈ Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Dedicated ΡΡŠΡ€Π²ΡŠΡ€, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° PSS ΠΎΡ‚ smem Π²ΠΈ Π΄Π°Π²Π° истинската ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° RAM с vmstat

vmstat (статистики Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚) прСдоставя ΠΏΠΎ-ΡˆΠΈΡ€ΠΎΠΊ ΠΈΠ·Π³Π»Π΅Π΄ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, swap, I/O ΠΈ CPU активността, ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π·Π° диагностициранС Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² цялата систСма, Π° Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ процСси.

vmstat 2 10    # Report every 2 seconds, 10 times

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚

КолонаОписаниС
swpdИзползвана Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ (swap)
freeНСактивна ΠΏΠ°ΠΌΠ΅Ρ‚
buffΠŸΠ°ΠΌΠ΅Ρ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΊΠ°Ρ‚ΠΎ Π±ΡƒΡ„Π΅Ρ€ΠΈ
cacheΠŸΠ°ΠΌΠ΅Ρ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΊΠ°Ρ‚ΠΎ кСш
siΠŸΠ°ΠΌΠ΅Ρ‚, суапната ΠΎΡ‚ диска (KB/s)
soΠŸΠ°ΠΌΠ΅Ρ‚, суапната Π½Π° диска (KB/s)

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ сигнал: НСнулСви стойности Π½Π° si (суап-Π²Ρ…ΠΎΠ΄) ΠΈ so (суап-ΠΈΠ·Ρ…ΠΎΠ΄) Π² Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ΠΏΠΎΡ‚ΠΎΠΊ Π½Π° vmstat ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ суапванС β€” ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ Π·Π½Π°ΠΊ Π·Π° ΠΈΠ·Ρ‡Π΅Ρ€ΠΏΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Π”ΠΎΡ€ΠΈ случайни ΠΏΠΈΠΊΠΎΠ²Π΅ Π² so ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° причинят ΠΏΠΈΠΊΠΎΠ²Π΅ Π½Π° латСнтност Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ стотици милисСкунди.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° RAM с sar (Π Π΅ΠΏΠΎΡ€Ρ‚Π΅Ρ€ Π½Π° систСмната активност)

sar ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° sysstat записва историчСски Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, позволявайки рСтроспСктивСн Π°Π½Π°Π»ΠΈΠ· β€” Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ инструмСнтитС Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° прСдоставят.

Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ

apt-get install sysstat    # Debian/Ubuntu
yum install sysstat        # CentOS/RHEL

Π£ΠΏΠΎΡ‚Ρ€Π΅Π±Π°

sar -r 1 5          # Memory stats every 1 second, 5 times
sar -r -f /var/log/sysstat/sa$(date +%d)   # Today's historical data
sar -S 1 5          # Swap statistics

sar Π΅ Π±Π΅Π·Ρ†Π΅Π½Π΅Π½ Π·Π° отговарянС Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈ ΠΊΠ°Ρ‚ΠΎ β€žΠ˜ΠΌΠ°ΡˆΠ΅ Π»ΠΈ ΠΏΠΈΠΊ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² 3 часа сутринта, ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΠ» срива Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ?” β€” Π²ΡŠΠΏΡ€ΠΎΡ, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Π½ΠΈΠΊΠΎΠΉ инструмСнт Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ слСд Ρ„Π°ΠΊΡ‚Π°.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° RAM с /proc/<PID>/status ΠΈ /proc/<PID>/smaps

Π—Π° Π·Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ Π°Π½Π°Π»ΠΈΠ· Π½Π° всСки процСс, ядрото ΠΈΠ·Π»Π°Π³Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² /proc.

Π‘ΡŠΡ€Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π·Π° всСки процСс

cat /proc/$(pgrep nginx | head -1)/status | grep -E "VmRSS|VmPeak|VmSize|VmSwap"

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΈΠ·Ρ…ΠΎΠ΄:

VmPeak:   512340 kB
VmSize:   498120 kB
VmRSS:    102400 kB
VmSwap:        0 kB
  • VmPeak β€” ΠΏΠΈΠΊΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚, достигнат някога ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ процСс
  • VmRSS β€” Ρ‚Π΅ΠΊΡƒΡ‰ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° рСзидСнтния Π½Π°Π±ΠΎΡ€
  • VmSwap β€” ΠΊΠΎΠ»ΠΊΠΎ ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ процСс Π΅ суапнато

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π° ΠΊΠ°Ρ€Ρ‚Π° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° с smaps

cat /proc/$(pgrep mysql | head -1)/smaps | grep -E "^(Size|Rss|Pss|Shared|Private)"

Π’ΠΎΠ²Π° Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π° всяко ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (heap, stack, сподСлСни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ картографирания) с ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½ΠΈ RSS ΠΈ PSS стойности β€” Π½Π°ΠΉ-дСтайлният ΠΈΠ·Π³Π»Π΅Π΄ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π½Π°Π»ΠΈΡ‡Π΅Π½ Π±Π΅Π· ΠΏΡ€ΠΎΡ„Π°ΠΉΠ»ΡŠΡ€.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° инструмСнтитС: Π˜Π·Π±ΠΎΡ€ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠžΠ±Ρ…Π²Π°Ρ‚Π’ΠΈΠΏ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°Π’ Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ’ΠΎΡ‡Π½ΠΎΡΡ‚ Π½Π° сподСлСна памСтНай-Π΄ΠΎΠ±ΡŠΡ€ случай Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°
freeΠ—Π° цялата систСмаTotal/AvailableДаНСН/ΠŸΠ‘ΡŠΡ€Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π·Π΄Ρ€Π°Π²Π΅Ρ‚ΠΎ
topΠ—Π° всСки процСс + систСмаRSS, %MEMДаНСНиска (RSS)Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³
htopΠ—Π° всСки процСс + систСмаRSS, %MEMДаНСНиска (RSS)Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ (ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½)
psΠ—Π° всСки процСсRSS, VSZБнимкаНСНиска (RSS)Π‘ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅, сортиранС
smemΠ—Π° всСки процСсPSS, USS, RSSБнимкаНСВисока (PSS)Π’ΠΎΡ‡Π½ΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°
vmstatΠ—Π° цялата систСмаSwap I/O, freeДаНСН/ΠŸΠ”ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° swap
sarΠ—Π° цялата систСмаВсички мСтрикиНСДаН/ПАнализ слСд ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚
/proc/meminfoΠ—Π° цялата систСмаНСобработСни Π΄Π°Π½Π½ΠΈ Π½Π° ядротоДаНСН/ΠŸΠ‘ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅, автоматизация
/proc/PID/smapsΠ—Π° всСки ΠΏΡ€ΠΎΡ†Π΅ΡΠŸΡŠΠ»Π½Π° ΠΊΠ°Ρ€Ρ‚Π°Π”Π°ΠΠ΅Π’ΠΈΡΠΎΠΊΠ°Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° процСси

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ процСси Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³

Π Π°Π±ΠΎΡ‚Π΅Π½ процСс 1: Π‘ΡŠΡ€Π·Π° Ρ‚Ρ€ΠΈΠ°ΠΆ (ΠΏΠΎΠ΄ 60 сСкунди)

free -h                          # Step 1: Is Available memory critically low?
vmstat 1 5                       # Step 2: Is active swapping occurring?
ps aux --sort=-%mem | head -15   # Step 3: Which processes are the top consumers?

Π Π°Π±ΠΎΡ‚Π΅Π½ процСс 2: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚

# Watch a specific process's RSS grow over time
watch -n 5 'ps -o pid,rss,vsz,comm -p $(pgrep your_app)'

# Or use smem with repeated snapshots
while true; do smem -P your_app -t; sleep 30; done

Π Π°Π±ΠΎΡ‚Π΅Π½ процСс 3: Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ· слСд ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚

sar -r -f /var/log/sysstat/sa$(date +%d --date='yesterday')

Π Π°Π±ΠΎΡ‚Π΅Π½ процСс 4: Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅

#!/bin/bash
THRESHOLD=90
USED_PCT=$(free | awk '/^Mem:/ {printf "%.0f", $3/$2 * 100}')
if [ "$USED_PCT" -gt "$THRESHOLD" ]; then
    echo "ALERT: RAM usage at ${USED_PCT}% on $(hostname)" | mail -s "Memory Alert" admin@example.com
fi

Π’ΠΎΠ·ΠΈ скрипт ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС поставСн Π² cron Π·Π°Π΄Π°Ρ‡Π° Π·Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ β€” практичСска нСобходимост Π½Π° всСки производствСн VPS с cPanel ΠΈΠ»ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° Π³ΠΎΠ»ΠΎ ТСлязо.

Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎ: ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° настройка Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ядрото

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ стС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π»ΠΈ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° sysctl Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ влияят Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ:

# View current swappiness (default: 60)
sysctl vm.swappiness

# Reduce swap tendency (recommended for databases: 10)
sysctl -w vm.swappiness=10

# Increase dirty page write-back aggressiveness
sysctl -w vm.dirty_ratio=15
sysctl -w vm.dirty_background_ratio=5

# Drop page cache manually (use with caution on production)
sync; echo 3 > /proc/sys/vm/drop_caches

ОбяснСниС Π½Π° vm.swappiness: Бтойност ΠΎΡ‚ 60 ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ядрото Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ суапванС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ RAM Π΅ 40% ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°. Π—Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ (MySQL, PostgreSQL, Redis), Π·Π°Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° 10 ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² RAM ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-дълго, драстично намалявайки I/O латСнтността. Π—Π° настолни систСми ΠΈΠ»ΠΈ систСми с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° RAM, стойността ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ ΠΏΠΎ-подходяща.

ЧСсти ΠΊΠ»ΠΎΠΏΠΊΠΈ ΠΈ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ

Клопка 1: Паника Π·Π°Ρ€Π°Π΄ΠΈ ниска β€žΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°β€ ΠΏΠ°ΠΌΠ΅Ρ‚

ΠšΠ°ΠΊΡ‚ΠΎ бСшС обяснСно ΠΏΠΎ-Ρ€Π°Π½ΠΎ, Linux ΡƒΠΌΠΈΡˆΠ»Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° свободната RAM ΠΊΠ°Ρ‚ΠΎ кСш. БистСма с 200 MB свободна, Π½ΠΎ 8 GB Π½Π°Π»ΠΈΡ‡Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π΅ Π·Π΄Ρ€Π°Π²Π°. Π’ΠΈΠ½Π°Π³ΠΈ Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° Available.

Клопка 2: Π‘ΡƒΠΌΠΈΡ€Π°Π½Π΅ Π½Π° RSS Π·Π° ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° ΠΎΠ±Ρ‰ΠΎΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°

Π‘ΡƒΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° RSS стойноститС Π½Π° ps Π·Π° всички процСси ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Ρ‰Π΅ надвиши ΠΎΠ±Ρ‰Π°Ρ‚Π° физичСска RAM ΠΏΠΎΡ€Π°Π΄ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΡ‚ΠΎ Π±Ρ€ΠΎΠ΅Π½Π΅ Π½Π° сподСлСнитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ smem -t Π·Π° Ρ‚ΠΎΡ‡Π½Π° систСмна сума.

Клопка 3: Π˜Π³Π½ΠΎΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° Slab кСша

На Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π΅Π½ΠΈ NFS ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΈΠ»ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ с ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Slab разпрСдСлитСлят Π½Π° ядрото ΠΌΠΎΠΆΠ΅ Π΄Π° консумира Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ΠΈ RAM. ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ cat /proc/meminfo | grep Slab β€” Ρ‚Π°Π·ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚ Π΅ тСхничСски освобоТдаСма, Π½ΠΎ Π½Π΅ сС появява Π² инструмСнтитС Π½Π° Π½ΠΈΠ²ΠΎ процСс.

Клопка 4: ΠžΠ±ΡŠΡ€ΠΊΠ²Π°Π½Π΅ Π½Π° VSZ с дСйствитСлното ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°

Java ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° 4 GB VSZ, Π½ΠΎ само 512 MB RSS. VSZ Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с ΠΏΠ°ΠΌΠ΅Ρ‚, Π·Π°ΠΏΠ°Π·Π΅Π½, Π½ΠΎ Π½Π΅Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ heap ΠΈ сподСлСни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ сС Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚ Π² физичСската RAM.

Клопка 5: ΠŸΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ натоварвания

Π’ΡŠΡ‚Ρ€Π΅ Π² Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, free ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΎΠ±Ρ‰Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π° хоста, Π° Π½Π΅ Π»ΠΈΠΌΠΈΡ‚Π° Π½Π° cgroup Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ cat /sys/fs/cgroup/memory/memory.usage_in_bytes ΠΈ cat /sys/fs/cgroup/memory/memory.limit_in_bytes Π·Π° Ρ‚ΠΎΡ‡Π½ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

НастройванС Π½Π° постоянСн ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° RAM

Π—Π° производствСни срСди, ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ са Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ. Π Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ Π·Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° видимост:

  • sysstat с cron: Активира Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° историчСски Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ sar.
  • Prometheus + Node Exporter: Π‘ΡŠΠ±ΠΈΡ€Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΎΡ‚ /proc/meminfo ΠΈ Π³ΠΈ ΠΈΠ·Π»Π°Π³Π° Π·Π° Ρ‚Π°Π±Π»Π° Π½Π° Grafana.
  • Netdata: ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ с Π½ΡƒΠ»Π΅Π²Π° конфигурация с гранулярност ΠΎΡ‚ сСкунда ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.
  • Zabbix ΠΈΠ»ΠΈ Nagios: ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΡ‚ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π΅Π½ клас с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΈ ΠΏΡ€Π°Π³ΠΎΠ²Π΅ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° Сскалация.

ΠŸΡ€ΠΈ изпълнСниС Π½Π° натоварвания Π½Π° инфраструктура Π·Π° GPU Π₯остинг, Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈ GPU VRAM Π·Π°Π΅Π΄Π½ΠΎ със систСмната RAM β€” nvidia-smi --query-gpu=memory.used,memory.free --format=csv прСдоставя Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π·Π° GPU ΠΏΠ°ΠΌΠ΅Ρ‚.

Π—Π° ΡƒΠ΅Π± хостинг срСди, управлявани Ρ‡Ρ€Π΅Π· VPS ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ, ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΏΠ°Π½Π΅Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ β€” Π½ΠΎ Ρ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ правят запитвания Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ ΠΎΡ‚ 1–5 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ ΠΈ Ρ‰Π΅ пропуснат ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ ΠΏΠΈΠΊΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ vmstat ΠΈΠ»ΠΈ sar Π±ΠΈΡ…Π° ΡƒΠ»ΠΎΠ²ΠΈΠ»ΠΈ.

ВСхничСска ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: Кой инструмСнт Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠΎΠ³Π°

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π°Π½ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠšΠΎΠΌΠ°Π½Π΄Π°
Π‘ΡŠΡ€Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π·Π΄Ρ€Π°Π²Π΅Ρ‚ΠΎ Π½Π° систСматаfreefree -h
НамиранС Π½Π° Π½Π°ΠΉ-Π³ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ консуматори Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ps ΠΈΠ»ΠΈ htop`ps aux –sort=-%memhead -15`
Π’ΠΎΡ‡Π½ΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅ Π·Π° всСки процСсsmemsmem -s pss -r
ДиагностициранС Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ суапванСvmstatvmstat 1 10
РазслСдванС Π½Π° ΠΌΠΈΠ½Π°Π» ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°sarsar -r -f /var/log/sysstat/saDD
Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ процСс/proc/PID/smapscat /proc/PID/smaps
ΠΠ΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ производствСн ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Prometheus + Node Exporterβ€”
Π›ΠΈΠΌΠΈΡ‚ΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°cgroup filesystemcat /sys/fs/cgroup/memory/memory.usage_in_bytes

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ списък с ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈ

  • Π’ΠΈΠ½Π°Π³ΠΈ провСрявайтС Π½Π°Π»ΠΈΡ‡Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΎΡ‚ free -h, Π° Π½Π΅ ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° Free, Π·Π° Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ дСйствитСлното пространство.
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ vmstat 1 5, Π·Π° Π΄Π° ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡ‚ΠΎ суапванС, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° СскалиратС разслСдванСто.
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ smem -s pss -r вмСсто ps aux --sort=-%mem, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²ΠΈ трябват Ρ‚ΠΎΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π·Π° всСки процСс β€” особСно Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ с ΠΌΠ½ΠΎΠ³ΠΎ процСси, сподСлящи Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.
  • Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉΡ‚Π΅ sysstat Π½Π° всСки производствСн ΡΡŠΡ€Π²ΡŠΡ€ Π²Π΅Π΄Π½Π°Π³Π° слСд осигуряванСто, Π·Π° Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ историчСско ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ sar.
  • Π—Π°Π΄Π°ΠΉΡ‚Π΅ vm.swappiness=10 постоянно Π² /etc/sysctl.conf Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° swap.
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ /proc/meminfo Π·Π° стойности Π½Π° Slab ΠΈ Dirty, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стандартнитС инструмСнти Π½Π΅ обясняват Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Π½ΠΎΡ‚ΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.
  • Π—Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ натоварвания, Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅ cgroup Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ β€” Π° Π½Π΅ free β€” Π·Π° Ρ‚ΠΎΡ‡Π½ΠΈ Π»ΠΈΠΌΠΈΡ‚ΠΈ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅.
  • Π’ срСди Π·Π° сподСлСн хостинг ΠΈΠ»ΠΈ VPS, установСтС Π±Π°Π·ΠΎΠ²ΠΈ Π»ΠΈΠ½ΠΈΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, Π·Π° Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈΡ‚Π΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Ρ‚ΠΈ.

ЧСсто Π·Π°Π΄Π°Π²Π°Π½ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ

Каква Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ β€žΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°β€ ΠΈ β€žΠ½Π°Π»ΠΈΡ‡Π½Π°β€ ΠΏΠ°ΠΌΠ΅Ρ‚ Π² Linux?

β€žΠ‘Π²ΠΎΠ±ΠΎΠ΄Π½Π°β€ Π΅ RAM Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. β€žΠΠ°Π»ΠΈΡ‡Π½Π°β€ Π΅ рСалистичната ΠΎΡ†Π΅Π½ΠΊΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, която ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π·Π° Π½ΠΎΠ²ΠΈ процСси Π±Π΅Π· задСйстванС Π½Π° суапванС β€” тя Π²ΠΊΠ»ΡŽΡ‡Π²Π° освобоТдаСм кСш Π½Π° страници ΠΈ Π±ΡƒΡ„Π΅Ρ€ΠΈ. На Π·Π΄Ρ€Π°Π² Linux ΡΡŠΡ€Π²ΡŠΡ€, β€žΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ‚Π°β€ ΠΏΠ°ΠΌΠ΅Ρ‚ Π΅ чСсто Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ Π½ΡƒΠ»Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ β€žΠ½Π°Π»ΠΈΡ‡Π½Π°Ρ‚Π°β€ остава висока. Π’ΠΈΠ½Π°Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ β€žΠ½Π°Π»ΠΈΡ‡Π½Π°β€ Π·Π° ΠΎΡ†Π΅Π½ΠΊΠΈ Π½Π° ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚Π°.

Π—Π°Ρ‰ΠΎ сумата ΠΎΡ‚ всички RSS стойности Π½Π° процСситС надвишава ΠΎΠ±Ρ‰Π°Ρ‚Π° физичСска RAM?

RSS (Π Π°Π·ΠΌΠ΅Ρ€ Π½Π° рСзидСнтния Π½Π°Π±ΠΎΡ€) Π±Ρ€ΠΎΠΈ сподСлСната ΠΏΠ°ΠΌΠ΅Ρ‚ β€” ΠΊΠ°Ρ‚ΠΎ сподСлСни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” вСднъТ Π·Π° всСки процСс, ΠΊΠΎΠΉΡ‚ΠΎ я ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°. Ако 50 процСса всСки ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π° 100 MB сподСлСна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΎΠ±Ρ‰Π°Ρ‚Π° сума Π½Π° RSS сС Π½Π°Π΄ΡƒΠ²Π° с 4 900 MB Π½Π°Π΄ дСйствитСлната физичСска Ρ†Π΅Π½Π°. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ smem с PSS ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅, Π·Π° Π΄Π° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Ρ‚ΠΎΠ²Π° Π΄Π²ΠΎΠΉΠ½ΠΎ Π±Ρ€ΠΎΠ΅Π½Π΅.

Как Π΄Π° намСря ΠΊΠΎΠΉ процСс Π΅ задСйствал Linux OOM ΡƒΠ±ΠΈΠ΅Ρ†Π°?

Π˜Π·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ dmesg | grep -i "oom|killed process" ΠΈΠ»ΠΈ journalctl -k | grep -i oom. Π―Π΄Ρ€ΠΎΡ‚ΠΎ записва Ρ‚ΠΎΡ‡Π½ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ Π½Π° процСса, PID ΠΈ статистики Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π·Π° ΡƒΠ±ΠΈΠ²Π°Π½Π΅, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ oom_score Π½Π° всички ΠΎΡ†Π΅Π½Π΅Π½ΠΈ процСси.

Какво ΠΏΠΎΠΊΠ°Π·Π²Π° високото ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° swap ΠΈ ΠΊΠΎΠ»ΠΊΠΎ сСриозно Π΅ Ρ‚ΠΎ?

Устойчивото ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° swap ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ работният Π½Π°Π±ΠΎΡ€ Π½Π° систСмата надвишава физичСската RAM. Π―Π΄Ρ€ΠΎΡ‚ΠΎ компСнсира Ρ‡Ρ€Π΅Π· страниранС Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° диска, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ 100–1 000 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ ΠΎΡ‚ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ RAM. Π”ΠΎΡ€ΠΈ скромна swap активност причинява ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠΌΠΎ забавянС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ΠΎΠ²Π° Π΅ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π΅Π½ сигнал ΠΈΠ»ΠΈ Π·Π° намаляванС Π½Π° консумацията Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚, ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° RAM, ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° натоварванията.

Мога Π»ΠΈ Π΄Π° наблюдавам ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° RAM Π²ΡŠΡ‚Ρ€Π΅ Π² Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ стандартни Linux ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ?

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΠ°Ρ‚ΠΎ free Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ ΠΎΠ±Ρ‰Π°Ρ‚Π° RAM Π½Π° хоста, Π° Π½Π΅ Π»ΠΈΠΌΠΈΡ‚Π° Π½Π° cgroup Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π—Π° Ρ‚ΠΎΡ‡Π½ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Ρ‡Π΅Ρ‚Π΅Ρ‚Π΅ /sys/fs/cgroup/memory/memory.usage_in_bytes Π·Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΈ /sys/fs/cgroup/memory/memory.limit_in_bytes Π·Π° конфигурирания Π»ΠΈΠΌΠΈΡ‚. АлтСрнативно, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ docker stats <container_name> ΠΎΡ‚ хоста Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½ ΠΈΠ·Π³Π»Π΅Π΄.