- Работа с процессами в Linux
- Список процессов
- 4 способа найти процессы потребляющие наибольшее кол-во памяти в Linux.
- 1. Выяснить процессы потребляющие наибольшее количество памяти в Linux с помощью команды ps.
- 2. Постоянное наблюдение процессов в памяти в Linux.
- 3. Выявление процессов, потребляющих наибольшее количество памяти в Linux с помощью команды top.
- 4. С помощью команды htop.
- Мониторинг потребления системных ресурсов Linux
- Введение
- Мониторинг общего потребления памяти
- Потребление памяти отдельными процессами
- Загрузка процессора Linux
- Как посмотреть загрузку процессора в Linux
- 1. Утилита htop
- 2. Файл /proc/loadavg
- 3. Утилита mpstat
- 4. Команда nmon
- 5. CoreFreq
- Выводы
Работа с процессами в Linux
Список процессов
Вывести на экран список текущих процессов, запущенных пользователем, можно командой:
Чтобы посмотреть список всех процессов с дополнительной информацией, вводим:
Мы увидим, примерно, следующее:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 661 0.0 0.0 4072 8 tty1 Ss+ Jul03 0:00 /sbin/mingetty
root 662 0.0 0.0 4072 8 tty2 Ss+ Jul03 0:00 /sbin/mingetty
root 16355 0.0 0.0 171636 3308 pts/0 S 15:46 0:00 sudo su
root 16366 0.0 0.0 140896 1556 pts/0 S 15:46 0:00 su
root 16368 0.0 0.0 108316 1944 pts/0 S 15:46 0:00 bash
root 18830 0.0 0.0 110244 1172 pts/0 R+ 16:20 0:00 ps u
- USER — учетная запись пользователя, от которой запущен процесс.
- PID — идентификатор процесса.
- %CPU — потребление процессорного времени в процентном эквиваленте.
- %MEM — использование памяти в процентах.
- VSZ — Virtual Set Size. Виртуальный размер процесса (в килобайтах).
- RSS — Resident Set Size. Размер резидентного набора (количество 1K-страниц в памяти).
- TTY — терминал, из под которого был запущен процесс.
- STAT — текущее состояние процесса. Могут принимать значения:
- R — выполнимый процесс;
- S — спящий;
- D — в состоянии подкачки на диске;
- T — остановлен;
- Z — зомби.
- W — не имеет резидентных страниц;
- Дмитрий Моск — IT-специалист.
Настройка серверов, компьютерная помощь.
Как управлять процессами в операционной системе Linux
Источник
4 способа найти процессы потребляющие наибольшее кол-во памяти в Linux.
Главное меню » Операционная система Linux » 4 способа найти процессы потребляющие наибольшее кол-во памяти в Linux.
1. Выяснить процессы потребляющие наибольшее количество памяти в Linux с помощью команды ps.
Существует один код доступный с помощью командой ps, который поможет вам найти процессы потребляющие наибольшее количество памяти в Linux.
Команда:
Пример вывода:
Здесь вы получите отсортированный по использованию памяти, который поможет вам узнать процессы потребляющие наибольшее количество памяти в Linux очень легко.
2. Постоянное наблюдение процессов в памяти в Linux.
Если вам необходимо контролировать вывод непрерывно. Пример команды watch ниже очень удобна.
Команда:
Пример вывода:
3. Выявление процессов, потребляющих наибольшее количество памяти в Linux с помощью команды top.
Тот же вывод команды ps также может быть достигнут с использованием нативной команды top в Linux.
Команда:
Пример вывода:
4. С помощью команды htop.
Существует еще одна утилита под названием htop, которая поможет вам найти процессы потребляющие наибольшее кол-во памяти в Linux.
Команда:
После выполнения команды htop, откроется окно с непрерывным выводом данных, как показано ниже:
Для того, чтобы разобраться в процессах по использованию памяти просто нажмите кнопку «F6», а затем выберите память и нажмите клавишу ВВОД. Вы можете увидеть процессы, отсортированные по использованию памяти, как показано ниже:
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Мониторинг потребления системных ресурсов Linux
Введение
Данные о системных ресурсах можно получить из виртуальных файлов в директории
1 18 21 31279 43 629 acpi kallsyms self 10 18349 22 32 44 659 asound kcore slabinfo 1051 18421 23 327 45 660 buddyinfo keys softirqs 1055 19 2375 33 46 662 bus key-users stat 11 19194 24 368 482 675 cgroups kmsg swaps 11527 19359 2400 369 4925 676 cmdline kpagecount sys 11529 19402 2402 379 499 680 consoles kpageflags sysrq-trigger 11532 19570 279 380 517 684 cpuinfo loadavg sysvipc 11762 19711 282 393 5677 686 crypto locks timer_list 11764 2 283 394 571 7 devices mdstat timer_stats 11765 20 284 395 575 8 diskstats meminfo tty 11818 20027 285 396 577 8413 dma misc uptime 11819 20182 2858 397 579 8419 driver modules version 13 20311 287 398 581 8790 execdomains mounts vmallocinfo 14 20374 289 399 583 8815 fb mtrr vmstat 14600 20415 291 4 5834 8817 filesystems net zoneinfo 15 20475 292 400 5836 9 fs pagetypeinfo 16 20518 29343 401 585 9214 interrupts partitions 1672 20712 2996 402 588 9250 iomem sched_debug 1694 20839 30 403 6 9251 ioports schedstat 17 20840 31 41 60 97 irq scsi
meminfo содержит информацию о памяти
MemTotal: 8009160 kB MemFree: 5474752 kB MemAvailable: 7043488 kB Buffers: 2108 kB Cached: 1830824 kB SwapCached: 0 kB Active: 1191552 kB Inactive: 907404 kB Active(anon): 310848 kB Inactive(anon): 45940 kB Active(file): 880704 kB Inactive(file): 861464 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 2097148 kB SwapFree: 2097148 kB …
cpu содержит информацию о процессоре
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 142 model name : Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz stepping : 12 cpu MHz : 2304.012 cache size : 8192 KB …
В Linux есть удобная программа top которая может в реальном времени показывать данные из этих виртуальных файлов, а также утилита free которая показывает свободные системные ресурсы.
В этом руководстве используются знания из следующих статей:
Мониторинг общего потребления памяти
Мониторить общее потребление памяти и процессора с помощью top
#!/bin/bash top -b | grep ‘%Cpu(s)\|KiB Mem’
Обратите внимание, на выдачу вашего top. В CentOS у вас может стоять по умолчанию KiB а в Ubuntu MiB
Если предполагается делать какие-то вычисления — нужно разобраться с тем, что же выдаёт top
top — 14:41:49 up 20:18, 2 users, load average: 0.51, 0.32, 0.22 Tasks: 386 total, 1 running, 385 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.8 us, 1.0 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 8008504 total, 4713352 free, 1021040 used, 2274112 buff/cache KiB Swap: 8257532 total, 8257532 free, 0 used. 6646096 avail Mem
Из руководства по top можно сделать следующие выводы:
- Использованная CPU это 100 минус значение id (idle)
- Использованная память это значение used в строке, которая начинается с KiB Mem
us, user | time running un-niced user processes |
sy, system | time running kernel processes |
ni, nice | time running niced user processes |
id, idle | time spent in the kernel idle handler |
wa, IO-wait | time waiting for I/O completion |
hi | time spent servicing hardware interrupts |
si | time spent servicing software interrupts |
st | time stolen from this vm by the hypervisor |
Исходя из этих соображений, можно воспользоваться sed , awk и bc чтобы вытащить из выдачи top нужные величины и вычислить расход ресурсов.
#!/bin/bash IDLE=$(top -b -n 1 | grep ‘%Cpu(s)’ | sed ‘s/id.*//;s/^.*\,//’) MEM=$(top -b -n 1 | grep ‘KiB Mem’ | awk ‘
Комментарии к скрипту
- Строка 1: объявление bash скрипта
- Строка 2:
- Значение перед id нужно присвоить переменной IDLE
- top запускается в batch режиме (-b) один раз (-n 1)
- grep выделяет из выдачи top строку с %Cpu(s)
- Первое условие sed отбрасывается всё, что правее id, включая сам id
- Второе условие sed отбрасывает всё, что слева от последней запятой
- Строка 3:
- top запускается в batch режиме (-b) один раз (-n 1)
- awk находит нужный столбец
- Строка 4:
- bc помогает вычислить разность чисел
- Строка 5:
- Дата, расход ЦПУ и расход памяти записываются в log.txt
Потребление памяти отдельными процессами
Пример, скрипта, который в течении определённого количества секунд будет из показаний top выделять данные об использовании памяти и процессора несколькими определёнными процессами.
#!/bin/bash START=$(date +%s) DURATION=2 let COUNTER=$(date +%s)-$START while [ $COUNTER -lt $DURATION ]; do echo $(date ‘+Y-%m-%d %H:%M:%S,%3N’) >> log3.txt top -b -n 1 | grep ‘node\|postgres\|nginx’ | awk ‘
По умолчанию top выводит столбцы в следующем порядке
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
Узнать количество свободной памяти можно с помощью команды free
total used free shared buff/cache available Mem: 32538152 7937972 19124512 423056 5475668 23841896 Swap: 2097148 0 2097148
Если совместить free с watch получится настоящий мониторинг
Every 2.0s: free -m Sun Jan 17 16:20:10 2021 total used free shared buff/cache available Mem: 7820 1121 4339 56 2359 6361 Swap: 8063 0 8063
Каждые две секунды значение будет обновляться
-h human readable format
Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 89M 3.8G 3% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 9.1G 8.0G 54% / /dev/sda1 1014M 238M 777M 24% /boot tmpfs 783M 0 783M 0% /run/user/1000
Источник
Загрузка процессора Linux
Чтобы узнать хватает ли мощности процессора вашему серверу или компьютеру надо посмотреть загрузку процессора в данный момент или за последнее время. Это значение показывает на сколько процентов используется вычислительная мощность процессора.
В этой статье мы рассмотрим несколько способов решения этой задачи с помощью привычных системных утилит и более сложных инструментов.
Как посмотреть загрузку процессора в Linux
1. Утилита htop
Самый простой способ узнать насколько процессор загружен в данный момент — воспользоваться утилитой htop. Она показывает не только процент загрузки по каждому ядру процессора отдельно, но и позволяет найти процессы, которые нагружают систему больше всего. Для установки htop в Debian или Ubuntu выполните:
sudo apt install htop
А в CentOS или REHL:
sudo yum install htop
Главное окно программы выглядит вот так:
Здесь в верхней части окна выводится загрузка ядер процессора в виде наглядных шкал, а ниже процессы. В данном примере у процессора 12 ядер и каждое из них загружено не больше чем на один процент.
2. Файл /proc/loadavg
Если надо сориентироваться какая была нагрузка на процессор в последнее время, тут htop не поможет. Можно воспользоваться файлом /proc/loadavg. Его создаёт ядро и в нём содержится информация о средней нагрузке за одну, пять и пятнадцать минут. Но обратите внимание, данные, находящиеся в этом файле не такие однозначные. Во первых, это не проценты, во вторых, они отображают не нагрузку на процессор, а нагрузку на систему в целом.
Первые три значения в этом файле означают среднее количество процессов или потоков, которые выполняются, находятся в очереди на выполнение или ждут завершения операций ввода/вывода за 1, 5 и 15 минут. Вот:
Обычно, если значение больше единицы — значит нагрузка уже большая и надо разбираться почему. Если значение за минуту меньше значений за пять и пятнадцать минут — нагрузка падает, если больше — растёт. Таким образом можно немного сориентироваться насколько загружена ваша система. Эти значения можно использовать для общего ориентирования или отправки уведомлений на почту, а для разбора полётов уже применять другие метрики и программы.
Четвертое значение здесь — это количество процессов — выполняемых в данный момент, обычно соответствует количеству процессоров, следующее число через слеш — это общее количество таких процессов в системе. Последнее значение — PID последнего созданного процесса.
3. Утилита mpstat
Утилита mpstat позволяет посмотреть подробную статистику по использованию процессора. Можно посмотреть не только информацию по каждому из ядер, но и куда используются ресурсы — на ввод/вывод, ядро или программы пространства пользователя. Для установки программы в Ubuntu или Debian выполните:
sudo apt install sysstat
В CentOS или REHL:
sudo yum install sysstat
Для просмотра общей информации выполните такую команду:
А для просмотра подробностей по каждому ядру процессора используйте опцию -P с параметром ALL:
Вот значения колонок в выводе этой программы:
- CPU — номер ядра процессора;
- %usr — потребление программами пространства пользователя;
- %nice — потребление ресурсов в процентах программами в пространстве пользователя с повышенным приоритетом;
- %sys — потребление ресурсов процессора ядром;
- %iowait — затраты на ожидание ввода/вывода;
- %irq — ресурсы, потраченные на прерывания для работы с аппаратным обеспечением;
- %soft — ресурсы, потраченные на программные прерывания;
- %steal — украденные процессорные ресурсы, актуально для виртуальных машин;
- %guest — ресурсы, потраченные на работу виртуального процессора;
- %idle — неиспользованные ресурсы.
Как видите, в данном случае нагрузка на процессор не достигает даже трех процента для некоторых ядер.
4. Команда nmon
Утилита nmon позволяет выводить данные, в виде, похожем на htop, но только немного подробнее. Для установки её в Ubuntu и Debian выполните:
sudo apt install nmon
Для установки в CentOS или REHL:
sudo yum install nmon
После запуска надо нажать кнопку c для того чтобы отобразить информацию о нагрузке на ядра процессора:
Здесь кроме наглядной шкалы по каждому ядру выводится информация в процентах по таким показателям:
- User% — ресурсы, потраченные программами в пространстве пользователя;
- Sys% — ресурсы, потраченные ядром;
- Wait% — ресурсы, которые идут на ожидание ввода/вывода;
Здесь уже можно сориентироваться насколько всё загружено и в чём проблема.
5. CoreFreq
Если всей полученной ранее информации о производительности вам мало, можно воспользоваться утилитой CoreFreq. Её нет в официальных репозиториях, поэтому придется собирать программу из исходников. Но зато она имеет свой модуль ядра, который устанавливает свои счетчики производительности в ядре и возвращает утилите наиболее подробные данные. Сначала установите необходимые компоненты. В Ubuntu:
sudo apt install dkms git libpthread-stubs0-dev
В CentOS или REHL:
sudo yum group install ‘Development Tools’
Затем скачайте репозиторий утилиты с GitHub и соберите её:
git clone https://github.com/cyring/CoreFreq.git
Загрузите модуль ядра такой командой:
sudo insmod corefreqk.ko
Запустите её сервис:
Затем запускайте программу:
Вверху программы отображается информация о процессоре, ниже шкалы с загруженностью каждого ядра, а её ниже различные показатели по каждому ядру: частота — Freq, ускорение — Turbo, C0-C7 — значения состояний C-State процессора. В данном примере, большинство ядер процессора работают на минимальной частоте и большую часть времени находятся в состоянии C1. Это состояние означает, что ядро не активно, но может в любой момент перейти к выполнению инструкций. Состояние C0 — означает, что ядро активно и выполняет какие-то действия.
С помощью этой утилиты вы сможете узнать максимально подробную информацию о загрузке процессора и о самом процессоре в целом.
Выводы
В этой небольшой статье мы рассмотрели как определяется загрузка процессора Linux с помощью различных утилит. Как системных, так и сторонних. А какие утилиты для таких целей используете вы? Напишите в комментариях!
Источник