Как определить количество активных / свободных номеров VSZ и резидентной памяти?

У меня есть две виртуальные машины, одна с 2vCPU, 4GB RAM и другая с 4vCPU и 8GB RAM

Теперь я установил / запускал одно и то же приложение (модули k8s) с одинаковой памятью, распределением ЦП, запросами, ограничениями на обеих виртуальных машинах.

Наблюдения

  • При выгрузке всего верхнего вывода на обе виртуальные машины и суммировании резидентной памяти всего процесса я вижу похожие числа на обеих виртуальных машинах, то есть потребляется около 2 ГБ.
  • Суммирование всех чисел в столбце VIRT дает 55456748 более или менее на обоих vm's

вопрос

  • Однако в верхней части команды сводки команд / информации о памяти процесса отображаются разные числа на двух виртуальных машинах, Любые указатели на то, почему и где, как узнать дополнительную память / основную причину потребления памяти 4cPU и 8 ГБ?
2VCPU 4GB

$ cat /proc/meminfo
MemTotal:        3880500 kB
MemFree:          144924 kB
MemAvailable:     590280 kB
SwapTotal:       1327100 kB
SwapFree:        1261564 kB
4VCPU 8GB

$ cat /proc/meminfo
MemTotal:        8008964 kB
MemFree:          197860 kB
MemAvailable:    1470412 kB
SwapTotal:       1327100 kB
SwapFree:        1321408 kB
0
задан 30 June 2021 в 19:19

2 ответа

OK , Это произошло из-за конфигурации hugepages, которую я задал при установке приложения, ОС создает страницы, видимо, на основе значений, указанных при их включении.

2VCPU 

around 600 pages with each 2048k i.e 1.23 GB locked 

4 vcpu

around 2048 pages with each 2048k i.e 4.2 GB locked in main memory
1
ответ дан 28 July 2021 в 11:23

Не используйте MemFree, вместо этого используйте метрику MemAvailable для определения количества "свободной" памяти, которую система может использовать для приложений без перехода в своп.

Подробное объяснение этому дано, например, здесь:

https://superuser.com/questions/980820/what-is-the-difference-between-memfree-and-memavailable-in-proc-meminfo

Я написал следующую функцию Bash для общей проверки использования памяти. Вы можете вставить этот код в конец вашего файла .bash_aliases.

function mf
{
 mt=($(grep '^MemTotal:' /proc/meminfo))
 ma=($(grep '^MemAvailable:' /proc/meminfo))
 let mtmb=${mt[1]}/1024
 let mamb=${ma[1]}/1024
 let mumb="(${mt[1]}-${ma[1]})/1024"
 let muse="(${mt[1]}-${ma[1]})*100/${mt[1]}"

 st=($(grep '^SwapTotal:' /proc/meminfo))
 sf=($(grep '^SwapFree:' /proc/meminfo))
 let stmb=${st[1]}/1024
 let sfmb=${sf[1]}/1024
 let sumb="(${st[1]}-${sf[1]})/1024"
 if (( st[1] != 0 )) ; then
   let suse="(${st[1]}-${sf[1]})*100/${st[1]}"
 else
   suse=0
 fi
 printf "%17s%10s%10s%6s
Memory %9sM%9sM%9sM%5s%%
Swap   %9sM%9sM%9sM%5s%%
" 'Total' 'Used' 'Av/Free' 'Use%' \
   $mtmb $mumb $mamb $muse \
   $stmb $sumb $sfmb $suse
}
1
ответ дан 28 July 2021 в 11:23

Другие вопросы по тегам:

Похожие вопросы: