Print more information about running jobs
authorJean-Michel Nirgal Vourgère <jmv@nirgal.com>
Thu, 11 Nov 2010 13:41:11 +0000 (13:41 +0000)
committerJean-Michel Nirgal Vourgère <jmv@nirgal.com>
Thu, 11 Nov 2010 13:41:11 +0000 (13:41 +0000)
bin/djais/models.py
bin/djais/views.py
html_templates/job.html

index b9d5169ad308a9385560d9a50df4b39a5eb4d9e9..c1f20f6bd7ffc79b14de18a6d04f684154c8d387 100644 (file)
@@ -230,7 +230,17 @@ class Job(models.Model):
         dt = self.finish_time - self.start_time
         return nice_timedelta_str(dt)
 
-    # TODO: parse and display /proc/%pid/stat see "man 5 proc"
+    def get_stats(self):
+        result = {}
+        try:
+            strstats = file('/proc/%s/stat' % self.pid).read()
+        except:
+            return
+        # man 5 proc
+        strstats = strstats.rstrip('\n').split(' ')
+        for i, key in enumerate(('pid', 'comm', 'state', 'ppid', 'pgrp', 'session', 'tty_nr', 'tpgid', 'flags', 'minflt', 'cminflt', 'majflt', 'cmajflt', 'utime', 'stime', 'cutime', 'cstime', 'priority', 'nice', 'num_threads', 'itrealvalue', 'starttime', 'vsize', 'rss', 'rsslim', 'startcode', 'endcode', 'startstack', 'kstkesp', 'kstkeip', 'signal', 'blocked', 'sigignore', 'sigcatch', 'wchan', 'nswap', 'cnswap', 'exit_signal', 'processor', 'rt_priority', 'policy', 'delayacct_blkio_ticks', 'guest_time', 'cguest_time')):
+            result[key] = strstats[i]
+        return result
 
     class Meta:
         db_table = u'job'
index 90b538b49f382c6e5e04038040c20fe4989eea7e..27731742e1e9fc6e1952331946585ac2af839ab8 100644 (file)
@@ -705,7 +705,7 @@ def job_get(request, jobid):
     while not job.finish_time:
         sleep(1)
         total_wait += 1
-        if total_wait > 30:
+        if total_wait > 15:
             request.user.info('Your query is slow. Please be patient.')
             return HttpResponseRedirect('/job/%s/' % job.id)
         job = get_object_or_404(Job, id=jobid)
index 1262f08b56c4b4a02112821ea7dca7453b8debad..e806bb4de0c6c12225fec42747d48ec5dc3214f1 100644 (file)
@@ -18,7 +18,15 @@ Result: {% if job.result %}<b>Error {{ job.result }}</b>{% else %}<b>Success</b>
 {% else %}
     {% if job.start_time %}
     Status: <b>Running</b> since {{ job.start_time }}.<br>
-    Pid: {{ job.pid }}<br>
+    {% with job.get_stats as stats %}
+    Process ID: {{ stats.pid }}<br>
+    CPU ID: {{ stats.processor }}<br>
+    Nice: {{ stats.nice }}<br>
+    State: {{ stats.state }}<br>
+    Virtual size: {{ stats.vsize }} bytes<br>
+    User time: {{ stats.utime }} ticks<br>
+    System time: {{ stats.stime }} ticks<br>
+    {% endwith %}
     {% else %}
     Status: <b>Queued</b> since {{ job.queue_time }}.<br>
     Position in jobs queue: {{ job.queue_rank }}<br>