- Как определить объем использованной памяти и среднюю нагрузку на Linux-сервере?
- Ответ 1
- Ответ 2
- Ответ 3
- linux-notes.org
- Как в Linux узнать объем занятой/свободной памяти
- Добавить комментарий Отменить ответ
- Управление памятью в Linux. Физическая и Виртуальная память
- Что такое физическая память?
- Что такое виртуальная память?
- Физическая память vs. Виртуальная память
- Команды для управления памятью в Linux
- Файл /proc/meminfo
- Команда top
- Команда free
- Команда vmstat
Как определить объем использованной памяти и среднюю нагрузку на Linux-сервере?
Я использую сервер на базе linux, который имеет 128 ГБ памяти и 24 ядра. Я использую инструмент top, для определения потребления памяти. У меня есть два вопроса:
- Каждый из запущенных процессов имеет очень низкий процент используемой памяти (%MEM не более 0.2%, а большинство всего 0.0%), тогда как, суммарный объем памяти имеет показатели, как в четвертой строке вывода («Mem: 130766620k total, 130161072k used, 605548k free, 919300k buffers»)? В итоге, объем памяти по всем процессам кажется имеет недостоверное значение, достигая почти 100%, не так ли?
- Как понять показатели средних значений нагрузки в первой строке («load average: 14.04, 14.02, 14.00»)?
top — 12:45:33 up 19 days, 23:11, 18 users, load average: 14.04, 14.02, 14.00
Tasks: 484 total, 12 running, 472 sleeping, 0 stopped, 0 zombie
Cpu(s): 36.7%us, 19.7%sy, 0.0%ni, 43.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 130766620k total, 130161072k used, 605548k free, 919300k buffers
Swap: 63111312k total, 500556k used, 62610756k free, 124437752k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6529 sanchez 18 -2 1075m 219m 13m S 100 0.2 13760:23 MATLAB
13210 timothy 18 -2 48336 37m 1216 R 100 0.0 3:56.75 absurdity
13888 timothy 18 -2 48336 37m 1204 R 100 0.0 2:04.89 absurdity
14542 timothy 18 -2 48336 37m 1196 R 100 0.0 1:08.34 absurdity
14544 timothy 18 -2 2888 2076 400 R 100 0.0 1:06.14 gatherData
6183 sanchez 18 -2 1133m 195m 13m S 100 0.2 13676:04 MATLAB
6795 sanchez 18 -2 1079m 210m 13m S 100 0.2 13734:26 MATLAB
10178 timothy 18 -2 48336 37m 1204 R 100 0.0 11:33.93 absurdity
12438 timothy 18 -2 48336 37m 1216 R 100 0.0 5:38.17 absurdity
13661 timothy 18 -2 48336 37m 1216 R 100 0.0 2:44.13 absurdity
14098 timothy 18 -2 48336 37m 1204 R 100 0.0 1:58.31 absurdity
14335 timothy 18 -2 48336 37m 1196 R 100 0.0 1:08.93 absurdity
14765 timothy 18 -2 48336 37m 1196 R 99 0.0 0:32.57 absurdity
13445 timothy 18 -2 48336 37m 1216 R 99 0.0 3:01.37 absurdity
28990 root 20 0 0 0 0 S 2 0.0 65:50.21 pdflush
12141 tim 18 -2 19380 1660 1024 R 1 0.0 0:04.04 top
1240 root 15 -5 0 0 0 S 0 0.0 16:07.11 kjournald
9019 root 20 0 296m 4460 2616 S 0 0.0 82:19.51 kdm_greet
1 root 20 0 4028 728 592 S 0 0.0 0:03.11 init
2 root 15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root RT -5 0 0 0 S 0 0.0 0:01.01 migration/0
4 root 15 -5 0 0 0 S 0 0.0 0:08.13 ksoftirqd/0
5 root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/0
6 root RT -5 0 0 0 S 0 0.0 17:27.31 migration/1
7 root 15 -5 0 0 0 S 0 0.0 0:01.21 ksoftirqd/1
8 root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/1
9 root RT -5 0 0 0 S 0 0.0 10:02.56 migration/2
10 root 15 -5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/2
11 root RT -5 0 0 0 S 0 0.0 0:00.00 watchdog/2
12 root RT -5 0 0 0 S 0 0.0 4:29.53 migration/3
13 root 15 -5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/3
Ответ 1
Чтобы узнать, сколько памяти вы используется в данный момент, необходимо запустить инструмент free -m . Результат будет примерно таким:
total used free shared buffers cached
Mem: 2012 1923 88 0 91 515
-/+ buffers/cache: 1316 695
Swap: 3153 256 2896
Значение ‘used’ в верхней строке (1923) почти всегда почти соответствует значению mem в верхней строке (2012). Поскольку Linux использует свободную память для кэширования дисковых блоков (515).
Ключевым показателем, на который следует обратить внимание, является значение используемой строки буферов/кеша (1316). Это показатель, сколько места в настоящее время используют ваши приложения. Для лучшей производительности это число должно быть меньше вашего общего объема памяти (2012). Чтобы предотвратить ошибки при нехватке памяти, он должен быть меньше, чем общий объем памяти (2012) и объем файла подкачки (3153).
Если вы хотите быстро узнать, сколько памяти свободно, посмотрите на значение свободной строки буферов/кеша (695). Это общий объем памяти (2012) и фактически выделенной(1316). (2012 — 1316 = 696, не 695, просто это ошибка округления)
(2) Как понять среднюю нагрузку в первой строке («средняя нагрузка: 14.04, 14.02, 14.00»)?
Для вашего случая:
В многопроцессорной системе нагрузка зависит от количества доступных ядер процессора. Оценка «100% использования» составляет 1,00 для одноядерной системы, 2,00 для двухъядерной системы, 4,00 для четырехъядерной системы и т. д.
Таким образом, при средней загрузке 14,00 и 24 ядерного сервера – нагрузка находится в пределах нормы.
Ответ 2
Unix-подобные системы, в том числе Linux, предназначены для наиболее эффективного использования доступной оперативной памяти. В общих чертах, каждый МБ ОЗУ может находиться в трех состояниях:
- Свободен
- Используется процессом
- Используется для буферов
Третье состояние используется только, как рабочее пространство и предназначено для переназначения при необходимости, т.е. ваша общая доступная память для программ свободна + используется для буферов. Таким образом, вы не увидите, что выделенное буферное пространство отображается как назначенное какому-либо конкретному процессу.
Ваш вопрос о средней нагрузке немного интереснее, так как его легко можно неправильно истолковать.
Это означает, что вы можете считать среднюю нагрузку следующим образом: (количество запущенных процессов)+(количество процессов, ожидающих ввода-вывода). Учитывая, что в любой момент времени у вас может быть $CORE количество выполняемых процессов, я бы сказал, что ваша средняя нагрузка в 14 довольно низкая.
Ответ 3
Linux в течение определенного времени управляет своей памятью таким образом, что информация top является практически бесполезной, обычно оставляя большую часть памяти машины выделенной для различных целей, когда это не требуется для пользовательских процессов.
Средняя загрузка — это среднее количество запущенных или ожидающих запуска процессов. Обычно она имеет сильную отрицательную корреляцию с задержкой/отзывчивостью системы, поэтому необходимо, чтобы она был как можно ниже. Поскольку каждый из ваших процессоров может быть занят чем-то в любой момент времени, похоже, ваш сервер вполне справляется.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Источник
linux-notes.org
Как в Linux узнать объем занятой/свободной памяти
Для проверки занятой/свободной памяти в Linux используйте команду free -m. Свободно отображает общий объем свободной или занятой памяти, а так же подкачки в системе. Команду «free» можно использовать с различными параметрами, я приведу несколько из них:
free с параметрами
-b отображает объем памяти в байтах
-k коммутатор (установлен по умолчанию) отображает в килобайтах
-m отображает в мегабайтах
-g отображает в гигабайтах.
swpd: объем виртуальной памяти который используется.
free: количество простоя в памяти.
buff: объем памяти которая используется в качестве буферов.
cache: объем памяти используется в качестве кэш-памяти.
На этом тема «Как в Linux узнать объем занятой/свободной памяти» завершена, очень полезная команда. Советую использовать ее.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
Управление памятью в Linux. Физическая и Виртуальная память
Обновл. 23 Июн 2021 |
Управление памятью позволяет процессам перемещаться между оперативной памятью и жестким диском во время выполнения программы. Более того, этот процесс отслеживает каждую ячейку памяти для корректного выделения процессов и освобождения памяти. Физическая память — это основная память, в которой находятся выполняющиеся в данный момент программы. С другой стороны, виртуальная память увеличивает емкость основной (физической) памяти (за счет жесткого диска) для выполнения программ, размер которых превышает объемы установленной в компьютере физической памяти.
Что такое физическая память?
Физическая память (или «ОЗУ», «RAM», «оперативка») — это энергозависимая память, установленная в компьютере. Для её работы требуется непрерывный поток электричества. Перебои с электропитанием или внезапное выключение компьютера могут привести к стиранию хранящихся в ней данных. Кроме того, эта память является линейно адресуемой. Другими словами, значения адресов памяти увеличиваются линейным образом.
Запуская и исполняя программы, процессор напрямую обращается к физической памяти. Обычно программы хранятся на жестком диске. Время доступа процессора к диску значительно превышает аналогичное время доступа к физической (оперативной) памяти. Чтобы процессор мог выполнять программы быстрее, они сначала помещаются в физическую (оперативную) память. После завершения своей работы, они возвращаются обратно на жесткий диск. Освобожденная таким образом память может быть выделена новой программе. При выполнении данные программы называются процессами.
Что такое виртуальная память?
Виртуальная память (или «логическая память») — это метод управления памятью, осуществляемый операционной системой, который позволяет программам задействовать значительно больше памяти, чем фактически установлено в компьютере. Например, если объем физической памяти компьютера составляет 4 ГБ, а виртуальной 16 ГБ, то программе может быть доступен объем виртуальной памяти вплоть до 16 ГБ.
Физическая память vs. Виртуальная память
Основное различие между физической и виртуальной памятью заключается в том, что физическая память относится к оперативной памяти компьютера, подключенной непосредственно к его материнской плате. Именно в ней находятся выполняемые в данный момент программы. А виртуальная память — это метод управления, расширяющий при помощи жесткого диска объем физической памяти, благодаря чему у пользователей появляется возможность запускать программы, требование к памяти которых превышает объем установленной в компьютере физической памяти.
Физическая память | Виртуальная память |
Непосредственно установленная в компьютере оперативная память. | Метод управления памятью, с помощью которого для программ создается иллюзия наличия в системе (физической) памяти, гораздо больше реально установленной. |
Работает быстрее. | Работает медленнее. |
Ограничена размером чипа ОЗУ. | Ограничена размером жесткого диска. |
Может напрямую обращаться к процессору. | Не может напрямую обращаться к процессору. |
Использует swapping. | Использует paging. |
Рассмотрим данные пункты:
#1: Тип памяти:
Физическая память является фактической памятью.
Виртуальная память является логической памятью.
#2: Скорость:
Физическая память быстрее виртуальной памяти.
#3: Размер:
Физическая память ограничена размером чипа ОЗУ.
Виртуальная память ограничена размером жесткого диска.
#4: Процессор:
Физическая память может напрямую обращаться к процессору, в то время как виртуальная память — нет.
#5: Методы, лежащие в основе:
Физическая (оперативная) память использует swapping. Swapping — это концепция управления памятью, при которой всякий раз, когда системе для хранения данных некоторого процесса не хватает оперативной (физической) памяти, она берет её из вторичного хранилища (например, жесткого диска), сбрасывая на него временно неиспользуемые данные. В Linux есть специальная программа управления памятью, которая управляет этим процессом. Всякий раз, когда ОЗУ не хватает памяти, программа управления памятью ищет все те неактивные блоки данных (страницы), присутствующие в ОЗУ, которые не использовались в течение длительного времени. Когда она успешно находит подобные блоки, то перемещает их в память подкачки (например, на жесткий диск). Таким образом, освобождается пространство оперативной памяти, и, следовательно, его можно использовать для некоторых других программ, которые нуждаются в срочной обработке.
Виртуальная память использует paging. Paging — это метод выделения памяти, при котором разным несмежным блокам памяти назначается фиксированный размер. Размер обычно составляет 4 КБ. Paging всегда выполняется между активными страницами (pages).
Команды для управления памятью в Linux
Давайте рассмотрим некоторые команды для управления памятью в Linux.
Файл /proc/meminfo
Файл /proc/meminfo содержит всю информацию, связанную с памятью. Для просмотра данного файла используйте команду cat:
Эта команда выводит множество параметров, связанных с памятью. Чтобы получить информацию о физической памяти из файла /proc/meminfo, используйте:
$ grep MemTotal /proc/meminfo
Чтобы получить информацию о виртуальной памяти из файла /proc/meminfo, используйте:
$ grep VmallocTotal /proc/meminfo
Команда top
Команда top позволяет отслеживать процессы и использование системных ресурсов в Linux в режиме реального времени. Когда вы запустите команду, то заметите, что значения в выходных данных продолжают изменяться с некоторым небольшим интервалом:
В верхней части отображается текущая статистика использования системных ресурсов. Нижняя часть содержит информацию о запущенных процессах. Вы можете перемещаться вверх и вниз по списку с помощью клавиш со стрелочками вверх/вниз и использовать q для выхода.
Команда free
Команда free отображает объем свободной и используемой памяти в системе.
Значения для каждого поля указаны в кибибайтах (КиБ).
Чтобы получить вывод в более удобочитаемом формате, используйте:
Команда vmstat
Команда vmstat — это инструмент мониторинга производительности в Linux, который предоставляет полезную информацию о процессах, памяти, операциях ввода-вывода, подкачке, диске и планировании процессора, а также приводит статистику виртуальной памяти вашей системы.
Поделиться в социальных сетях:
Источник