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

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

Перед упоминанием этого я хорошо знаю о Linux, Съел Мой Поршень.

Типичный дисплей свободных после 3 - 4 дней выполнения:

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

Для поиска и устранения неисправностей я опустился до нуля swapiness.

$ cat /proc/sys/vm/swappiness 
0

Кроме того, я не могу вручную назвать очистку кэша с любым значимым эффектом.

$ 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. Независимо, я не уверен в том, как продолжить представлять проблему с большинством интернет-ресурсов, говоря, что использование кэша нормально и освободит по мере необходимости - когда ясно это не. Где я должен посмотреть затем?

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

1 ответ

Для обнаружения об использовании "кэша памяти" slabtop с помощью -s, можно отсортировать вывод, и c для размера кэша, так использование:

sudo slabtop -s c

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

<час>

И о "подкачке", можно использовать 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
3
ответ дан 1 December 2019 в 16:19

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

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