Bug 2423200
| Summary: | Consider using something more efficient than dd for member extraction - e.g ddpt | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Yanko Kaneti <yaneti> |
| Component: | debugedit | Assignee: | Mark Wielaard <mjw> |
| Status: | CLOSED RAWHIDE | QA Contact: | |
| Severity: | medium | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | rawhide | CC: | david.abdurachmanov, mcermak, mjw |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | debugedit-5.2-4.fc44 | Doc Type: | --- |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2026-01-14 13:27:19 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: | |||
Thanks for the suggestion. I went for a slightly different fix using "plain" dd. See https://sourceware.org/bugzilla/show_bug.cgi?id=33771 This is now in debugedit-5.2-4.fc44 I checked that it reduces the tdlib build. With the fix a local mockbuild took 25 minutes. I am still waiting for it finish without the old variant. Going for 45 minutes now... Please let me know how it compares to your fix. Thanks. For a rough comparison with the previous observations. With todays rawhide + debugedit-5.2-4.fc44.x86_64.rpm on the same machine as before INFO: Done(tdlib-1.8.0-8.fc44.src.rpm) Config(fedora-rawhide-x86_64) 16 minutes 7 seconds For the extracting debuginfo part of the build most of the time was spent in ar and not dd as before. I think we are good. |
While I was looking for why "Extracting debug info ..." takes so long while building tdlib-1.8.0-8.fc43 in mock (fedora-rawhide-x86_64) and it was apparent that dd with bs=1 seems to be taking quite a while while dealing with the enormous libtdcore.a (around 2Gs) So I tried replacing dd with ddpt just to see what will happen: diff --git a/scripts/find-debuginfo.in b/scripts/find-debuginfo.in index 40cd182..4e3ef64 100755 --- a/scripts/find-debuginfo.in +++ b/scripts/find-debuginfo.in @@ -539,7 +539,7 @@ do_ar_file() # is hard, in case the same name exists multiple times. A # distinct instance-number would have to be given to ar ("N ###"), # kept on a per-name basis. - (cd "$tmpdir"; dd status=none if="$f" of="$member_dn$member_bn" bs=1 skip="$offset" count="$size") + (cd "$tmpdir"; ddpt status=none if="$f" of="$member_dn$member_bn" bs=1 skip="$offset" count="$size") if [ $? -ne 0 ]; then res=1 fi With debugedit patched like that and trying the same tdlib mock build on my 8 core zen3 machine: - without patch INFO: Done(tdlib-1.8.0-8.fc44.src.rpm) Config(fedora-rawhide-x86_64) 62 minutes 18 seconds - with patch INFO: Done(tdlib-1.8.0-8.fc44.src.rpm) Config(fedora-rawhide-x86_64) 15 minutes 50 seconds Reproducible: Always