time after time

"Eric S. Johansson" <[email protected]>
Newsgroups gmane.mail.spam.crm114
Message-ID <[email protected]>
well, I've run this test a few times and I consistently get the same result. 
running a single CRM 114 is no faster than running numeral for concurrent CRM 
114 processes.  not only that, I still get the same distorted scores results.

I've run this test on virtual and physical machines and get approximately the 
same results.  I'm going to run the tests on a physical machine again tonight 
and publish them separately.

the first set of data is the number of training events that occur in a given 
time.  For example, 0.5 seconds had two training events take that long.  Sorry, 
I didn't sort it.  Also, rule out the 0.0 line.  I think there's a bug in my 
statistics gathering there.  The second check again it is the result of the 
command run through time.  As you can see, it's relatively evenly split between 
user and system time.

A single run:


0.0, 10378
0.5, 2
0.1, 690
0.2, 34
1.0, 1
0.3, 1
0.6, 1

real    25m56.214s
user    11m25.260s
sys     13m36.850s

now, let's look at 4 processes running at the same time.  Now in order to give 
CRM 11 for the best possible advantage, all four processes are using the same 
.css files.  in theory, the CSS image would be mapped into memory and generally 
stay there as long as there was a least one process using it.  Uh-huh.

0.0, 9236
0.5, 31
0.2, 480
0.8, 7
0.1, 3
0.6, 58
0.3, 1007
0.4, 221
0.9, 1
0.7, 63


real    94m46.274s
user    11m25.460s
sys     11m56.510s

0.0, 9263
0.5, 27
0.4, 209
0.2, 471
0.1, 4
0.6, 36
0.3, 1016
0.8, 20
0.9, 3
0.7, 58

real    94m44.155s
user    11m23.110s
sys     11m58.610s

0.0, 9253
0.5, 41
0.8, 15
0.4, 200
1.0, 3
0.1, 4
0.6, 50
0.3, 1017
0.2, 470
0.7, 54

real    94m45.234s
user    11m22.620s
sys     12m0.060s

0.0, 9264
0.5, 28
0.8, 14
0.2, 432
1.0, 1
0.1, 7
0.6, 42
0.3, 1036
0.4, 220
0.9, 1
1.7, 1
0.7, 61

real    94m43.708s
user    11m20.050s
sys     12m0.210s

they all take roughly 4 times the execution time of a single process.  The load 
average climbed to about three plus.  You can see why I've come to the 
conclusion that a single threaded CRM 114 is just as efficient as multiples 
running at the same time.

needs some refinement but is is clear that forking is taking a *big* chunk of time.

also separately I collected some stats on performance of my Python code just in 
case I was doing something "unpleasant".  this is one of those moments where I 
wish Thunderbird would not wrap lines.

 >>> stats.print_stats()
Tue Jun  3 10:52:55 2008    /tmp/crm114.perf

          1871173 function calls in 63.730 CPU seconds

    Ordered by: cumulative time, internal time

    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
         1    0.000    0.000   63.730   63.730 test_train.py:149(main)
         1    0.000    0.000   63.730   63.730 profile:0(main())
         1    0.000    0.000   63.730   63.730 <string>:1(<module>)
         1   11.150   11.150   63.720   63.720 test_train.py:45(retrain)
     11107    1.760    0.000   34.450    0.003 
/home/esj/projects/crm114-test/crm114.py:187(score_message)
     11591    2.070    0.000   23.690    0.002 
/usr/lib/python2.5/subprocess.py:535(__init__)
     11591    0.910    0.000   20.440    0.002 
/usr/lib/python2.5/subprocess.py:1037(_execute_child)
     11591   14.870    0.001   14.870    0.001 :0(fork)
     11591    0.170    0.000   10.590    0.001 
/usr/lib/python2.5/subprocess.py:643(communicate)
     11591    1.950    0.000   10.420    0.001 
/usr/lib/python2.5/subprocess.py:1183(_communicate)
      8059    1.410    0.000    8.320    0.001 
/home/esj/projects/crm114-test/crm114.py:157(train_as_bad)
      8059    1.380    0.000    6.140    0.001 
/home/esj/projects/crm114-test/crm114.py:33(dump_stack)
      8059    0.200    0.000    4.520    0.001 
/usr/lib/python2.5/traceback.py:131(format_exception)
     77126    3.750    0.000    3.750    0.000 :0(read)
      3048    0.290    0.000    3.110    0.001 
/home/esj/projects/crm114-test/crm114.py:126(train_as_good)
      8059    0.000    0.000    3.100    0.000 
/usr/lib/python2.5/traceback.py:74(format_tb)
     48160    0.030    0.000    2.490    0.000 
/usr/lib/python2.5/subprocess.py:981(_read_no_intr)
     44428    2.440    0.000    2.440    0.000 :0(time)
     39306    2.330    0.000    2.330    0.000 :0(isinstance)
       484    0.140    0.000    2.310    0.005 
/home/esj/projects/crm114-test/crm114.py:80(CRM114_train)
     92729    2.260    0.000    2.260    0.000 :0(close)
     11591    1.670    0.000    2.090    0.000 
/usr/lib/python2.5/subprocess.py:1174(wait)
     43459    1.950    0.000    1.960    0.000 
/usr/lib/python2.5/posixpath.py:56(join)
      8059    0.910    0.000    1.780    0.000 
/usr/lib/python2.5/traceback.py:78(extract_tb)
    135679    1.700    0.000    1.700    0.000 :0(select)
     43343    1.410    0.000    1.410    0.000 :0(syslog)
      8059    1.310    0.000    1.320    0.000 
/usr/lib/python2.5/traceback.py:27(format_list)
      8059    0.500    0.000    1.220    0.000 
/usr/lib/python2.5/traceback.py:148(format_exception_only)
     34773    1.140    0.000    1.140    0.000 :0(fdopen)
     11591    0.050    0.000    1.030    0.000 
/usr/lib/python2.5/subprocess.py:961(_set_cloexec_flag)
     23182    0.980    0.000    0.980    0.000 :0(fcntl)
     87485    0.870    0.000    0.870    0.000 :0(append)
     99110    0.170    0.000    0.760    0.000 
/usr/lib/python2.5/subprocess.py:993(_write_no_intr)
     99110    0.590    0.000    0.590    0.000 :0(write)

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.