Автор Тема: Почему брешет виджет памяти?  (Прочитано 2182 раз)

Оффлайн МИНЗДРАВ

  • Странник_
  • *
  • Сообщений: 3 045
  • ALWK8 х64 Branch sysd & server-light_1.9.3sysV noX
    • http://yx-kak.ru/linux.htm
Почему брешет виджет памяти? (сабж собственно)
см. аттач

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Почему брешет виджет памяти?
« Ответ #1 : 21.02.2018 16:48:16 »
Почему брешет виджет памяти? (сабж собственно)
см. аттач

Они отображают в разных единицах.

Лет 20 назад, если бы у программиста спросили бы, сколько в килограмме грамм, он бы ответил:
- 1024!
Килограмм в двоичной системе счисления, это 2 в 10-й степени.
« Последнее редактирование: 21.02.2018 16:52:14 от Speccyfighter »

Оффлайн МИНЗДРАВ

  • Странник_
  • *
  • Сообщений: 3 045
  • ALWK8 х64 Branch sysd & server-light_1.9.3sysV noX
    • http://yx-kak.ru/linux.htm
Re: Почему брешет виджет памяти?
« Ответ #2 : 21.02.2018 16:57:46 »
Они отображают в разных единицах.
Тогда общая сумма памяти, тоже должна разниться. А она одинакова. Только занятая память брешет

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 246
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: Почему брешет виджет памяти?
« Ответ #3 : 21.02.2018 17:04:03 »
Есть два метода расчёта занятой памяти, в зависимости от того, что считать занятой памятью.

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Почему брешет виджет памяти?
« Ответ #4 : 21.02.2018 17:21:28 »
Абсолютно точный метод:
$ free -b
             total       used       free     shared    buffers     cached
Mem:    2108805120 1747324928  361480192          0   71708672  772124672
-/+ buffers/cache:  903491584 1205313536
Swap:   2424303616          0 2424303616
$ echo '903491584+71708672+772124672' | bc -l
1747324928

В мегабайтах
$ echo '1747324928/1000000' | bc -l
1747.32492800000000000000

В мебибайтах
$ echo '1747324928/1024^2' | bc -l
1666.37890625000000000000

$ cat /proc/meminfo | head -n 2 && free -k
MemTotal:        2059380 kB
MemFree:          362520 kB
             total       used       free     shared    buffers     cached
Mem:       2059380    1696860     362520          0      70960     735632
-/+ buffers/cache:     890268    1169112
Swap:      2367484          0    2367484

MemFree: + Buffers: + Cached:
$ echo '362520+70960+735632' | bc -l
1169112

MemTotal: - Результат = used
$ echo '2059380-1169112' | bc -l
890268
« Последнее редактирование: 21.02.2018 18:00:42 от Speccyfighter »

Оффлайн МИНЗДРАВ

  • Странник_
  • *
  • Сообщений: 3 045
  • ALWK8 х64 Branch sysd & server-light_1.9.3sysV noX
    • http://yx-kak.ru/linux.htm
Re: Почему брешет виджет памяти?
« Ответ #5 : 21.02.2018 19:50:49 »

Впечатляет. И вроде правильно

Но виджет всё равно врёт.
в мегабайтах
[root@comp-athlon-ii-db46bd ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          7467       6336       1130          0        139       3198
-/+ buffers/cache:       2999       4467
Swap:        15999          0      15999
[root@comp-athlon-ii-db46bd ~]#
[root@comp-athlon-ii-db46bd ~]# free -M
free: неверный ключ — «M»

Usage:
 free [options]

Options:
 -b, --bytes         show output in bytes
 -k, --kilo          show output in kilobytes
 -m, --mega
...
А он пишет, что в мибибайтах (см. аттач)

А индикатор, вообще зашкаливает, а занятая память у него совсем ничего. И как свободную, её тоже не посчитаешь

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Почему брешет виджет памяти?
« Ответ #6 : 21.02.2018 20:20:04 »

Впечатляет. И вроде правильно

Но виджет всё равно врёт.
...
А он пишет, что в мибибайтах (см. аттач)

А индикатор, вообще зашкаливает, а занятая память у него совсем ничего. И как свободную, её тоже не посчитаешь

По виджету это надо спрашивать у кде-ников: откуда они взяли этот объём.

Моя логика проста как три копейки:
Ядро сообщает о свободной памяти, занятой под буферы и кеш. Последние два можно почти полностью сбросить освободив больше памяти.
Если сплюсовать свободную, буферы и кеш, в остатке, после вычитания из общей, получится то, что отбражает free за вычетом буферов и кеша, т.е. то что считается занятой памятью, освободить которую можно только выгрузив из памяти какую-то программу.
Оперируем только теми числами, которые сообщило ядро, а финальный результат сравниваем с тем, о котором сообщил free, - и что характерно, результат совпадает :
$ grep '^Mem[T,F]\|^Buff\|^Cach' /proc/meminfo ; free -k
MemTotal:        8209436 kB
MemFree:         7044512 kB
Buffers:           54716 kB
Cached:           375140 kB
             total       used       free     shared    buffers     cached
Mem:       8209436    1164924    7044512          0      54716     375140
-/+ buffers/cache:     735068    7474368
Swap:            0          0          0


$ bc -l

8209436-(7044512+54716+375140)
735068

quit

Оффлайн МИНЗДРАВ

  • Странник_
  • *
  • Сообщений: 3 045
  • ALWK8 х64 Branch sysd & server-light_1.9.3sysV noX
    • http://yx-kak.ru/linux.htm
Re: Почему брешет виджет памяти?
« Ответ #7 : 21.02.2018 20:55:51 »
Последние два можно почти полностью сбросить освободив больше памяти.
А как сбросить?

освободить которую можно только выгрузив из памяти какую-то программу.
А как выгрузить? ctrl+alt+esc подходит для этого? А если программа в фоне, то kill -9 ? Правильно?
В андрюше есть одна кнопка, которая сама память очищает. В альте такую реально настроить?


Кдешники явно намудрили. И выбора подобных виджетов нет. В старом кде было хоть чуть-чуть

Оффлайн Speccyfighter

  • Мастер
  • ***
  • Сообщений: 10 259
Re: Почему брешет виджет памяти?
« Ответ #8 : 21.02.2018 21:53:46 »
Последние два можно почти полностью сбросить освободив больше памяти.
А как сбросить?
# sync && echo 3 > /proc/sys/vm/drop_caches

Но стоит ли очищать кеш, вопрос философский: он значительно ускоряет повторный запуск программы. И не в два раза.
Но иногда это может и стать поперёк горла, вызывая многократно повторяющуюся ошибку до тех пор, пока не будет сброшен кеш. Поэтому однозначно ответить нельзя, что хорошо, что плохо. В идеальной ситуации, кеш вещь полезная, но это в идеальной.

освободить которую можно только выгрузив из памяти какую-то программу.
А как выгрузить? ctrl+alt+esc подходит для этого? А если программа в фоне, то kill -9 ? Правильно?

Лучше начинать с сигнала sigterm - 15. Кстати в htop по-умолчанию прелагается именно он. sigkill, это уже крайний случай.

В андрюше есть одна кнопка, которая сама память очищает. В альте такую реально настроить?

Разве что через sudo.
Поскольку сброс кеша и буферов, это прерогатива root.