truXoft

truXoft Calibrating BOINC Core Client


show all

For modifying and compiling my BOINC core clients, I used the source code of the developer versions, and kept its version number. This client was compiled with Microsoft Visual Studio 2005 (v8), intentionally without using any processor specific optimizing. Although it has more functionality, the executable file is smaller than other currently available clients.

When the Credit Calibration option is enabled, the client will report adjusted Whetstones benchmark (Mfpops), and will finetune the claimed credit by sligthly modifying the final WU time. The resulting claimed credit respects the rules and the real value of the WU much better than when using stadard plain benchmarks only. The calibration uses the built-in correction coefficient that self-adjusts its value with each WU. Additionally, the ratio of FPOPS and IOPS benchmarks is taken in the calculation, and there is also mechanism avoding excessive claims, and limiting external manipulation. Resulting Claimed Credits (CC) for full-length S@H units should be close to the ideal 32 Cobblestones, and accordingly smaller at shorter units. After enabling the calibration feature, it can take several days (couple of dozens of units), before reaching full claimed credits.

In similar way, the client is also capable to adjust the CC at other projects. However, at projects with no optimized application, the correction will usually result in shorter corrected final WU time than the time actually spent on the calculation. It also means smaller Claimed Credit, and it is actually the intended purpose - we do not want to claim unfairly high credits at project with no optimization.

The goal of the feature is that the client claims fair credits for the work done. Normally, the SETI@Home reference WU, when calculated by a reference machines should result in credit of 32.32 cobblestones. Approximately the same credit should be granted for any full-length WU. Unfortunately, due to the optimized S@H applications, performing faster than anticipated, this is rarely the case - the credit may be as low as just ~5 cobblestones per standard WU. This is the reason people are hunting for clients with higher benchmarks, and some people even try to manipulate them manually. That is rather unfair, especially if the host computer works on multiple projects. The credit claimed for the work at other projects may be then far over the normal level, which is certainly not fair, should be avoided, and can even trigger alarms or bans on the project server.

The real CPU time spent on the unit and the corrected whetstone benchmark value may be viewed in the messages or logs on the host, and also in the workunit details in your project account on the web. It may contain the following information in the stderr out field:

<core_client_version>5.3.8.tx20</core_client_version>
<real_cpu_time>111</real_cpu_time>
<corrected_cpu_time>129</corrected_cpu_time>
<corrected_Mfpops>733.8</corrected_Mfpops>

Warranty

Please note that the software is offered as is, with no warranty at all. Use on your own risk! Since I compiled the source code of the developer version (not the public release), it is very likely that the client can contain some bugs. Do not forget to make backup before you install the software.

Download

The same version can be used for all processors. Unlike at optimized clients, the benchmark is unimportant. Better told, we intentionally want to keep the benchmark low, causing the projects without optimized applications not sending exagerated credit requests like it happens with optimized clients. I am also attaching the source code of the modified files. All my modifications are marked with // TX and well commented for easy comprehension. I tried to write all modifications cleanly, and respecting the syntax and the structure used by the original developers.

Codes in the table are MD5 checksums over the entire package file (zip or tar.gz). They can be used to verify whether the archive file was downloaded in its full integrity

Version Windows (1) Linux (2) FreeBSD (3) Mac (4) Source Code
v5.3.12.tx36 zip tar.gz n.a. MacOS 10.4 zip
beta versions   
Version Windows (1) Linux (2) FreeBSD (3) Mac (4) Source Code
v5.3.12.tx39 recalled n.a. n.a. n.a. n.a.
v5.3.12.tx37 zip n.a. tar.gz n.a. n.a.
older versions
Version Windows (1) Linux (2) FreeBSD (3) Mac (4) Source Code
v5.3.12.tx35 zip n.a. n.a. n.a. zip
v5.3.12.tx34 zip n.a. n.a. n.a. zip
v5.3.11.tx32 zip n.a. n.a. n.a. n.a.
v5.3.11.tx31 zip n.a. n.a. n.a. zip
    Note:
  1. This Windows build possibly does not run on some NT4 machines
  2. The Linux build was compiled by Uftoun - Zemedelec. It is not an entirely static build - it may require glibc v2.3
  3. The FreeBSD build may have only limited portability. You may prefer compiling it yourself. There are instructions for FreeBSD.
  4. The MacOS X build was compiled by boog.
Important note: I take no responsibility for versions compiled by 3rd parties (Linux, Mac). There is no way I could verify they were compiled without any modifications. I strongly recommend revising and compiling the source code yourself if you are in doubts, or want to use the calibrating client in an environment requiring a higher level of security!

Changelog

06-02-01 5.3.15.tx43 NEW: rpc_ip - limiting RPC interface (credit: CFMP)
                     NEW: <suspend_new> suspending downloaded WU (credit: Pepo)
06-01-30 5.3.15.tx42 NEW: synchronized with official v5.3.15
                     NEW: continuing work on project and schedule scopes
06-01-29 5.3.12.tx41 NEW: <schedule> scopes in truxoft_prefs.xml (major remake)
06-01-28 5.3.12.tx40 NEW: <project> scopes in truxoft_prefs.xml (major remake)
                     NEW: most configuration code moved to tx_prefs.C and tx_prefs.h
                     NEW: tx_prefs.C and tx_prefs.h added to makefiles
                     FIX: decreasing cache at priority projects
                     FIX: work_buf_days handling
06-01-24 5.3.12.tx39 FIX: work_buf_days zero message
                     FIX: argh, another forgotten project name lowercase
06-01-22 5.3.12.tx38 FIX: S@H-specific calibration limits
                     FIX: clean up for FreeBSD build
                     NEW: work_buf_days configuration setting
06-01-20 5.3.12.tx37 FIX: more lowercase at project names
                     FIX: backup projects on multi-CPU boxes
06-01-19 5.3.12.tx36 FIX: lowercase at project names
06-01-19 5.3.12.tx35 NEW: <no_popup_alerts/> suppressing popup alerts
                     <check_max_time> - suspending WU immediately (credit: forest)
                     FIX: cleaning source code for Linux/GCC (credit: Uftoun-zemedelec)
06-01-18 5.3.12.tx34 NEW: option <check_max_time> alert (credit: Uftoun-zemedelec)
06-01-18 5.3.12.tx33 NEW: synchronized with the official build 5.3.12
06-01-17 5.3.11.tx32 FIX: <process_priority> used wrong type bool
06-01-16 5.3.11.tx31 NEW: calibrating client - 1st public release version

Please note: the list contains also alpha and beta versions. Beta versions are available in the download section above. Alpha versions are being tested internally only, and will be released here for beta testing when all functions work as intended. Please do not send any requests for alpha testing.

Known Bugs

tx39 CRITICAL:  work_buf_days causes undefined request lengths (fix: tx40)
tx38 COSMETIC:  work_buf_days displays 0.0 in messagesv (feature works) (fix: tx39)
tx37 NORMAL:    problems w. calibration at completed WU's after client restart
tx37 NORMAL:    backup project work requests at startup need some tweaking
tx37 NORMAL:    S@H calibration limits not working (fix: tx38)
tx36 SERIOUS:   decreasing cache at priority projects due backup ltd (fix tx41)
tx36 NORMAL:    cpu_affinity set by default? (unverified)
tx36 COSMETIC:  project names lowercase (fix: tx39)
tx36 NORMAL:    code needs cleaning for Unix/GCC (fix: tx38)
tx35 NOT_A_BUG: SIMAP may not calibrate correctly (exclude SIMAP)

ToDo / Wish List

antispyware features (i.e. montoring outgoing connections of project applications)
abuse protection (i.e. checking WU content against fraudulent project forwarding)
Carsten Giese Trojan checker - alert when multiple BOINC instances found
limiting RPC to a specific network interface - CFMP (added in tx43)
project specific CPU affinity (added in tx42)
scheduled configuration settings (added in tx41)
project specific configuration settings (added in tx40)
down/uploading another host's WU's into a separate dir
SMTP alerting, SNMP reporting / monitoring
suspending WU right after download - Pepo (added in tx43)
watchdog / starting a new WU if WU's < CPU's

Installation

Stop the running BOINC program or service (depending on the original installation mode), replace the original boinc.exe file in the BOINC directory (typically in C:\Program Files\BOINC). You can only replace matching versions of boinc.exe - v5.x by v5.x (no v4.x clients). Keep backup copy of the original file for the case you need to put it back! Copy also all other files in the distribution zip archive (except of the readme files) to the main BOINC directory. Then restart BOINC again.

Modifications & Configuration

Some modifications were made in the official source code and additional features added. Please see below the details (the list of added features may grow over time). You can configure the additional options and features by editing the new configuration file truxoft_prefs.xml that you copied from the zip file to the main BOINC directory. The content of another sample configuration file with more options, can be found below. You do not need to add parameters for features you do not plan to use, and you do not need to add the file at all if you do not plan using any of the extensions. Note: for backwards compatibility to my older versions, the client also reads the configuration parameters from global_prefs.xml, and some of them in an older format from remote_hosts.cfg too. In that case, the client will automatically create the file truxoft_prefs.xml and move the parameters there.

Please note: the configuration documentation contains also features of alpha and beta versions. Beta versions are available in the download section above. Alpha versions are being tested internally only, and will be released here for beta testing when all functions work as intended. Please do not send any requests for alpha testing.

Configuration scopes:

Configuration scopes were introduced in the release version 5.3.12.tx40. Most configuration settings can be used globally for all projects at any time, in a project scope for specific project only, or in a schedule scope for time limited effect only. The parser reads the setting from top to the bottom, where the last read setting value will override all preceding values. Therefore the global settings should be at the top, project and schedule settings below. Schedule scope may be both within the global scope and within project scopes, or may contain both global settings and project scopes.

Additional configuration options:

PLEASE NOTE: the credit calibration is turned ON for all projects by default in the sample configuration file!
Please keep on mind that the client may need to calculate a dozen or two of workunits before giving consistent results. Please do not contact me with questions why it does not work, when you just installed the client, or when it did not process at least 20-30 units yet. Posting such questions to message boards is equally futile, so please be sure to wait couple of days before commenting.

Other additional features

Sample Configuration

Sample content of the truxoft_prefs.xml configuration file (project and schedule scopes may be used only with the release 5.3.12.tx40 and above):
<truXoft_conf>
  <return_results_immediately/>
  <cpu_affinity/>
  <process_priority>0</process_priority>
  <rpc_port>1043</rpc_port>
  <delete_overdue>1</delete_overdue>
  <check_max_time>2.2</check_max_time>
  <work_buf_days>2.5</work_buf_days>
  <no_popup_alerts/>
  
  <project name="SETI@Home">
    <calibrate_credit/>
    <cpu_affinity>1</cpu_affinity>
    <process_priority>2</process_priority>
    <projects_priority>1</projects_priority>
    <delete_overdue>1</delete_overdue>
    <check_max_time>1.8</check_max_time>
    <work_buf_days>5.0</work_buf_days>
  </project>
  
  <project name="Einstein@Home">
    <cpu_affinity>2</cpu_affinity>
  </project>

  <schedule start="2006/01/30 17:40" length="2" period="24">
    <check_max_time>4.5</check_max_time>
    <project name="SETI@Home">
      <cpu_affinity>0</cpu_affinity>
      <process_priority>4</process_priority>
    </project>
    <project name="Einstein@Home">
      <process_priority>4</process_priority>
      <cpu_affinity>0</cpu_affinity>
    </project>
  </schedule>
</truXoft_conf>

The optimized client writes a log message to the stdoutdae.txt file at the loading time when it finds any of the additional parameters. You can view the messages by opening the file in Notepad, or in Messages in BOINC Manager or BoincView too. In this way you can easily verify if your settings were accepted.

2006-01-04 23:26:05 [---] General prefs: no separate prefs for home; using your defaults
2006-01-04 23:26:07 [---] Remote control allowed
2006-01-04 23:26:07 [---] Listening on port 31416
2006-01-04 23:26:07 [---] truXoft add-on: process priority = 4
2006-01-04 23:26:07 [---] truXoft add-on: return_results_immediately
2006-01-04 23:26:07 [---] truXoft add-on: set_cpu_affinity
2006-01-04 23:26:07 [---] truXoft add-on: calibrate_credit = SETI@home

Note: for backwards compatibility, some of the parameters in the old format used in the file remote_hosts.cfg, at older truXoft versions of the optimized client, will be also accepted. See the following sample of the remote_hosts.cfg file:
# port = 1044
# return_results_immediately
# set_cpu_affinity
# set_priority = 1

192.168.2.1/24
123.12.123.12
12.123.12.123/255.255.0.0
some.site.com
Joe

Distribution

You can freely redistribute the software, but I do prefer that you link to this page instead of serving the files from your site. Also please do not link directly to the download files! Linking to the main page will greatly simplify future updates, and I also prefere if people have the chance to read the accompanying description and notes here.

Support

IMPORTANT: If you have any troubles or doubts, please write your question to the BOINC message boards - there are plenty of experts who will happily jump in with a helpful advice, and I may answer too if I have the chance to see it. Please do not use e-mail, unless your message necessarily requires confidentiality. I am handling daily many hundreds of emails, and often have to ignore messages not concerning my daily job.

Security & Privacy Notes

My BOINC clients do not contain any hidden functions that would collect or forward data from your computer or network, or that would redirect work done on your computer to other user accounts (and yes, that is all actually easily possible). It was not designed to do anything else than the standard BOINC core client, except of the additional functionality documented on this page. The client does not contact my server ("calling home"), and it also does not contact any other 3rd party, with the exception of project servers you deliberately adhered to. Some BOINC versions may contact the main Berkeley's BOINC server when checking for new versions.

The functionality of the original official BOINC core client from Berkeley will be maintained also in future versions, so you should also study the privacy policy of the original developer team. I'll be using their source code possibly without reviewing and analyzing all changes, so I cannot take full responsibility for the functionality of the original. I fully stand behind my modifications though and publish them in source code as soon as they are released as public stable version. I can also guarantee that Windows and FreeBSD binaries compiled by myself, and available on my server, will be identical to binaries compiled from the published source code.

Binaries from 3rd parties (such as the Linux client) were compiled from the same source code, and although I trust the author, I cannot take the full responsibility for them. Please scrutinize the source code and compile the client yourself whenever you are in doubts, or if you plan to use it in corporate environment requiring higher level of security. The compiling is pretty straightforward and there are free compilers for most operating systems. Do not trust unknown 3rd parties offering my (or any other) BOINC clients or applications without the possibility to review and recompile their source code.

The best way to run BOINC core client and BOINC projects, regardless of the OS, is doing it under a separate user account with maximally restricted rights. In such way you can avoid damage caused by buggy or fraudulent clients or applications. Read more details about security concerns related to BOINC in the coming article BOINC and Security.

Credits

First of all, credits go to the original BOINC developers and all their countless volunteer helpers. Then, I'd like to thank to those who greatly helped me actively with beta testing and debugging - especially to Miras (CNT), Mr.Pernod (2CPU.com), 'bosh (CNT), Vejpuste (aka Uftoun-zemedelec, CNT) but also a number of others. Further, credits must not be forgotten for feature and improvement suggestions: ThierryH (L'Alliance Francophone), Honza, Uftoun-zemedelec, forest (all from CNT), CFMP (SETI.Germany), Pepo (TatraMed), and others (many from CNT). Special thanks go to Czech National Team anyway - for their support, testing and suggestions.

Big thanks and credits go also to those who compiled the calibrating client for platforms I could not easily do myself: to Vejpuste (aka Uftoun-zemedelec) for the Linux version, and to boog for the MacOS versions.

The financial help offered by some members is equally important and allows me to buy and update the much needed compilers, libraries, debugger, profiler, analysers, and other needed tools, which I could not easily afford without the sponsors. Special thanks belong to the very first donor - member my former Czech National Team reALTom. I especially value his contribution, because I am well aware that for Czechs, who still gain often tenfold less than is usual in Western Europe, such donation is much more difficult to make. In fact, 'bosh (another member of my fromer Czech team) ought to be the first donor with a very major subvention - he offered his financial help before I purchased the ICC compiler and IPP libraries. I refused in that time, because I was not sure if I manage to create what was expected. However, 'bosh sent his huge donation later anyway, but it was delayed due to PayPal problems. Big thanks 'bosh!!

Big thanks for other donations, besides reALTom and 'bosh, to John Roberts, KevinT (twice!), parknook, and four other donors who wished to stay anonymous!

offered by trux @ truXoft
Freediving Team

The compiled clients are my contribution to the BOINC community, and I do not intend profiting from it. However, the cost of the software tools for Windows development is huge (over three thousands of dollars), so if you can help with a small donation, I may be able to buy other tools I need for better optimizing - Intel Math Libraries, Intel Debugger, Profiler, and possibly other needs may emerge (i.e. updates). I already purchased full and legal versions of MS Visual Studio PRO 2003, and the Intel ICC Compiler + the Intel IPP Library. I did so spontaneously, without expecting any return, but unfortunately I cannot afford spending any more funds on the other needed tools. Any donations to help covering the cost of the development tools are very much appreciated!

Current donation status: €352.20 (updated manually)

THANKS!