<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:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" 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 12 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Webdings;
        panose-1:5 3 1 2 1 5 9 6 7 3;}
@font-face
        {font-family:"Arial Narrow";
        panose-1:2 11 6 6 2 2 2 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
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-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@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-NZ link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>I’ve developed a couple of new functions for the rrdcached – PAUSE and RESUME cause the write threads to be paused and resumed, allowing the RRD file to be quiesced temporarily for backup purposes. During the paused time, incoming updates simply go into the queue and so are not lost, though the memory footprint of the rrdcached will slowly go up.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>To control this, I’ve had to add new commands to the rrdtool client. At Tobi’s suggestion, this has been done by adding a new ‘daemonctl’ command, and absorbing the old ‘flushcached’ command into this.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Now we have:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>rrdtool daemonctl [ flush [<file> …]|pause|resume|stat ] [ --daemon <address> ]<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So, the old ‘rrdtool flushcached’ has been replaced by ‘rrdtool daemonctl flush’. Also, it can be called with NO file arguments, which results in a FLUSHALL command being sent to the daemon. To enable this, a new function rrdc_flushall has been added to the API.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The current version disables the flushcached command in the Windows build – since I don’t know the reasoning behind this, I have also disabled the daemonctl command in the Windows build, but would like to hear from any Windows person who might know the reason for this. Maybe we can re-enable it?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The patch for this involves some new files ( rrddaemonctl.pod, rrd_pausecached.c, rrd_resumecached.c, rrd_cachedstat.c ), killing off an old file (rrdflushcached.pod) and modifications to rrd.h, rrd_tool.c, rrd_client.c, librrd.sym.in, Makefile.am.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;padding:0cm 0cm 1.0pt 0cm'><p class=MsoNormal style='border:none;padding:0cm'>Example:<o:p></o:p></p></div><p class=MsoNormal>[root@slayer src]# export RRDCACHED_ADDRESS=localhost<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl flush<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl flush foo.rrd<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl flush foo.rrd --daemon localhost<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl flush bar.rrd<o:p></o:p></p><p class=MsoNormal>ERROR: Flushing of file "bar.rrd" failed: rrdcached: No such file: /u01/rrdtool.test.1.4/bar.rrd.. Skipping remaining 0 files.<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl pause<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl flush foo.rrd<o:p></o:p></p><p class=MsoNormal>ERROR: Flushing of file "foo.rrd" failed: rrdcached: Write threads are paused. Use RESUME to restart.. Skipping remaining 0 files.<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl flush<o:p></o:p></p><p class=MsoNormal>ERROR: rrdcached: Write threads are paused. Use RESUME to restart.<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl resume<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl resume foo<o:p></o:p></p><p class=MsoNormal>ERROR: Usage: rrdtool resume [--daemon <addr>]<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl stats<o:p></o:p></p><p class=MsoNormal>QueueLength = 0<o:p></o:p></p><p class=MsoNormal>UpdatesReceived = 0<o:p></o:p></p><p class=MsoNormal>FlushesReceived = 3<o:p></o:p></p><p class=MsoNormal>UpdatesWritten = 0<o:p></o:p></p><p class=MsoNormal>DataSetsWritten = 0<o:p></o:p></p><p class=MsoNormal>TreeNodesNumber = 0<o:p></o:p></p><p class=MsoNormal>TreeDepth = 0<o:p></o:p></p><p class=MsoNormal>JournalBytes = 0<o:p></o:p></p><p class=MsoNormal>JournalRotate = 0<o:p></o:p></p><p class=MsoNormal>Paused = 0<o:p></o:p></p><p class=MsoNormal>[root@slayer src]# ./rrdtool daemonctl<o:p></o:p></p><p class=MsoNormal>RRDtool 1.4.99911011600 Copyright 1997-2009 by Tobias Oetiker <tobi@oetiker.ch><o:p></o:p></p><p class=MsoNormal> Compiled Jan 20 2011 14:24:56<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Usage: rrdtool [options] command command_options<o:p></o:p></p><p class=MsoNormal>* daemonctl - control rrdcached daemon<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> flush - flush cached data out to an RRD file<o:p></o:p></p><p class=MsoNormal> rrdtool daemonctl flush [filename.rrd] [--daemon <address>]<o:p></o:p></p><p class=MsoNormal> pause - pause the writing threads of cache daemon<o:p></o:p></p><p class=MsoNormal> rrdtool daemonctl pause [--daemon <address>]<o:p></o:p></p><p class=MsoNormal> resume - resume writing threads of cache daemon<o:p></o:p></p><p class=MsoNormal> rrdtool daemonctl resume [--daemon <address>]<o:p></o:p></p><p class=MsoNormal> stats – show statistics of cache daemon<o:p></o:p></p><p class=MsoNormal> rrdtool daemonctl stats [--daemon <address>]<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>RRDtool is distributed under the Terms of the GNU General<o:p></o:p></p><p class=MsoNormal>Public License Version 2. (www.gnu.org/copyleft/gpl.html)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>For more information read the RRD manpages<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.0pt;padding:0cm 0cm 1.0pt 0cm'><p class=MsoNormal style='border:none;padding:0cm'>[root@slayer src]#<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Any thoughts/opinions from the community?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Steve<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div class=MsoNormal align=center style='text-align:center'><span lang=EN-US><hr size=2 width="100%" align=center></span></div><p class=MsoNormal><b>Steve Shipway<o:p></o:p></b></p><p class=MsoNormal><span style='font-size:10.0pt'>ITS Unix Services Design Lead<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'>University of Auckland, New Zealand<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'>Floor 1, 58 Symonds Street, Auckland<o:p></o:p></span></p><p class=MsoNormal><i><span style='font-size:10.0pt;color:#595959'>Phone: +64 (0)9 3737599 ext 86487<o:p></o:p></span></i></p><p class=MsoNormal><i><span style='font-size:10.0pt;color:#595959'>DDI: +64 (0)9 924 6487<o:p></o:p></span></i></p><p class=MsoNormal><i><span style='font-size:10.0pt;color:#595959'>Mobile: +64 (0)21 753 189<o:p></o:p></span></i></p><p class=MsoNormal><i><span style='font-size:10.0pt;color:#595959'>Email: <a href="mailto:s.shipway@auckland.ac.nz"><span style='color:#595959'>s.shipway@auckland.ac.nz</span></a><o:p></o:p></span></i></p><p class=MsoNormal><span lang=EN-GB style='font-size:18.0pt;font-family:Webdings;color:green'>P</span><span lang=EN-GB style='color:blue'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:"Arial Narrow","sans-serif";color:green'>Please consider the environment before printing this e-mail</span><span lang=EN-GB style='color:blue'> </span><span lang=EN-GB style='font-size:7.5pt;font-family:"Verdana","sans-serif";color:navy'><o:p></o:p></span></p><p class=MsoNormal><i><span style='font-size:10.0pt'><o:p> </o:p></span></i></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>