Краткое содержание:

Краткое содержание:

Вопрос: как мы можем сообщить РЕАЛЬНОЕ использование памяти (безкэш!) с помощьюнмонилиvmstatилисвмонна AIX 6?

нмон:
введите описание изображения здесь

vmstat:
введите описание изображения здесь

свмон:
введите описание изображения здесь

Как и в Linux, мы можем использовать команду free, но в AIX она недоступна:

[user@notebook ~]$ free -m
         total       used       free     shared    buffers     cached
Mem:          7797       4344       3453          0        219       2745
-/+ buffers/cache:       1379       6417
Swap:         2047          0       2047
[user@notebook ~]$ free -m | grep cache: | awk '{print $3}'
1379
[user@notebook ~]$ 

решение1

Короткая версия: посмотрите на используемые clnt+ persстраницы в svmon -Gвыходных данных (единица измерения — 4 тыс. страниц), если вы хотите узнать весь файловый кэш, или посмотрите на vmstat -v«файловые страницы» для файлового кэша, за исключением исполняемых файлов (та же единица измерения).


Если вы хотите получить полное представление о том, что происходит, вам следует ознакомиться со следующей статьей:Обзор замены страницы AIX.

Если говорить совсем кратко, то память в AIX классифицируется двумя способами:

  • Рабочая память против постоянной памяти

    • Рабочая память — это память процесса (стек, куча, разделяемая память) и память ядра. Если этот тип памяти нужно выгрузить, он идет в своп.

    • Постоянная память — это кэш файлов. Если его нужно выгрузить, он возвращается в файловую систему, откуда он пришел (для грязных страниц чистые страницы просто перерабатываются). Он подразделяется на неклиентские (или постоянные) страницы для файловых систем JFS и клиентские страницы для JFS2, NFS и, возможно, других.

  • Вычислительные и невычислительные страницы.

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

    • Другие типы кэша не являются вычислительными: это файловый кэш, который не является исполняемым (или разделяемая библиотека).

svmon -G(кстати, svmon -G -O unit=MBнемного дружелюбнее) дает вам рабочие и постоянные страницы. Столбец work, ну, рабочая память. Вы получаете постоянную память, складывая столбцы pers(JFS) и clnt(JFS2).

В вашем случае у вас есть около 730 МБ постоянных страниц, которые поддерживаются вашими файловыми системами (186151*4k страниц).

Теперь topasверхний правый «виджет» FileSystemCache (numperm)показывает что-то немного другое, и вы получите те же данные с помощью vmstat -v: это только невычислительные постоянные страницы. т.е. то же самое, что и выше, но без учета страниц для исполняемых файлов.

В вашем случае это около 350 МБ (2,2% от 16 ГБ).

В любом случае, кэша на самом деле не так уж и много.

решение2

Команда, которую вы ищете (на мой взгляд), следующая:

# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB

Ключевые варианты здесь:

  • 'filtertype=working' # то есть без кэша;
  • 'segment=off' # на самом деле по умолчанию при использовании -O
  • 'filtercat=exclusive' # не включать разделяемую память или ядро ​​atm
  • 'unit=MB' # кто хочет посчитать из # страниц ??

И вам следует рассмотреть другие параметры, такие как -C (связанные с именем команды, некоторые примеры ниже) и, возможно, -U (связанные с пользователем).

++++ начало комментария ++++

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

Ваш вывод vmstat говорит мне больше, чем просто о вашей текущей ситуации - поскольку это однострочный вывод - он исторический - и я подозреваю, что у вас были проблемы с памятью, поскольку он показывает историю pi/po (загрузка страницы в пространство подкачки/выгрузка страницы в пространство подкачки)

Другие интересные столбцы — это столбцы fr/sr:

  • fr: страницы, освобожденные lrud (самый недавний используемый демон, он же похититель страниц)
  • sr: страницы, отсканированные/просмотренные lrud в поисках «старой» страницы
  • sr/fr: отношение, выражающее, сколько страниц необходимо «отсканировать», чтобы освободить 1

Что меня беспокоит, так это приведенные здесь значения pi/po, которые совершенно не соответствуют данным из других команд, а также отсутствие времени безотказной работы, поэтому сложно понять, для чего «test» сгенерировал эти числа.

  • pi: страница пространства подкачки (т.е. чтение памяти приложения из пространства подкачки)
  • po: украсть память и записать память приложения (т.е. рабочую) в пространство подкачки — только рабочая память перемещается в/из пространства подкачки

В своей презентации вы показываете pi=22 и po=7. Это означает, что в среднем система считывала информацию из пространства подкачки (после того, как она была записана) в 3 раза чаще, чем записывала данные. Это признак голодной системы, поскольку данные считываются (pi), а затем снова крадутся (sr/fr) до того, как к ним кто-либо прикоснется (ссылаются, то есть используются) - или считываются и снова удаляются до того, как приложение, «ожидающее» их, когда-либо получит возможность получить к ним доступ.

Короче говоря, представленные данные не «синхронизированы» с «болевыми» моментами, хотя это может объяснить, почему только 2,2% вашей памяти теперь используется для кэширования (оно может быть даже «вычислительным, т.е. загруженными программами»).

НасколькоvmstatЯ также предлагаю использовать флаги -I (заглавная:i, которая добавляет «fi» и «fo» — активность fileIn и fileOut) и -w (широкая), чтобы числа лучше располагались под текстовыми заголовками.

++++ конец «комментария»

Давайте посмотрим отрывок, используя -P (просмотр процесса)

# svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB | head -15 

    Unit: MB

-------------------------------------------------------------------------------
     Pid Command          Inuse      Pin     Pgsp  Virtual
14614630 httpd             21.5     0.06        0     21.5
11272246 httpd             21.4     0.06        0     21.4
12779758 httpd             21.2     0.06        0     21.2
17760476 httpd             20.9     0.06        0     20.9
11796712 httpd             20.8     0.06        0     20.8
17039454 httpd             20.6     0.06        0     20.6
11862240 httpd             20.6     0.06        0     20.6
14680090 httpd             20.5     0.06        0     20.5
10747970 httpd             20.5     0.06        0     20.5
11141286 httpd             20.5     0.06        0     20.5
 4718766 mysqld            13.6     0.02        0     13.6

Если вы не являетесь пользователем root, вы видите только команды в своей среде.

$ svmon -P -O filtertype=working,segment=off,filtercat=exclusive,unit=MB
Unit: MB

-------------------------------------------------------------------------------
     Pid Command          Inuse      Pin     Pgsp  Virtual
 5505172 svmon             10.7     0.19     0.44     11.4
 6553826 ksh               0.57     0.02        0     0.57
 9175288 ksh               0.55     0.02        0     0.55
12910710 sshd              0.55     0.02        0     0.55
15204356 sshd              0.52     0.02        0     0.52
12779760 head              0.18     0.02        0     0.18

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

Краткое содержание:

svmon -C httpd -O filtertype=working,segment=off,filtercat=exclusive,unit=MB 
Unit: MB
===============================================================================
Command                              Inuse      Pin     Pgsp  Virtual
httpd                               227.44     0.69        0   227.44

Подробности: отрывок

    # svmon -C httpd -O filtertype=working,segment=category,filtercat=exclusive,unit=MB >
Unit: MB
===============================================================================
Command                              Inuse      Pin     Pgsp  Virtual
httpd                               230.62     0.81        0   230.62

...............................................................................
EXCLUSIVE segments                   Inuse      Pin     Pgsp  Virtual
                                    230.62     0.81        0   230.62

    Vsid      Esid Type Description              PSize  Inuse   Pin Pgsp Virtual
  81a203         3 work working storage              m   24.6     0    0    24.6
                   parent=883990
  8b82d7         3 work working storage              m   18.8     0    0    18.8
                   parent=834226
  8b9d37         3 work working storage              m   18.2     0    0    18.2
                   parent=884fb0
  8915f2         f work shared library data          m   2.00     0    0    2.00
                   parent=898373
  89abb3         f work shared library data          m   2.00     0    0    2.00
                   parent=84b9a9
  824ea4         f work shared library data          m   2.00     0    0    2.00

Это не очень хорошо отображает «сегмент=категория», поэтому теперь с помощью более простой команды — tail — и показываем сводку и подробности по каждому типу «сегмента» памяти — но по-прежнему только «рабочую» память (т. е. без кэширования)

# svmon -C tail -O filtertype=working,segment=category,unit=MB                    
Unit: MB
===============================================================================
Command                              Inuse      Pin     Pgsp  Virtual
tail                                  82.5     52.6     5.12     90.6

...............................................................................
SYSTEM segments                      Inuse      Pin     Pgsp  Virtual
                                      34.1     33.1     2.38     35.8

    Vsid      Esid Type Description              PSize  Inuse   Pin Pgsp Virtual
   10002         0 work kernel segment               m   34.1  33.1 2.38    35.8

...............................................................................
EXCLUSIVE segments                   Inuse      Pin     Pgsp  Virtual
                                      0.18     0.02        0     0.18

    Vsid      Esid Type Description              PSize  Inuse   Pin Pgsp Virtual
  88b4f1         f work working storage             sm   0.09     0    0    0.09
  82d005         2 work process private             sm   0.07  0.02    0    0.07
  8e0c9c         3 work working storage             sm   0.02     0    0    0.02

...............................................................................
SHARED segments                      Inuse      Pin     Pgsp  Virtual
                                      48.2     19.5     2.75     54.6

    Vsid      Esid Type Description              PSize  Inuse   Pin Pgsp Virtual
    9000         d work shared library text          m   48.2  19.5 2.75    54.6

решение3

nmon, затем нажмите «m», и вы быстро увидите несколько крупных вариантов использования памяти.

ipcs -am

Общая память, используемая многими приложениями, такими как DB2 и Oracle — проверьте SEGSZ для размера из ipcs -amкоманды. Столбец Owner обычно сообщает вам, для чего он используется, например, пользователь oracle для SGA или db2inst1 для буферного кэша DB2.

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

Из-за этого неизвестного разделения часто бывает так, что если сложить всю память всех процессов, то она, очевидно, намного больше, чем объем памяти.

Если вы используете nmon«t» для верхних процессов, а затем «4» для упорядочивания по размеру процесса, вы увидите память процесса.

  • Размер КБ = размер, указанный в файле программы на диске.
  • Размер резидентного набора = его размер в памяти (исключая страницы, все еще находящиеся в файловой системе (например, код) и некоторые части на дисках подкачки)».
  • Столбец ResText — это кодовые страницы резидентного набора.
  • Столбец ResData — это страницы данных и стека резидентного набора.

решение4

Команда topasпоказывает реальную память и процент памяти компьютера. Она должна быть доступна по умолчанию в AIX, и она похожа (но предоставляет гораздо больше информации) topна Linux.

При запуске topasпо умолчанию отображается множество информации (самые популярные процессы, использующие ЦП, сводка по использованию памяти и т. д.), а при нажатии hотображается встроенный текст справки с другими клавишами и их функциями (например, при нажатии cнесколько раз будут циклически отображаться различные способы отображения использования ЦП).

Связанный контент