Commit Graph

2661 Commits

Author SHA1 Message Date
David Anderson d6da81b862 client: fix bugs with CPU throttling and GPU apps
Various bad things could happen when CPU throttling was used together w/ GPU apps.
Examples:
- on a multi-GPU system, several GPU tasks are assigned to the same GPU
- a suspended GPU task remains in memory (tying up its GPU resources)
while other tasks try to use the GPU.

The problem was that parts of the code assumed that suspended
GPU processes don't exist - i.e. that when a GPU task is suspended
it's always removed from memory.
This isn't true in the presence of CPU throttling.

So I made the following changes:
- When assigning GPUs to tasks, treat suspended tasks like running tasks
  (i.e. reserve their GPUs)
- At the end of the CPU-scheduling logic, if there are any GPU tasks
  that are suspended and not scheduled, remove them from memory,
  and trigger a reschedule so we can reallocate their GPUs.

Also, a cosmetic change: in the resource usage string shown in the GUI,
include "(device X)" even if the task is suspended (i.e. because of throttling).

Also: zero out COPROC::opencl_device_indexes[] so we don't write
a garbage number to init_data.xml for non-OpenCL jobs
2013-11-29 11:44:09 -08:00
David Anderson 7f12630cd2 boinccmd: show daily xfers using %f to handle > 2 GB 2013-11-25 22:50:13 -08:00
David Anderson feb2f1971d scheduler: fix bug that prevented Intel GPU work from being sent to anonymous platform clients 2013-11-21 22:31:15 -08:00
David Anderson 634613abcc client: generate host CPID as a function of MAC address
This makes the host CPID stable; if you repeatedly install BOINC
on a particular node, it will get the same host CPID each time,
and your host table won't get lots of redundant entries.
A host can have multiple NICs;
we use the MAC address of the first Ethernet controller we find,
or the last NIC if there is none.
Of course, this will create problems if we get the same MAC address
for different hosts; in principle this shouldn't happen.

Remove the unused file hostinfo_network.h
2013-11-18 20:31:14 -08:00
David Anderson 5346ff3b7a BOINC lib: change get_mac_address to return just one address; prefer Ethernet 2013-11-18 10:20:46 -08:00
Rom Walton d384dca967 LIB: Re-introduce code to get a host's MAC address. 2013-11-15 17:52:48 -05:00
Charlie Fenton 7c70f89b80 Mac: Fixes to allow minor OS versions > 9 and major OS versions > 10 2013-11-15 05:02:04 -08:00
Rom Walton b9f8bea665 client: Give boinc_master full control of any process spawned using the service token created by the client for boinc_project.
This will allow the core client to kill VirtualBox VM's launched indirectly by vboxwrapper.  Vboxwrapper launches vboxsvc.exe which launches vboxheadless.exe.  This should also take care of the core client being able to kill child processes of the regular wrapper as well.  I don't know the full scope of this type of issue?  Maybe the default ACLs for a process changed within the last couple of versions of Windows.
2013-11-14 23:26:06 -05:00
David Anderson 0fc0f80c30 Fix win compile warnings. Let's shoot for zero warnings, OK? 2013-11-11 10:42:03 -08:00
Oliver Bock f714fda040 Fix regression in c1ee472 (not fixed in d5fdf4b) 2013-11-08 15:59:47 +01:00
David Anderson a3b2be239f Compile fixes for C++11, from Rene Ladan 2013-11-05 09:19:27 -08:00
Eric J Korpela f6bfb14433 Fix for fcgi compiles. 2013-10-28 16:19:48 -07:00
Rom Walton 35a7aff5f3 lib: Add missing entry for Charity Engine when identifying an application as a BOINC app or not. 2013-10-23 14:19:04 -04:00
David Anderson 590bbf517a Client: for VM apps, use rsc_memory_bound as the working set size.
On Windows, the working-set size reported by the OS for VM apps is too low.
Apparently the RAM usage is in fact roughly the VM size.
This can lead to running multiple VM apps,
which use more RAM than is available, causing performance problems.
Solution: use workunit.rsc_memory_bound as the working set size for VM apps.
(Note: for now, a VM app is one where the plan class includes "vbox").
2013-10-22 22:21:13 -07:00
David Anderson 438cd78b13 Remote job submission: add C++ APIs for query_batches() and query_batch()
- Add program (tools/remote_submit_test.cpp) for testing C++ API for remote job submission.
- Rename Condor-specific API to query_batch_set().
2013-10-22 15:27:34 -07:00
David Anderson 03cc6849c7 remote job submission: add C++ interface to estimate_batch function 2013-10-21 23:40:30 -07:00
David Anderson f3ffbf67f4 GUI RPC: add cpu_time (as well as elapsed_time) to OLD_RESULT 2013-10-18 00:46:48 -07:00
Eric J Korpela c80f373fde - Removed reflection of signals that appear in the incorrect thread due to
android client compile errors.
2013-10-17 11:47:45 -07:00
David Anderson 96a85b4ab6 Move thread.cpp,h from lib/ to client/, to remove dependency on pthread in libboinc 2013-10-17 09:45:49 -07:00
David Anderson b2a6a6528d linux build: add -lpthread 2013-10-11 22:17:15 -07:00
Charlie Fenton 544ed85aa0 client: fix Event Log descriptions of OpenCL CPUs:
- Show the OpenCL platform vendor for each OpenCL CPU description.
 - OpenCL may not reliably report total RAM, available RAM and max FLOPS for CPUs, so exclude these from the OpenCL CPU descriptions; that information is available elsewhere.
2013-10-11 03:47:56 -07:00
Rom Walton 8888ba6aa8 client: Detect OpenCL CPUs with the latest Intel drivers.
client: Display an OpenCL CPU event log item for every OpenCL CPU detected.
2013-10-10 14:23:30 -04:00
David Anderson 7336bfd9ba Remote job submission, C++ API: simplify 2013-10-08 17:36:45 -07:00
Rom Walton 7cca8a59eb client: Add vm_extensions_disabled as an element to APP_INIT_DAATA. We can use the additional information to selectively enable/disable hardware acceleration in VirtualBox. 2013-10-03 23:52:05 -04:00
Rom Walton 70de6a60df LIB: Provide a mechanism for BOINC client software to initialize the exception filter for secondary threads 2013-10-03 20:09:22 -04:00
Rom Walton f318ee9959 VBOX: Add code to vboxwrapper to bubble up out of memory errors for guest VM applications to the server. 2013-10-03 12:59:04 -04:00
Eric J Korpela 0bd2b91a60 Fix for MacOS signal handler problems 2013-09-27 17:57:17 -07:00
Eric J Korpela 19fcc1f6ad Implemented stackdumps for Android using libcorkscrew.so interfaces. 2013-09-26 16:13:24 -07:00
David Anderson ebde7809ce client: preliminary implementation (commented out) of sub-second throttling 2013-09-20 14:30:04 -07:00
Rom Walton f44c260e67 lib: A little code cleanup missed from the previous commit 2013-09-20 14:49:07 -04:00
Rom Walton 8428f942de lib: On Windows, if the registry key that defines where the data directory is missing, check to see if the default directory exists anyway. If the directory exists change the current working directory over to it. 2013-09-20 14:46:26 -04:00
David Anderson 3e21e8b7c4 Condor: debug set_expire_time RPC 2013-09-17 23:14:57 -07:00
David Anderson 2a2c9c4ad8 remote job submission: add notion of "expire time" for batches (for Condor)
- Batches now have optional "expire time".
  If this time passes and the batch is not retired, abort and retire it.
- Add script "expire_batches" which enforces the above.
  Run it as a periodic task.
- Add a web RPC for setting the expire time of a batch
  (it can be changed multiple times)
- Add a C++ interface for this RPC
- Add a BOINC_SET_LEASE command to the BOINC GAHP
  ("lease" is Condor term for expire time)
2013-09-17 13:35:55 -07:00
David Anderson 826ab1d945 Client (Android): add device_name field to DEVICE_STATUS, so that GUI can tell client the device name 2013-09-10 18:04:34 -07:00
David Anderson d6398b0834 Client and boinccmd: fixes for get_old_results GUI RPC
- Add binding for get_old_results GUI RPC
- Add --get_old_tasks option to boinccmd
- Compile fixes for gcc (can't have a var named "or")
2013-09-08 12:11:09 -07:00
David Anderson 5b76909f04 scheduler: parse OpenCL/CPU descriptors, and add plan class for OpenCL/CPU/Intel 2013-08-26 23:32:32 -07:00
David Anderson 3347c27532 Condor interface: fix bug if job names have '#' (URL-escape args in GET HTTP) 2013-08-26 20:52:25 -07:00
David Anderson d5fdf4b391 Fix MinGW makefile for new file 2013-08-26 11:21:54 -07:00
David Anderson 4430a2cacd Update Win project files for new .cpp file 2013-08-25 15:27:11 -07:00
David Anderson c1ee47216b Move OpenCL-related code to a separate file 2013-08-25 14:13:14 -07:00
David Anderson b10348ca1a client (Android): use random string for domain name
- parse domain_name from state file
- if it's empty, generate one of the form android_xxxxxxxx
- don't use MAC address
2013-08-22 23:50:13 -07:00
Charlie Fenton 5a81b939e2 lib: fix a comment 2013-08-22 05:20:29 -07:00
Charlie Fenton eb15b04d4a client: implement support for OpenCL detection of CPUs
Notes:
- The same CPU can have a different cpu_opencl_prop for each of multiple OpenCL platforms.  We send them all to the project server because:
   - Different OpenCL platforms report different values for the same CPU.
   - Some OpenCL CPU apps may work better with certain OpenCL platforms.
- OpenCL has only 64 bits for global_mem_size, so it can report a max of only 4GB; get the CPU RAM size from gstate.hostinfo.m_nbytes.
2013-08-22 05:06:54 -07:00
Charlie Fenton f94d1822cd Mac installer: Don't load more languages for a catalog if we've already loaded it for English 2013-08-16 21:48:18 -07:00
David Anderson 84a6f89840 client and API, Unix: code cleanup, no functional change 2013-08-16 12:20:01 -07:00
Charlie Fenton c9ccf7b402 Mac installer: More robust handling of language codes with and without region codes for translations 2013-08-16 05:11:32 -07:00
David Anderson 0950e35c10 client (Android): put default prefs in code instead of config file; make report_results_immediately the default
- the eliminates the need to include global_prefs_override.xml in the Android distribution
- defering reporting tasks confuses some Android users; since WiFi connectivity is likely to be sporadic, and jobs tend to be long, it's probably better the report them ASAP
2013-08-15 12:32:48 -07:00
Charlie Fenton 1f4aac6f87 Mac installer: fix handling of translations for some languages 2013-08-15 04:29:54 -07:00
David Anderson d980f70163 client and manager: the set_cc_config and get_cc_config GUI RPCs had nonstandard replies, which weren't parsed correctly by the calling code.
The reply from a GUI RPC that don't return info is one of:
<success/>
<error>error message</error>
<status>N</status>
2013-08-11 00:23:41 -07:00
David Anderson c3485cd6a9 client (Android): allow GUI to pass MAC address to client via set_host_info(). If domain name is "localhost" and MAC address is nonempty, use MAC address instead of domain name when showing host on project web page. 2013-08-03 18:42:11 -07:00