-
Notifications
You must be signed in to change notification settings - Fork 184
[8.0] feat: PoolCE takes care of RAM requirements #8232
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
Conversation
| if availableMemory < requestedMemory: | ||
| return None | ||
|
|
||
| return requestedMemory |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I might have overlooked something, do we specify a default RAM value for the jobs?
Because if I understand correctly, getRAMInUse() depends on the value returned by _getMemoryForJobs(), which would be 0 if the tag *GB or *GB_MAX is not specified (?).
So if we have n jobs with no "RAM" tag, we will always have getRAMInUse = 0.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's no obvious default value for RAM (for processors we specify 1 which is a slightly more obvious default value). So, yes, as it stands the default value for RAM is 0.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RAM and NumberOfProcessors should be treated in exactly the same way. These are resources with integer values, having default values and summing up for jobs on the same node. So, may be common methods (or class) can be introduced for those, may be other tags can be added eventually, e.g. disk space.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Having RAM in GBs isn't fine enough for an integer value, having less than 1GB per core is sensible on some systems and jobs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this be made MB instead?
sfayer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi,
I've done a quick review: Please let me know if you need anything else from me on this. (I didn't quite hear what you said about it in the most recent BiLD meeting: there was some local noise just as you were talking about it).
The other CEs (singularity/inprocess) should probably set the same memory setting based on the tags too if they've not already been set by PoolCE for cases where the PoolCE isn't in use.
Regards,
Simon
6c09d92 to
ee00569
Compare
2db1187 to
608d57f
Compare
2883631 to
f2e8f9e
Compare
b8b1635 to
e41e706
Compare
f859666 to
3ce23be
Compare
docs/source/UserGuide/Tutorials/JobManagementAdvanced/index.rst
Outdated
Show resolved
Hide resolved
docs/source/UserGuide/Tutorials/JobManagementAdvanced/index.rst
Outdated
Show resolved
Hide resolved
|
This PR is replaced by #8366 which targets v9.0. As said, these are a bit too many changes for 8.0 branch. |
BEGINRELEASENOTES
*WMS
NEW: InProcessComputingElement takes RAM requirements into consideration for jobs' matching
NEW: PoolComputingElement takes RAM requirements into consideration when subdividing the pool
NEW: SingularityComputingElement can enforce CG2 RAM limits
ENDRELEASENOTES