Получение информации об используемых ресурсах

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Получение информации об используемых ресурсах

Сообщение sunny1983 »

Вопрос: как получить информацию об используемых ресурсах компьютера так, чтобы получить действительно полезную информацию, которая позволит администратору принять решение? Речь идёт о таких ресурсах как оперативная память и ресурсы процессора.
Начнём с памяти. Вот есть такие инструменты как ps, top, htop в выводе которых есть столбцы RES и SHR, в адресное пространство процесса включены разделяемые библиотеки, которые потому и называются разделяемыми, что используются одновременно несколькими процессами, поэтому поле SHR, которое показывает память процесса + память библиотек будет давать необъективную информацию и нужно смотреть поле RES, я правильно рассуждаю?
Самые ресурсоёмкие приложения как правило являются многопотоковыми, то есть, если запущен httpd, то htop покажет около 10 строк htop, я правильно понимаю, чтобы определить сколько httpd жрёт памяти, мне нужно просуммировать все строки httpd по полю RES? Есть ли в линуксе инструменты, аналоги htop, которые умеют делать такое суммирование?
Но самое интересное это с виртуализацией. Вот допустим у меня запущена виртуальная машина KVM, htop показывает несколько процессов qemu-system-x86_64, у каждого из которого в поле RES по 500 Мбайт. Но позвольте, qemu-system-x86_64 - это процесс в userspace, а KVM переводится как Kernel-based Virtual Machine, то есть должен быть некий процесс в пространстве ядра и именно он и должен потреблять гигабайты, почему же htop показывает не его, а qemu-system-x86_64
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение Hephaestus »

sunny1983 писал:
03.06.2020 08:55
я правильно понимаю, чтобы определить сколько httpd жрёт памяти, мне нужно просуммировать все строки httpd по полю RES?
Судя, по выводу htop, нет.
У меня открыт браузер, htop показывает кучу потоков. Цифры в колонках RES и SHR для всех строк
одинаковы и меняются синхронно. Значит, это общий объем для всех потоков.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Получение информации об используемых ресурсах

Сообщение Bizdelnick »

top по умолчанию суммирует потоки.
Добавлено (09:46):
sunny1983 писал:
03.06.2020 08:55
KVM переводится как Kernel-based Virtual Machine, то есть должен быть некий процесс в пространстве ядра и именно он и должен потреблять гигабайты
Не должен. Это гипервизор, его дело — обеспечить изоляцию, а не жрать память.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение sunny1983 »

То есть виртуальные машины выполняются вовсе не в гипервизоре?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Получение информации об используемых ресурсах

Сообщение Bizdelnick »

В процессоре они выполняются.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение sunny1983 »

Ну понятно что в процессоре, я имел ввиду, что вся гостевая ос с её процессами выглядит ведь как один процесс в хостовой ос? Чем задачи гипервизора kvm.ko отличаются от задач процесса qemu-system-x86_64? У kvm.ko ведь приоритет при выполнении выше, то есть было бы логичнее ресурсы ему отдать, чтобы виртуальная машина быстрее выполнялась?
Bizdelnick писал:
03.06.2020 09:44
top по умолчанию суммирует потоки
Почему тогда в top процессы chromuim-browser у меня отображаются не просуммированными?
Спасибо сказали:
Аватара пользователя
yoricI
Сообщения: 2385
ОС: gentoo fluxbox

Re: Получение информации об используемых ресурсах

Сообщение yoricI »

sunny1983 писал:
07.06.2020 02:50
Чем задачи гипервизора kvm.ko отличаются от задач процесса qemu-system-x86_64?
Почитайте про модули ядра в частности, и вообще про qemu.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение Hephaestus »

sunny1983 писал:
07.06.2020 02:50
Почему тогда в top процессы chromuim-browser у меня отображаются не просуммированными?
Потому, что это процессы, а не потоки. Потоки в top вообще не видны.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение sunny1983 »

Ну да, процесс от потока отличается тем, что каждый процесс работает в своём отдельном адресном пространстве, а несколько потоков могут работать в едином. Но это не меняет сути вопроса, можно спросить, если ли инструменты, которые умеют делать суммирование потоков, можно, которые умеют делать суммирование и потоков и процессов, суть в том, чтобы просуммировать сущности из которых состоит некая вполне понимаемая единица и понять сколько ресурсов она (единица) потребляет.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Получение информации об используемых ресурсах

Сообщение Bizdelnick »

sunny1983 писал:
07.06.2020 02:50
Чем задачи гипервизора kvm.ko отличаются от задач процесса qemu-system-x86_64?
Тем, что kvm.ko управляет разделением аппаратных ресурсов (т. н. ring -1), а qemu-system-x86_64 запускает систему с использованием этих ресурсов.
sunny1983 писал:
07.06.2020 02:50
У kvm.ko ведь приоритет при выполнении выше, то есть было бы логичнее ресурсы ему отдать, чтобы виртуальная машина быстрее выполнялась?
С чего Вы взяли?
sunny1983 писал:
07.06.2020 02:50
Почему тогда в top процессы chromuim-browser у меня отображаются не просуммированными?
Потому что это именно разные процессы. Архитектура у него такая.
Добавлено (11:42):
Hephaestus писал:
07.06.2020 08:56
Потоки в top вообще не видны.
Если попросить (опция -H или интерактивная команда H), то станут видны.
Добавлено (11:45):
sunny1983 писал:
07.06.2020 11:28
Но это не меняет сути вопроса, можно спросить, если ли инструменты, которые умеют делать суммирование потоков, можно, которые умеют делать суммирование и потоков и процессов, суть в том, чтобы просуммировать сущности из которых состоит некая вполне понимаемая единица и понять сколько ресурсов она (единица) потребляет.
Так сформулируйте для начала, как Вы понимаете эту единицу, а потом уже задавайте вопрос. Если, конечно, в процессе формулировки само собой не придёт и понимание ответа.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение Hephaestus »

sunny1983 писал:
07.06.2020 11:28
можно спросить, если ли инструменты, которые умеют делать суммирование потоков
В выводе top потоков вообще нет, только процесс, потоки суммирует.
В выводе htop потоки видны, как отдельные строки, но цифры общие для всех, стало быть, суммирует.
sunny1983 писал:
07.06.2020 11:28
умеют делать суммирование и потоков и процессов
Я лично таких не знаю, потому что
sunny1983 писал:
07.06.2020 11:28
некая вполне понимаемая единица
на самом деле, не очень понимаемая.
У меня открыто несколько вкладок в терминале - это одна единица или несколько?
У меня открыто несколько окон терминала по одной вкладке - это одна единица или несколько?
У меня открыто несколько окон терминала, в которых разное число вкладок - это сколько единиц?
Если задача "суммировать сущности", сущность здесь вроде как одна - терминал.
С другой стороны, можно считать, что отдельная сущность - это окно.
А с точки зрения менеджера процессов картина вообще другая: куча процессов с одинаковым названием.
То же самое с браузером: разные окна, в каждом окне разные вкладки.
Добавлено (11:58):
Bizdelnick писал:
07.06.2020 11:40
Если попросить (опция -H или интерактивная команда H), то станут видны.
Да, я знаю, пробовал. Что-то там добавилось, но не очень понятно. В htop это сделано куда наглядней.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение sunny1983 »

Hephaestus писал:
07.06.2020 11:56
на самом деле, не очень понимаемая.
У меня открыто несколько вкладок в терминале - это одна единица или несколько?
У меня открыто несколько окон терминала по одной вкладке - это одна единица или несколько?
У меня открыто несколько окон терминала, в которых разное число вкладок - это сколько единиц?
Если задача "суммировать сущности", сущность здесь вроде как одна - терминал.
С другой стороны, можно считать, что отдельная сущность - это окно.
А с точки зрения менеджера процессов картина вообще другая: куча процессов с одинаковым названием.
То же самое с браузером: разные окна, в каждом окне разные вкладки.
Когда я запускаю top, я вижу несколько процессов с одинаковым cmdline, их стало быть и надо суммировать. Некоторые серверные приложения можно настраивать, например httpd при помощи замены мультипроцессной модели prefork на worker можно сделать web-сервер из многопроцессового многопоточным, но тут интересует не то процессами являются сущности или потоками, а сколько это всё потребляет ресурсов. Вопрос же был получить информацию, чтобы принять решение: всё нормально или нужно выставить более жёсткие лимиты или докупит памяти. То же самое можно сказать о клиентских процессах, таких как chromuim-browser, мне нужна информация о принятии решений, если я увижу, что браузер потребляет более 50% ресурсов, то я докуплю памяти или сделаю вывод, что в данной версии браузера имеют место утечки памяти и сменю браузер.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение Hephaestus »

sunny1983 писал:
08.06.2020 06:54
Когда я запускаю top, я вижу несколько процессов с одинаковым cmdline, их стало быть и надо суммировать.
Весьма неоднозначно.
На примере браузера: chromuim-browser создает кучу процессов и чтобы выяснить, сколько потребляет "сущность", нужно просуммировать цифры по всем процессам. Казалось бы, всё просто.
Но если вдруг открыто несколько копий chromuim-browser, тогда просто так суммировать уже нельзя, иначе вы получите объем потребления двух/трех/четырех браузеров, а не одного, причём потреблять они будут не поровну, скорее всего.
Информация не слишком пригодна для принятия решения. Появляются как минимум одно дополнительное условие: должно быть запущено не больше одной копии программы. Суммировать по окнам тоже может не получиться: могут быть дополнительные процессы в фоне (типа всяких лаунчеров). В результате оптимальным может оказаться способ, который есть сейчас.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Получение информации об используемых ресурсах

Сообщение Bizdelnick »

sunny1983 писал:
08.06.2020 06:54
Когда я запускаю top, я вижу несколько процессов с одинаковым cmdline, их стало быть и надо суммировать.
А если эти процессы (для примера, тот же chromium-browser) принадлежат разным пользователям? Или, скажем, какая-нибудь графическая программка запущена в локальной сессии и тем же пользователем по ssh? Надо их суммировать или нет?
sunny1983 писал:
08.06.2020 06:54
Вопрос же был получить информацию, чтобы принять решение: всё нормально или нужно выставить более жёсткие лимиты или докупит памяти.
Так не всё ли равно, какие процессы сколько жрут в сумме или по отдельности? Общее потребление видно, если память забита — надо что-то делать.

Вообще, конечно, есть критерии, вполне годные для группировки процессов: группы процессов, cgroups и т. п. Для cgroup можно вообще задать лимит потребления памяти. Поизучайте этот вопрос.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
sunny1983
Сообщения: 357
ОС: GNU/Linux 4.x (Fedora, Debian)
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение sunny1983 »

Первые ссылки в google говорят, что cgroups - это вообще-то не про то, а про контейнеризацию, но ладно, почитаю.
Нашёл пример. когда суммирование могло бы быть полезным, представьте сервер хостинга, на котором запущены nginx, httpd, mysqld, php-fpm (его на сервере есть в сразу нескольких сборках, для разных версий PHP и с разными конфигурациями). Допустим я запускаю top, вижу несколько строк всей этой радости, где каждый процесс потребляет не более 50 Мбайт и считаю что всё нормально, но при этом не пролистываю вниз, а внизу у меня скажем ещё сотня процессов php-fpm, каждый из которых, вроде бы потребляет всего 20 Мбайт, но их - сотня, поэтому я не вижу, что некий скрипт монополизировал ресурсы.
Вопрос с виртуальными машинами кстати прояснился, top в отличие от htop показал, что qemu-system-x86_64 потребляет 2 Гбайт, ровно столько виртуальной машине и выделено, kvm.ko я упомянул, потому что читал в одной книге, что процессы уровня ядра выполнятся с большим приорететом чем процессы уровня пользователя, но на самом деле я в архитектуре Linux разбираюсь плохо. Кстати вопрос, а где можно посмотреть потребление ресурсов самим ядром?
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Получение информации об используемых ресурсах

Сообщение Hephaestus »

sunny1983 писал:
09.06.2020 08:00
Нашёл пример. когда суммирование могло бы быть полезным
Вопрос не в том, что оно не может быть полезным.
Вопрос в том, что оно должно делаться в разных случаях по-разному.
Менеджер суммирует то, что имеет смысл суммировать _всегда_.
Остальные варианты суммирования плохо алгоритмизируются, как видите.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20794
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Получение информации об используемых ресурсах

Сообщение Bizdelnick »

sunny1983 писал:
09.06.2020 08:00
Первые ссылки в google говорят, что cgroups - это вообще-то не про то, а про контейнеризацию, но ладно, почитаю.
Контейнеризация — только одно из их применений.
sunny1983 писал:
09.06.2020 08:00
Допустим я запускаю top, вижу несколько строк всей этой радости, где каждый процесс потребляет не более 50 Мбайт и считаю что всё нормально, но при этом не пролистываю вниз, а внизу у меня скажем ещё сотня процессов php-fpm, каждый из которых, вроде бы потребляет всего 20 Мбайт, но их - сотня, поэтому я не вижу, что некий скрипт монополизировал ресурсы.
Нормально всё или ненормально — видно уже по 4 и 5 строчкам вывода, для этого ничего никуда пролистывать не надо.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить