On Wed, Apr 23, 2008 at 03:29:47PM -0400, Mike Trest - On Travel wrote: > At 02:58 PM 4/23/2008, you wrote: > Re performance hit. > > > I actually re-wrote one of my frequently used AGI in "C" and even set > the STICKEY-BIT to avoid reloading the static text portions.
Doesn't Linux ignore the sticky bit? > > I noticed slightly lower disk activity level (but the perl file was > probably in memory cache too). So keeping it memory resident with > stickey-bit probably was not really needed. But I did see a drop in > over-all memory usage. Alas, none of these 'savings' were big > enough to matter. There's a difference between C and a dynamic language engine (such as perl and PHP). To give you some idea of that, let's look at some "do nothing" loops. # For a base line: pure internal shell: $ cnt_list=`seq 100`; time ( for i in $cnt_list; do :; done ) real 0m0.001s user 0m0.000s sys 0m0.000s # What happens if I run a subshell? $ cnt_list=`seq 100`; time ( for i in $cnt_list; do (:); done ) real 0m0.240s user 0m0.036s sys 0m0.204s # Now a small C program: $ cnt_list=`seq 100`; time ( for i in $cnt_list; do /bin/true; done ) real 0m0.272s user 0m0.052s sys 0m0.216s Slightly worse. Now a very minimal perl script: $ cnt_list=`seq 100`; time ( for i in $cnt_list; do perl -e ''; done ) real 0m0.570s user 0m0.220s sys 0m0.352s # Not so bad, right? But it didn't actually have to compile anything. # Let's give it something to compile: $ cnt_list=`seq 100`; time ( for i in $cnt_list; do perl -MCGI -e ''; done ) real 0m4.447s user 0m2.884s sys 0m1.564s # Likewise PHP5 $ cnt_list=`seq 100`; time ( for i in $cnt_list; do php5 -r ''; done ) real 0m3.241s user 0m1.524s sys 0m1.716s # Python: $ cnt_list=`seq 100`; time ( for i in $cnt_list; do python -c ''; done ) real 0m2.618s user 0m1.684s sys 0m0.932s As you can see, each of them used way more than one second of pure CPU time for 100 runs (except the C one, and the perl-without-modules one). And this is with very optimal caching and such. My system is not top of the line: processor : 0 vendor_id : AuthenticAMD cpu family : 15 model : 44 model name : AMD Sempron(tm) Processor 2600+ stepping : 2 cpu MHz : 1599.856 cache size : 128 KB fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm bogomips : 3203.56 TLB size : 1024 4K pages clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management: ts ttp tm stc Kernel: Linux frenkel 2.6.22-3-amd64 #1 SMP Tue Feb 12 09:22:35 UTC 2008 x86_64 GNU/Linux -- Tzafrir Cohen icq#16849755 jabber:[EMAIL PROTECTED] +972-50-7952406 mailto:[EMAIL PROTECTED] http://www.xorcom.com iax:[EMAIL PROTECTED]/tzafrir _______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users