norguhtar (norguhtar) wrote in ru_openvz,
norguhtar
norguhtar
ru_openvz

vzubc: замена cat /proc/user_beancounters

Как хотелось бы заметить, использование user beancounters никогде не было простым. Требовалось чтение большого количества документации и хорошего понимания как они работают, и за что отвечают. Несмотря на то, что мы сделали большой шаг добавив новый функционал в виде VSwap, многие до сих пор продолжают использовать user beancounters.

Эта запись о утилите которую я написал для себя еще в мае 2011. Сейчас она добавлена в пакет vzctl и доступна начиная с версии 3.0.27. Хотя она просто заменяет команду cat /proc/user_beancounters, но обладает большим функционалом чем просто cat.

Давайте рассмотрим что же умеет vzubc:

Для начала утилита умеет показывать счетчики held, maxheld, barrier, limit и fail в человекочитаемом виде. При этом параметры помещаются в стандартный 80-колоночный терминал (в отличии от /proc/user_beancounters на x86_64 системах). Значения указанные в страницах (к примеру physpages) преобразуются в байты, а длинные значения конвертируются в кило, мега, гигабайты так же как делает флаг -h у ls и df. Счетчики held и maxheld, отображаются в процентах и указывают насколько они близки к barrier и limit. Утилиту можно использовать как внутри контейнера так и снаружи. Дополнительно можно указать идентификатор или имя контейнера
для отображения информации только для него.

Кроме этого имеются дополнительные режимы:
Режим автообновления (при помощи утилиты watch) аля top.
Режим "relative failcnt" (показывает увеличение UBC fail счетчиков с последнего запуска).
"Тихий" режим (показывает только те параметры которые приблизились к своим лимитам или превысили их).

Вывод vzubc по умолчанию для конкретной VE (без vswap) выглядит так:
# vzubc 1009
----------------------------------------------------------------
CT 1009      | HELD Bar% Lim%| MAXH Bar% Lim%| BAR | LIM | FAIL
-------------+---------------+---------------+-----+-----+------
     kmemsize|1.52M  11%  10%|1.81M  13%  12%|13.7M|14.1M|    - 
  lockedpages|   -    -    - |   -    -    - |   8M|   8M|    - 
  privvmpages| 2.6M   1%   1%|4.32M   2%   2%| 256M| 272M|    - 
     shmpages|   -    -    - |   -    -    - |  84M|  84M|    - 
      numproc|  10    4%   4%|  15    6%   6%| 240 | 240 |    - 
    physpages|17.3M   -    - |18.6M   -    - |   - |   - |    - 
  vmguarpages|   -    -    - |   -    -    - | 132M|   - |    - 
 oomguarpages|1.52M   2%   - |1.52M   2%   - | 102M|   - |    - 
   numtcpsock|   2  0.6% 0.6%|   3  0.8% 0.8%| 360 | 360 |    - 
     numflock|   1  0.5% 0.5%|   2    1%   1%| 188 | 206 |    - 
       numpty|   -    -    - |   -    -    - |  16 |  16 |    - 
   numsiginfo|   -    -    - |   6    2%   2%| 256 | 256 |    - 
    tcpsndbuf|34.1K   2%   1%|51.1K   3%   2%|1.64M|2.58M|    - 
    tcprcvbuf|  32K   2%   1%|  48K   2%   2%|1.64M|2.58M|    - 
 othersockbuf|2.26K 0.2% 0.1%|14.6K   1% 0.7%|1.07M|   2M|    - 
  dgramrcvbuf|   -    -    - |   -    -    - | 256K| 256K|    - 
 numothersock|  44   12%  12%|  47   13%  13%| 360 | 360 |    - 
   dcachesize| 618K  18%  17%| 627K  18%  17%|3.25M|3.46M|    - 
      numfile| 114    1%   1%| 125    1%   1%|9.09K|9.09K|    - 
    numiptent|  20   15%  15%|  20   15%  15%| 128 | 128 |    - 
    swappages|   -    -    - |   -    -    - |   - |   - |    - 
----------------------------------------------------------------

Как вы видите, утилита показывет все beancounters в человекочитаемой форме. Вместо нулевых и неограниченных значений утилита показывает прочерки. Так же она показывает соотношение held и maxheld к barrier и limit в процентах.

Теперь о функциональности, доступной через ключи командной строки.

Во-первых обратимся к ключу -q или --quiet который включает "тихий режим". В этом режиме отображаются только те beancounters что переходили лимиты или же близки к их достижению. Если vzubc -q ничего не отображает, то это говорит о том что вам не надо беспокоиться о UBC. При этом используются два встроенных порога для "тихого режима" один для barrier, второй для limit. Их можно изменять их через ключи -qh и -qm.

Следующий ключ это -c или --color который добавляет подсветку полей. В этом режиме "предупреждения" показываются желтым, а "ошибки" красным. Под предупреждениями подразумеваются те параметры, что близки достижению лимитов, а ошибки те параметры что превышали лимиты.

Скриншот приведенный ниже демонстрирует комбинацию ключей -c и -q. Я запустил forkbomb внутри контейнера для исчерпания ресурсов:



Ключ -r или --relative это ответ на частый вопрос "Как мне сбросить failcnt?". На самом деле утилита сохраняет текущее значение failcnt при первом запуске, а при последующих запусках показывает изменение (а не абсолютное значение).
Выглядит это так:



Ключ -i или --incremental добавляет в вывод еще одну колонку, которая показывает изменения held значений с предыдущего запуска. Опция может работать совместно с "тихим" режимом. Показываются при этом только те счетчики которые изменились с предыдущего запуска.

Скриншот приведенный ниже демонстрирует следующие режимы vzubc
color, relative, incremental, quiet:



И последний ключ. Вы можете использовать -w или --watch для включения режима
аля top для просмотра beancounters. Этот режим не настолько мощен как top, так как
просто использует утилиту watch(1) для запуска vzubc каждые 2 секунды. Так же замечу,
что этот режим не совместим с --color и вам требуется нажать Ctrl-C для выхода.

Я не большой любитель анимированных gif, так что скриншота в действии не будет.

Дополнительно можно обратиться к странице man vzubc(8) которая содержит более
формальную информацию о vzubc включая некоторые ключи, которые не описаны здесь.
Наслаждайтесь.

Перевод vzubc: better cat /proc/user_beancounters
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments