<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-AU link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Hi rrdtool users,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>I have produced the graphs I wanted, (e.g. see <a href="http://www.chankly.com/geiger/cpm.html">http://www.chankly.com/geiger/cpm.html</a>) by providing the explicit timestamp in the update, and exactly timing the probes.&nbsp; I also changed the datasource type back to GAUGE.&nbsp; The interpolation is still a mystery to me, but at least I can store exact values now:<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>alan@Titan:/var/apps/geiger$ rrdtool fetch /var/apps/geiger/geiger.rrd AVERAGE | tail -20<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365898680: 2.1000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365898740: 2.1000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365898800: 1.9000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365898860: 1.8000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365898920: 1.9000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365898980: 3.8000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899040: 1.9000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899100: 1.9000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899160: 2.6000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899220: 2.9000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899280: 1.7000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899340: 2.4000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899400: 2.7000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899460: 3.0000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899520: 2.2000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899580: 1.6000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899640: 2.5000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899700: 2.3000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899760: 2.7000000000e+01<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>1365899820: -nan<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>So, it&#8217;s not a pressing issue for me now, but is there an explanation of the interpolation anywhere?<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thanks, Alan F.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:EN-AU'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:EN-AU'> Alan Finlay [mailto:alan.websites2@chankly.com] <br><b>Sent:</b> Sunday, 14 April 2013 2:28 AM<br><b>To:</b> 'rrd-users@lists.oetiker.ch'<br><b>Subject:</b> RE: Capturing a noisy count variable (Geiger counter)<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><span style='color:#1F497D'>Hi rrdtool users,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>I just sent this to the list, but it is waiting for the moderator to approve as I incorrectly thought I was a member.&nbsp; That was lucky!&nbsp; I just noticed that I was mistaken about the size of the results I was getting.&nbsp; They are too small, not too large.&nbsp; I was so used to seen +e01, that I didn&#8217;t notice the change to &#8211;e01 in my latest experiments.&nbsp; So it seems the five minute counts are not being accumulated by rrdtool, but averaged as raw values.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>However, my main question remains, what is the correct way to update a count like this?&nbsp; If I change to datasource type COUNTER, and accumulate the counts myself, will it be ok to update every 5 seconds?&nbsp; Is that recommended, or is there a better way?<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thanks, Alan F. <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:EN-AU'><br><b>Subject:</b> Capturing a noisy count variable (Geiger counter)<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Hi rrdtool users,<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>I am trying to generate some graphs of background radiation counts per minute from a Geiger counter. I thought to use rrdtool and learn a bit about the tool as the same time.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>An issue I have is to understand how the interpolation works.&nbsp; I originally used a datasource of type GAUGE, and then I found the database was not storing integral values.&nbsp; That led to learning about how rrdtool captures data.&nbsp; I understood that some form of interpolation was being done, but I found that even when I timed my captures close to the datasource time period (i.e. within a few seconds), I was still getting significant averaging that I could not understand (counts were occasionally well off integral values).&nbsp; I then tried using a MAX RRA for the primary archive and that also did not seem to help. &nbsp;For an example of the effect, see <a href="http://www.chankly.com/geiger_underconstruction/cpm.html">http://www.chankly.com/geiger_underconstruction/cpm.html</a><o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>If my graphs contain non integral counts for one minute intervals, then I am going to need to explain why.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>I started reading some forums, I decided to try using and ABSOLUTE datasource type since that seemed to be more appropriate.&nbsp; However it did not seem to change much. Then I considered that since I was actually getting counts every second from my Geiger counter, and accumulating them for one minute in my scripts, I could instead update the database more often than the step interval.&nbsp; That way, I may not expect to get integral counts, but they should accurately reflect the &#8220;counts per minute&#8221; as a gauge.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>So I have implemented an update every 5 seconds, and I am getting very strange results, way too large values.&nbsp; Is it reasonable to update more often than the step interval?<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>If not, then what is a recommended way to accurately capture these counts?&nbsp; What I really want to be sure of is that the integral of the displayed graph should accurately reflect the count for any chosen interval, i.e. avoiding any systemic error.&nbsp; The longer I capture the more accurate my averages should be.&nbsp; The backround CPM is quite stable for long intervals, and I want to look for trends related to sun activity, seasons etc.&nbsp; So I need to be confident the long timeframe averages reported by rrdtool are correct.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Here is an extract of the db, these values are much higher than they should be:<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>$ rrdtool fetch /var/apps/geiger/geiger.rrd AVERAGE | tail -20<o:p></o:p></p><p class=MsoNormal>1365867360: 3.5410117577e-01<o:p></o:p></p><p class=MsoNormal>1365867420: 3.1358877058e-01<o:p></o:p></p><p class=MsoNormal>1365867480: 3.7223225156e-01<o:p></o:p></p><p class=MsoNormal>1365867540: 3.2656777052e-01<o:p></o:p></p><p class=MsoNormal>1365867600: 4.9940582148e-01<o:p></o:p></p><p class=MsoNormal>1365867660: 3.9069307467e-01<o:p></o:p></p><p class=MsoNormal>1365867720: 2.6239790085e-01<o:p></o:p></p><p class=MsoNormal>1365867780: 4.2388944703e-01<o:p></o:p></p><p class=MsoNormal>1365867840: 5.0398253216e-01<o:p></o:p></p><p class=MsoNormal>1365867900: 3.2639678663e-01<o:p></o:p></p><p class=MsoNormal>1365867960: 4.4485142178e-01<o:p></o:p></p><p class=MsoNormal>1365868020: 2.9939793410e-01<o:p></o:p></p><p class=MsoNormal>1365868080: 3.6032755674e-01<o:p></o:p></p><p class=MsoNormal>1365868140: 2.8273224979e-01<o:p></o:p></p><p class=MsoNormal>1365868200: 2.4941790093e-01<o:p></o:p></p><p class=MsoNormal>1365868260: 2.7300076071e-01<o:p></o:p></p><p class=MsoNormal>1365868320: 4.3303353491e-01<o:p></o:p></p><p class=MsoNormal>1365868380: 2.3303745712e-01<o:p></o:p></p><p class=MsoNormal>1365868440: 3.0171077034e-01<o:p></o:p></p><p class=MsoNormal>1365868500: -nan<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Here is the perl code I am using to update the db, in a loop every 5 seconds:<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $timestamp = `date +%s`;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chomp $timestamp;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print LOG &quot;time=$timestamp, returned count = $count \n&quot;;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $result = `rrdtool updatev /var/apps/geiger/geiger.rrd N:$count`;<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print LOG &quot;updatev returned: $result&quot;;<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>And here is a section of the log, and it is clearly evident something is wrong with the counts (the average CPM is around 21).<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866940, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>[1365866940]RRA[AVERAGE][1]DS[geiger] = 2.4979012130e-01<o:p></o:p></p><p class=MsoNormal>time=1365866945, returned count = 2<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866950, returned count = 3<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866955, returned count = 5<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866960, returned count = 0<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866965, returned count = 2<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866970, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866975, returned count = 7<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866980, returned count = 6<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866985, returned count = 3<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866990, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365866995, returned count = 3<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867000, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>[1365867000]RRA[AVERAGE][1]DS[geiger] = 5.6636103674e-01<o:p></o:p></p><p class=MsoNormal>time=1365867005, returned count = 0<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867010, returned count = 0<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867015, returned count = 3<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867020, returned count = 2<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>saving incomplete line &lt;CPS, 1, &gt;<o:p></o:p></p><p class=MsoNormal>time=1365867025, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867030, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867035, returned count = 2<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867040, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867045, returned count = 5<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867050, returned count = 2<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867055, returned count = 2<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867060, returned count = 3<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>[1365867060]RRA[AVERAGE][1]DS[geiger] = 3.6438774029e-01<o:p></o:p></p><p class=MsoNormal>time=1365867065, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867070, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867075, returned count = 4<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867080, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867085, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867090, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867095, returned count = 0<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867100, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867105, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867110, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867115, returned count = 1<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>time=1365867120, returned count = 0<o:p></o:p></p><p class=MsoNormal>updatev returned: return_value = 0<o:p></o:p></p><p class=MsoNormal>[1365867120]RRA[AVERAGE][1]DS[geiger] = 2.1964405340e-01<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>The db definition is as follows:<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>rrdtool create geiger.rrd -s 60 DS:geiger:ABSOLUTE:100:0:U \<o:p></o:p></p><p class=MsoNormal>RRA:AVERAGE:0.5:1:50000 \<o:p></o:p></p><p class=MsoNormal>RRA:MIN:0.5:60:8800 \<o:p></o:p></p><p class=MsoNormal>RRA:MAX:0.5:60:8800 \<o:p></o:p></p><p class=MsoNormal>RRA:AVERAGE:0.5:60:8800 \<o:p></o:p></p><p class=MsoNormal>RRA:MIN:0.5:1440:7305 \<o:p></o:p></p><p class=MsoNormal>RRA:MAX:0.5:1440:7305 \<o:p></o:p></p><p class=MsoNormal>RRA:AVERAGE:0.5:1440:7305<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alan F.<o:p></o:p></p></div></body></html>