Поиск по сайту:

Как использовать бесплатную команду в Linux


Команда Linux free показывает, сколько памяти вашего компьютера используется и сколько еще доступно для использования программами. Его вывод может сбить с толку непосвященных, но мы покажем вам, как его понять.

Бесплатная команда

Команда free выводит краткую сводку об использовании памяти в окне терминала. у него не так много вариантов или хитростей в рукаве, и не требуется много времени или усилий, чтобы научиться его использовать. Однако научиться правильно интерпретировать информацию, которую он предоставляет, — это совсем другая история. Слишком легко запутаться в том, что говорит вам free.

Отчасти это связано с терминологией — например, с разницей между «свободным» и «доступным» — и частично с внутренней работой подпрограмм управления памятью и файловой системой ядра Linux. Если у вас есть свободная память, которую ядро может использовать с пользой, оно займет ее для своих целей. Пока не понадобится обратно.

Мы собираемся углубиться в основные механизмы и процедуры обработки данных, чтобы вы могли оценить, что происходит под капотом, и как все это влияет на использование вашей оперативной памяти (ОЗУ).

Бесплатные колонки

Давайте запустим free без опций и посмотрим, что мы получим:

free

Это обернуто некрасивым образом. На вашем компьютере вы сможете растянуть окно терминала. Вот результат в более аккуратной таблице:

        total   used   free   shared buff/cache  available
Mem:  2038576 670716 327956    14296    1039904    1187160
Swap: 1557568 769096 788472

Цифры указаны в кибибайтах, что составляет 1024 байта. В Manjaro команда free имеет псевдоним free -m. Это заставляет free использовать мегабайты, что составляет 1 048 576 байт. В других дистрибутивах по умолчанию используются кибибайты.

Верхняя строка сообщает о системной памяти, нижняя — о пространстве подкачки. Здесь мы представим столбцы, а затем рассмотрим их более подробно. Столбцы для строки памяти следующие:

  • Всего: общий объем физической оперативной памяти, установленной на вашем компьютере.
  • Использовано: рассчитывается как Всего-(Свободно+Буферы+Кэш).
  • Свободно: объем неиспользуемой памяти. Почему не Total=Used+Free? Мы объясним это в ближайшее время.
  • Общая: память, используемая файловой системой tmpfs.
  • Buff/cache: память, используемая для буферов и кеша.
  • Доступно. Это оценка памяти, доступной для обслуживания запросов памяти от приложений, любого другого работающего программного обеспечения на вашем компьютере, такого как графическая среда рабочего стола и команды Linux.

Для строки подкачки столбцы:

  • Всего: размер раздела подкачки или файла подкачки.
  • Используется: объем используемого пространства подкачки.
  • Свободно: оставшееся (неиспользованное) пространство подкачки.

Широкий дисплей

Чтобы разделить цифры Buff/cache на отдельные столбцы, используйте параметр -w (широкий):

free -w

Это результат. Вместо столбца Buff/cache мы получаем столбец Buffers и столбец Cache. Вот цифры в таблице:

        total   used   free   shared  buffers   cache  available
Mem:  2038576 683724 265708    14660    94568  994596    1160420
Swap: 1557568 761416 796152

Посмотрим, что обозначают цифры в столбцах.

Общая колонка

Это простой. Это объем оперативной памяти, установленной на материнской плате. Это ценный ресурс, за который борются все запущенные процессы. По крайней мере, они бы дрались, если бы ядро не судило.

Между прочим, место, откуда free собирает информацию, — это псевдофайл /proc/meminfo. Вы можете самостоятельно просмотреть этот файл с помощью следующей команды:

less /proc/meminfo

На выходе получается единый список имен и значений.

Используемая колонка

Вот тут-то и начинается интересное.

Цифра Использовано представляет собой то, что вы, вероятно, ожидаете, а также множество других вещей. Это память, выделяемая процессам, занимаемая пользовательскими программами и используемая такими вещами, как среда рабочего стола GNOME или KDE. Никаких сюрпризов. Но он также включает цифры Buffers и Cache.

Оперативная память, которая не используется для чего-либо, является потраченной впустую оперативной памятью. Ядро использует запасную оперативную память для хранения кэшей и буферов, что позволяет ему работать более эффективно. Таким образом, эта оперативная память используется для чего-то ядром, но не для чего-либо в пользовательском пространстве.

Если получен запрос на память, который может быть обслужен только путем отказа от части оперативной памяти, которую ядро использует для своих собственных устройств, то это происходит без проблем. Освобождение этой оперативной памяти и использование ее для других приложений не повлияет на правильную работу вашей системы Linux — ничто не сломается, но может повлиять на производительность системы. .

Таким образом, этот столбец на самом деле означает «вся оперативная память, которая чем-то занята, даже если ее можно мгновенно восстановить».

Бесплатная колонка

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

Это не обязательно плохо, и почти наверняка означает, что у вас есть совершенно нормально функционирующая система, которая правильно регулирует использование оперативной памяти. То есть оперативная память используется приложениями и другими процессами пользовательского пространства, а также ядром, стремящимся максимально повысить производительность вашего компьютера.

Общий столбец

Цифра в столбце Общая представляет память, выделенную для хранения файловых систем tmpfs в ОЗУ. Это файловые системы, которые создаются в памяти для обеспечения эффективной работы операционной системы. Чтобы увидеть, какие файловые системы tmpfs присутствуют, используйте команду df.

Варианты, которые мы используем:

  • -h (человек): используйте разумные, наиболее подходящие единицы измерения.
  • --total: отображать строку с итоговыми значениями в нижней части вывода.
  • --type=tmpfs: отчет только по файловым системам tmpfs.

df -h --total --type=tmpfs

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

Что содержат эти файловые системы? Вот краткая разбивка:

  • /run: содержит множество временных файлов, таких как файлы PID, журналы systemd, которые не нужно сохранять при перезагрузках, информацию о сокетах домена Unix, FIFO и управлении. демонов.
  • /dev/shm: это позволяет реализовать POSIX-совместимое управление памятью в Debian и дистрибутивах Linux, производных от Debian.
  • /run/lock: содержит файлы блокировки. Они используются в качестве индикаторов, чтобы сообщить системе, что файл или другой общий ресурс используется. Они содержат PID процесса, использующего этот ресурс.
  • /sys/fs/cgroup: это центральный элемент схемы управления контрольными группами. Процессы организованы в иерархические группы в соответствии с типами ресурсов, которые они используют. Это позволяет отслеживать и ограничивать использование ресурсов процессами.
  • /run/user/121: это папка, созданная pam_systemd для хранения временных файлов для пользователя. В данном случае идентификатор пользователя равен 121. Обратите внимание, что «пользователь» может быть обычным пользователем, демоном или другим процессом.
  • /run/user/1000: это папка, созданная с помощью pam_systemd для хранения временных файлов для этого пользователя с идентификатором 1000. Это папка текущий пользователь, пользователь dave.

Столбцы буфера и кэша

Столбцы Буфер и Кэш отображаются, только если вы использовали -w (широкий). Без опции – w цифры из этих двух столбцов объединяются в столбец Buff/cache.

Эти две области памяти взаимодействуют и зависят друг от друга. Область кэша содержит (в основном) данные, которые были прочитаны с жесткого диска. Он сохраняется на случай, если вам понадобится снова получить к нему доступ. Быстрее сделать это, извлекая эти данные из кеша, чем считывая их с жесткого диска. В кэше также могут храниться данные, которые были изменены, но еще не записаны обратно на жесткий диск, или значения, которые были вычислены и еще не сохранены в файл.

Чтобы отслеживать различные фрагменты файлов и хранилища данных, ядро строит индекс области кэш-памяти в области памяти буферов. Буферы — это участки памяти, в которых хранятся дисковые блоки и другие информационные структуры. Они содержат данные о данных, которые хранятся в области кэш-памяти. Таким образом, буферы являются метаданными для кеша.

Когда делается запрос на чтение файла, ядро считывает данные в структурах данных буфера в поисках запрошенного файла или фрагмента файла. Если он найден, запрос обслуживается из области кэш-памяти, на которую указывают структуры данных буфера. Если его нет в кеше, а значит, и в метаданных в области памяти буферов, файл считывается с жесткого диска.

Структуры в области буферной памяти:

  • Заголовки буфера: каждый буфер описывается в блоке данных, называемом заголовком буфера. Кроме того, если данные в блоке изменены и соответствующая страница памяти «загрязнена», дескриптор отслеживает необходимость записи данных обратно на жесткий диск.
  • Inodes. Inodes содержат метаданные о файлах и каталогах, в том числе о том, где они находятся на жестком диске (или в виртуальной файловой системе), о размере файла и временных метках файла.
  • Dentries: dentry (запись каталога) – это структура, в которой содержится информация о списках каталогов. Думайте об этом как о списке индексных дескрипторов для файлов и каталогов в каталоге.

Вы можете понять, почему имеет смысл сжимать память, используемую для областей памяти буфера и кэша, в один столбец Buff/cache. Они как две части одного и того же. Область кэш-памяти была бы бесполезна без области буферной памяти, обеспечивающей индекс ее содержимого.

Доступный столбец

Доступный столбец представляет собой сумму столбца Free и частей столбцов Buffers и Cache (или столбца Buff/cache), которые могут быть отозваны немедленно. Столбец Available является приблизительным, а не точным числом. Это обоснованная и точная оценка, но ее не следует считать точной до последнего байта.

Изменение единиц отображения

Чтобы изменить единицы, в которых бесплатно отображаются цифры, используйте один из следующих вариантов.

  • -b: отображает значения в байтах.
  • -k: отображает значения в кибибайтах (по умолчанию).
  • -m: отображает значения в мибибайтах.
  • -g: отображает значения в гибибайтах.
  • -h: отображает значения в разумных наиболее подходящих единицах (удобочитаемых) единицах.

Например, чтобы использовать удобочитаемые значения, используйте параметр -h:

free -h

free будет использовать наиболее подходящую единицу измерения для каждого значения. Как видите, некоторые значения отображаются в МиБ, а некоторые — в ГиБ.

Отображение итога

Параметр --total приводит к тому, что free отображает итоговую строку, которая суммирует значения из Total, Used и Free строк Mem и Swap.

free -h --total

Вариант подсчета

Опция -c (количество) указывает free выполняться определенное количество раз с паузой в одну секунду между каждым. Чтобы дважды запустить free, используйте эту команду:

free -h -c 2

Работает бесплатно Постоянно

Если вы хотите увидеть, как определенное приложение влияет на использование вашей памяти, может быть полезно постоянно запускать free. Это позволяет запускать бесплатно в окне терминала во время запуска, использования и последующего закрытия исследуемого приложения.

Опция -s (секунды) определяет продолжительность паузы между каждым запуском free. Для непрерывного бесплатного запуска с трехсекундной паузой между каждым обновлением используйте эту команду:

free -s 3

Нажмите Ctrl+C, чтобы остановить процесс и вернуться в командную строку.

Объединение параметров «Счетчик» и «Секунды»

Чтобы free запускался с указанной паузой между каждым обновлением, но останавливался после определенного количества отчетов, объедините -s (секунды) и -c (количество) вариантов. Чтобы free запускался пять раз с двухсекундной паузой между каждым обновлением, используйте следующую команду:

free -s 2 -c 5

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

Разделение низкой и высокой памяти

В настоящее время от этого мало пользы, но если вы используете Linux на 32-разрядном компьютере, это может оказаться полезным. Он отделяет использование памяти от малой и высокой памяти.

В 32-разрядной операционной системе на базе Linux процессор может адресовать максимум 4 ГБ памяти. Память делится на младшую память и верхнюю память. Недостаток памяти напрямую отображается на часть адресного пространства ядра. Верхняя память не имеет прямого отображения ядра. Высокая память обычно превышает 896 МБ.

Это означает, что само ядро (включая его активные модули) может использовать только нехватку памяти. Пользовательские процессы — все, что не является самим ядром, — потенциально могут использовать младшую и верхнюю память.

На 64-битном компьютере не будут отображаться значения для верхней памяти:

free -h -l

Воспоминания сделаны из этого

Краткий обзор:

  • Всего: объем оперативной памяти, установленной в вашей системе.
  • Использовано: равно Всего-(Свободно+Буферы+Кэш ).
  • Свободно: объем памяти, полностью неиспользуемый ничем.
  • Общая: память, занятая файловой системой tmpfs.
  • Буфер: структуры данных, которые поддерживаются для обеспечения индекса всего, что хранится в Кэш.
  • Кэш: данные, считанные с жесткого диска, измененные данные, ожидающие обратной записи на жесткий диск, и другие вычисляемые значения.
  • Доступно: что действительно бесплатно. Оценка памяти в Free, Buffer и Cache, которую можно использовать для удовлетворения запроса на память.

RELATED: Best Linux Laptops for Developers and Enthusiasts