Bug 209323
| Summary: | choosing packages to update is too slow by a factor of 10 | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | John Reiser <jreiser> |
| Component: | yum | Assignee: | Jeremy Katz <katzj> |
| Status: | CLOSED RAWHIDE | QA Contact: | |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | rawhide | CC: | ianburrell, valdis.kletnieks |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2007-04-25 18:24:34 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
John Reiser
2006-10-04 16:19:09 UTC
Seeing it here too. x86_64, only 52 packages listed by 'yum list updates' done just a few minutes before. A 2Ghz Core2 Duo, 2G of memory - and it takes it 14:27 to get from 'yum update' to 'Total Download SIze/Is this OK?' yum-3.1.4-1.fc7 - so either it's some horrendous cycle sucker in a shared library (sqlite?) or something, or everything from 2.9.8 to 3.1.4 is busticated. 2.9.8->3.1.4 is a huge difference in code and we've had thousands and thousands of success reports on 3.0.X reported so I'm a little confused that NOTHING b/t those has worked for you. Obviously some profiling is needed, I'll dig in and follow up when I have more concrete information. So I pointed oprofile at the system, and it said most of the time was being
spent in libpython.so. And I caught a few seconds worth of strace output:
# strace -p 10973 > /tmp/trace 2>&1 (wait about 10 seconds and then ^C)
# wc /tmp/trace
346510 1733628 16765630 /tmp/trace
# sort /tmp/trace | uniq -c | sort -nr | more
270228 futex(0xc7baf0, FUTEX_WAKE, 1) = 0
83 read(16, "\0\0\0\0amimageplugin_unsharp.mo/dig"..., 1024) = 1024
67 read(16, "\0\0\0\0ffffffffffffffffffffffffffff"..., 1024) = 1024
34 read(16, "\0\0\0\0-4300.5.0.ppd.gz/stp-bjc-400"..., 1024) = 1024
28 read(16, "\0\0\0\0tle-5-active.xpm/title-4-ina"..., 1024) = 1024
24 read(16, "\r\0\0\0\1\0\'\0\0\'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 10
24) = 1024
24 read(16, "\r\0\0\0\1\0!\0\0!\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 10
24) = 1024
20 read(16, "\0\0\0\0ctive.xpm/menu-inactive.png/"..., 1024) = 1024
18 read(16, "\r\0\0\0\1\1D\0\1D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 10
24) = 1024
18 read(16, "\0\0\0\0g/network-wireless.png/netwo"..., 1024) = 1024
18 read(16, "\0\0\0\0etwork-offline.png/network-i"..., 1024) = 1024
18 read(16, "\0\0\0\0dhat-system_tools.png/redhat"..., 1024) = 1024
18 read(16, "\0\0\0\0.png/locale.png/kwin.png/kus"..., 1024) = 1024
Yowza. Looks like we're spinning on a futex for some reason.
(And it looks like somebody could be a bit better about in-memory caching
and not be re-reading the same blocks several dozen times, but I suspect that's
in the 5 or 6% of the time we spent in libsqlite3.so - hardly a performance hit)
Any suggestions where to look next? I know zip about python - any way to get it
to do statement-level profiling/execution counts?
OK, *major* weirdness, maybe this is a useful clue.. After some 15 minutes of grinding, the 'yum update' bombed out during the download phase: <....> Installing for dependencies: java_cup x86_64 1:0.10-0.k.6jpp.1 development 206 k <....> Error Downloading Packages: java_cup - 1:0.10-0.k.6jpp.1.x86_64: failure: Fedora/RPMS/java_cup-0.10-0.k.6jpp.1.x86_64.rpm from development: [Errno 256] No more mirrors to try. Note that RPM was a "install for dependencies". So I ran: # yum --exclude="*java*" update and *that* finished its crunching in the minute or so I expected it to take. Maybe the problem is in handling the "added for dependencies" RPMs? 3.1.6 si even better, 3.1.7 has even more better |