[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: Arm Release 1.4.1



Damian Johnson <atagar1@xxxxxxxxx> wrote:

> Hi everyone. The next version of arm (1.4.1) is available including
> the proc querying enhancements, Fabian's BSD compatibility patches,
> and numerous other improvements:
> https://blog.torproject.org/blog/arm-release-141
> 
> Updates to the packages and repositories will be staggered a week
> (just in case issues are discovered over the next new days). Feedback
> and bug reports are always welcome! -Damian

I'm a bit behind on my Tor-related mails, so this one is out of order.

Anyway, 1.4.1 seems to have issues in the !self._useProc case
and (at least on FreeBSD) messes up the screen with exceptions
like these if Tor has only recently been started:

Exception in thread Thread-3:
Traceback (most recent call last):
File "/usr/local/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "/usr/home/fk/arm/src/util/sysTools.py", line 538, in run
newValues["cpuSampling"] = newValues["cpuAvg"]
KeyError: 'cpuAvg'

The attached patch (0003) seems to fix it for me,
but I didn't properly test it yet.

Fabian
From 0400ec3b28acd5818763f9f30a6b93275c228927 Mon Sep 17 00:00:00 2001
From: Fabian Keil <fk@xxxxxxxxxxxxx>
Date: Tue, 11 Jan 2011 17:56:28 +0100
Subject: [PATCH 1/3] Fix the ps output in a comment

---
 src/util/sysTools.py |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/util/sysTools.py b/src/util/sysTools.py
index ad9cd3c..b303d24 100644
--- a/src/util/sysTools.py
+++ b/src/util/sysTools.py
@@ -479,8 +479,9 @@ class ResourceTracker(threading.Thread):
           newValues["memUsagePercentage"] = float(memUsage) / totalMemory
         else:
           # the ps call formats results as:
-          # %CPU   RSS %MEM     ELAPSED
-          # 0.3 14096  1.3       29:51
+          #     TIME     ELAPSED   RSS %MEM
+          # 3-08:06:32 21-00:00:12 121844 23.5
+
           psCall = call("ps -p %s -o cputime,etime,rss,%%mem" % self.processPid)
           
           isSuccessful = False
-- 
1.7.3.5

From c18fc6796b7210fb5bb464b8e1e6105556e44a9f Mon Sep 17 00:00:00 2001
From: Fabian Keil <fk@xxxxxxxxxxxxx>
Date: Tue, 11 Jan 2011 18:01:22 +0100
Subject: [PATCH 2/3] Mention another possible ps output that isn't yet covered

---
 src/util/sysTools.py |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/src/util/sysTools.py b/src/util/sysTools.py
index b303d24..cea9374 100644
--- a/src/util/sysTools.py
+++ b/src/util/sysTools.py
@@ -479,8 +479,14 @@ class ResourceTracker(threading.Thread):
           newValues["memUsagePercentage"] = float(memUsage) / totalMemory
         else:
           # the ps call formats results as:
+          #
           #     TIME     ELAPSED   RSS %MEM
           # 3-08:06:32 21-00:00:12 121844 23.5
+          #
+          # or if Tor has only recently been started:
+          #
+          #     TIME      ELAPSED    RSS %MEM
+          #  0:04.40        37:57  18772  0.9
 
           psCall = call("ps -p %s -o cputime,etime,rss,%%mem" % self.processPid)
           
-- 
1.7.3.5

From cfa1a3b06f8fabe8b0ddffa56ecc0d1b5fff6e5e Mon Sep 17 00:00:00 2001
From: Fabian Keil <fk@xxxxxxxxxxxxx>
Date: Tue, 11 Jan 2011 18:30:39 +0100
Subject: [PATCH 3/3] Let parseShortTimeLabel() deal with timestamps that use a dot between minutes and seconds

---
 src/util/uiTools.py |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/util/uiTools.py b/src/util/uiTools.py
index 854ca39..07ea949 100644
--- a/src/util/uiTools.py
+++ b/src/util/uiTools.py
@@ -333,7 +333,7 @@ def parseShortTimeLabel(timeEntry):
   """
   Provides the number of seconds corresponding to the formatting used for the
   cputime and etime fields of ps:
-  [[dd-]hh:]mm:ss
+  [[dd-]hh:]mm:ss or hh:mm.ss
   
   If the input entry is malformed then this raises a ValueError.
   
@@ -349,6 +349,9 @@ def parseShortTimeLabel(timeEntry):
     days = int(timeEntry[:dateDivider])
     timeEntry = timeEntry[dateDivider+1:]
   
+  # normalise the seconds delimiter
+  timeEntry = timeEntry.replace(".", ":")
+  
   timeComp = timeEntry.split(":")
   if len(timeComp) == 3:
     hours, minutes, seconds = timeComp
-- 
1.7.3.5

Attachment: signature.asc
Description: PGP signature