[three]Bean
Pungi Performance, Profiling?
Sep 01, 2017 | categories: factory2, fedora View CommentsHappy Flockery!
This might not be new to others, but I wanted to identify which parts of the compose process were slow, so I wrote a little script. If you didn't know, our compose process is broken up into phases some of which run in serial, others of which run in parallel. The composes take a long time, and speeding them up would be great.
#!/usr/bin/env python3 """ Usage: python3 analyze-compose.py Fedora-27-20170901.n.1 """ import operator import sys import requests import dogpile.cache cache = dogpile.cache.make_region().configure( 'dogpile.cache.dbm', expiration_time=500, arguments=dict(filename='/var/tmp/datagrepper-cache.dbm') ) # Fedora-27-20170901.n.1 target = sys.argv[-1] @cache.cache_on_arguments() def get_messages(target): url = 'https://apps.fedoraproject.org/datagrepper/raw' params = dict( category='pungi', rows_per_page=100, contains=target, delta=1278000, ) print("Querying %r %r" % (url, params)) response = requests.get(url, params=params) return [m for m in response.json()['raw_messages']] if __name__ == '__main__': print('Analyzing compose %r' % target) messages = get_messages(target) starts, stops = {}, {} for message in messages: if message['topic'].endswith('compose.status.change'): continue if message['topic'].endswith('compose.phase.start'): starts[message['msg']['phase_name']] = message['timestamp'] if message['topic'].endswith('compose.phase.stop'): stops[message['msg']['phase_name']] = message['timestamp'] deltas = {} for phase in starts: if phase not in stops: continue deltas[phase] = stops[phase] - starts[phase] deltas = list(deltas.items()) deltas.sort(key=operator.itemgetter(1), reverse=True) for phase, delta in deltas: print("{0:20} {1:.2f} hours".format(phase, delta / 60.0 / 60.0))
This script prints out stats about all of the phases. Take a look at this compose from a few days ago and focus in on just one phase:
❯ ./analyze-compose.py Fedora-27-20170830.n.0 Analyzing compose 'Fedora-27-20170830.n.0' [snip] createrepo 8.50 hours [snip]
That createrepo phase is gigantic!
After one or two patches we were able to get it down a little tighter the next day:
./analyze-compose.py Fedora-27-20170901.n.1 Analyzing compose 'Fedora-27-20170901.n.1' [snip] createrepo 0.33 hours [snip]
createrepo phase -- greatly improved.
The next one that jumps out at me is the pkgset phase. What's going on there?
I'm not sure yet but have posted a patch introducing more logging so we can get a feel for it.
Factory 2, Sprint 14
Apr 11, 2017 | categories: sprint, factory2, fedora View CommentsHello all. Bi-weekly update from the Factory 2 team on our work here. We have three videos this sprint.
Two are related to the module-build-service: both on submitting builds. We have some new client tooling to show which should make manual submission and monitoring of module-builds much simpler. The second is a demo of an early prototype of our continuous rebuild system.
Additionally, we have a demo of some early prototype work for the arbitrary branching proposal that we talked about at DevConf back in February.
coco-module-rebuild, by jkaluza
This demo shows initial prototype of Continuos Compose Service and first use-case: Rebuild of module in Module Build Service as a result of update of module definition in dist-git.
mbs-build, by jkaluza
This demo shows new 'mbs-build' command which can be used to submit and manage Module Build Service builds.
pdc-sla-apis, by mprahl
This demo shows an API developed to store SLA and EOL information on package branches in Product Definition Center (PDC). The API would act as a gold source for other tools that need to make decisions based on this information. The code shown in this demo is in review and could change before it makes it to master.
Factory 2, Sprint 13
Mar 24, 2017 | categories: sprint, factory2, fedora View CommentsThe Factory 2.0 team is plugging along on a design phase for our next set of projects in the F27 timeframe.
- The WaiverDB prototype is done (a key component in our vision for CI/CD). Next steps here are to have our technical fellows review the prototype and make sure it will meet our needs. We'll be aiming for production deployment soon after that (so we can iterate as needed).
- The design work for Arbitrary Branching and Automated Rebuilds is nearing completion. We'll be planning out prototype work for those in the coming sprints.
- Our design for PolicyEngine and Module Updates are both still cooking. Expect to see conclusions to their design phases in the next few sprints.
arbitrary-branches-fedora-focus-doc, by mprahl
This demo discusses the concept of âArbitrary Branching" (package dist-git branches) and how that is a requirement for Fedora 27 to be a fully modularized operating system. It also elaborates on the high-level changes that will need to take place for this to become a reality.
coco-focus-doc, by jkaluza
In this demo, I briefly describe the status of Continus Compose Service focus document.
waiverdb-prototype, by mjia
In this demo I describe the background of WaiverDB, what problems it solved, showing how to use the HTTP APIs to manage the waivers.
Factory 2, Sprint 12
Mar 24, 2017 | categories: sprint, factory2, fedora View CommentsLate report here. This sprint actually concluded two weeks ago. We did a combined demo with the Modularity and base-runtime teams, but never published our stuff independently. Better late than never; here it is!
mbs-in-production, by threebean
In this demo I show the Module Build Service in its initial deployment to production, showing how to query the API and how to submit a new module build.
At the request of FESCo, use of the MBS is locked down to only members of the Modularity Working Group until we have an FPC approved module review process in place in the F27 timeframe.
multiple_submit_same_nvr, by fivaldi
When someone tries to submit the module build and some components are submitted for a build and the module build fails but the submitted components are not removed from the Koji, there can be a situation where the same module and component is submitted for a build for second time, but the first Koji build of this component finishes before the second one. This video presents how this is handled via requests to Koji API.
pungi_modular_compose, by jkaluza
Factory 2, Sprint 10
Feb 23, 2017 | categories: sprint, factory2, fedora View CommentsThe Factory 2.0 team is back from Brno and DevConf. We had two talks to look for, one on Factory 2.0 current work and another done in conjunction with the Modularity team on Modularity itself. Since returning, we've been working with other teams to set our plans for F27 while simultaneously getting the module build service ready for production for F26.
For the MBS we have all the pieces in staging, and we're now working with Patrick Uiterwijk (the Fedora Infra Security Officer) on an audit of the code. At the time of this writing, we have answers and patches to all of the issues. We'll be working with Patrick in the coming days to finish this out.
The broad strokes of our plans for F27 are described in the devconf talk. We have a draft of a more focused, bullet-list of subprojects slated for F27, which we'll be publishing in about a month after sorting out some CI details with Fedora Infrastructure, Fedora QA, and the Atomic folks.
mbs-reuse-component-builds, by mprahl
This demo shows a feature for the Module Build Service which reuses component builds from previous builds of the module if the component and the buildroot haven't changed.
module-lint-on-commit, by threebean
In this demo, I show the check_modulemd[1] check (developed by the base-runtime team) being automatically run in the online taskotron environment[2].
A commit to a module in dist-git is pushed and linting errors are produced in resultsdb (which in turn can be consumed by other systems).
- [1] https://github.com/fedora-modularity/check_modulemd/
- [2] https://taskotron-dev.fedoraproject.org
pdc-upgrade, by threebean
Here we show the latest upgraded instance of the Product Definition Center in Fedora[1] with the new /unreleasedvariants/ endpoint[2] for the Module Build Service[3].
Next Page »