Changes between Initial Version and Version 1 of CpuSched


Ignore:
Timestamp:
Apr 26, 2007, 10:38:34 AM (18 years ago)
Author:
KSMarksPsych
Comment:

Added page

Legend:

Unmodified
Added
Removed
Modified
  • CpuSched

    v1 v1  
     1= CPU scheduling in Version 4+ =
     2       
     3== Time-slicing ==
     4
     5Starting with version 4.00, the BOINC core client does '''time-slicing'''. This means that the core client may switch back and forth between results of different projects. This is done in a way that allocates CPU time according to the 'resource shares' you have assigned to each project.
     6
     7For example, suppose you participate in SETI@home with resource share 100 and Predictor@home with resource share 200. A single-processor machine might be scheduled as follows:
     8
     9{{{
     101:00 - 2:00: SETI@home
     112:00 - 3:00: Predictor@home
     123:00 - 4:00: Predictor@home
     134:00 - 5:00: SETI@home
     145:00 - 6:00: Predictor@home
     156:00 - 7:00: Predictor@home
     16...
     17}}}
     18
     19A two-processor machine might be scheduled as follows:
     20
     21{{{
     22             CPU 0             CPU 1
     231:00 - 2:00: Predictor@home    SETI@home
     242:00 - 3:00: Predictor@home    SETI@home
     253:00 - 4:00: Predictor@home    Predictor@home
     264:00 - 5:00: Predictor@home    SETI@home
     275:00 - 6:00: Predictor@home    SETI@home
     286:00 - 7:00: Predictor@home    Predictor@home
     29}}}
     30
     31In every 3 hour period, your computer spends 4 hours on Predictor@home and 2 hours on SETI@home, which is the desired ratio.
     32
     33This feature is necessary to handle projects like [http://climateprediction.net/ Climateprediction.net], whose work units take a long time (1 or 2 months) to complete on a typical computer. Without time-slicing, your computer would have to finish an entire work unit before it could start working on a different project.
     34
     35== Preemption ==
     36
     37When BOINC switches from one application to another, the first application is said to be '''preempted'''. BOINC can do preemption in two different ways; you can select this as part of your [GlobalPrefs General Preferences].
     38
     39    * '''Don't leave the suspended applications in memory''' (default). Applications are preempted by killing them; they are later restarted, and resume from their last checkpoint. This saves virtual memory (swap space) but can waste CPU time, especially if applications checkpoint infrequently.
     40    * '''Leave suspended applications in memory'''. Applications are preempted by suspending them; they remain in virtual memory while preempted (they don't necessarily occupy physical memory).