(Apologize for top-posting but making Outlook quote properly is a bear)
Down to 1+4 threads:
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
0 13 87 0 0| 0 0 |2059B 15k| 0 0 |2200 1730
0 13 87 0 0| 0 0 | 585B 2754B| 0 0 |1792 1269
0 13 87 0 0| 0 0 | 178B 734B| 0 0 |1691 1157
0 13 87 0 0| 0 6554B| 225B 734B| 0 0 |1885 1238
0 13 87 0 0| 0 0 | 159B 736B| 0 0 |1958 1262
0 13 87 0 0| 0 0 | 310B 760B| 0 0 |1813 1175
(gdb) info threads
Id Target Id Frame
* 1 Thread 0x7f7b837dcb80 (LWP 11918) "git" 0x000055c7dded56eb in
ll_find_deltas (processed=0x7ffce7da82a8, depth=<optimized out>,
window=<optimized out>,
list_size=0, list=<optimized out>) at builtin/pack-objects.c:2516
2 Thread 0x7f782e16a700 (LWP 11929) "git" create_delta
(index=0x55c807d2ff20, trg_buf=<optimized out>,
trg_size=trg_size@entry=9677636,
delta_size=delta_size@entry=0x7f782e169e78, max_size=3585674) at
diff-delta.c:381
3 Thread 0x7f6fe77fe700 (LWP 11948) "git" create_delta
(index=0x7f6e35171010, trg_buf=<optimized out>,
trg_size=trg_size@entry=163385853,
delta_size=delta_size@entry=0x7f6fe77fde78, max_size=2328926) at
diff-delta.c:381
4 Thread 0x7f6fe67fc700 (LWP 11950) "git" create_delta
(index=0x7f6e3f7f3010, trg_buf=<optimized out>,
trg_size=trg_size@entry=74543780,
delta_size=delta_size@entry=0x7f6fe67fbe78, max_size=2582505) at
diff-delta.c:381
5 Thread 0x7f6fe5ffb700 (LWP 11951) "git" create_delta
(index=0x7f6f01d06010, trg_buf=<optimized out>,
trg_size=trg_size@entry=28510185,
delta_size=delta_size@entry=0x7f6fe5ffae78, max_size=9146484) at
diff-delta.c:381
(gdb) bt
#0 0x00007f7b82f909f3 in futex_wait_cancelable (private=<optimized out>,
expected=0, futex_word=0x55c7de2ff348 <progress_cond+40>)
at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 __pthread_cond_wait_common (abstime=0x0, mutex=0x55c7de2ff360
<progress_mutex>, cond=0x55c7de2ff320 <progress_cond>) at
pthread_cond_wait.c:502
#2 __pthread_cond_wait (cond=cond@entry=0x55c7de2ff320 <progress_cond>,
mutex=mutex@entry=0x55c7de2ff360 <progress_mutex>) at pthread_cond_wait.c:655
#3 0x000055c7dded56eb in ll_find_deltas (processed=0x7ffce7da82a8,
depth=<optimized out>, window=<optimized out>, list_size=0, list=<optimized
out>)
at builtin/pack-objects.c:2516
#4 prepare_pack (depth=<optimized out>, window=<optimized out>) at
builtin/pack-objects.c:2673
#5 cmd_pack_objects (argc=<optimized out>, argv=<optimized out>,
prefix=<optimized out>) at builtin/pack-objects.c:3491
#6 0x000055c7dde74711 in run_builtin (argv=<optimized out>, argc=<optimized
out>, p=<optimized out>) at git.c:421
#7 handle_builtin (argc=<optimized out>, argv=<optimized out>) at git.c:647
#8 0x000055c7dde75725 in run_argv (argv=0x7ffce7daa7e0, argcp=0x7ffce7daa7ec)
at git.c:701
#9 cmd_main (argc=<optimized out>, argv=<optimized out>) at git.c:798
#10 0x000055c7dde7437f in main (argc=6, argv=0x7ffce7daaa58) at common-main.c:45
(gdb) thread 2
[Switching to thread 2 (Thread 0x7f782e16a700 (LWP 11929))]
#0 create_delta (index=0x55c807d2ff20, trg_buf=<optimized out>,
trg_size=trg_size@entry=9677636, delta_size=delta_size@entry=0x7f782e169e78,
max_size=3585674)
at diff-delta.c:381
381 if (entry->val != val)
(gdb) bt
#0 create_delta (index=0x55c807d2ff20, trg_buf=<optimized out>,
trg_size=trg_size@entry=9677636, delta_size=delta_size@entry=0x7f782e169e78,
max_size=3585674)
at diff-delta.c:381
#1 0x000055c7dded0606 in try_delta (mem_usage=<synthetic pointer>,
max_depth=50, src=0x7f702c256bc0, trg=0x7f702c256ca0) at
builtin/pack-objects.c:2129
#2 find_deltas (list=<optimized out>,
list_size=list_size@entry=0x55c7e467daf4, window=<optimized out>,
depth=<optimized out>, processed=<optimized out>)
at builtin/pack-objects.c:2262
#3 0x000055c7dded0e29 in threaded_find_deltas (arg=0x55c7e467dae0) at
builtin/pack-objects.c:2408
#4 0x00007f7b82f8a6db in start_thread (arg=0x7f782e16a700) at
pthread_create.c:463
#5 0x00007f7b82cb388f in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95
(gdb) thread 2
[Switching to thread 2 (Thread 0x7f782e16a700 (LWP 11929))]
#0 create_delta (index=0x55c807d2ff20, trg_buf=<optimized out>,
trg_size=trg_size@entry=9677636, delta_size=delta_size@entry=0x7f782e169e78,
max_size=3585674)
at diff-delta.c:381
381 if (entry->val != val)
(gdb) bt
#0 create_delta (index=0x55c807d2ff20, trg_buf=<optimized out>,
trg_size=trg_size@entry=9677636, delta_size=delta_size@entry=0x7f782e169e78,
max_size=3585674)
at diff-delta.c:381
#1 0x000055c7dded0606 in try_delta (mem_usage=<synthetic pointer>,
max_depth=50, src=0x7f702c256bc0, trg=0x7f702c256ca0) at
builtin/pack-objects.c:2129
#2 find_deltas (list=<optimized out>,
list_size=list_size@entry=0x55c7e467daf4, window=<optimized out>,
depth=<optimized out>, processed=<optimized out>)
at builtin/pack-objects.c:2262
#3 0x000055c7dded0e29 in threaded_find_deltas (arg=0x55c7e467dae0) at
builtin/pack-objects.c:2408
#4 0x00007f7b82f8a6db in start_thread (arg=0x7f782e16a700) at
pthread_create.c:463
#5 0x00007f7b82cb388f in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:95
florin
-----Original Message-----
From: Iucha, Florin
Sent: Wednesday, December 12, 2018 11:50 AM
To: 'Jeff King' <[email protected]>
Cc: [email protected]
Subject: RE: High locking contention during repack?
Jeff,
Thank you for the advice, I will reduce the depth.
Running "git pack-objects --all --no-reuse-delta --delta-base-offset --stdout
</dev/null >/dev/null", it got to 99% fairly quickly, now it has 5 threads
running (using 99.9% CPU), but the "dstat 5" still shows lots of nothing, with
some heavy system activity:
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
1 8 91 0 0| 166k 224k| 0 0 | 0 0 |6892 970
0 13 87 0 0| 0 0 | 333B 1758B| 0 0 |2285 1374
0 13 87 0 0| 0 0 | 309B 1190B| 0 0 |2233 1265
0 13 87 0 0| 0 0 | 282B 1053B| 0 0 |2174 1239
0 13 87 0 0| 0 0 | 278B 1251B| 0 0 |1930 1173
0 13 87 0 0| 0 0 | 274B 942B| 0 0 |1987 1139
0 13 87 0 0| 0 0 | 264B 1168B| 0 0 |1928 1205
0 13 87 0 0| 0 0 | 388B 2435B| 0 0 |2245 1280
0 13 87 0 0| 0 0 | 268B 1145B| 0 0 |2225 1221
0 13 87 0 0| 0 0 | 164B 732B| 0 0 |2607 1333
0 13 87 0 0| 0 0 | 156B 996B| 0 0 |2100 1270
0 13 87 0 0| 0 0 | 206B 1019B| 0 0 |2192 1296
0 13 87 0 0| 0 0 | 198B 824B| 0 0 |2019 1236
0 13 87 0 0| 0 0 | 245B 435B| 0 0 |1974 1195
0 13 87 0 0| 0 0 | 252B 855B| 0 0 |1852 1166
0 13 87 0 0| 0 0 | 230B 758B| 0 0 |2066 1299
0 13 87 0 0| 0 0 | 284B 925B| 0 0 |1860 1225
0 13 87 0 0| 0 0 | 289B 2682B| 0 0 |1796 1197
0 13 87 0 0| 0 0 | 939B 1263B| 0 0 |1913 1304
0 13 87 0 0| 0 0 |1212B 1366B| 0 0 |1915 1343
I will try running the command under the debugger and stop it when it gets to
this point and poke around.
florin