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

ОБНОВЛЕНИЕ:

Это вызывалось из-за известной проблемы с nss-softkn. См. эту статью: https://www.splyt.com/blog/2014-05-16-optimizing-aws-nss-softoken


Когда я выполняю свободный-m от своих песней 6,5 полей, я вижу, что у меня только есть приблизительно 1 400 МБ доступного поршня, включая кэш. Когда я действительно возглавляю, вид памятью и складываю процессы, я только вижу приблизительно 1 600 используемые. У меня должно быть НАМНОГО больше свободной памяти. Это происходит на нескольких наших полях.

[root@db1 ~]# free -m
              total      used       free     shared    buffers     cached
Mem:          7840       7793         47          0        287       1357
-/+ buffers/cache:       6148       1692
Swap:         7983          7       7976

главный вывод

enter image description here

Вот лучший способ визуализировать память, использованную процессами:

enter image description here

4
задан 18 December 2014 в 22:11
4 ответа

У вас около 1692m свободной памяти согласно Linux.

В верхней строке «Mem» кажется, что ваша память почти 99% (7793m / 7840 м), но на самом деле вы используете только около 78% доступной памяти. См. Также http://www.linuxatemyram.com/ для более подробного объяснения.


Свободная vs Верхняя vs / proc / meminfo

Память процесса .
Добавление памяти, используемой процессами в top , и попытка сопоставить это с используемой памятью free принесет вам неприятные моменты. Из-за верхнего разбиения на страницы вы можете даже не получить все процессы из этого списка, лучше использовать ps aux --sort -rss для упорядочивания процессов по использованию памяти.

Кэширование диска .
Linux будет использовать память, которую вы не используете, чтобы все работало намного быстрее за кулисами. Это указано в столбце "cached" free , и именно поэтому вы должны смотреть на значения рядом с "- / + buffers / cache" для определения фактического использования и свободной памяти.

Kernel Slab cache .
Модули ядра и драйверы также могут использовать вашу неиспользуемую память . «SReclaimable» - это память, которую можно использовать при нехватке памяти. Есть отличный инструмент под названием slabtop , который может определить, как ядро ​​представляет собой этот кеш.

Очистка кешей .

echo 1> / proc / sys / vm / drop_caches Чтобы освободить pagecache

echo 2> / proc / sys / vm / drop_caches Чтобы освободить dentries и inodes

echo 3> / proc / sys / vm / drop_caches Чтобы освободить pagecache, dentries и inodes

См. Также

10
ответ дан 3 December 2019 в 02:32

Я полагаю, вы неправильно читаете буфер / кэш - в соответствии со строкой +/- Buffers / Cache в качестве кэша памяти используется> 6 гигабайт. Если это необходимо, его можно съесть - а это не так,ОС использует его для кэширования операций чтения с диска и т.п.

0
ответ дан 3 December 2019 в 02:32

Я обнаружил здесь проблему. Мне нужно было посмотреть / proc / meminfo и увидеть, что ядро ​​кэшировало как пространство для плиты. Моя проблема заключалась в том, что я не понимал, сколько «свободной» памяти у меня было в top / ps / free. Дело в том, что эти числа не складывались. Команда "free" сообщила бы мне, что у меня было около 1692 МБ свободного места, но мои процессы составляли только около 20% моей общей памяти.

В этой статье описаны мои точные проблемы:

http://blog.logicmonitor.com / 2014/10/09 / more-linux-memory-free-memory-that-is-not-free-nor-cache /

1
ответ дан 3 December 2019 в 02:32

На основе http://blog.logicmonitor.com/2014/10/09/more-linux-memory-free-memory-that-is-not-free-nor -cache , я создал сценарий, который назвал свободным (который я поместил в путь перед / usr / bin в моем .bash_profile), который дает полезные результаты:

#!/usr/bin/perl

$result = `/usr/bin/free`;
print "$result";

if ($result =~ /cache:\s+(\d+)/)
{
 $mem = $1;
 $slab = `cat /proc/meminfo|grep SReclaimable`; $slab =~ s/[^\d]//g;
 print "Slab                  $slab\n";
 print "Actual Used        ** ",$mem-$slab," **\n";
}
0
ответ дан 3 December 2019 в 02:32

Теги

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