- 
                Notifications
    
You must be signed in to change notification settings  - Fork 234
 
[rqd] reserve all cores and report threads #1296
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
[rqd] reserve all cores and report threads #1296
Conversation
…reserve precisely according to request (P-cores first, E-cores last)
| 
           This is an interesting change that never really got attention. I'm taking some time to study the architecture of hybrid system with P-cores and E-cores to understand what this PR is trying to accomplish. At a first glance, I like the direction it is taking, but I don't think it is documented properly.  | 
    
| 
           I'm finishing up a collection of changes that were pending on SPI's end and will keep this PR right at the top of my review list for when I finish. Sorry for the wait.  | 
    
…o rqd-reserve-all-cores # Conflicts: # VERSION.in # proto/src/report.proto # rqd/setup.py
…ng report on tests.
…o rqd-reserve-all-cores # Conflicts: # VERSION.in
… the new `logical` parameter.
| 
           @DiegoTavares and @lithorus the PR is now fully ready for review.  | 
    
…o rqd-reserve-all-cores
| 
           Hmm... the rust part is still failing. Perhaps due to the changes in the proto files?  | 
    
          
 @lithorus I was afraid this was going to happen, we'll discuss this with @DiegoTavares together today.  | 
    
Add rust part
…o rqd-reserve-all-cores # Conflicts: # VERSION.in # rqd/rqd/rqmachine.py
chore: merge/adapt changes to mac memory detection from PR AcademySoftwareFoundation#2023
Link the Issue(s) this Pull Request is related to.
#1295
Summarize your change.
Report threads:
report.protoand the underlying RQD report method.total_threadsargument inCoreDetails(used for reporting), sent to Cuebot (not used yet).OVERRIDE_THREADSin rqconstants.py (overridable viarqd.conf).Cleanup:
hyperthreadingMultipliercan be a float for hybrid CPUsVarious Windows sugar:
getBootTime()-> default topsutils.boot_time()when there is no stat file provided (used to be just 0 on Win).Various changes:
__procs_by_physid_and_coreid->__threadid_by_cpuid_and_coreid__physid_and_coreid_by_proc->__cpuid_and_coreid_by_threadidreserveHT()is marked as deprecated, with a suggestion to use the newreserveCores()method instead.Tests:
cpuinfonumbers (end of file name) represent totalThreads-coresPerProc-numProcs + hyperThreadingMultiplier (optional)__cpuinfoTestHelper()for thattest_reserveCores(),test_reserveHybridHT()Edit 08/25
The PR is ready, it reports both physical cores and logical cores (aka threads) on all kind of CPUs (including hybrid cores).
The data is sent to Cuebot and is backward compatible (still using cores for now).
I'll update the server in a separate PR, with new fields to register the threads and display them in CueGui.
Edit 04/25:
The system should allow legacy "physical" core selection (mostly for backward compatibility), and move toward using logical cores (aka threads).
Logical cores is what users see in htop or task manager, which feels more intuitive.
For that to work, as discussed in previous TSC meetings, I will implement a new "thread" field in the database for hosts and jobs.
RQD will report both physical and logical cores.
Submitting jobs will then have the two options to chose from (separate PR).