Skip to content

Gitoxide use significantly more memory than git when cloning semisynthetic repos #851

Closed
@0xdeafbeef

Description

@0xdeafbeef

Duplicates

  • I have searched the existing issues

Current behavior 😯

Regular git uses 5gb of ram for indexation and spends 55m47s on clone:

/usr/bin/time -vv  git clone https://github.com/fz139/vigruzki.git vigruzki2
Cloning into 'vigruzki2'...
remote: Enumerating objects: 570224, done.
remote: Counting objects: 100% (8218/8218), done.
remote: Compressing objects: 100% (4097/4097), done.
remote: Total 570224 (delta 4128), reused 8211 (delta 4121), pack-reused 562006
Receiving objects: 100% (570224/570224), 5.74 GiB | 14.37 MiB/s, done.
Resolving deltas: 100% (240329/240329), done.
        Command being timed: "git clone https://github.com/fz139/vigruzki.git vigruzki2"
        User time (seconds): 12655.67
        System time (seconds): 3815.96
        Percent of CPU this job got: 492%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 55:47.09
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 5335480
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 7
        Minor (reclaiming a frame) page faults: 2987959137
        Voluntary context switches: 6497363
        Involuntary context switches: 2048852
        Swaps: 0
        File system inputs: 0
        File system outputs: 0
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0

gix uses 28gb of ram for indexation and spends 1h31m on clone:

 /usr/bin/time -vv gix clone https://github.com/fz139/vigruzki.git
 20:27:37 read pack done 6.2GB in 437.75s (14.1MB/s)
 20:27:37  indexing done 570.2k objects in 428.24s (1.3k objects/s)
 20:27:37 decompressing done 13.6GB in 428.24s (31.8MB/s)
 21:51:31     Resolving done 570.2k objects in 5033.41s (113.0 objects/s)
 21:51:31      Decoding done 7.0TB in 5033.41s (1.4GB/s)
 21:51:31 writing index file done 19.4MB in 0.03s (626.6MB/s)
 21:51:31  create index file done 570.2k objects in 5461.80s (104.0 objects/s)
 21:51:31           checkout done 5.0 files in 0.35s (14.0 files/s)
 21:51:31            writing done 245.2MB in 0.35s (705.7MB/s)
HEAD:refs/remotes/origin/HEAD (implicit)
        1b49858194dc61cb0349a14a6d81a6061dde23b7 HEAD symref-target:refs/heads/main -> refs/remotes/origin/HEAD [new]
+refs/heads/*:refs/remotes/origin/*
        1b49858194dc61cb0349a14a6d81a6061dde23b7 refs/heads/main -> refs/remotes/origin/main [new]
        Command being timed: "gix clone https://github.com/fz139/vigruzki.git"
        User time (seconds): 7947.84
        System time (seconds): 929.27
        Percent of CPU this job got: 162%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 1:31:12
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 27360768
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 468633190
        Voluntary context switches: 3885411
        Involuntary context switches: 1039556
        Swaps: 0
        File system inputs: 56
        File system outputs: 0
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0

All tests were done on tmpfs in RAM

git version 2.40.1

gix --version
gix-plumbing 0.25.0

Kernel: 6.2.11-300.fc38.x86_64
CPU: AMD Ryzen 9 7950X (32) @ 4.500GHz

Memory: 127923MiB

Expected behavior 🤔

No response

Steps to reproduce 🕹

  1. gix clone https://github.com/fz139/vigruzki.git

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions