Hi,

I'm trying to speed up CouchDB (1.0.0) a little (sadly it's too slow for a task currently) with HiPE.
What I do is:
setenv ERLC_FLAGS '-smp +native'
and compiling seems to be OK:
/usr/local/bin/erlc -smp +native mochifmt.erl
/usr/local/bin/erlc -smp +native mochifmt_records.erl
/usr/local/bin/erlc -smp +native mochifmt_std.erl
/usr/local/bin/erlc -smp +native mochihex.erl
/usr/local/bin/erlc -smp +native mochijson.erl
/usr/local/bin/erlc -smp +native mochijson2.erl
/usr/local/bin/erlc -smp +native mochinum.erl

but when starting CouchDB, I get a lot of lines like these:
=INFO REPORT==== 21-Jul-2010::15:23:13 ===
<HiPE (v 3.7.5)> Warning: not loading native code for module mochiweb_http: it was compiled for an incompatible runtime system; please regenerate native code for this runtime system

=INFO REPORT==== 21-Jul-2010::15:23:13 ===
<HiPE (v 3.7.5)> Warning: not loading native code for module mochiweb_socket_server: it was compiled for an incompatible runtime system; please regenerate native code for this runtime system

I start erl with the options: ERL_START_OPTIONS="-smp enable -sasl errlog_type error +K true +A 4"

Any ideas?

BTW, I haven't got this error with SMP disabled, so I could do some benchmarks. The setup consists of three nodes, I write data into A and replicate the DB to B and C. Sadly these two lags far behind the written node (see my previous e-mail)... I use python and open a new HTTP session on every write concurrently (from twisted) as fast as the CPU allows.

Results:
SMP disabled: 467 writes per second (WPS), 0 connection errors
SMP enabled: 493 WPS, 109 connection errors
setenv ERLC_FLAGS '+native' (and SMP disabled): 472 WPS, 0 connection errors
setenv ERLC_FLAGS '+native \+\{hipe,\[o3\]\}' (and SMP disabled): 472 WPS, 0 connection errors setenv ERLC_FLAGS '+native \+\{hipe,\[o3,pp_beam,pp_icode,pp_rtl,pp_native\]\}' (and SMP disabled): 477 WPS, 0 connection errors setenv ERLC_FLAGS '+native \+\{hipe,\[o3,pp_beam,pp_icode,pp_rtl,pp_native\]\}'; ERL_START_OPTIONS="-smp enable -sasl errlog_type error +K true" (no SMP, no threading): 502 WPS, 0 connection errors

Conclusion (for this task on this OS/machine of course): disabling SMP and threads give the best performance boost (this is a dual core machine), HiPE gains only a very small amount of performance increasement (if I'm correct). Using SMP increases performance, but not that much like disabling threads, but it introduces connection errors (maybe it's FreeBSD specific).
This test has utilized only one database BTW.

Reply via email to