where being omitted from query strings.
This is incorrect.
For example, suppose you have an app version with nonempty plan_class,
then you try to add a version with no plan class.
The query would omit the "and plan_class = ''"
so it would match the existing app version and not add a new version.
Reported by Rytis.
Hopefully this won't break anything.
svn path=/trunk/boinc/; revision=22616
Old: job scheduling has 2 phases.
In the first phase (schedule_cpus()) we make a list of jobs,
with deadline-miss and high-STD jobs first.
Keep track of the RAM used,
and skip jobs that would exceed available RAM.
Stop scanning when the # of CPUs used by jobs in the list
exceeds the # of actual CPUs.
In the 2nd phase (enforce_schedule()), we add currently running jobs
(which may be in the middle of a time slice) to the list,
and reorder to give priority to such jobs,
and possibly also to multi-thread jobs.
We then run and/or preempt jobs, keeping track of RAM used.
Problems:
- suppose we add an EDF 1-CPU job to the list, then a MT job.
We'll stop at that point because #CPUs is exceeded.
But enforce_schedule() won't run the MT job,
and CPUs will be idle.
- Because the list may be reordered, skipping jobs based
on RAM is not correct, and may cause deadlines to be missed.
New:
- when making the job list, keep track of #CPUs used
by MT jobs and non-MT jobs separately.
Stop the scan only if the non-MT count exceeds #CPUs.
This ensures that we have enough jobs to use all the CPUs,
even if the MT jobs can't be run for whatever reason.
- don't skip jobs because of RAM usage
- skip MT jobs if the MT CPU count is at least #CPUs
Notes:
- ignoring RAM usage in phase 1 can cause idleness in some cases,
e.g. suppose there are 4 GB of RAM and the list has
jobs that use 3 GB, but there are also some jobs that use 1 GB.
I'm not sure how to fix this.
- Maybe the 2-phase approach is not a good idea.
We did it this way for efficiency,
so that we don't have to recompute the job list
each time a job checkpoints.
But this is probably not a concern,
and I like the idea of a simpler approach,
e.g. reducing the policy to a single comparison function.
svn path=/trunk/boinc/; revision=22615
- scheduler: improve the deadline check mechanism slightly.
When updating "estimated delay" (a rough measure of how long
a resource is saturated with high-priority work)
take into account the # of instances used by the job,
and the # of total instances
svn path=/trunk/boinc/; revision=22612
If set, the feeder doesn't read jobs into shmem,
and the scheduler doesn't send jobs.
Intended for use when a project wants to process
a backlog of completed jobs and not issue more.
svn path=/trunk/boinc/; revision=22601
My change of 1 Oct ([22440]) required that such jobs
be processed with 64-bit apps,
on the assumption that 32-bit apps have a 2 GB user address space limit.
However, it turns out this limit applies only to Windows
(kernel and user mode share the 4GB address space; each gets half).
On Linux, the split is 3GB user / 1 GB kernel.
On Mac OS X, user mode and kernel mode have separate address spaces,
each of them 4 GB.
svn path=/trunk/boinc/; revision=22599
They can be determined implicitly by WUs/results,
or explicitly in the <app> record.
If you do neither, the app is ignored.
svn path=/trunk/boinc/; revision=22591
- fixed whitespace error in Makefile.mingw
- build and install svn_version.h in Makefile.mingw
- fixed boinc_win.h for MinGW gcc-4
- not sure why client_msgs.h was ever included in procinfo_unix.cpp,
but in current code caused a nasty trail of includes breaking the
Linux build, so removed it
svn path=/trunk/boinc/; revision=22561
- MGR: Add missing ellipses for the new instance of BOINC Manager and
Event Log.
- MGR: Display a simple message when saying that there are no notices
to be displayed when the client reports there are zero notices.
clientgui/
AdvancedFrame.cpp
NoticeListCtrl.cpp
svn path=/trunk/boinc/; revision=22558
(e.g. "Download new client here" link) and others
(e.g. "Bad tag in cc_config.xml: <foo>").
- code cleanup; move show_message from main.cpp to client_msgs.cpp
svn path=/trunk/boinc/; revision=22548
ShowWindow() on an application frame to restore an application from
a minimized state or a hidden state on Windows(75% of the UI test
automation would fail at Microsoft without this ability), it appeartly
isn't for other platforms. wxWidgets is or appears to be tracking window
state internally, which leads to problems when the OS restores the window
and the rest of the framework doesn't know about that change in state.
Certain window events were being ignored (like WM_CLOSE, menu selection
events, etc.). So replace the previous mechinism for bringing an existing
instance of the BOINC Manager to the foreground by creating a new global
window message which is tracked by the system tray icon. When the new
global message is fired make sure the CBOINCGUIApp::SetActiveGUI() function
is called to restore the window state which in turn updates all the internal
framework data structures.
clientgui/
BOINCGUIApp.cpp
clientgui/
BOINCTaskBar.cpp, .h
clientgui/msw/
taskbarex.cpp, .h
svn path=/trunk/boinc/; revision=22547
about the message (sender, title, or content)
- user web: don't send an RSS item for a thread with no posts (i.e., hidden)
- client simulator: support global_prefs_override.xml
svn path=/trunk/boinc/; revision=22545
E.g., if a project deletes a news item, remove it from notices.
- notices RSS: remove the "since_time" mechanism
(an optimization that conflicts with the above)
svn path=/trunk/boinc/; revision=22543
say "app is not available for Microsoft Windows (98 or later) running on an Intel x86-compatible CPU" (or whatever)
svn path=/trunk/boinc/; revision=22537
as the major criterion in choosing non-EDF GPU jobs.
GPU scheduling now respects resource share,
and as a result STD should no longer diverge.
- client simulator: various improvements, most notably
that we now generate gnuplot graphs of all debt types
NOTE: the client problem was found and fixed using the simulator!
svn path=/trunk/boinc/; revision=22536