-
Notifications
You must be signed in to change notification settings - Fork 5
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
Scaling with MAKEOPTS -jN -lM? #53
Comments
I wish I could say yes, and I'm always looking for ways to improve the prediction, but there are a lot of hurdles:
The only thing I can think of in your case, is that you could configure a different One thing that emlop could infer, is whether parallel merges (from a single emerge command, or multiple) are ongoing, by looking if events for different ebuilds are interleaved. Again, I'm not sure how usable that data would be for predicting build times, but gathering the data is the first step. |
Thanks for the detailed answer, I have some ideas of trying to get that information, but very little time.
Simplest would be to just use the closest match for predictions and track them separately per parallelization level, I guess most people have either a single thread background compile or a fast all core compile. |
I don't think that should be tried, it just won't scale correctly, never. You cannot expect a small package to be able to do 113 gcc processes in parallel, and even with big packages, it is unlikely to scale to that number due to inter-file dependencies. What should a scale factor be? Just measure a Also, some compiler processes do actually use multithreading, e.g. lto phases. This completely works against You should probably also look into something like You probably get better results by using different But I'd also prefer if emlop could tell binpkg merges and full merges apart. I'm using binpkg to cache packages so if a downgrade is needed, it simply re-uses the previous build. That leads to vastly shorter "build times". But luckily, emlop uses a median filter so this extreme "noise" is likely to be filtered away from predictions. |
|
Getting the level of parallelism for an ongoing merge isn't too hard: emlop could look at CPU utilization of the emerge processes (let's ignore the distcc usecase for now). It's also easy enough to get lots of info ( The hard/impossible part is getting historical information, which is what predictions are based on. Was the Have a look at 5220495 and def6d42. I was hoping to figure out portage-level parallelism, but I've given on that for now due to a too high error rate. Again, I'd be happy to be proven wrong, feel free to pick up that branch and make it work. Thank you both for this discussion. Even if it turns out we can't implement them, it's good to brainstorm ideas. |
I've merged #57, which doesn't fix this issue but is the fruit of my exploration. I don't think emlop will ever have access to the info required for this issue, so I'm closing it as wontfix. |
@vincentdephily Apparently, the logs can not be extended (https://bugs.gentoo.org/949281), but one could add a new FEATURE to portage that stores the required information in a separate file. |
Is it possible to read the MAKEOPTS from the log and scale the predictions by the number of cores? Sometimes I use
-j1 -l1
in the background and sometimes I use-j113 -l16
with distcc resulting in different run times per build? Is it possible to separate them? Same goes for builds that have a binpkg and are very quick then.emlop a
shows many >1000% due to different install modes on my system.The text was updated successfully, but these errors were encountered: