Skip to content

Commit

Permalink
pack-objects: add trace2 regions
Browse files Browse the repository at this point in the history
When studying the performance of 'git push' we would like to know
how much time is spent at various parts of the command. One area
that could cause performance trouble is 'git pack-objects'.

Add trace2 regions around the three main actions taken in this
command:

1. Enumerate objects.
2. Prepare pack.
3. Write pack-file.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
  • Loading branch information
derrickstolee authored and dscho committed Dec 15, 2018
1 parent 36e6b20 commit d5c1e3b
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion builtin/pack-objects.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#include "object-store.h"
#include "dir.h"
#include "midx.h"
#include "trace2.h"

#define IN_PACK(obj) oe_in_pack(&to_pack, obj)
#define SIZE(obj) oe_size(&to_pack, obj)
Expand Down Expand Up @@ -3470,6 +3471,7 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
}
}

trace2_region_enter("pack-objects", "enumerate-objects", the_repository);
prepare_packing_data(&to_pack);

if (progress)
Expand All @@ -3484,12 +3486,20 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix)
if (include_tag && nr_result)
for_each_ref(add_ref_tag, NULL);
stop_progress(&progress_state);
trace2_region_leave("pack-objects", "enumerate-objects", the_repository);

if (non_empty && !nr_result)
return 0;
if (nr_result)
if (nr_result) {
trace2_region_enter("pack-objects", "prepare-pack", the_repository);
prepare_pack(window, depth);
trace2_region_leave("pack-objects", "prepare-pack", the_repository);
}

trace2_region_enter("pack-objects", "write-pack-file", the_repository);
write_pack_file();
trace2_region_leave("pack-objects", "write-pack-file", the_repository);

if (progress)
fprintf_ln(stderr,
_("Total %"PRIu32" (delta %"PRIu32"),"
Expand Down

0 comments on commit d5c1e3b

Please sign in to comment.