Commit Graph

24715 Commits

Author SHA1 Message Date
Charlie Fenton 2ad03b38f1 lib: fix compile break. 2014-07-28 03:09:40 -07:00
Rom Walton 1ae2a15873 client: Fix what is logged when kill_by_switcher() fails. 2014-07-28 01:27:52 -04:00
Rom Walton ea5dd29f97 client: Append the stdout and stderr buffer in switcher_exec in case the output is more than 1k. 2014-07-27 17:49:01 -04:00
Rom Walton debac23fa3 client: Use pipes to redirect sdtout/stderr output from switcher, report any failures as task_debug output with msg_printf(). 2014-07-27 16:30:02 -04:00
Rom Walton 3689d15294 client: Add missing stub functions for Windows related to removing the SANDBOX ifdef. 2014-07-27 14:19:17 -04:00
Rom Walton 9b07d17821 client: Use strerror() in kill_app_processes() on Windows instead of boincerror(). 2014-07-27 14:15:15 -04:00
Rom Walton 7a9b572fb5 VBOX: If the VM doesn't gracefully shutdown, attempt to terminate it. 2014-07-27 14:11:32 -04:00
Rom Walton 934c10d8e5 lib: Normalize 'int kill_program()' around the error codes returned by errno. 2014-07-27 14:10:48 -04:00
Rom Walton 37fd62bd95 client/lib: Refactor kill code for Windows. Expose functionality for wrapper apps. 2014-07-27 13:47:01 -04:00
Rom Walton 09985b0b62 client: Remove unneeded SANDBOX ifdefs. Use g_use_sandbox instead. I left one in main.cpp since I do not know where check_security() is. 2014-07-27 13:19:11 -04:00
Rom Walton 329b5a6ab6 client: Avoid needless error messages about kill failing. Only call kill_by_switcher() if we are running in sandbox mode, otherwise call kill. 2014-07-27 12:54:07 -04:00
Charlie Fenton 6c76387a14 client: In switcher, return the actual error code from execv (usually -1) rather than errno, and let the invoking call retrieve errno if appropriate (modify commit f014b0d). 2014-07-27 01:33:49 -07:00
David Anderson 3d447b02b6 scheduler: fix FCGI build 2014-07-26 10:25:59 -07:00
David Anderson 49c49c6db8 client: write log messages for trickle-ups (if <trickle_debug> set) 2014-07-25 17:08:31 -07:00
David Anderson 0eb346167a client: fix bug in last commit 2014-07-25 16:04:29 -07:00
David Anderson 34e97a5048 client: add <project_max_concurrent> option for app_config.xml
Lets you limit the number of running jobs over the whole project.
Note: this is not taken into account in work fetch.
2014-07-25 15:49:12 -07:00
David Anderson b3392bb195 scheduler: fix bug in plan class spec logic 2014-07-25 15:04:04 -07:00
David Anderson 89b51ea43d scheduler: preliminary support for generic coprocessors
A "generic" coprocessor is one that's reported by the client,
but's not of a type that the scheduler knows about (NVIDIA, AMD, Intel).

With this commit the following works:
- On the client, define a <coproc> in your cc_config.xml
  with a custom name, say 'miner_asic'.
- define a plan class such as
  <plan_class>
    <name>foobar</name>
    <gpu_type>miner_asic</gpu_type>
    <cpu_frac>0.5</cpu_frac>
  <plan_class>
- App versions of this plan class will be sent only to hosts
  that report a coproc of type "miner_asic".
  The <app_version>s in the scheduler reply will include
  a <coproc> element with the given name and count=1.
  This will cause the client (at least the current client)
  to run only one of these jobs at a time,
  and to schedule the CPU appropriately.

Note: there's a lot missing from this;
- app version FLOPS will be those of a CPU app;
- jobs will be sent only if CPU work is requested
... and many other things.
Fixing these issues requires a significant re-architecture of the scheduler,
in particular getting rid of the PROC_TYPE_* constants
and the associated arrays,
which hard-wire the 3 fixed GPU types.
2014-07-25 12:40:35 -07:00
David Anderson e6b7da8278 admin web: allow changing plan class of app versions 2014-07-25 12:11:23 -07:00
David Anderson aa04502db4 create_work: allow targeting commands in stdin job descriptions 2014-07-25 00:51:51 -07:00
David Anderson 16e45a1ddc Merge branch 'master' of ssh://boinc.berkeley.edu/boinc-v2 2014-07-24 23:43:06 -07:00
David Anderson b9f0fe0298 admin web: add "assigned jobs" link 2014-07-24 23:42:45 -07:00
Charlie Fenton fb66dd82ae client: try to get a return code from switcher (i.e., from the command that switcher executed.) 2014-07-24 02:39:17 -07:00
Charlie Fenton 99daa41445 client: attempt to get a more useful error message from kill_app_process() on non-Windows platforms. 2014-07-24 01:06:43 -07:00
Rom Walton f014b0d6da client: return a possible error code to the core client if execv fails for some reason in the switcher tool. 2014-07-24 00:31:57 -04:00
David Anderson 55a17c3b41 client: fix logic for cleaning up subsidiary processes
"Subsidiary processes" are
1) descendants
2) "other PIDs" as reported by the app, e.g. VMs which are not descendants
We were failing to clean up these processes in some cases.

- Add a function ACTIVE_TASK::kill_exited_app() for killing the
  subsidiary processes of a task whose main process has already exited.
  At this point we can't enumerate its current descendants;
  but we have the list of descendants from the last time
  we computed memory usage (within the last 10 sec).
  So kill this, and kill the other PIDs
- call this function when appropriate:
  - too many temporary exits
  - too many premature exits
  - main process has exited in response to abort or quit message
    (the existing code failed to kill other PIDs)
- rename ACTIVE_TASK::kill_task() to kill_running_task()
  to emphasize its intended use.

Also remove code that, in case of secure install on Windows,
didn't try to kill any subsidiary processes at all;
there used to be a permission problem in doing so, now there isn't.
2014-07-23 12:41:57 -07:00
David Anderson ae9c58e03d client: fix compile warnings 2014-07-23 12:41:41 -07:00
David Anderson dcb72145e1 client: fix compile warnings 2014-07-23 09:51:34 -07:00
David Anderson 3156ea56fd delete spammers script: fix --id_range command 2014-07-23 09:51:02 -07:00
Charlie Fenton 512e8e2cfe client: continue adding support for OpenCL devices (GPUs and accelerators) other than AMD/ATI, NVIDIA or Intel GPUs.
For now, handle AMD/ATI, NVIDIA or Intel GPUs as before.  But for other, "new" vendors, we treat each device as a separate resource, creating an entry for each instance in the COPROCS::coprocs[] array and copying the device name COPROC::opencl_prop.name into the COPROC::type field (instead of the vendor name.)
For devices from "new" vendors, set <gpu_type> field in init_data.xml file to the vendor string supplied by OpenCL.  This should allow boinc_get_opencl_ids() to work correctly with these "new" devices without modification.
2014-07-23 05:18:51 -07:00
David Anderson 191c7347e2 client: make it compile. Charlie, please change the commented-out lines 2014-07-22 13:02:43 -07:00
David Anderson 035541f7a7 scheduler: recent coproc changes caused crash; undo them 2014-07-22 09:13:29 -07:00
David Anderson 9d9f29f509 client: fix compile warning 2014-07-21 12:06:39 -07:00
David Anderson 8710b5e260 scheduler: when parsing trickle-ups, initialize "variety" field to empty
... otherwise can get garbage in that field if request doesn't include variety
2014-07-21 09:42:29 -07:00
David Anderson 2ae76ce6a3 Merge branch 'master' of ssh://boinc.berkeley.edu/boinc-v2 2014-07-21 09:05:24 -07:00
Rom Walton 0b9348c403 client: Cleanup any descendants or other_pids on a premature exit as well. 2014-07-19 19:16:00 -04:00
Rom Walton d1db358a56 client: Make sure handle_temporary_exit() cleans up any descendents and any other processes of interest determined by other_pid. 2014-07-19 19:04:06 -04:00
Charlie Fenton 98f4c461d0 client: group new (non-NVIDIA, non-AMD, non-INTEL) OpenCL device types by vendor name string rather than by CL_DEVICE_VENDOR_ID. This assumes that OpenCL reports identical vendor name strings for all devices from the same vendor on a given host. I incorrectly thought CL_DEVICE_VENDOR_ID was a numeric ID of the vendor which would be the same for each device from that vendor, but it is actually a unique numeric ID assigned by a given vendor to each device on a particular host. 2014-07-18 04:25:45 -07:00
Charlie Fenton 786184b2d1 Merge branch 'NewOpenCLCoprocs' 2014-07-17 02:24:01 -07:00
Charlie Fenton 7fb69fe924 client: generalize naming scheme for OpenCL devices, add more general have_rsrc() functions 2014-07-17 02:22:26 -07:00
David Anderson 9a9041cf7d server: fix support for client break; show it on web 2014-07-16 21:08:18 -07:00
David Anderson 9769c55f17 client: client brand fix 2014-07-16 21:00:10 -07:00
David Anderson 246f5a2d1e client/scheduler: add support for "client brand"
Currently the server doesn't know about different client "brands",
e.g. HTC Power to Give, Charity Engine, GridRepublic, etc.,
so there's no way to collect statistics about them.

Changes:
- client: at startup, read a "client brand" string from client_brand.txt
    (i.e. branded clients will have to include this file in their installer)
    Report this string in scheduler requests.
- scheduler: parse this request element,
    and store it in host.serialnum as [BOINC|7.4.2|brand]
2014-07-16 20:18:06 -07:00
David Anderson 9904d7b920 web: use symbols instead of numbers in result.inc 2014-07-16 19:29:30 -07:00
David Anderson 64184333a7 wrapper: comment tweak 2014-07-16 19:28:33 -07:00
David Anderson 4b6d48c8aa Merge branch 'master' of ssh://boinc.berkeley.edu/boinc-v2 2014-07-16 19:27:52 -07:00
David Anderson 7c43a9fbb0 antique file deleter: skip no_delete WUs in finding oldest WU 2014-07-16 19:25:15 -07:00
David Anderson 1b7506e0af Client (Win): if 32 bit client on 64 bit host, warn about VirtualBox
The 32-bit client won't be able to detect VBox on a 64-bit host.
Say this in a startup message.
2014-07-16 17:32:56 -07:00
Rytis Slatkevičius 1124a108bf Fix workunit/result templates in job submission rpc handler 2014-07-16 17:54:12 +03:00
Charlie Fenton 64d76198ea client: keep array subscripts in bounds. 2014-07-16 06:05:01 -07:00