Определение источника использования кеша памяти

Я пытаюсь устранить неисправность машины с замедлением из-за интенсивного использования swap после запуска в течение нескольких дней. Система имеет 16 ГБ оперативной памяти и обычно должна быть в порядке, за исключением того, что большой объем бара используется кешем и не освобождается от необходимости.

Прежде чем вы упомянули об этом, я хорошо знаю Linux Ate My Ram.

] Типичный показ свободного после 3 - 4 дней работы:

total used free shared buff/cache available Mem: 15G 4.4G 184M 280M 10G 116M Swap: 15G 7.8G 8.1G

Чтобы устранить неисправность, я сбросил обход на ноль.

$ cat /proc/sys/vm/swappiness 0

Кроме того, m [

$ sudo su -c "free -h && sync && echo 3 > /proc/sys/vm/drop_caches && free -h" total used free shared buff/cache available Mem: 15G 4.4G 166M 280M 10G 104M Swap: 15G 7.8G 8.1G total used free shared buff/cache available Mem: 15G 4.4G 186M 280M 10G 115M Swap: 15G 7.8G 8.1G

Мне интересно, может ли это иметь отношение к бортовому видео с Skylake. Независимо от того, я не уверен, как продолжить рассмотрение проблемы, большинство интернет-ресурсов говорят, что использование кеша является нормальным и освобождается по мере необходимости - когда это явно не так. Где я должен смотреть дальше?

1
задан 31 May 2017 в 09:00

3 ответа

Чтобы узнать о «кеше памяти», используйте slabtop, используя -s, вы можете отсортировать вывод, а c - размер кеша, поэтому используйте:

sudo slabtop -s c

Для меня большая часть кеша связана с inode_cache

И о «swap». Вы можете использовать файл status в каждом каталоге процессов в /proc, чтобы узнать, какой из них из них используется своп.

Для конкретной программы:

cd /proc/$(pgrep -x programname)
grep -i swap status

Чтобы получить список всех размеров кеша процесса:

cd /proc
find -maxdepth 2 -iname status -exec grep -i -e name -e swap {} \; -exec echo "---" \;

вывод будет аналогичен:

---
Name:   atd
VmSwap:        0 kB
---
Name:   rsyslogd
VmSwap:        0 kB
---
Name:   cron
VmSwap:        0 kB
2
ответ дан 22 May 2018 в 22:03
  • 1
    slabtop, похоже, идентифицировал виновника. У меня есть ~ 12 ГБ, связанная с утечкой памяти в пространстве ядра. Другим полезным инструментом здесь, чтобы выделить проблему, был smem -tw. – DivinusVox 31 May 2017 в 10:05
  • 2
    Я собирался отредактировать и упомянуть smem тоже, хорошо, что вы уже знаете об этом :-) – Ravexina 31 May 2017 в 10:08

Чтобы узнать о «кеше памяти», используйте slabtop, используя -s, вы можете отсортировать вывод, а c - размер кеша, поэтому используйте:

sudo slabtop -s c

Для меня большая часть кеша связана с inode_cache

И о «swap». Вы можете использовать файл status в каждом каталоге процессов в /proc, чтобы узнать, какой из них из них используется своп.

Для конкретной программы:

cd /proc/$(pgrep -x programname) grep -i swap status

Чтобы получить список всех размеров кеша процесса:

cd /proc find -maxdepth 2 -iname status -exec grep -i -e name -e swap {} \; -exec echo "---" \;

вывод будет аналогичен:

--- Name: atd VmSwap: 0 kB --- Name: rsyslogd VmSwap: 0 kB --- Name: cron VmSwap: 0 kB
2
ответ дан 18 July 2018 в 12:26

Чтобы узнать о «кеше памяти», используйте slabtop, используя -s, вы можете отсортировать вывод, а c - размер кеша, поэтому используйте:

sudo slabtop -s c

Для меня большая часть кеша связана с inode_cache

И о «swap». Вы можете использовать файл status в каждом каталоге процессов в /proc, чтобы узнать, какой из них из них используется своп.

Для конкретной программы:

cd /proc/$(pgrep -x programname) grep -i swap status

Чтобы получить список всех размеров кеша процесса:

cd /proc find -maxdepth 2 -iname status -exec grep -i -e name -e swap {} \; -exec echo "---" \;

вывод будет аналогичен:

--- Name: atd VmSwap: 0 kB --- Name: rsyslogd VmSwap: 0 kB --- Name: cron VmSwap: 0 kB
2
ответ дан 24 July 2018 в 19:58

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

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