Кто знает с чего возникает такое? (см. скриншот)
Серверы linux, DCI: System.CPU.Usage.IoWait
(http://pix.am/LZZ5.png)
			
			
			
				Na pervij vzgljad pohoze na bug v Linux agente. A kakoj eto distributiv i jadro?
			
			
			
				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
			
 
			
			
				У меня такая же фигня сейчас на нескольких серверах.
Версия агента 1.2.2, ядро 3.4.5-hardened, Gentoo.
			
			
			
				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") чтобы сократить запись, это нужно у Виктора спрашивать. Ну в принципе и все наверно )
			
 
			
			
				Да, понятно, что трансформацией можно купировать. Я так пока и делаю. При переполнении или сбросе счётчиков тоже скачки происходят и там такое делал уже. Но как-то надо это исправить, наверное.
Quoteв скрипте сравниваете с максимально возможно границей, если больше то заменяете значение на GetMaxDCIValue
А что оно делает? Выбирает максимальное значение из существующих? Зачем так сложно? Это и неправильно ведь к тому же.
Quoteскрипт простенький
У меня проще:
Quotesub main()
{
    if ($1 > 1000000000000)
        return NULL;
    else
        return $1;
}
:)
			
				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 имхо некорректно. на графике будет провал.
			
 
			
			
				Quoteну я же подробно написал для вас, и вернуть null имхо некорректно. на графике будет провал.
Ну и пусть будет. Ведь мы получили некорректное значение и в этом его смысл и есть. :)
Ну в смысле тут зависит от предпочтений - как мы потом этими значениями будем пользоваться. Но мне кажется, что менять неправильные значения на похожие на правильные всё же может выйти боком.
			
 
			
			
				Quote from: user318 on September 08, 2012, 03:38:07 PM
Quoteну я же подробно написал для вас, и вернуть null имхо некорректно. на графике будет провал.
Ну и пусть будет. Ведь мы получили некорректное значение и в этом его смысл и есть. :)
Ну в смысле тут зависит от предпочтений - как мы потом этими значениями будем пользоваться. Но мне кажется, что менять неправильные значения на похожие на правильные всё же может выйти боком.
ну как вариант делать в скрипте trace(1, "incorrect value ".$1) чтобы знать об этом, а график отображать нормально. Некорректное значение может быть много с чем связано, причем вероятность того что проблемы в железе имхо очень низкая.