I thought BOINC assigned CPU time to projects based on the expiry date of the WU, but it stubbornly let A@H crunch even though LHC had older WUs!
Any idea what's going on there?
yes and no...the short answer is that the code that is used to write the BOINC client/manager software is far less simple than its basic functions indicate. expiration date is but one of several factors that goes into the calculations that determine the priority of every task in your entire work buffer...so if you ever see tasks being crunched out of chronological order with respect to expiration dates, it is because that is not the only factor that plays into task priority.
at first i found these BOINC phenomena quite irritating, but i've since gotten used to them, and have since figured out ways around them. for instance, i used to set LHC@Home resource share higher than all other projects on a given host (via the BOINC manager) so that when LHC@Home tasks finally became available, my BOINC manager would suspend CPU tasks from other projects and start downloading and crunching LHC tasks. needless to say, BOINC never did behave the way i thought it would, and despite giving the LHC@Home project a higher BOINC resource share than any other project on that host, LHC tasks would not always download when they became available (in fact it rarely did)...and b/c LHC work is so rare, often times the "LHC tasks ready to send" would run out before my host would even start thinking about fetching any LHC work. so i don't do that anymore...i just give all project on a given host equal BOINC resource shares.
instead, what i do to get LHC work is i set all other projects to NNT (no new tasks) and up the size of my work buffer so that it fetches work from the only project not set to NNT, LHC@Home. if there's not much new work to be sent out, then i simply reduce my work buffer size again once i've reached the limit on LHC tasks in progress, and allow all other projects to fetch work again (because the server's new work buffer will probably run out before i finish crunching a substantial portion of the LHC tasks i just downloaded and need more). if there is a substantial new work buffer on the server, then i leave the other BOINC projects set to NNT and keep an eye on server's new work buffer so that i know when to reduce my host's work buffer and allow other projects to fetch new work again.