Thread 'How to make boinc client "don't download new task from server when all cores are running"?'

Message boards : BOINC client : How to make boinc client "don't download new task from server when all cores are running"?
Message board moderation

To post messages, you must log in.

AuthorMessage
passerby1023

Send message
Joined: 28 Mar 16
Posts: 9
Taiwan
Message 71063 - Posted: 28 Jul 2016, 14:54:13 UTC

Hello everyone,

Is there a way to make client download the new task only when the computer has at least one idle core?
(which means if client serves 100% processors for boinc project, once the jobs are downloaded, it will run immediately,
there will no jobs hang in status "ready to start")

If I need to edit server-side source code, I guess it should make some changes in scheduler,
but I don't know how to get the "running jobs number" on client side

thanks for any help :)
ID: 71063 · Report as offensive
Richard Haselgrove
Volunteer tester
Help desk expert

Send message
Joined: 5 Oct 06
Posts: 5131
United Kingdom
Message 71064 - Posted: 28 Jul 2016, 15:20:12 UTC - in response to Message 71063.  
Last modified: 28 Jul 2016, 15:42:02 UTC

Have you tried simply setting your cache ("Store at least ... days of work") at zero? I believe the client is hard-coded to initiate the next work request 3 minutes before idleness is expected, to allow enough time for a new task to be downloaded and ready to start - it shouldn't take too long to find that in the core work_fetch loop and hack it down to zero, if 3 minutes is too long.

Edit - alternative suggestions:

1) Set project Resource Share to zero - backup project, only fetch work when host is idle.
2) Client configuration
<fetch_minimal_work>0|1</fetch_minimal_work>
Fetch one job per device
ID: 71064 · Report as offensive
Juha
Volunteer developer
Volunteer tester
Help desk expert

Send message
Joined: 20 Nov 12
Posts: 801
Finland
Message 71066 - Posted: 28 Jul 2016, 16:52:52 UTC - in response to Message 71064.  

2) Client configuration
<fetch_minimal_work>0|1</fetch_minimal_work>
Fetch one job per device


One catch with that: it does exactly what it says. It fetches work once and never again.
ID: 71066 · Report as offensive
passerby1023

Send message
Joined: 28 Mar 16
Posts: 9
Taiwan
Message 71086 - Posted: 30 Jul 2016, 10:40:49 UTC

@Richard, @Juha, thanks for your reply,

'only fetch work when host is idle' and 'fetch_minimal_work configuration'

can solve what I mentioned in title, but there's more detail in my requirements , I'm sorry my question is not clear:

In my experiment, I want to make clients act like real-time distributing computing worker, For example, If a 12 cores client is running 100% (12 jobs),
and then when a job is completed, it should return the result and fetch a new job from server (not from locale, the jobs are 'already download and ready to start' ), so the client will keep run 100% CPU until fetch no more jobs from server.

'fetch_minimal_work will' only fetch one job from server and never again, so it can't be applied in my experiment,

In client side, I wrote a script to keep updating the project (shorter than 3 minutes), which means keep fetching new jobs from server.
In server side, I purged the jobs every x seconds if they not been pulled by client.

My purpose is to 'make sure all the jobs are running as soon as they've been pulled from server', so those "ready to start' jobs are unnecessary.

I would like to see the following conditions (a 12 cores client):

1. There will no more than 12 jobs in client side
2. Client will keep fetching until 12 jobs are all in progress (running, uploading ....)
3. If 2 jobs are completed (2 cores are idle), in next time update client will fetch exactly 2 two jobs from server
4. There will be no jobs in status "ready to start"

Is that possible to do in current the BOINC architecture?
ID: 71086 · Report as offensive
SekeRob2

Send message
Joined: 6 Jul 10
Posts: 585
Italy
Message 71090 - Posted: 30 Jul 2016, 12:12:10 UTC - in response to Message 71086.  

hmmm, think all info is already there... set your project/projects ALL to zero resource share on the project location profiles and the Minimum/Additional buffers to zero. At that point only tasks are fetched when a core is actually idle.

The 2-3 minute prior to finish of any task fetch is designed in to not have idle resources, but if you insist, your mode will have that happen.

Keep in mind that projects have varying forced backoffs, so that the button hammerers, manual or by script, wont be able to DDOS the project schedulers.
Coelum Non Animum Mutant, Qui Trans Mare Currunt
ID: 71090 · Report as offensive
passerby1023

Send message
Joined: 28 Mar 16
Posts: 9
Taiwan
Message 71102 - Posted: 31 Jul 2016, 9:02:49 UTC - in response to Message 71090.  

@SekeRob2, thanks for the replying,
In my experiment there is only one project, and I use client with 2 cores (the machine has 24 cores in physical but I set <ncpus> to 2 in cc_config.xml),

I have set project resource share to zero:
http://imgur.com/vaPgIDS

and set Minimum/Additional buffers to zero:
http://imgur.com/J06hOCt

But when I start running the client, It still download task more than two:
http://imgur.com/tIfOUM8

Did I do something wrong about the setting?
thanks,
ID: 71102 · Report as offensive
SekeRob2

Send message
Joined: 6 Jul 10
Posts: 585
Italy
Message 71106 - Posted: 31 Jul 2016, 12:03:38 UTC - in response to Message 71102.  

What's on the Web profiles may not transfer to the client if there are any local prefs in override. The event log would tell. Clear them via the Computing preferences in BOINC.
Coelum Non Animum Mutant, Qui Trans Mare Currunt
ID: 71106 · Report as offensive
passerby1023

Send message
Joined: 28 Mar 16
Posts: 9
Taiwan
Message 71108 - Posted: 31 Jul 2016, 12:15:06 UTC - in response to Message 71102.  
Last modified: 31 Jul 2016, 12:42:02 UTC

@SekeRob2, I found that I set the preferences on the wrong account...

the setting you mentioned are just work for me!

Thank you guys so much!
ID: 71108 · Report as offensive

Message boards : BOINC client : How to make boinc client "don't download new task from server when all cores are running"?

Copyright © 2024 University of California.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.