Что такое «ядерная динамическая память», как сообщает smem?

При диагностике проблем с низкой памятью на моем настольном компьютере (подробности в U & L ) я заметил, что моя неячевая «динамическая память ядра» велика :

# smem -twk Area Used Cache Noncache firmware/hardware 0 0 0 kernel image 0 0 0 kernel dynamic memory 1.1G 369.3M 801.7M userspace memory 2.0G 133.3M 1.9G free memory 734.1M 734.1M 0 ---------------------------------------------------------- 3.9G 1.2G 2.7G 

На двух других системах я проверил, что это 150MiB (также рабочий стол, но с 8GiB или RAM) и 29MiB. Нигде около 20% моей настольной машины.

Как я могу узнать, что делает его таким большим?

BTW: Я уже проверял источники smem , это в основном делает (memtotal – userpace – free – cache).

/proc/meminfo :

 # cat / proc / meminfo 
 MemTotal: 4051956 kB
 MemFree: 508276 kB
 Буферы: 35232 кБ
 Кэшировано: 651052 kB
 SwapCached: 121380 kB
 Активен: 1358008 kB
 Неактивно: 1351596 kB
 Активный (анонимный): 1184616 kB
 Неактивный (анонимный): 886904 kB
 Активный (файл): 173392 kB
 Неактивно (файл): 464692 kB
 Невозможно: 8616 kB
 Mlocked: 8616 kB
 SwapTotal: 4051952 kB
 SwapFree: 3815780 kB
 Грязный: 348 kB
 Обратная запись: 0 kB
 AnonPages: 1971164 kB
 Отображено: 140108 kB
 Shmem: 44656 kB
 Плита: 176564 kB
 Отремонтировано: 62080 kB
 SUnreclaim: 114484 kB
 KernelStack: 3352 kB
 PageTables: 43012 kB
 NFS_Unstable: 0 kB
 Отскок: 0 kB
 WritebackTmp: 0 kB
 CommitLimit: 6077928 kB
 Committed_AS: 3681164 kB
 VmallocTotal: 34359738367 kB
 VmallocUsed: 139780 kB
 VmallocChunk: 34359570976 kB
 Аппаратное обеспечение: 0 кБ
 AnonHugePages: 448512 kB
 HugePages_Total: 0
 HugePages_Free: 0
 HugePages_Rsvd: 0
 HugePages_Surp: 0
 Hugepagesize: 2048 kB
 DirectMap4k: 2536128 kB
 DirectMap2M: 1656832 kB

  • chroot: не удалось запустить команду '/ bin / bash': разрешение отклонено
  • Отправка музыки непосредственно с MIC на LS
  • Как записать debian iso в usb
  • Почему процесс двоичного файла с разрешением только на выполнение остается скрытым в «ps» при использовании hidepid = 2, если пользователь не является root?
  • Какие библиотеки существуют для чтения / редактирования ID3 mp3?
  • Текущее состояние графического драйвера AMD для Linux?
  • Разрешения не переводятся между окнами и linux
  • Как работает команда su?
  • 2 Solutions collect form web for “Что такое «ядерная динамическая память», как сообщает smem?”

    Увидев еще один ваш пост, я думаю, вы используете zram. Это будет мое предположение.

    Я сделал опыт установки zram и потребляю много памяти, и я получил тот же результат от smem вы. smem не учитывает zram в его подсчете , он использует /proc/meminfo для вычисления его значения, и, если вы посмотрите и попытаетесь понять код, вы увидите, что занятие zram RAM получает в конце, подсчитанное под некачей столбец динамической строки ядра .

    Дальнейшие исследования

    После того, как я почувствовал, что zram за этим подействует, я установил виртуальную машину с аналогичной спецификацией, такой как ваша машина: 4 ГБ оперативной памяти и 2 ГБ zram swap, без файла подкачки.

    Я загрузил VM с помощью приложений с большим весом и получил следующее состояние:

     huygens@ubuntu:~$ smem -wt -K ~/vmlinuz-3.2.0-38-generic.unpacked -R 4096M Area Used Cache Noncache firmware/hardware 130717 0 130717 kernel image 13951 0 13951 kernel dynamic memory 1063520 922172 141348 userspace memory 2534684 257136 2277548 free memory 451432 451432 0 ---------------------------------------------------------- 4194304 1630740 2563564 huygens@ubuntu:~$ free -m total used free shared buffers cached Mem: 3954 3528 426 0 79 858 -/+ buffers/cache: 2589 1365 Swap: 1977 0 1977 

    Поскольку вы можете видеть free отчеты с объемом памяти 858 МБ, а также то, что smem кажется, сообщает в динамической памяти кэшированного ядра.

    Затем я также подчеркнул систему, использующую Chromium Browser. В начале было использовано только 83 МБ обмена. Но после того, как появилось еще несколько вкладок, swap-переключатель быстро до максимума, и я испытал OOM! zram действительно опасная сторона, где неправильно настроенная (слишком большие размеры), она может быстро поразить вас, как механизм, подобный требуше.

    В то время у меня были следующие результаты:

     huygens@ubuntu:~$ smem -wt -K ~/vmlinuz-3.2.0-38-generic.unpacked -R 4096M Area Used Cache Noncache firmware/hardware 130717 0 130717 kernel image 13951 0 13951 kernel dynamic memory 1355344 124072 1231272 userspace memory 961004 36456 924548 free memory 1733288 1733288 0 ---------------------------------------------------------- 4194304 1893816 2300488 huygens@ubuntu:~$ free -m total used free shared buffers cached Mem: 3954 2256 1698 0 4 132 -/+ buffers/cache: 2118 1835 Swap: 1977 1750 227 

    Посмотрите, как динамическая память ядра (кеш столбцов и не кеш) выглядит инвертированной? Это связано с тем, что в первом случае ядро ​​имело «кэшированную» память, например, сообщенную free но затем у нее была своп-память, zram который smem не знает, как вычислить (проверьте исходный код smem, занятие zram не сообщается в / proc / meminfo, это не вычисляется с помощью smem который делает простой «общий ядро ​​mem» – «тип памяти, сообщенный meminfo, который я знаю, является кешем», чего он не знает, так это то, что в вычисленном общем ядре mem он добавил размер свопа, который находится в ОЗУ!)

    Когда я был в этом состоянии, я активировал свопинг с жестким диском и выключил zram swap, и я перезагрузил устройства zram: echo 1 > /sys/block/zram0/reset .

    После этого память ядра noncache расплавилась, как снег летом, и вернулась к «нормальному» значению.

    Вывод

    smem не знает о zram (пока), возможно, потому, что он все еще размещен и, следовательно, не является частью /proc/meminfo которая сообщает глобальные параметры (например, размер активных страниц, общая память), а затем только отчитывается по нескольким конкретным параметрам. smem идентифицировал некоторые из этих конкретных параметров как «кеш», суммировал их и сравнивал с общей памятью. Из-за этого zram используемая память подсчитывается в столбце noncache .

    Примечание: кстати, в современном ядре meminfo сообщает также потребляемую общую память. smem не учитывает это еще во внимание, поэтому даже без zram вывод smem должен тщательно рассмотреть esp. если вы используете приложение, которое широко использует общую память.

    Используемые ссылки:

    • исходный код smem
    • официальная документация zram
    • / proc / meminfo (хотя потребуется обновление)
    • исходный код вывода meminfo

    Не выглядит плохо для меня, много легко восстанавливаемой памяти. Точно, что не работает (не просто «О, ужас, посмотрите на цифры <случайная программа> дает!»)? Сбой программ (OOM, из памяти, обработчик в ногах?). Программы не запускаются? Система кажется вялой? Непрерывная активность диска?). Любые подсказки в журналах?

    (Linux будет заполнять всю доступную память, дешевле просто держать вещи вокруг, чем активно стирать ее, и ее можно использовать позже). Машина покоя (или сразу после загрузки) даст очень разные цифры, чем активно используемая .)

    Interesting Posts

    каждый параметр командной строки CLI имеет смысловую аббревиатуру

    Загрузите мое ядро ​​в виртуальную машину?

    Извлечение справочного сообщения из самого скрипта

    назначение символических ссылок при установке через fstab

    Как tar-bzip старые файлы в ежегодных группах

    Есть ли способ предотвратить git от изменения прав доступа и прав собственности на pull?

    Как отображать изображение на удаленной машине linux через ssh

    Сценарий Bash при запуске? (Linux)

    Действительно ли мне нужен антивирус на Debian 7?

    Разделение большого PDF-файла на мелкие файлы

    Как установить Nautilus в качестве файлового менеджера по умолчанию в элементарной ОС

    Ноутбук нельзя использовать после удаления / bin

    RAID1, который можно увеличить при добавлении нового диска: конвертировать в lvm –type raid1?

    надежный код возврата фонового процесса

    Как определить, сколько времени открыто для активного окна?

    Linux и Unix - лучшая ОС в мире.