[РЕШЕНО] Как htop и conky определяют количество занятой оперативной памяти

Автор IlyaLinux, 01 июля 2020, 09:26:29

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

IlyaLinux

Здравствуйте, друзья!

С детским восторгом открываю для себя окружение рабочего стола Xfce. После 4 лет работы с Ubuntu 16.04 ты привыкаешь, думаешь, что живешь неплохо на Unity, пока не попробуешь другое DE. )

К сути. В Xfce есть плагин "Общий монитор", который позволяет с определенной периодичностью запускать скрипт и выводить результат его работы на панель. Все эти годы я контролировал потребление оперативной памяти с помощью htop. Запускал ее в терминале и в процессе отладки приложений поглядывал на это окошко. Не могу сказать, что это было удобно, т.к. терминал часто перекрывали другие приложения и приходилось его "поднимать" вручную. Теперь же стало возможно написать скрипт, который опросит /proc/meminfo и освободит от необходимости "ручного" наблюдения за параметром.

На бумаге выглядит просто замечательно, но получить результат совпадающий с htop пока не удается. Пробовал

MemTotal - MemFree - Buffers - Cached

, но это очень приблизительно и не учитывает tmpfs.

htop и conky показывают максимально достоверно, на мой взгляд, но повторить за ними не просто. А вообще возможно?

IlyaLinux

Может я смотрю не туда. Кто чем контролирует занятую оперативную память?

ChubaDuba

У меня вот такой скрипт:

#! /bin/bash
MEM=$(free -m | awk 'NR==2{print $3}')
echo "<fc=#707d8a>$MEM</fc><fc=#707d8a>mb</fc>"
exit 0

Выглядит это в xmobar'e вот так:

IlyaLinux

ChubaDuba, free, безусловно привлекает своей простотой, но работает, к сожалению, грубо. Смотрите какая разница на моей машине:
Ваш скрипт: 2066,
free (used + shared): 4380 (4,28G)
htop: 4.29G

Это как в том анекдоте. Когда у вас одни часы, вы точно знаете который час, а когда несколько, то вы уже ни в чем не уверены. )
Хотя, вариант free (used + shared) неплох.

PS. Вы совсем не используете tmpfs, для браузера там, для /tmp?
Рекомендую. Firefox с полсотней открытых вкладок потребляет всего 101 MB, работает быстрее и не пердолит SSD почем зря.

cat /etc/fstab
...
# /home/ilya/.cache/mozilla/firefox/ was on tmpfs
tmpfs              /home/ilya/.cache/mozilla/firefox/     tmpfs   size=1G 
...

Линукс в плане работы с размещением файлов в оперативной памяти - прекрасен! При монтировании такого раздела он использует не весь 1GB, а столько, сколько весят файлы в папке, т.е. перерасхода не будет.

ChubaDuba

Цитата: IlyaLinux от 03 июля 2020, 11:18:37ChubaDuba, free, безусловно привлекает своей простотой, но работает, к сожалению, грубо.
Я привёл пример своего использования...

Такая разница погоды мне не делает.
Смотрю на эту цифру если только нужно запустить вторую виртуалку, что бывает крайне редко.
А вам ничего не мешает несколько модифицировать скрипт, сложив два числа used и shared и вывести результат.

IlyaLinux

Зря я ругался на free, нормально показывает. Просто дополнительно нужно учесть shared. Мониторил рядом htop и watch free - показывают одно и тоже. Спасибо, берем!

Если кто хочет присоединиться вот скрипт:

free -b | awk 'FNR==2{printf "%.2f GB\n", ($3+$5)/1073741824}' # выводит в GB
free -b | awk 'FNR==2{printf "%\047d\n", ($3+$5)/1048576}' # выводит в MB с разделителем тысяч