[CalendarServer-changes] [6289] CalendarServer/trunk/contrib/tools/request_monitor.py

source_changes at macosforge.org source_changes at macosforge.org
Tue Sep 14 11:40:20 PDT 2010


Revision: 6289
          http://trac.macosforge.org/projects/calendarserver/changeset/6289
Author:   cdaboo at apple.com
Date:     2010-09-14 11:40:17 -0700 (Tue, 14 Sep 2010)
Log Message:
-----------
Add free memory monitoring.

Modified Paths:
--------------
    CalendarServer/trunk/contrib/tools/request_monitor.py

Modified: CalendarServer/trunk/contrib/tools/request_monitor.py
===================================================================
--- CalendarServer/trunk/contrib/tools/request_monitor.py	2010-09-14 17:53:54 UTC (rev 6288)
+++ CalendarServer/trunk/contrib/tools/request_monitor.py	2010-09-14 18:40:17 UTC (rev 6289)
@@ -28,6 +28,7 @@
 
 
 filename = "/var/log/caldavd/access.log"
+debug = False
 
 def listenq():
     child = Popen(
@@ -87,6 +88,28 @@
     output, _ignore_ = child.communicate()
     return output.split("\n")[-2].split()[2]
 
+def freemem():
+    try:
+        child = Popen(
+            args=[
+                "/usr/bin/vm_stat",
+            ],
+            stdout=PIPE, stderr=STDOUT,
+        )
+        output, _ignore_ = child.communicate()
+        lines = output.split("\n")
+        
+        line = lines[0]
+        pageSize = int(line[line.find("page size of")+12:].split()[0])
+        line = lines[1]
+        freeSize = int(line[line.find("Pages free:")+11:].split()[0][:-1])
+        freed = freeSize * pageSize
+        return "%d bytes (%.1f GB)" % (freed, freed / (1024.0 * 1024 * 1024),)
+    except Exception, e:
+        if debug:
+            print "freemem failure", e
+            print traceback.print_exc()
+        return "error"
 
 def parseLine(line):
 
@@ -159,11 +182,10 @@
     print "--lines N  specifies how many lines to tail from access.log (default: 10000)"
     print "--procs N  specifies how many python processes are expected in the log file (default: 80)"
     print
-    print "Version: 2"
+    print "Version: 3"
 
 numLines = 10000
 numProcs = 80
-debug = False
 options, args = getopt.getopt(sys.argv[1:], "h", ["debug", "lines=", "procs=",])
 for option, value in options:
     if option == "-h":
@@ -343,6 +365,7 @@
         print "Listenq (ssl+non):", q[0], " (Recent", ", ".join(q[1:]), "Oldest)"
         q = idleHistory()
         print "CPU idle %:", q[0], " (Recent", ", ".join(q[1:]), "Oldest)"
+        print "Memory free:", freemem()
 
         if avg:
             print avg, "|",
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100914/3bed1bc5/attachment.html>


More information about the calendarserver-changes mailing list