Optimize status.cgi

Ton Voon ton.voon at opsera.com
Thu Dec 31 13:52:06 CET 2009


Hi Jonathan,

On 23 Dec 2009, at 02:26, Jonathan Kamens wrote:

> It adds the following optimizations to the code base:
> 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.
> 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.
> Defer the sorting of the comment and scheduled downtime linked lists  
> until they've all been read from status.dat.  This makes a huge  
> 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.
> 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.

Just to let you know that (3) is now committed.

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!

I've blogged about it here: http://opsview-blog.opsera.com/dotorg/2009/12/faster-nagios-cgis.html

Ton

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-lists.org/archive/developers/attachments/20091231/83755a21/attachment.html>
-------------- next part --------------
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
-------------- next part --------------
_______________________________________________
Nagios-devel mailing list
Nagios-devel at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nagios-devel


More information about the Developers mailing list