I bumped up the number of processors from 1 to 4. Here are the results: Apache:Begin... Apache:Elapsed time: 2.31899785995 Apache:Elapsed time: 6.31404495239 Apache:Percentage fill: 60.0 Apache:Begin... Apache:Elapsed time: 0.274327039719 Apache:Elapsed time: 0.832695960999 Apache:Percentage fill: 60.0 Apache:Begin... Apache:Elapsed time: 0.277992010117 Apache:Elapsed time: 0.875190019608 Apache:Percentage fill: 60.0 Apache:Begin... Apache:Elapsed time: 0.284713983536 Apache:Elapsed time: 0.82108092308 Apache:Percentage fill: 60.0 Apache:Begin... Apache:Elapsed time: 0.289800882339 Apache:Elapsed time: 0.850221157074 Apache:Percentage fill: 60.0 Apache:Begin... Apache:Elapsed time: 0.287453889847 Apache:Elapsed time: 0.822550058365 Apache:Percentage fill: 60.0 Gunicorn:Begin... Gunicorn:Elapsed time: 1.9300968647 Gunicorn:Elapsed time: 5.28614592552 Gunicorn:Percentage fill: 60.0 Gunicorn:Begin... Gunicorn:Elapsed time: 0.315547943115 Gunicorn:Elapsed time: 0.944733142853 Gunicorn:Percentage fill: 60.0 Gunicorn:Begin... Gunicorn:Elapsed time: 0.321009159088 Gunicorn:Elapsed time: 0.95100903511 Gunicorn:Percentage fill: 60.0 Gunicorn:Begin... Gunicorn:Elapsed time: 0.310179948807 Gunicorn:Elapsed time: 0.930527925491 Gunicorn:Percentage fill: 60.0 Gunicorn:Begin... Gunicorn:Elapsed time: 0.311529874802 Gunicorn:Elapsed time: 0.939922809601 Gunicorn:Percentage fill: 60.0 Gunicorn:Begin... Gunicorn:Elapsed time: 0.308799028397 Gunicorn:Elapsed time: 0.932448863983 Gunicorn:Percentage fill: 60.0
WTF. Now, both Apache and Gunicorn are slow. *Equally slow!* I am befuddled. I think I'll go get stinking drunk... On Monday, 17 March 2014 11:58:07 UTC-4, Cliff Kachinske wrote: > > Apparently the number of cores is adjustable. Try this link. > > > http://download.parallels.com/desktop/v5/docs/en/Parallels_Desktop_Users_Guide/23076.htm > > On Monday, March 17, 2014 10:02:13 AM UTC-4, horridohobbyist wrote: >> >> Parallels VM running on a 2.5GHz dual-core Mac mini. I really don't know >> what Parallels uses. >> >> >> On Monday, 17 March 2014 00:05:58 UTC-4, Massimo Di Pierro wrote: >>> >>> What kind of VM is this? What is the host platform? How many CPU cores? >>> Is VM using all the cores? The only thing I can think of is the GIL and the >>> fact that multithreaded code in python gets slower and slower the more >>> cores I have. On my laptop, with two cores, I do not see any slow down. >>> Rocket preallocate a thread pool. The rationale is that it decreases the >>> latency time. Perhaps you can also try rocket in this way: >>> >>> web2py.py --minthreads=1 --maxthreads=1 >>> >>> This will reduce the number of worker threads to 1. Rocket also runs a >>> background non-worker thread that monitors worker threads and kills them if >>> they get stuck. >>> >>> On Sunday, 16 March 2014 20:22:45 UTC-5, horridohobbyist wrote: >>>> >>>> Using gunicorn (Thanks, Massimo), I ran the full web2py Welcome code: >>>> >>>> Welcome: elapsed time: 0.0511929988861 >>>> Welcome: elapsed time: 0.0024790763855 >>>> Welcome: elapsed time: 0.00262713432312 >>>> Welcome: elapsed time: 0.00224614143372 >>>> Welcome: elapsed time: 0.00218415260315 >>>> Welcome: elapsed time: 0.00213503837585 >>>> >>>> Oddly enough, it's slightly faster! But still 37% slower than the >>>> command line execution. >>>> >>>> I'd really, really, **really** like to know why the shipping code is >>>> 10x slower... >>>> >>>> >>>> On Sunday, 16 March 2014 21:13:56 UTC-4, horridohobbyist wrote: >>>>> >>>>> Okay, I did the calculations test in my Linux VM using command line >>>>> (fred0), Flask (hello0), and web2py (Welcome). >>>>> >>>>> fred0: elapsed time: 0.00159001350403 >>>>> >>>>> fred0: elapsed time: 0.0015709400177 >>>>> >>>>> fred0: elapsed time: 0.00156021118164 >>>>> >>>>> fred0: elapsed time: 0.0015971660614 >>>>> >>>>> fred0: elapsed time: 0.00315999984741 >>>>> >>>>> hello0: elapsed time: 0.00271105766296 >>>>> >>>>> hello0: elapsed time: 0.00213503837585 >>>>> >>>>> hello0: elapsed time: 0.00195693969727 >>>>> >>>>> hello0: elapsed time: 0.00224900245667 >>>>> >>>>> hello0: elapsed time: 0.00205492973328 >>>>> Welcome: elapsed time: 0.0484869480133 >>>>> >>>>> Welcome: elapsed time: 0.00296783447266 >>>>> >>>>> Welcome: elapsed time: 0.00293898582458 >>>>> >>>>> Welcome: elapsed time: 0.00300216674805 >>>>> >>>>> Welcome: elapsed time: 0.00312614440918 >>>>> >>>>> The Welcome discrepancy is just under 2x, not nearly as bad as 10x in >>>>> my shipping code. >>>>> >>>>> >>>>> On Sunday, 16 March 2014 17:52:00 UTC-4, Massimo Di Pierro wrote: >>>>>> >>>>>> In order to isolate the problem one must take it in steps. This is a >>>>>> good test but you must first perform this test with the code you >>>>>> proposed >>>>>> before: >>>>>> >>>>>> def test(): >>>>>> t = time.time >>>>>> start = t() >>>>>> x = 0.0 >>>>>> for i in range(1,5000): >>>>>> x += (float(i+10)*(i+25)+175.0)/3.14 >>>>>> debug("elapsed time: "+str(t()-start)) >>>>>> return >>>>>> >>>>>> I would like to know the results about this test code first. >>>>>> >>>>>> The other code you are using performs an import: >>>>>> >>>>>> from shippackage import Package >>>>>> >>>>>> >>>>>> Now that is something that is very different in web2py and flask for >>>>>> example. In web2py the import is executed at every request (although it >>>>>> should be cached by Python) while in flask it is executed only once. >>>>>> This >>>>>> should also not cause a performance difference but it is a different >>>>>> test >>>>>> than the one above. >>>>>> >>>>>> TLTR: we should test separately python code execution (which may be >>>>>> affected by threading) and import statements (which may be affected by >>>>>> web2py custom_import and/or module weird behavior). >>>>>> >>>>>> >>>>>> >>>>>> On Sunday, 16 March 2014 08:47:13 UTC-5, horridohobbyist wrote: >>>>>>> >>>>>>> I've conducted a test with Flask. >>>>>>> >>>>>>> fred.py is the command line program. >>>>>>> hello.py is the Flask program. >>>>>>> default.py is the Welcome controller. >>>>>>> testdata.txt is the test data. >>>>>>> shippackage.py is a required module. >>>>>>> >>>>>>> fred.py: >>>>>>> 0.024 second >>>>>>> 0.067 second >>>>>>> >>>>>>> hello.py: >>>>>>> 0.029 second >>>>>>> 0.073 second >>>>>>> >>>>>>> default.py: >>>>>>> 0.27 second >>>>>>> 0.78 second >>>>>>> >>>>>>> The Flask program is slightly slower than the command line. However, >>>>>>> the Welcome app is about 10x slower! >>>>>>> >>>>>>> *Web2py is much, much slower than Flask.* >>>>>>> >>>>>>> I conducted the test in a Parallels VM running Ubuntu Server 12.04 >>>>>>> (1GB memory allocated). I have a 2.5GHz dual-core Mac mini with 8GB. >>>>>>> >>>>>>> >>>>>>> I can't quite figure out how to use gunicom. >>>>>>> >>>>>>> >>>>>>> On Saturday, 15 March 2014 23:41:49 UTC-4, horridohobbyist wrote: >>>>>>>> >>>>>>>> I'll see what I can do. It will take time for me to learn how to >>>>>>>> use another framework. >>>>>>>> >>>>>>>> As for trying a different web server, my (production) Linux server >>>>>>>> is intimately reliant on Apache. I'd have to learn how to use another >>>>>>>> web >>>>>>>> server, and then try it in my Linux VM. >>>>>>>> >>>>>>>> >>>>>>>> On Saturday, 15 March 2014 22:45:27 UTC-4, Anthony wrote: >>>>>>>>> >>>>>>>>> Are you able to replicate the exact task in another web framework, >>>>>>>>> such as Flask (with the same server setup)? >>>>>>>>> >>>>>>>>> On Saturday, March 15, 2014 10:34:56 PM UTC-4, horridohobbyist >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Well, putting back all my apps hasn't widened the discrepancy. So >>>>>>>>>> I don't know why my previous web2py installation was so slow. >>>>>>>>>> >>>>>>>>>> While the Welcome app with the calculations test shows a 2x >>>>>>>>>> discrepancy, the original app that initiated this thread now shows a >>>>>>>>>> 13x >>>>>>>>>> discrepancy instead of 100x. That's certainly an improvement, but >>>>>>>>>> it's >>>>>>>>>> still too slow. >>>>>>>>>> >>>>>>>>>> The size of the discrepancy depends on the code that is executed. >>>>>>>>>> Clearly, what I'm doing in the original app (performing >>>>>>>>>> permutations) is >>>>>>>>>> more demanding than mere arithmetical operations. Hence, 13x vs 2x. >>>>>>>>>> >>>>>>>>>> I anxiously await any resolution to this performance issue, >>>>>>>>>> whether it be in WSGI or in web2py. I'll check in on this thread >>>>>>>>>> periodically... >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Saturday, 15 March 2014 16:19:12 UTC-4, horridohobbyist wrote: >>>>>>>>>>> >>>>>>>>>>> Interestingly, now that I've got a fresh install of web2py with >>>>>>>>>>> only the Welcome app, my Welcome vs command line test shows a >>>>>>>>>>> consistent 2x >>>>>>>>>>> discrepancy, just as you had observed. >>>>>>>>>>> >>>>>>>>>>> My next step is to gradually add back all the other apps I had >>>>>>>>>>> in web2py (I had 8 of them!) and see whether the discrepancy grows >>>>>>>>>>> with the >>>>>>>>>>> number of apps. That's the theory I'm working on. >>>>>>>>>>> >>>>>>>>>>> Yes, yes, I know, according to the Book, I shouldn't have so >>>>>>>>>>> many apps installed in web2py. This apparently affects performance. >>>>>>>>>>> But the >>>>>>>>>>> truth is, most of those apps are hardly ever executed, so their >>>>>>>>>>> existence >>>>>>>>>>> merely represents a static overhead in web2py. In my mind, this >>>>>>>>>>> shouldn't >>>>>>>>>>> widen the discrepancy, but you never know. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Saturday, 15 March 2014 11:19:06 UTC-4, Niphlod wrote: >>>>>>>>>>>> >>>>>>>>>>>> @mcm: you got me worried. Your test function was clocking a >>>>>>>>>>>> hell lower than the original script. But then I found out why; one >>>>>>>>>>>> order of >>>>>>>>>>>> magnitude less (5000 vs 50000). Once that was corrected, you got >>>>>>>>>>>> the exact >>>>>>>>>>>> same clock times as "my app" (i.e. function directly in the >>>>>>>>>>>> controller). I >>>>>>>>>>>> also stripped out the logging part making the app just return the >>>>>>>>>>>> result >>>>>>>>>>>> and no visible changes to the timings happened. >>>>>>>>>>>> >>>>>>>>>>>> @hh: glad at least we got some grounds to hold on. >>>>>>>>>>>> @mariano: compiled or not, it doesn't seem to "change" the >>>>>>>>>>>> mean. a compiled app has just lower variance. >>>>>>>>>>>> >>>>>>>>>>>> @all: jlundell definitively hit something. Times are much more >>>>>>>>>>>> lower when threads are 1. >>>>>>>>>>>> >>>>>>>>>>>> BTW: if I change "originalscript.py" to >>>>>>>>>>>> >>>>>>>>>>>> # -*- coding: utf-8 -*- >>>>>>>>>>>> import time >>>>>>>>>>>> import threading >>>>>>>>>>>> >>>>>>>>>>>> def test(): >>>>>>>>>>>> start = time.time() >>>>>>>>>>>> x = 0.0 >>>>>>>>>>>> for i in range(1,50000): >>>>>>>>>>>> x += (float(i+10)*(i+25)+175.0)/3.14 >>>>>>>>>>>> res = str(time.time()-start) >>>>>>>>>>>> print "elapsed time: "+ res + '\n' >>>>>>>>>>>> >>>>>>>>>>>> if __name__ == '__main__': >>>>>>>>>>>> t = threading.Thread(target=test) >>>>>>>>>>>> t.start() >>>>>>>>>>>> t.join() >>>>>>>>>>>> >>>>>>>>>>>> I'm getting really close timings to "wsgi environment, 1 thread >>>>>>>>>>>> only" tests, i.e. >>>>>>>>>>>> 0.23 min, 0.26 max, ~0.24 mean >>>>>>>>>>>> >>>>>>>>>>>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.