Я прочитал ряд 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) Потребность в памяти низкая. Так что потребности в свободной памяти очень мало.
Таким образом, современные операционные системы освобождают память только в том случае, если нет абсолютно ничего полезного, что они могли бы удерживать в этой памяти, или если есть потребность в свободной памяти. В противном случае свободная память будет потрачена впустую. Это не значит, что если вы используете меньше сегодня, вы можете использовать больше завтра.