Bug 1806120

Summary: buildah COPY command is slow when .dockerignore file is not present [stream-container-tools-rhel8-rhel-8.2.0/buildah]
Product: Red Hat Enterprise Linux 8 Reporter: Jindrich Novy <jnovy>
Component: buildahAssignee: Jindrich Novy <jnovy>
Status: CLOSED CURRENTRELEASE QA Contact: atomic-bugs <atomic-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 8.2CC: ajia, ddarrah, nalin, tsweeney
Target Milestone: rc   
Target Release: 8.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: buildah-1.11.6-7.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-03-25 17:37:47 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:
Bug Depends On:    
Bug Blocks: 1756986    

Description Jindrich Novy 2020-02-22 09:42:35 UTC
This is a tracking bug assuring the fix for [bug 1756986] gets applied in stream-container-tools-rhel8-rhel-8.2.0 branch of buildah.

Comment 5 Alex Jia 2020-03-20 05:28:38 UTC
the building real time of buildah-1.11.6-7.module+el8.2.0+5856+b8046c6d.x86_64
is greater than podman-1.6.4-9.module+el8.2.0+5952+e75b58bb.x86_64, and the
docker-1.13.1-161.git64e9980.el7_8.x86_64 only takes about 2.0423s, please also
see https://bugzilla.redhat.com/show_bug.cgi?id=1756986#c26

[root@hp-dl360g9-03 disk]# ll -h
total 101M
-rw-r--r--. 1 root root  25 Mar 18 05:29 Dockerfile
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-1
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-10
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-2
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-3
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-4
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-5
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-6
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-7
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-8
-rw-r--r--. 1 root root 10M Mar 18 05:29 test-9

1. buildah-1.11.6-7.module+el8.2.0+5856+b8046c6d.x86_64

[root@hp-dl360g9-03 disk]# time buildah bud -f Dockerfile .
STEP 1: FROM scratch
STEP 2: COPY . /tmp
STEP 3: COMMIT
Getting image source signatures
Copying blob ef4eebd2fe39 done
Copying config 29be847f47 done
Writing manifest to image destination
Storing signatures
29be847f47235e83c0486c15aa2c91beff49a02a970300455a8406af397f2f78
29be847f47235e83c0486c15aa2c91beff49a02a970300455a8406af397f2f78

real	0m10.394s
user	0m9.643s
sys	0m1.966s
[root@hp-dl360g9-03 disk]# buildah rmi 29be847f472
29be847f47235e83c0486c15aa2c91beff49a02a970300455a8406af397f2f78
[root@hp-dl360g9-03 disk]# time buildah bud -f Dockerfile .
STEP 1: FROM scratch
STEP 2: COPY . /tmp
STEP 3: COMMIT
Getting image source signatures
Copying blob b4da5de612da done
Copying config 2f71912c98 done
Writing manifest to image destination
Storing signatures
2f71912c98f4a1e52268c429842556b3ebe3c71e804355dece750a83f4354314
2f71912c98f4a1e52268c429842556b3ebe3c71e804355dece750a83f4354314

real	0m10.237s
user	0m9.523s
sys	0m2.031s
[root@hp-dl360g9-03 disk]# buildah rmi 2f71912c
2f71912c98f4a1e52268c429842556b3ebe3c71e804355dece750a83f4354314
[root@hp-dl360g9-03 disk]# time buildah bud -f Dockerfile .
STEP 1: FROM scratch
STEP 2: COPY . /tmp
STEP 3: COMMIT
Getting image source signatures
Copying blob d6a2cd4666fb done
Copying config 945ffecade done
Writing manifest to image destination
Storing signatures
945ffecade2742ff91b0c77e3e2a7386a5315f8263ea6d9610303fabaa087742
945ffecade2742ff91b0c77e3e2a7386a5315f8263ea6d9610303fabaa087742

real	0m10.330s
user	0m9.714s
sys	0m2.012s
[root@hp-dl360g9-03 disk]# buildah rmi 945ffecad
945ffecade2742ff91b0c77e3e2a7386a5315f8263ea6d9610303fabaa087742


2. podman-1.6.4-9.module+el8.2.0+5952+e75b58bb.x86_64
[root@hp-dl360g9-03 disk]# time podman build -f Dockerfile .
STEP 1: FROM scratch
STEP 2: COPY . /tmp
STEP 3: COMMIT
4ff6b2a28ffb93d2d397a50fa6d38aa7314a5d44433b4014b6eea70d4bbea783

real	0m9.491s
user	0m9.652s
sys	0m1.897s
[root@hp-dl360g9-03 disk]# podman rmi 4ff6b2a28ff
Deleted: 4ff6b2a28ffb93d2d397a50fa6d38aa7314a5d44433b4014b6eea70d4bbea783
[root@hp-dl360g9-03 disk]# time podman build -f Dockerfile .
STEP 1: FROM scratch
STEP 2: COPY . /tmp
STEP 3: COMMIT
0dc260de4be0f8d2a7f64ab45d062e1ae5848c03b4c767bc361205a505ac43d5

real	0m9.436s
user	0m9.745s
sys	0m1.870s
[root@hp-dl360g9-03 disk]# podman rmi 0dc260de4b
Deleted: 0dc260de4be0f8d2a7f64ab45d062e1ae5848c03b4c767bc361205a505ac43d5
[root@hp-dl360g9-03 disk]# time podman build -f Dockerfile .
STEP 1: FROM scratch
STEP 2: COPY . /tmp
STEP 3: COMMIT
72a5ce6205e59f5f3f0e6c018c02a04c857f5c8e0551672ffdf487578e6ee7ec

real	0m9.444s
user	0m9.595s
sys	0m2.012s
[root@hp-dl360g9-03 disk]# podman rmi 72a5ce62
Deleted: 72a5ce6205e59f5f3f0e6c018c02a04c857f5c8e0551672ffdf487578e6ee7ec

Comment 7 Tom Sweeney 2020-03-20 18:36:11 UTC
Nalin Buildah buildah-1.11.6-7.module+el8.2.0+5856+b8046c6d.x86_64 is still problematic speed wise, see https://bugzilla.redhat.com/show_bug.cgi?id=1806120#c5

Comment 8 Nalin Dahyabhai 2020-03-23 21:59:09 UTC
(In reply to Tom Sweeney from comment #7)
> Nalin Buildah buildah-1.11.6-7.module+el8.2.0+5856+b8046c6d.x86_64 is still
> problematic speed wise, see
> https://bugzilla.redhat.com/show_bug.cgi?id=1806120#c5

The changes we made recently were for cases where there was no .dockerignore file present, but we were still invoking code paths which incur quite a bit more overhead for processing the contents of one.  The originating upstream report was seeing timing differences on the order of seconds compared to minutes, particularly as the number of files being copied grew.

Comment 9 Tom Sweeney 2020-03-25 17:37:47 UTC
After discussions with Nalin Dahyabhai, Dan Walsh, and Ian McLeod, we are going to consider this bug fixed for this release as the initial report for the problem had the builds taking minutes and now it is down to seconds. There is work under way and plans in place to further decrease the build speed in follow on releases.