Commit Graph

54 Commits

Author SHA1 Message Date
David Anderson 2e4d561647 sample work generator: wait until transitioner has processed jobs before creating any more
Work generators create jobs (workunits);
the transitioner creates instances (results).
If a work generator tries to maintain a certain number of unsent results
(as the sample work generator does)
it must wait for a bit, after creating jobs,
to let the transitioner create instances of those jobs.
The example work generator waited 5 seconds.

Problem: on a heavily loaded project, the transitioner can fall behind -
minutes or hours behind.
So the above policy can create way too many jobs.

Solution: after creating jobs, the sample work generator
notes the current time X,
then waits until the transitioner catches up to time X
(i.e., until the min workunit.transition_time exceeds X).
This ensures that instances have been created for all the new jobs.

Other work generators the limit the number of unsent jobs
should use the same technique;
use min_transition_time(x) to get the min transition time.

Code cleanup: get_double should be a member of DB_CONN, not DB_BASE.
2013-12-14 16:36:18 -08:00
David Anderson ab120dea9e - web: after post to a thread, show thread in user's chosen order
instead of newest first.


svn path=/trunk/boinc/; revision=25931
2012-08-01 17:57:56 +00:00
David Anderson 24d386e511 - db_purge: when deleting a workunit record,
delete any assignments that refer to it


svn path=/trunk/boinc/; revision=25284
2012-02-17 18:26:36 +00:00
David Anderson ae04b50a71 - client: don't crash if trickle up exceeds 64KB
(this bug was introduced Sept 20)
- scheduler: truncate long trickle-ups to 256KB; don't crash


svn path=/trunk/boinc/; revision=24535
2011-11-06 06:25:48 +00:00
David Anderson 4b826b52a0 - scheduler: fix bug in the "homogeneous app version" (HAV) feature
(reported by Kevin Reed).
    The problem: cache inconsistency.
    If there are 2 results for the same WU in shared mem,
    and 2 scheduler instances get them around the same time,
    they can send them with different app versions.
    We already fixed this problem for HR by
    1) rereading the relevant WU fields while deciding
        whether to send the result
    2) doing a "careful update" of the WU field using a where clause
        to make sure it wasn't modified in the (short) interval
        since rereading it.
    I fixed the HAV problem in the same way,
    and merged the two mechanisms to combine the DB queries.

    Also:
    - The rereads are done in slow_check() (see below).
    - The careful updates are done in update_wu_on_send(),
        and this is called *before* doing careful updates on result fields.
        That way, if the WU updates fail, we don't have orphaned results.
    - already_sent_to_different_platform_careful() (sic)
        no longer does DB stuff, so it's merged with
        already_send_to_different_hr_class() (better name)

    NOTE: slow_check() is used in array scheduling only.
        Score-based scheduling uses other code,
        in which this bug is not yet fixed.
        Locality scheduling doesn't support HR or HAV at all.
        This should be unified.


svn path=/trunk/boinc/; revision=24484
2011-10-26 07:15:22 +00:00
David Anderson a5c2f98481 - backend: make "print queries" a runtime instead of compile-time
decision (bool g_print_queries)


svn path=/trunk/boinc/; revision=21065
2010-04-03 00:02:38 +00:00
David Anderson fb851311e0 - server: various changes;
see http://boinc.berkeley.edu/trac/wiki/CreditNew

    Projects will need to update DB and recompile all back-end programs.

    Summary:
    - new way of computing credit
    - "reliable host" mechanism is per app version
    - "host punishment" mechanism is per app version
    - adjustment of wu.rsc_fpops_est provides the
        equivalent of per app version DCF
    - max jobs in progress is now per app
    - max jobs per RPC is now per app

    TODO:
    - reliable mechanism:
        - populate and use host_app_version.error_rate
        - populate host_app_version.turnaround
    - host punishment:
        - populate host_app_version.max_jobs_per_day
        - populate host_app_version.n_jobs_today
        - use app.max_jobs_per_day_init
    - job limits:
        - use app.max_jobs_in_progress, max_gpu_jobs_in_progress
        - use app.max_jobs_per_rpc
    - adjust wu.rsc_fpops_est
    - remove old credit stuff
        fpops_cumulative, credit_multiplier
        credit computation in scheduler

- AVERAGE class: use the Knuth algorithm (Wikipedia)


svn path=/trunk/boinc/; revision=21021
2010-03-29 22:28:20 +00:00
David Anderson 59184caaa9 - scheduler: FCGI: use mysql_ping() to check that DB connection
is still alive before handling a request.  If not, try to reconnect.
    This will hopefully make things work better if MySQL goes down and up
    when using FCGI.

svn path=/trunk/boinc/; revision=16112
2008-10-02 19:03:52 +00:00
David Anderson 4f66bb4c95 - added copyright and license info to .C, .cpp, .h files
- scheduler: fix bug in adaptive replication:
    if send an unreplicated job to untrusted host,
    set both wu.target_nresults and wu.min_quorum to app.target_nresults.

svn path=/trunk/boinc/; revision=15762
2008-08-06 18:36:30 +00:00
David Anderson 4e9fbac5e0 - admin web: touch reread_db in manage_app_versions.php
- DB code: remove "is_high_priority" stuff.
- scheduler: merge find_app_version() into get_app_version().
    Have the latter memoize its results (both positive and negative).
    Have it call app_plan() for apps with nonempty plan_class.
- scheduler: first steps towards improved selectability of log messages.
    It will eventually be like the client,
    where you can select among various types of messages.
- feeder: if can't unlink the reread_db trigger file, exit
    (else we'd go into an infinite loop)

svn path=/trunk/boinc/; revision=14940
2008-03-18 21:22:44 +00:00
David Anderson 95772cba77 - removed boinc_ncpus_available() and boinc_nthreads() calls.
The design has been changed to constant #threads per app version
    Various changes from Kevin Reed/WCG:
    - server: add workunit.rsc_bandwidth_bound: if nonzero,
        send this WU only to hosts with that much download bandwidth
    - assimilators: if a handler returns DEFER_ASSIMILATION,
        the WU remains in INIT state and will be handled when the
        next instance completes.
        Useful if you want the assimilator to see all instances.
    - scheduler: when setting result.outcome = DETACHED,
        set received_time to now
    - scheduler: removed the reliable_time and reliable_min_avg_credit
        options
    - scheduler/web: add optional <allow_non_preferred_projects>
        in project preferences.
        If present, user will accept work from non-selected apps
        if no work is available for selected apps
    - scheduler: improved messages for projects with multiple apps
    - scheduler: added config options
        <granted_credit_weight> and <granted_credit_ramp_up>.
        Used in calculating host.claimed_credit_per_cpu_sec,
        but I'm not sure how.
    - Added two new credit-granting formulas (validate_util.C):
        stddev_credit() and two_credit()
    - server DB: add rollback_transaction() and affected_rows() to DB_CONN

    NOTE: DB update required

svn path=/trunk/boinc/; revision=14870
2008-03-07 21:13:01 +00:00
David Anderson f77420c2c0 - scheduler: do "careful update" of workunit.hr_class
in case someone else changed since we read it.
    Hopefully this will fix a race condition
    where WU results get sent to different HR classes.
    (Alternatively we could use transactions,
    or acquire the semaphore during read/update,
    but this could impact performance).

svn path=/trunk/boinc/; revision=14710
2008-02-08 17:20:09 +00:00
David Anderson e56ed1430f - DB code: safe_atof() was returning a float,
causing a potential loss of precision.
    Change it to double (same as atof())
- When moderator locks a thread, let them specify reason

svn path=/trunk/boinc/; revision=14662
2008-02-02 17:01:57 +00:00
David Anderson 1069770a7f - compile fixes for gcc 4.3 (from Frank Thomas)
Fixes #514

svn path=/trunk/boinc/; revision=14436
2007-12-21 21:09:40 +00:00
Frank Thomas 3bfc78b511 Updated the postal address of the Free Software Foundation in all license headers. See http://lists.ssl.berkeley.edu/pipermail/boinc_dev/2007-October/008939.html for reference.
svn path=/trunk/boinc/; revision=13804
2007-10-09 11:35:47 +00:00
David Anderson f7d648e350 *** empty log message ***
svn path=/trunk/boinc/; revision=12075
2007-02-13 21:41:07 +00:00
David Anderson 77e757c6f9 *** empty log message ***
svn path=/trunk/boinc/; revision=12043
2007-02-06 21:50:48 +00:00
David Anderson ddd17a8b22 *** empty log message ***
svn path=/trunk/boinc/; revision=11745
2006-12-30 00:26:22 +00:00
David Anderson 1b3e1fe484 scheduler race condition
svn path=/trunk/boinc/; revision=9666
2006-03-17 04:47:51 +00:00
Reinhard Prix b6832575c1 fixed my erronous mysql include (should have no relative path prefix).
svn path=/trunk/boinc/; revision=8314
2005-09-29 12:03:23 +00:00
Reinhard Prix c8d09966cf Install header-files necessary for building workunit-generator externally linked to BOINC.
svn path=/trunk/boinc/; revision=8313
2005-09-29 11:56:28 +00:00
David Anderson b91a653741 *** empty log message ***
svn path=/trunk/boinc/; revision=6468
2005-06-28 05:48:41 +00:00
David Anderson 3a1b32e7d6 *** empty log message ***
svn path=/trunk/boinc/; revision=6466
2005-06-28 05:43:22 +00:00
David Anderson 8d0ab453b3 *** empty log message ***
svn path=/trunk/boinc/; revision=5443
2005-02-16 23:17:43 +00:00
David Anderson 435f8edd47 *** empty log message ***
svn path=/trunk/boinc/; revision=5161
2005-01-20 23:22:22 +00:00
David Anderson 71fec1defe *** empty log message ***
svn path=/trunk/boinc/; revision=5070
2005-01-11 05:18:34 +00:00
David Anderson 504957c0bd *** empty log message ***
svn path=/trunk/boinc/; revision=5054
2005-01-10 00:00:42 +00:00
David Anderson 4fc2e50397 *** empty log message ***
svn path=/trunk/boinc/; revision=4289
2004-10-04 23:23:57 +00:00
David Anderson 5b51f17d3b *** empty log message ***
svn path=/trunk/boinc/; revision=4288
2004-10-04 22:37:08 +00:00
David Anderson 45b76a2180 *** empty log message ***
svn path=/trunk/boinc/; revision=4238
2004-09-24 20:48:07 +00:00
Lana Alber 760e55d907 *** empty log message ***
svn path=/trunk/boinc/; revision=4187
2004-09-12 00:49:38 +00:00
David Anderson 7d08159c7d *** empty log message ***
svn path=/trunk/boinc/; revision=4088
2004-08-21 00:40:01 +00:00
David Anderson 11fda1b929 *** empty log message ***
svn path=/trunk/boinc/; revision=3923
2004-07-21 21:50:25 +00:00
Karl Chen 3dd2f3390c *** empty log message ***
svn path=/trunk/boinc/; revision=3821
2004-07-09 14:11:17 +00:00
Rom Walton 35303cae47 Client spamming server hotfix
svn path=/trunk/boinc/; revision=3777
2004-07-03 23:01:29 +00:00
Rom Walton 6f9d4cd485 Client spamming server hotfix
svn path=/trunk/boinc/; revision=3775
2004-07-03 22:31:38 +00:00
David Anderson fccf8d83ab *** empty log message ***
svn path=/trunk/boinc/; revision=3736
2004-07-01 20:24:00 +00:00
Rom Walton d609e2bc48 Client spamming server hotfix
svn path=/trunk/boinc/; revision=3734
2004-07-01 18:43:36 +00:00
Rom Walton 7ab5c16f17 Client spamming server hotfix
svn path=/trunk/boinc/; revision=3726
2004-06-30 18:25:14 +00:00
Eric J. Korpela 7cd5c7911a *** empty log message ***
svn path=/trunk/boinc/; revision=3725
2004-06-30 18:17:21 +00:00
Rom Walton ca1b9ff110 Client spamming server hotfix
svn path=/trunk/boinc/; revision=3714
2004-06-29 06:21:05 +00:00
David Anderson 68039a57e2 *** empty log message ***
svn path=/trunk/boinc/; revision=3513
2004-06-09 00:12:22 +00:00
David Anderson 08e922505d *** empty log message ***
svn path=/trunk/boinc/; revision=3390
2004-05-18 18:33:01 +00:00
David Anderson cb3681a91e *** empty log message ***
svn path=/trunk/boinc/; revision=3239
2004-04-09 23:33:50 +00:00
Karl Chen 7519dc516c *** empty log message ***
svn path=/trunk/boinc/; revision=2889
2004-01-15 23:53:13 +00:00
David Anderson 42f768437c *** empty log message ***
svn path=/trunk/boinc/; revision=2876
2004-01-14 20:24:24 +00:00
David Anderson 6d44e9ccc1 *** empty log message ***
svn path=/trunk/boinc/; revision=2844
2004-01-04 06:48:40 +00:00
David Anderson 9d786e3b72 *** empty log message ***
svn path=/trunk/boinc/; revision=2831
2003-12-26 06:03:03 +00:00
David Anderson 7542bd66c9 *** empty log message ***
svn path=/trunk/boinc/; revision=2780
2003-12-11 19:05:52 +00:00
David Anderson 8bb76936a1 *** empty log message ***
svn path=/trunk/boinc/; revision=2753
2003-12-07 18:58:08 +00:00