<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Jonathan,<div><br><div><div>On 23 Dec 2009, at 02:26, Jonathan Kamens wrote:</div><br><blockquote type="cite"> <div bgcolor="#ffffff" text="#000000"> It adds the following optimizations to the code base:<br> <ol>  <li>When iterating through the lines in the status.dat file, use a persistent buffer to read lines rather than freeing and reallocating a new buffer for every line.  This reduces fragmentation of the malloc pool and reduces the amount of time spent in malloc() and free().  This is implemented by adding a new function, mmap_fgets_buf(), which is like mmap_fgets() except it takes an optional buffer to reuse if possible.  I added this to both cgiutils.c and utils.c so that it can be used elsewhere in the code.</li>  <li>When parsing the status.dat file, reduce the number of unnecessary calls to strcmp() by keeping track of when we know we're in a block and not checking for block-start sequences unnecessarily.</li>  <li>Defer the sorting of the comment and scheduled downtime linked lists until they've all been read from status.dat.  This makes a <b><i>huge</i></b> difference in performance -- it dwarfs by orders of magnitude the optimizations listed above.  The way this is implemented is invisible to programs aside from status.cgi that call add_comment() or add_downtime(), but those programs can easily be modified to take advantage of the new functionality if they need to be sped up.</li> </ol> I sincerely hope that the maintainers of Nagios will make an effort to include these changes in the next release.  They represent a dramatic improvement in the performance and usability of the Web UI.<br></div></blockquote><div><br></div></div>Just to let you know that (3) is now committed.</div><div><br></div><div>There's a test script which creates different numbers of comments/downtimes and it shows that the code changes are indeed an order of magnitude faster. Thanks again for the patch!</div><div><div><br></div><div>I've blogged about it here: <a href="http://opsview-blog.opsera.com/dotorg/2009/12/faster-nagios-cgis.html">http://opsview-blog.opsera.com/dotorg/2009/12/faster-nagios-cgis.html</a></div><div><br></div></div><div>Ton</div><div><br></div></body></html>