'бесплатная' команда показывает доступному поршню меньше, чем любитель/кэш!

У меня есть ноутбук рабочая человечность 16.04 с поршнем на 4 ГБ. Я использовал его приблизительно в течение месяца теперь, и недавно я заметил, что система замедляется много даже только с выполнением приложений 3-4. Это - вывод free -m с терминалом и открытым gedit.

       total        used        free      shared      buff/cache   available
Mem:    3872         797         842        1971            2232         848
Swap:   4015         141        3874

Вы видите, что доступная память является меньше, чем кэшируемая память. Разве кэшируемая память не должна быть включена в доступную память? Проблема, когда я открываю некоторое другое приложение, кэшируемые увеличения емкости памяти вместо того, чтобы дать пространство новому приложению! Вот вывод 'свободного-m' после вводного Firefox, средства просмотра документов и vscode.

              total        used        free      shared  buff/cache   available
Mem:           3872        1391         145        1923        2335         299
Swap:          4015         250        3765

sudo sync; echo 3>'/proc/sys/vm/drop_cache' не помогает многому.

              total        used        free      shared  buff/cache   available
Mem:           3872        1368         239        1923        2265         324
Swap:          4015         256        3759

Оказывается, что я не могу даже открыть 5 приложений на Ubuntu одновременно. Кажется, что 2265 МБ памяти только что просочились. Это - больше чем половина моего физического поршня! Что я могу делать с этим?

4
задан 15 August 2016 в 11:27

1 ответ

Если Вы хотите вычислить, Ваша свободная память пробуют это

(она распечатает его в МБ)

, заставляют сценарий в ударе добавить эти

mem1=$( free | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print $8 }' | awk '{ total = $1 / 1024 ; print total }' | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print $1}' )
mem2c=$( free | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print $10}' | awk '{ total = $1 / 1024 ; print total }' | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print $1}' )
mem3=$( free | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print $9}' | awk '{ total = $1 / 1024 ; print total }' | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print $1}' )
mem2f=$( free | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print $12}' | awk '{ total = $1 / 1024 ; print total }' | sed 'N;s/\n/ /;N;s/\n/ /' | awk '{ print $1}')
mem2=$(awk "BEGIN {print $mem2c+$mem2f; exit}")

, затем просто делают это

echo "$mem1 / $mem3 / $mem2"

источник: мой собственный код :)

https://github.com/ppigmans/Tool-box

1
ответ дан 1 December 2019 в 10:36

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

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