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;
+}
+