LINUX.ORG.RU

Про изменение поведения free между procps 3 и procps 4

 , , ,


2

2

Не помню писал кто про сабж или нет, но я сам сегодня споткнулся об это наподобие автора темы Вирус на Линукс?! .

Если вывод free в procps 3 показывал значение в поле «used» по которому можно было оценить суммарную жручесть софта, то теперь в procps 4 туда включены все буферы. При этом данные берутся от ядра и то, как оно это вычисляет, на его совести.

Вот для сравнения выхлопы двух разных free:

$ ./free -m
               total        used        free      shared  buff/cache   available
Mem:           64231         652       63314          10         263       62992
Swap:           4095           0        4095
$ free -m
               total        used        free      shared  buff/cache   available
Mem:           64231        1238       63313          10         264       62992
Swap:           4095           0        4095
$

★★★★★
Ответ на: комментарий от aol

В той теме больше про то, что ядро теперь по-новому память считает. Но тут дело не только в ядре. Я выше привёл сравнение выводов двух разных версий free на одном ядре, версия которого 6.6.64.

Старая версия free показывает меньше «used» памяти в тех же самых обстоятельствах, где новая версия показывает больше.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от aol

Я просто не мог понять что жрёт у меня память.

Вот залогинился я в FVWM, кроме эмулятора терминала ничего не запущено, а free мне сразу показывает, что больше гига памяти уже used. Вот как это так?

Переключаюсь в ядерную консоль, выключаю иксы, очищаю кэш файлов... free всё равно показывает, что больше гига RAM used.

Складываю память запущенных процессов - получается меньше чем 300 Мб. В tmpfs'ах меньше чем 40 Мб суммарно, в файловом кэше тоже столько нет...

В итоге и додебажился, что это теперь новая логика такая, а старая версия free выдаёт как раз ожидаемый результат.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от saahriktu

А чё за дистрибутив такой у вас?

63314 + 652  < 64231
63313 + 1238 > 64231

Может быть, сборщик вашего дистрибутива ушёл на новогодние каникулы. Или в вашем дистрибутиве произошла смена поколений программистов, и у нового поколения программистов иные взгляды на арифметику при подсчёте объёма памяти. Дистрибутив какой? Чтоб случайно не вляпаться, народ в моём лице желает знать.

anonymous
()
Ответ на: комментарий от anonymous

1) Раньше в «used» буфера и кэши не учитывались (в т.ч. об этом и пишу). 2) Это также особенности free из procps 4: https://gitlab.com/procps-ng/procps/-/issues/334 .

Update to high version, problem in some scenarios:

used is larger used + free > total, it seems unreasonable

What we don't want to do is replace a known wrong answer with another known wrong answer. We can say that Available is wrong, if it is less than Free. However substituting that answer with one of the suggested ones (which we have had before) just gives us a different but also wrong answer.

The kernel should be giving us the right answer but to diagnose that we'll need more data.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от dmitry237

Ну, по ним можно оценивать использование памяти. Но в любом случае это примерные значения, да.

Классическая арифметика free: used = total - free - cached - buffers.

Теперь free выводит другое ближе к total - free.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от dmitry237

Вот уж действительно! Когда ядерные хакеры внедряют в своё свежее изделие проплаченный функционал, а мальчики на подтанцовках (сочиняющие всякую лабуду вроде утилиты free) начинают терять навыки арифметики, потому что становится невозможным сложить два плюс три, то 300-600 m памяти на пользовательских комп-ах не имеют никакого значения. Будто бы эти пользователи могут как-то повлиять на чудесатые процессы. Не могут. Поэтому - не имеет значения.

anonymous
()
Ответ на: комментарий от saahriktu

Задачка решена! Землекопа полтора. (с) Когда складываешь два целых числа не торопись дать ответ, сначала выслушай мнение других, более авторитетных деятелей (Автор утилиты free)

anonymous
()

выхлопы двух разных free

офигеть они free поломали! почти в два раза больше выжратой памяти теперь показывает на ровном месте! это же абсолютно неадекватно, придется теперь через htop смотреть

anonymous
()
Ответ на: комментарий от saahriktu

Ты написал

Теперь free выводит другое ближе к total - free.

Я уточнил, что

total - available

Ну и раз уж мы тут предаёмся воспоминаниям, то

Классическая арифметика free: used = total - free - cached - buffers.

не такая уж «классическая», появилась лет 10 назад и ты тогда тоже тему создавал по этому поводу: Последние Debian'ы и кэш в RAM

До этого было как раз total - free.

NeOlip ★★
()
Ответ на: комментарий от NeOlip

и ты тогда тоже тему создавал по этому поводу

Там как раз начинались поползновения в сабжевом направлении, а не наоборот. Т.е. до этого в used числа были ещё меньше.

saahriktu ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Кто они? Там один чувак, походу, ранее уработавший dropbox, ваяет. Только он сам вахуе, поэтому не может ничиво объяснить по теме полученных значений в числах. Так и пишет, подлец, чтоб я по этому поводу ни о ветил - всё брехня, давайте-ка не задавайте мне вопросов, а поспрашайте авторов ядра. Вон, выше в обсуждении аж зацитировали классика.

anonymous
()