Назад | Перейти на главную страницу

Что использует всю мою оперативную память? Понимание вывода top

Я прочитал ряд top вопросы использования памяти, но я не думаю, что они ответят на это.

Вот самая важная часть top бегать:

top - 01:11:41 up 4 days,  1:06,  3 users,  load average: 0.00, 0.03, 0.26
Tasks:  86 total,   1 running,  84 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.4%us,  0.4%sy,  0.0%ni, 99.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1022816k total,   986704k used,    36112k free,    11200k buffers
Swap:  1048572k total,   419088k used,   629484k free,   408172k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                         
 2022 django    20   0  463m  87m  688 S  0.4  8.7   0:44.06 redis-server                                    
 6047 django    20   0  106m  25m 3900 S  0.4  2.6   0:16.57 python                                          
 6046 django    20   0 40892  13m 2852 S  0.0  1.4   0:00.14 python                                          
 6887 postgres  20   0 98752 5240 4100 S  0.0  0.5   0:00.60 postgres                                        
 6512 root      20   0 70820 2528 1776 S  0.0  0.2   0:00.03 sshd                                            
 3614 root      20   0 70820 2452 1696 S  0.0  0.2   0:00.03 sshd                                            
 6892 postgres  20   0 99028 2044  720 S  0.0  0.2   0:00.53 postgres                                        
12983 django    20   0 18332 1968 1156 S  0.0  0.2   0:00.06 bash                                            
 3627 joe       20   0 71148 1660  632 S  0.0  0.2   0:00.84 sshd                                            
 6890 postgres  20   0 98752 1640  500 S  0.0  0.2   0:02.59 postgres                                        
 3628 joe       20   0 18056 1588 1056 S  0.0  0.2   0:00.10 bash                                            
 6537 postgres  20   0 18000 1580 1100 S  0.0  0.2   0:00.04 bash                                            
 6893 postgres  20   0 70296 1564  296 S  0.0  0.2   0:00.38 postgres                                        
  708 mysql     20   0  166m 1560  408 S  0.0  0.2   3:08.15 mysqld                                          
 9221 root      20   0 31724 1456 1148 S  0.0  0.1   0:00.01 sudo

Это говорит о том, что используется 986704k из 1022816k (я делаю это около 96%). Однако доля трех ведущих процессов составляет 12,7%. Что-то использует почти всю мою оперативную память, и я не могу сказать, что это такое. free показывает мне похожие числа.

Есть ли предложения о том, как попытаться выяснить, для чего все это используется?

(Я заметил, что есть 1 процесс зомби. Может ли быть так?)

Короткий ответ: остальная часть вашей памяти используется для кэширования ваших приложений.

Можно найти длинный ответ Вот.

Это просто все, что там есть, скорее всего, данные, прочитанные или записанные на диск. Освободить эту память - проигрыш на многих уровнях:

1) Если данные потребуются снова, и система освобождает память, ей придется прочитать их с диска.

2) Освобождение памяти требует усилий, а затем, если память понадобится для чего-то еще, системе просто придется снова использовать ее, удваивая потери. Более эффективно переносить память напрямую от одного использования к другому, а не за один шаг.

3) Потребность в памяти низкая. Так что потребности в свободной памяти очень мало.

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