Linux сколько памяти использует пользователь

Использование памяти для пользователя в Linux?

Предположим, что у меня есть 20 пользователей, которые вошли в мою linux-бокс. Как я могу узнать, сколько памяти использует каждый из них?

12 ответов

Вы можете попробовать использовать smem (см. ELC2009: просмотр использования памяти с помощью smem для получения дополнительной информации). В частности, sudo smem -u должен предоставить вам необходимую информацию.

Игнорирование проблем с общей памятью — вот быстрый сценарий, который дает вам RSS и VMEM для всех зарегистрированных пользователей, отсортированных по vmem и организованных в милые столбцы:

Чтобы получить сумму RSS, я думаю, что работает следующее. Это должно было бы получить сумму RSS для пользователей kbrandt и root.

Это сложный вопрос. Вы можете легко суммировать общие суммы RSS + swap в выводе «ps», но как насчет общей памяти? Различные пользователи могут легко использовать одну и ту же страницу кода, если они работают с одним и тем же процессом. За кого вы это делаете? Что относительно буферов и кеш? Это зависит от того, насколько точны ваши результаты. Чем точнее вы хотите, тем сложнее будет.

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

Вы можете попробовать что-то вроде:

Ищем то же самое, я понял это

для печати процессов, упорядоченных по mem, сгруппированных по пользователю (столбец1, $ 1), вы можете группировать другие вещи и суммировать другие вещи, меняя $ 1 и $ 4

  • $ 1 — это первый столбец: имя пользователя (группы)
  • $ 4 — это четвертый столбец:% mem (суммирует это)

Я был рад найти решение, просто хотел поделиться.

Этот сценарий bash, вероятно, уродлив, как черт, но спасибо за упражнение, мой bash был (есть) ржавым!

Прокомментируйте /исправьте, и я обновлю ответ. Также я использую вывод rss-памяти из PS, так как другие обсуждали, что есть плюсы /минусы использования этого значения.

smem не был доступен в моей системе, и сценарий Дейва по какой-то причине не работал, поэтому я написал этот уродливый Perl oneliner для обработки вывода ps:

Обратите внимание, что некоторые пользователи были идентифицированы с использованием своего UID, а не их имени пользователя. Вы можете справиться с этим, анализируя имена пользователей из /etc /passwd, используя более уродливый:

Использование сценария Bash

OUTPUT

Вы можете получить UID из /etc/passwd , чтобы сделать это для всех пользователей

Ну, в этом состоянии ядра Linux я могу придумать только один правильный путь для выполнения этой задачи — с использованием групп памяти. Вам нужно будет ввести пользователя в систему в собственную группу, и для этого может потребоваться разработка собственного модуля pam или (скорее) изменение существующего модуля для этого.

Полезный документ для чтения: Руководство по управлению ресурсами от RedHat®.

Источник

Информация об оперативной памяти в Linux. Свободная, занятая и тип памяти

В этой статье мы рассмотрим, как получить информацию об оперативной памяти (RAM) в Linux.

Мы воспользуемся утилитами командной строки доступными для большинства Linux дистрибутивов.

Свободная и занятая оперативная память

Для получения информации о количестве свободной и занятой оперативной памяти в Linux можно использовать различные утилиты и команды. Рассмотрим несколько распространенных способов.

Читайте также:  Темы для linux fedora

Команда free

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

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

  • -m — в мегабайтах
  • -g — в гигабайтах
  • -h — автоматически определить формат

Команда vmstat

Команда vmstat выводит различную статистику по использованию памяти. Используя ключ -s можно вывести подробную статистику в табличном виде.

Команда top

top — это утилита командной строки, которая используется для мониторинга процессов и используемых ресурсов компьютера.

Запуск утилиты top :

В заголовке выводится информация об использованной оперативной памяти.

Команда htop

Утилита htop, также как и top, используется для мониторинга ресурсов и процессов.

Для установки утилиты htop в Ubuntu Linux (Linux Mint и других Ubuntu/Debian-дистрибутивах) выполните команду:

Запуск утилиты htop :

Файл /proc/meminfo

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

Тип памяти и частота

Рассмотрим, как получить информацию об установленных в компьютер модулях оперативной памяти. Воспользуемся командной dmidecode

Используем следующую команду:

В выводе команды будет информация о слотах оперативной памяти. Для каждого слота отображается установленный модуль оперативной памяти, его тип (поле Type ), размер (поле Size ), скорость/частота (поле Speed ) и другая информация.

В зависимости от системы и оборудования не всегда удается получить все данные, поэтому некоторые поля могут быть пустыми или иметь надписи Not provided/Unknown.

Заключение

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

Для отслеживания использования ресурсов компьютера существует множество графических программ. Найти их можно в нашем каталоге программ для Linux в разделе Система/Мониторинг.

Источник

5 команд для проверки использования памяти в Linux

Сегодня обсудим команды, которые можно использовать для проверки использования памяти в Linux.

1. Команда Free

Команда free — это самая простая и удобная утилита для проверки использования памяти в linux.
Пример вывода:

Ключ -m отображает все данные в мегабайтах (Можно еще в байтах -b, в гигабайтах -g итд). В данном примере общий объем в OS 7976 МБ — это общий объем оперативной памяти установленной в системе, то есть 8 ГБ. Столбец used показывает объем RAM, который использует Linux, в данном случае около 6.4 ГБ. Вывод довольно понятен. Подвох здесь — столбец cached и buffers. Вторая строка говорит о том, что 4,6 ГБ свободно. Это свободная память в первой строке, добавленная с буферами (buffers) и кэшированным (cached) объемом памяти.

Последняя строка — это память подкачки (Swap), которая в этом случае полностью свободна.

У Linux есть привычка кешировать множество вещей для более быстрой производительности, так что память может быть освобождена и использована при необходимости.

2. /proc/meminfo

Следующий способ проверить использование памяти, это файл /proc/meminfo. Файловая система /proc не содержит реальных файлов. Это скорее виртуальные файлы, которые содержат динамическую информацию о ядре и системе.

Проверьте значения MemTotal, MemFree, Buffers, Cached, SwapTotal, SwapFree.
Они указывают те же значения использования памяти, что и команда free.

3. vmstat

Команда vmstat с ключем -s покажет статистику использования памяти во многом подобно команде proc.
Вот пример

Верхние несколько строк указывают на общую количество память, свободную память итд.

4. top command

Команда top обычно используется для проверки использования памяти и загрузку процессора для каждого процесса. Однако он также сообщает об общем использовании памяти и может использоваться для контроля общего использования памяти. Верхняя область содержит необходимую информацию.

Читайте также:  Менеджер паролей для linux mint

Вот пример вывода.

Проверьте строки KiB Mem и KiB Swap в верхней области. Они указывают общее, использованное и свободное количество памяти. Информация о буфере и кеше также присутствует здесь как в команде free.

5. htop

Подобно команде top, команда htop также показывает использование памяти и другую информацию.

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

Информация о RAM

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

Вывод покажет кол-во установленных модулей памяти, их объем (4096MB), тип (DDR3), частоту (1333 Mhz) и другую информацию.

Источник

Как анализировать вывод /proc/meminfo в Linux

Файловая система /proc — это виртуальная файловая система. Она не хранится на диске, а создается в памяти и используется для предоставления информации о системе (первоначально о процессах, отсюда и название).

Из /proc/meminfo можно получить информацию о свободной памяти, об используемой (и физической, и swap), а также о разделяемой (shared memory) и буферах.

Подробно файловая система /proc описана в man.

Сначала посмотрим показатели, на которые следует обращать внимание в первую очередь.

Основные показатели

MemTotal : доступный объем оперативной памяти (физическая память за вычетом нескольких зарезервированных битов и бинарного кода ядра).

MemFree : Сумма LowFree и HighFree.

MemShared : 0; приведен здесь из соображений совместимости и всегда равен нулю.

Buffers : память в буферном кеше. В настоящее время бесполезен в качестве метрики. Это временное хранилище для страниц, ожидающих записи на диск. Не должно быть слишком большим (обычно около 20 МБ).

Cached : память в кэше страниц за вычетом SwapCache.

SwapCache: память, которая когда-то была выгружена в своп, но потом загружена обратно и все еще находится в файле подкачки. Если будет необходимость в выделении памяти, то эту память не нужно будет выгружать повторно, так как она уже находится в свопе. Это экономит операции ввода-вывода.

Прочие показатели

Cтраницы кэша делятся на «активные» и «неактивные». Идея заключается в том, что если вам нужна память и ее можно взять из кэша, то она будет забрана из неактивных страниц, поскольку ожидается, что она больше не будет использоваться. Подсистема виртуальной памяти постоянно отслеживает, какая память используется, и отмечает это в таблице страниц (pagetable) специальным битом.

Страницы также могут перемещаться обратно в активные. Активные страницы упорядочены в порядке «не использовалась дольше всех» (хотя это очень грубо и в реальности все немного сложнее). Давно не использованные страницы можно переместить в неактивные. В приведенном выше примере неактивная память разделена на две части. Иногда она разбивается на три.

Active : память, которая использовалась совсем недавно. Обычно не освобождается без крайней необходимости.

Inact_dirty : «грязная» означает, что «необходима запись на диск или в своп». Для ее освобождения требуется больше работы. Здесь могут быть файлы, которые еще не записаны на диск. Операции записи на диск происходят не сразу, чтобы не снижать производительность ввода-вывода. Например, если вы пишете логи, то, возможно, лучше подождать, пока у вас будет готова полная запись лога, прежде чем отправлять ее на диск.

Inact_clean: память, которую можно легко освободить. Ядро пытается сохранить немного чистых страниц, чтобы было проще «дышать».

Inact_target : целевая метрика, которую ядро использует, чтобы убедиться, в достаточном количестве неактивных страниц. При превышении этого значения ядро не будет перемещать страницы из активного состояния в неактивное. Страница может стать неактивной разными способами. Например, если вы выполняете длительный последовательный ввод-вывод, то ядро предполагает, что вы не собираетесь использовать эту память, и делает ее неактивной превентивно. Таким образом, вы можете получить больше неактивных страниц, чем целевое значение, потому что ядро помечает некоторый кэш как «скорее всего, никогда не будет использоваться» и позволяет обмануть порядок «использовался последним».

Читайте также:  Что делать если мне пишет система windows защитила ваш компьютер

Статистика памяти

HighTotal : размер области верхней памяти. Область верхней памяти (highmem) — это вся память, выше (приблизительно) 860 МБ физической ОЗУ. Доступ к этой памяти осуществляется через косвенные механизмы доступа. Здесь может находиться кэш данных.

LowTotal: общий объем памяти без highmem-памяти.

LowFree : объем свободной памяти в нижней области памяти. Это память, к которой ядро может обращаться напрямую. Все структуры данных ядра должны находиться этой области.

SwapTotal : общий физический размер свопинга.

SwapFree : количество свободной памяти в свопинге. Swap — память, которая была выгружена из ОЗУ и временно находится на диске.

Dirty : память, ожидающая записи на диск.

Writeback: память, которая в настоящий момент записывается на диск.

Mapped : отображаемые в память файлы с помощью mmaped, например, библиотеки.

Slab : кеш внутренних структур ядра.

Committed_AS: оценка объема оперативной памяти, необходимой для 99,99% гарантии того, что для текущей нагрузки системы не будет OOM (out of memory, нехватки памяти). Обычно ядро позволяет выделять больше памяти, чем доступно в системе (overcommit). Например, при выделении 1 ГБ памяти через malloc, на самом деле ничего не происходит. Только когда вы начнете ИСПОЛЬЗОВАТЬ эту память, вам выделят столько памяти, сколько вы будете использовать. То есть вы берете ипотеку и надеетесь, что банк не разорится. Также могут быть случаи, когда вы используете mmap файл, который используется только при записи в него, и вы получаете приватную копию этих данных. Хотя обычно они разделяются между процессами. Committed_AS — это приблизительная оценка того, сколько памяти / свопинга вам понадобится в худшем случае.

PageTables : объем памяти, выделенный для таблиц страниц.

ReverseMaps : количество выполненных обратных отображений.

VmallocTotal : общий размер области памяти vmalloc.

VmallocUsed : используемая память vmalloc.

VmallocChunk : самый большой свободный непрерывный блок в области vmalloc.

Оценка использования ресурсов, особенно потребления памяти, намного сложнее, чем может показаться на первый взгляд. Неиспользуемый ресурс — это ресурс, потраченный впустую. Поэтому ядро старается использовать столько оперативной памяти, сколько может для кэширования информации с локальных и удаленных файловых систем и дисков. Кэш наполняется постепенно по мере выполнения операций чтения и записи, пытаясь сохранить данные, хранящиеся в ОЗУ, как можно более актуальными для процессов, запущенных в системе. При наличии свободной оперативной памяти будет выполняться больше кэширования и, следовательно, будет «потребляться» больше памяти. Однако на самом деле это не считается использованием ресурсов, поскольку эта память с кэшем доступна для процессов в любой момент. Кэш освобождается не при завершении процесса (возможно, появится другой процесс, которому нужны те же данные), а по запросу.

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

Обычно системной информации о памяти можно доверять, но даже она может быть легко истолкована неверно. Например, посмотрим на top.

Что может сбить с толку, так это буфер и кэш:

Можно увидеть, что используется 16124948K, но почти все эти 15 ГБ используются под кэш и буфер, и в случае, если память потребуется другому процессу, то она будет немедленно освобождена.

Система использует 2448184 КБ (= 2 ГБ) для приложений / процессов, при этом потенциально свободно 13 ГБ, используемой для буферизации и кэширования. Для оценки потребления памяти процессом, вы должны использовать команду free до, во время и после запуска процесса, проделывая это несколько раз, чтобы получить среднее значение оцениваемого показателя.

Для получения информации о потреблении памяти конкретного процесса можно использовать следующие команды:

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

Источник

Оцените статью