You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jm...@apache.org on 2004/10/13 04:00:14 UTC

svn commit: rev 54720 - spamassassin/trunk/masses

Author: jm
Date: Tue Oct 12 19:00:10 2004
New Revision: 54720

Modified:
   spamassassin/trunk/masses/mass-check
Log:
added mass-check --logmem switch to log memory usage deltas on Linux

Modified: spamassassin/trunk/masses/mass-check
==============================================================================
--- spamassassin/trunk/masses/mass-check	(original)
+++ spamassassin/trunk/masses/mass-check	Tue Oct 12 19:00:10 2004
@@ -41,6 +41,7 @@
   -o            write all logs to stdout
   --loghits     log the text hit for patterns (useful for debugging)
   --loguris	log the URIs found
+  --logmem	log the memory delta (only on Linux)
   --hamlog=log  use <log> as ham log ('ham.log' is default)
   --spamlog=log use <log> as spam log ('spam.log' is default)
  
@@ -78,6 +79,7 @@
 	    $opt_debug $opt_format $opt_hamlog $opt_head $opt_loghits
 	    $opt_mid $opt_net $opt_nosort $opt_progress $opt_showdots
 	    $opt_spamlog $opt_tail $opt_rules $opt_restart $opt_loguris
+            $opt_logmem
 	    $opt_after $opt_before $opt_rewrite $opt_deencap);
 
 use FindBin;
@@ -102,6 +104,7 @@
 	   "hamlog=s", "head=i", "loghits", "mh", "mid", "ms", "net",
 	   "progress", "rewrite:s", "showdots", "spamlog=s", "tail=i",
 	   "rules=s", "restart=i", "after=s", "before=s", "loguris", "deencap=s",
+           "logmem",
 	   "dir" => sub { $opt_format = "dir"; },
 	   "file" => sub { $opt_format = "file"; },
 	   "mbox" => sub { $opt_format = "mbox"; },
@@ -264,6 +267,8 @@
   my (undef, $id, $time, $dataref) = @_;
   my $out;
 
+  memory_track_start() if ($opt_logmem);
+
   my $ma = $spamtest->parse($dataref, 1);
 
   # remove SpamAssassin markup, if present and the mail was spam
@@ -276,7 +281,6 @@
     }
   }
 
-
   # log-uris support
   my $status;
   my @uris;
@@ -317,6 +321,13 @@
   }
   push(@extra, "scantime=" . ($after - $before));
 
+  if ($opt_logmem) { 
+    my $mem = memory_track_finish();
+    if ($mem) {
+      push(@extra, $mem);
+    }
+  }
+
   my $yorn;
   my $score;
   my $tests;
@@ -439,4 +450,43 @@
 }
 
 ###########################################################################
+
+our ($mem_size, $mem_rss, $mem_shared);
+
+sub memory_track_start {
+  if ($^O =~ /linux/i) {
+    if (open (IN, "</proc/$$/statm")) {
+      my $statm = <IN>;
+      close IN;
+      if ($statm =~ /^(\d+) (\d+) (\d+) /) {
+        $mem_size = $1;
+        $mem_rss = $2;
+        $mem_shared = $3;
+      }
+    }
+  }
+}
+
+sub memory_track_finish {
+  my $str = '';
+
+  if ($^O =~ /linux/i) {
+    if (open (IN, "</proc/$$/statm")) {
+      my $statm = <IN>;
+      close IN;
+      if ($statm =~ /^(\d+) (\d+) (\d+) /) {
+        my $size = $1;
+        my $rss = $2;
+        my $shared = $3;
+
+        $str = sprintf ("memsz=%d,memrss=%d,memshr=%d",
+                ($size - $mem_size),
+                ($rss - $mem_rss),
+                ($shared - $mem_shared));
+      }
+    }
+  }
+  $str;
+}
+