vzubc v.3
2011-05-21 05:40:43
This is a third version of vzubc script. I kinda start to like it, it is really helpful. I will ...
+ развернуть текст сохранённая копия
This is a third version of vzubc script. I kinda start to like it, it is really helpful. I will probably finish the TODO, write the man page and will include the tool to vzctl.
The script parses /proc/bc/resources (or /proc/user_beancounters) and outputs it in a more human-readable format.
FEATURES:
1. Held, maxheld, barrier, limit, and fail counter are shown for every beancounter.
2. Values that are in pages are converted to bytes
3. Long values are converted to kilo-, mega-, gigabytes etc.
4. For held and maxheld it shows how close the value to the barrier and the limit, in per cent
5. Can be used both inside CT and on HN
6. User can specify CTIDs or CT names to output info about
7. Optional top-like autoupdate mode (using "watch")
8. Optional "relative failcnt" mode (show increase in UBC fail counters since last run)
9. Optional quiet mode (only shows "worth to look at" UBCs (ie ones close to limits and/or with failcnt))
CHANGES from v.2:
* Added lots of options/features (watch mode, relative failcnt, quiet), TODO list is times
Script: vzubc
Example output:
vzubc -c 111 -q
-------------------------------------------------------------------
CT 111 | HELD Bar% Lim%| MAXH Bar% Lim%| BAR | LIM |+FAIL
-------------+-----------------+-----------------+-----+-----+-----
kmemsize|13.6M 99% 96%|13.7M 100% 97%|13.7M|14.1M| 19
numproc| 170 70% 70%| 172 71% 71%| 240 | 240 | -
-------------------------------------------------------------------
TODO:
* colors
* recognize vSwap
* add UBC consistency check a la vzcfgvalidate (helpful for CT owner!)
* rewrite in C??
Тэги:
homemade,
openvz,
work
vzubc v.2
2011-05-20 14:21:39
This is a second version of vzubc script. The script is written in AWK, it parses /proc/ ...
+ развернуть текст сохранённая копия
This is a second version of vzubc script. The script is written in AWK, it parses /proc/user_beancounters and tries to output it in a more human-readable format.
FEATURES:
1. Held, maxheld, barrier, limit, and fail counter are shown for every beancounter.
2. Values that are in pages are converted to bytes
3. Long values are converted to kilo-, mega-, gigabytes etc.
4. For held and maxheld it shows how close the value to the barrier and the limit, in per cent
5. Can be used both inside CT and on HN
CHANGES from v.1:
* Added barrier and limit display
* Added percentage of held/maxheld to limit (it was only for barrier)
* More proper long values display, now with decimal point if possible (similar to ls -lh)
* ASCII table like output
* Zeroes and 'unlimited' are shown as '-'
TODO:
* colors
* recognize vSwap
* use /proc/bc/*/resources if available
* quieter mode (only show values close to limits and/or with failcnt > 0)
* save failcnt and show the difference from the prev. run
* add interactive mode (top-like) using watch
* add UBC consistency check a la vzcfgvalidate (helpful for CT owner!)
* rewrite in C??
Script source:
#!/bin/sh
f=${1:-/proc/user_beancounters}
cat $f | LANG=C awk '
function hr(res, v) {
if ((v == 9223372036854775807) || (v == 2147483647) || (v == 0))
return "- ";
i=1
if ((res ~ /pages$/) && (v != 0)) {
v = v*4; i++
}
while (v >= 1024) {
v=v/1024
i++
}
fmt="%d%c"
if (v < 100)
fmt="%.3g%c"
return sprintf(fmt, v, substr(" KMGTPEZY", i, 1))
}
function dp(p, d) {
if ((d == 0) || (d == 9223372036854775807) || (d == 2147483647))
return "- "
r = sprintf("%.2f", p / d * 100);
fmt="%d"
if (r < 10)
fmt="%.2g"
r = sprintf(fmt, r)
if (r == 0)
return "- "
return r "%"
}
/^Version: / {
if ($2 != "2.5") {
print "Error: unknown version:",
$2 > "/dev/stderr"
exit 1
}
next
}
/^[[:space:]]*uid / {
next
}
/^[[:space:]]*dummy/ {
id=""
next
}
/^[[:space:]]*[0-9]+:/ {
bcid=strtonum($1)
printf "-------------------------------------------------------------------\n"
printf "CT %-10s| HELD Bar%% Lim%%| MAXH Bar%% Lim%%| BAR | LIM | FAIL\n", bcid
printf "-------------+-----------------+-----------------+-----+-----+-----\n"
id=$2
held=$3
maxheld=$4
barrier=$5
limit=$6
failcnt=$7
}
/^[[:space:]]*[a-z]+/ {
id=$1
held=$2
maxheld=$3
barrier=$4
limit=$5
failcnt=$6
}
(id!="") {
printf "%13s|%5s %5s %5s|%5s %5s %5s|%5s|%5s| %5s\n",
id,
hr(id, held), dp(held, barrier), dp(held, limit),
hr(id, maxheld), dp(maxheld, barrier), dp(maxheld, limit),
hr(id, barrier), hr(id, limit), hr(id, failcnt)
id=""
}
'
Example output:
-------------------------------------------------------------------
CT 60 | HELD Bar% Lim%| MAXH Bar% Lim%| BAR | LIM | FAIL
-------------+-----------------+-----------------+-----+-----+-----
kmemsize| 933K 5% 5%|1.92M 12% 11%|15.8M|16.8M| -
lockedpages| - - - | - - - | 128K| 128K| -
privvmpages|4.15M 1.1% 0.99%|10.4M 2% 2%| 384M| 418M| -
shmpages| - - - | - - - | 32M| 32M| -
numproc| 7 5% 5%| 17 13% 13%| 130 | 130 | -
physpages|2.63M - - |7.86M - - | - | - | -
vmguarpages| - - - | - - - | 24M| - | -
oomguarpages|2.63M 10% - |7.86M 32% - | 24M| - | -
numtcpsock| 2 2% 2%| 2 2% 2%| 80 | 80 | -
numflock| 2 2% 1.8%| 3 3% 2%| 100 | 110 | -
numpty| - - - | - - - | 16 | 16 | -
numsiginfo| - - - | 2 0.78% 0.78%| 256 | 256 | -
tcpsndbuf| - - - | - - - | 312K| 512K| -
tcprcvbuf| - - - | - - - | 312K| 512K| -
othersockbuf|2.27K 0.88% 0.34%|8.12K 3% 1.2%| 258K| 658K| -
dgramrcvbuf| - - - |8.27K 6% 6%| 129K| 129K| -
numothersock| 3 3% 3%| 10 12% 12%| 80 | 80 | -
dcachesize| - - - | - - - | 2M| 3M| -
numfile| 169 2% 2%| 290 3% 3%| 8K| 8K| -
numiptent| - - - | - - - | 128 | 128 | -
-------------------------------------------------------------------
CT 0 | HELD Bar% Lim%| MAXH Bar% Lim%| BAR | LIM | FAIL
-------------+-----------------+-----------------+-----+-----+-----
kmemsize|3.69M - - |4.72M - - | - | - | -
lockedpages| - - - |29.4M - - | - | - | -
privvmpages|15.7M - - |61.5M - - | - | - | -
shmpages|2.56M - - |2.62M - - | - | - | -
numproc| 77 - - | 86 - - | - | - | -
physpages| 8.8M - - |16.3M - - | - | - | -
vmguarpages| - - - | - - - | - | - | -
oomguarpages| 8.8M - - |16.3M - - | - | - | -
numtcpsock| 3 - - | 5 - - | - | - | -
numflock| 1 - - | 2 - - | - | - | -
numpty| 1 - - | 1 - - | - | - | -
numsiginfo| - - - | 2 - - | - | - | -
tcpsndbuf|81.7K - - |81.7K - - | - | - | -
tcprcvbuf| 48K - - | - - - | - | - | -
othersockbuf|31.7K - - |50.8K - - | - | - | -
dgramrcvbuf| - - - |10.8K - - | - | - | -
numothersock| 30 - - | 34 - - | - | - | -
dcachesize| - - - | - - - | - | - | -
numfile|1.18K - - |1.29K - - | - | - | -
numiptent| - - - | - - - | - | - | -
Тэги:
homemade,
openvz,
work
vzubc
2011-05-11 14:41:55
This script parses /proc/user_beancounters and tries to output it in a more human-readable format.
...
+ развернуть текст сохранённая копия
This script parses /proc/user_beancounters and tries to output it in a more human-readable format.
- Held, maxheld, and fail counter are shown for every beancounter.
- Values that are in pages are converted to bytes
- Long values are converted to kilo-, mega-, gigabytes etc.
- For held and maxheld it shows how close the value to the limit, in per cent
- Can be used both inside CT and on HN
TODO:
- colors
- recognize vSwap
- quieter mode (only show values close to limits and/or with failcnt > 0)
- save failcnt and show the difference from the prev. run
- add interactive mode (top-like) using watch
- add UBC consistency check a la vzcfgvalidate (helpful for CT owner!)
- rewrite in C??
#!/bin/sh
f=$1
test -z "$f" && f="/proc/user_beancounters"
cat $f | awk '
function hr(res, v) {
i=1
if ((res ~ /pages$/) && (v != 0)) {
v = v*4; i++
}
while (v > 1024) {
v=v/1024
i++
}
o=int(v) substr(" KMGTPEZY",i,1)
return o;
}
/^Version: / {
if ($2 != "2.5") {
print "Error: unknown version:",
$2 > "/dev/stderr"
exit 1
}
next
}
/^[[:space:]]*uid / {
next
}
/^[[:space:]]*dummy/ {
id=""
next
}
/^[[:space:]]*[0-9]+:/ {
bcid=strtonum($1)
printf "CT:%9s| held | maxheld | fails\n", bcid
id=$2
held=$3
maxheld=$4
barrier=$5
limit=$6
failcnt=$7
}
/^[[:space:]]*[a-z]+/ {
id=$1
held=$2
maxheld=$3
barrier=$4
limit=$5
failcnt=$6
}
(id!="") {
if (barrier == 0)
barrier=limit;
printf "%12s %5s %5.1f%% %5s %5.1f%% %5s\n", id,
hr(id, held), held / barrier * 100,
hr(id, maxheld), maxheld / barrier * 100,
hr(id, failcnt)
id=""
}
'
Example output:
CT: 90162| held | maxheld | fails
kmemsize 4M 4.1% 7M 6.5% 0
lockedpages 0 0.0% 0 0.0% 0
privvmpages 38M 1.9% 461M 22.5% 0
shmpages 2M 0.4% 2M 0.4% 0
numproc 31 1.6% 43 2.2% 0
physpages 21M 0.0% 441M 0.0% 0
vmguarpages 0 0.0% 0 0.0% 0
oomguarpages 21M 0.0% 441M 0.0% 0
numtcpsock 6 0.2% 15 0.5% 0
numflock 5 0.3% 7 0.5% 0
numpty 1 0.8% 1 0.8% 0
numsiginfo 0 0.0% 2 0.2% 0
tcpsndbuf 113K 0.8% 2M 17.3% 0
tcprcvbuf 96K 0.7% 0 0.0% 0
othersockbuf 2K 0.0% 45K 0.5% 0
dgramrcvbuf 0 0.0% 8K 0.4% 0
numothersock 8 0.3% 14 0.5% 0
dcachesize 455K 1.7% 625K 2.3% 0
numfile 2K 2.8% 3K 4.5% 0
numiptent 16 1.6% 16 1.6% 0
Тэги:
homemade,
openvz,
work
день
2011-02-28 04:22:04
Лёг спать в полночь. Проснулся в 4:30, попил чаю, сел починять vzctl. Сначала исправил и улучшил ...
+ развернуть текст сохранённая копия
Лёг спать в полночь. Проснулся в 4:30, попил чаю, сел починять vzctl. Сначала исправил и улучшил клудж в инитскрипте, потом починил ужасную багу с create, которую почему-то никто не репортил, и в довершение добавил поясняющее сообщение для одного интересного случая. Помылся, ещё выпил чаю, выпустил обновлённое ядро. Позвонил, разбудил коллегу, помылся, выпил ещё чаю.
Пришёл Роб, пошли завтракать в Denny's. Съел t-bone steak, хорошо прожаренный, кукурузную (?) кашу (grits), четыре тоста, черепаший чизкейк, выпил 4 кружки кофе (американо). Хорошо.
Потом пошли печатать ещё флаеров, по дороге на заправке купили энергетиков Rockstar и пару шоколадок. Флаеры не напечатали, потому что Fedex Office в воскресенье закрыт. Пошли на выставку. Оставил на стенде Роба, сам пошёл искать копир, сделал 50 чёрно-белых копий флаера на всякий случай, вернулся на стенд. Настроили демо, показывали, рассказывали всем, зазывали, отвечали на вопросы. Между прочим я собрал и выпустил новый vzctl 3.0.26.
Пришёл мужик, который вчера мне жаловался, что не смог внутри контейнера настроить VNC c XFCE, KDE или GNOME. Я вчера немножко настраивал, но недонастраивал. Мужик предложил нам сендвичи купить и ушёл, а я стал донастраивать. Поставил фаерфокс, он дотянул по зависимостям какие-то недостающие пакеты, всё стало работать хорошо! Завёл тестового юзера, настроил /etc/sysconfig/vncserver, добавил в автозагрузку. Пришёл мужик, поели сендвичи, мне достался с ветчиной и солёным огурцом, ещё умял пакетик чипсов. Показал мужику, что у меня всё работает, рассказал, как модифицировать и перепаковывать темплейт.
Ещё много всяких людей приходило разных. В 16:00 внезапно все стали сворачиваться, и мы стали сворачиваться. Пришёл Джон Вегнер, рассказывал мне про прямую демократию, обещал завести логин на vpscoop ноде. Я сказал, что давайте, чего уж.
Позвонил Миша, зашли к ним на стенд Питона, я там полежал на ковре, посмотрел в потолок на лампочки, потому что очень устал. На ковре лежать хорошо, он мягкий и спина отдыхает. С Мишей мы никуда не пошли, потому что уже поели и потому что в 7 обещал приехать Юра. Разошлись с Робом по комнатам, надо бы поспать, а я тут сижу пишу, чай пью.
Вероятно, в 7 приедет Юра, отвезёт нас поужинать в какую-то сосисочную с пивом, может, к тому времени появится аппетит. Потом обратно в отель и спать. Такой день.
Тэги:
angeles,
los,
openvz,
ustrip,
work
воскресенье программиста
2011-02-27 19:07:50
Воскресенье, раннее утро, отель Хилтон рядом с аэропортом Лос-Анжелеса (где, вроде бы, сегодня будут ...
+ развернуть текст сохранённая копия
Воскресенье, раннее утро, отель Хилтон рядом с аэропортом Лос-Анжелеса (где, вроде бы, сегодня будут вручать Оскары).
Не спится (лёг в полночь, встал в 4:30). Выпил чаю. Попилил vzctl по мотивам использования в последние несколько дней: починил одну свою мелкую багу, одну старинную и ужасную (и как её раньше никто не нашёл?), ну и внёс мелкое улучшение. Принял душ. Позвонил разбудить коллегу. Выпустил ядро. Написал в ЖЖ. Выпил ещё чаю.
Сейчас нужно пойти плотно позавтракать (ибо с обедом никак), потом сбегать напечатать ещё листовок (вчера раздали все 200 штук -- а думали, хватит на два дня), потом на выставку и работать, работать, работать. Хорошо хоть, что я не один -- убился бы об стену.
Зато уже не болею :) Впрочем, не завидуйте мне.
Тэги:
angeles,
los,
openvz,
ustrip,
work
Страницы:
1 2 3 4 5 6 7 8 9 10 11 12