Ненормальные пики iowait

Started by blacat, April 25, 2012, 11:00:25 AM

Previous topic - Next topic

blacat

Кто знает с чего возникает такое? (см. скриншот)
Серверы linux, DCI: System.CPU.Usage.IoWait

Victor Kirhenshtein

Na pervij vzgljad pohoze na bug v Linux agente. A kakoj eto distributiv i jadro?

blacat

Quote from: Victor Kirhenshtein on April 25, 2012, 02:42:01 PM
Na pervij vzgljad pohoze na bug v Linux agente. A kakoj eto distributiv i jadro?

Дистрибутив Gentoo.
ebuild для netxms я делал сам. возможно позже откатав попробую закоммитить его в Gentoo portage tree.
Ядро 3.3.0

user318

У меня такая же фигня сейчас на нескольких серверах.
Версия агента 1.2.2, ядро 3.4.5-hardened, Gentoo.

SKYnv

Quote from: user318 on September 07, 2012, 07:37:43 PM
У меня такая же фигня сейчас на нескольких серверах.
Версия агента 1.2.2, ядро 3.4.5-hardened, Gentoo.
была уже не одна тема про пики, потом попробую поискать если напимните как вариант решения предлагаю это

http://wiki.netxms.org/wiki/NXSL_Function_Reference#Data_Collection

в скрипте сравниваете с максимально возможно границей, если больше то заменяете значение на
GetMaxDCIValue

скрипт простенький

sub main()
{
   ErrValue = 100000000;
   if $1 > ErrValue
    return  GetMaxDCIValue($node, FindDCIByName($node, "DCI: System.CPU.Usage.IoWait"), 0, time());
    trace(1, "Processor max load ". value . "%");
}


Честно говоря не знаю можно ли использовать $DCI заместо FindDCIByName($node, "DCI: System.CPU.Usage.IoWait") чтобы сократить запись, это нужно у Виктора спрашивать. Ну в принципе и все наверно )

user318

Да, понятно, что трансформацией можно купировать. Я так пока и делаю. При переполнении или сбросе счётчиков тоже скачки происходят и там такое делал уже. Но как-то надо это исправить, наверное.

Quoteв скрипте сравниваете с максимально возможно границей, если больше то заменяете значение на GetMaxDCIValue
А что оно делает? Выбирает максимальное значение из существующих? Зачем так сложно? Это и неправильно ведь к тому же.

Quoteскрипт простенький
У меня проще:
Quotesub main()
{
    if ($1 > 1000000000000)
        return NULL;
    else
        return $1;
}
:)

SKYnv

Quote from: user318 on September 08, 2012, 01:23:30 PM
Да, понятно, что трансформацией можно купировать. Я так пока и делаю. При переполнении или сбросе счётчиков тоже скачки происходят и там такое делал уже. Но как-то надо это исправить, наверное.

Quoteв скрипте сравниваете с максимально возможно границей, если больше то заменяете значение на GetMaxDCIValue
А что оно делает? Выбирает максимальное значение из существующих? Зачем так сложно? Это и неправильно ведь к тому же.

Quoteскрипт простенький
У меня проще:
Quotesub main()
{
    if ($1 > 1000000000000)
        return NULL;
    else
        return $1;
}
:)

ну я же подробно написал для вас, и вернуть null имхо некорректно. на графике будет провал.

user318

Quoteну я же подробно написал для вас, и вернуть null имхо некорректно. на графике будет провал.
Ну и пусть будет. Ведь мы получили некорректное значение и в этом его смысл и есть. :)
Ну в смысле тут зависит от предпочтений - как мы потом этими значениями будем пользоваться. Но мне кажется, что менять неправильные значения на похожие на правильные всё же может выйти боком.

SKYnv

#8
Quote from: user318 on September 08, 2012, 03:38:07 PM
Quoteну я же подробно написал для вас, и вернуть null имхо некорректно. на графике будет провал.
Ну и пусть будет. Ведь мы получили некорректное значение и в этом его смысл и есть. :)
Ну в смысле тут зависит от предпочтений - как мы потом этими значениями будем пользоваться. Но мне кажется, что менять неправильные значения на похожие на правильные всё же может выйти боком.

ну как вариант делать в скрипте trace(1, "incorrect value ".$1) чтобы знать об этом, а график отображать нормально. Некорректное значение может быть много с чем связано, причем вероятность того что проблемы в железе имхо очень низкая.