1

Чем больше я читаю, тем больше запутываюсь Я хочу сформировать список процессов и их потребление памяти (физическое + виртуальное).

Пока что это то, что я сделал:

  • Я беру VSZ каждого процесса и умножаю его на 1024 (в байтах)
  • Я беру RSS и делаю то же самое
  • Тогда я вычитаю VSZ с RSS, поскольку VSZ уже содержит RSS

Вместо того, чтобы показывать все потоки, я суммирую процессы с одним и тем же пользователем + комм.

Это дает мне список, похожий на этот:

MEM        VMEM       PMEM        User       Command
16.27 GB   15.47 GB   811.73 MB   apache     httpd          
2.37 GB    2.19 GB    186.12 MB   mysql      mysqld         
372.99 MB  320.18 MB  52.81 MB    memcached  memcached      
985.78 MB  954.60 MB  31.18 MB    root       httpd  

MEM столбец в основном VMEM (VSZ - RSS) + PMEM (RSS).

Но я был немного озадачен этим .. Apache порождает ~ 10 потоков, и этот список говорит, что он потребляет 16 ГБ памяти. Жесткий диск составляет всего ~ 14 ГБ, а у нас 8 ГБ оперативной памяти.

И тогда я подумал: «Несмотря на то, что VSZ различен для каждого потока, возможно, он отбирает абсолютное значение для каждого потока». Поэтому, если я взял столбец VSZ и вычел RSS каждого потока, я получил это:

MEM        VMEM       PMEM        User       Command
1.38 GB    680.54 MB  737.68 MB   apache     httpd          
2.55 GB    2.37 GB    186.09 MB   mysql      mysqld         
425.80 MB  372.99 MB  52.81 MB    memcached  memcached      
1016.96 MB 985.78 MB  31.18 MB    root       httpd  

И я думаю: «Ну, это должно быть правдой!».

Вопрос в том, прав ли я? Я просто не могу поверить, что apache потребляет 16 ГБ памяти.

Я делаю что-то ужасное не так здесь?

Обновлено: я получаю те же значения при использовании top . Это также машина CentOS.

0