Stefan Ritt wrote: |
Tim Thiel wrote: |
Yoshio Imai wrote: |
Hi!
Looking at your config file it seems that a lot of the attributes are not user-specified but rather auto-generated content. You may want to consider using the elog client to submit such entries; this might avoid performance issues related to communication of the server with the web browser used for entry generation. This way, event entries can even be automatically created by other software rather than having a user to submit them.
Yoshio
|
Yoshio,
Thanks for the suggestion.
We have actually tried running the elog server with a very minimal set of attributes, all of which were human entries, and still had response times that were entirely unacceptable. So, unfortunately this path won't solve all our issues.
tt
|
Yes there is lots of string handling in elogd, but compared with PHP this is still faster. The getcfg() call actually caches the contents of the config file to improve its performance. I stopped optimization when the response was quick on a 800 MHz Pentium originally, but your 250 MHz ARM might be slower. What you can try is to
1) Verify that the CPU is really the limit, just check that the CPU is at 100% with elogd during your 10 second response time. On some installations, the submit command triggers some email notification, and actually the email server was the bottleneck.
2) If it's indded the CPU for elogd, run it under the gcc profiler. Identify which routines take most CPU and let me know. Maybe I can do something about that.
- Stefan
|
Stefan,
Thanks for your feedback.
We had confirmed that the CPU load is running at at least 95% while these requests are being processed. Additionally, we were attempting to use gprof to determine where the code was spending its time. We have had several problems with trying to use gprof on that platform, both with using it for elog (we get seg faults) and then with using it on a small program created to test gprof on our particular setup (program runs; we get an output file; but all routines show that zero seconds were used). So, unfortunately, I can not, at this point, provide a good idea of which routines are using the most CPU on this platform. If we are able to get profiling results on this particular platform, I will certainly share them with you.
A possibly more relevant angle is that we have determined that executing floating-point operations seems to have a drastic impact on software execution times. Can you point us to routines in the elogd code where floating point operations are taking place?
Thanks,
Tim
|