Skip to content

Instantly share code, notes, and snippets.

@davispuh
Created April 3, 2024 19:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davispuh/cff8099120b80c9aa69c775e2e89e181 to your computer and use it in GitHub Desktop.
Save davispuh/cff8099120b80c9aa69c775e2e89e181 to your computer and use it in GitHub Desktop.
D lang gc_query() bottleneck
Thread 10 (Thread 0x7790d18006c0 (LWP 145629) "prog"):
#0 0x00007790db99f335 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=0x7790d17fa010, rem=0x7790d17fa020) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1 0x00007790db9aa3e7 in __GI___nanosleep (req=<optimized out>, rem=<optimized out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2 0x0000631608891a8c in core.thread.osthread.Thread.sleep(core.time.Duration) ()
#3 0x00006316088b87f0 in core.internal.spinlock.SpinLock.yield(ulong) shared ()
#4 0x00006316088b879a in core.internal.spinlock.SpinLock.lock() shared ()
#5 0x00006316088c4343 in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.mallocNoSync(ulong, uint, ref ulong, const(TypeInfo)), core.internal.gc.impl.conservative.gc.mallocTime, core.internal.gc.impl.conservative.gc.numMallocs, ulong, uint, ulong, const(TypeInfo)).runLocked(ref ulong, ref uint, ref ulong, ref const(TypeInfo)) ()
#6 0x00006316088bbe26 in core.internal.gc.impl.conservative.gc.ConservativeGC.qalloc(ulong, uint, scope const(TypeInfo)) ()
#7 0x000063160887690f in gc_qalloc ()
#8 0x0000631608894192 in rt.lifetime.__arrayAlloc(ulong, ref core.memory.BlkInfo_, scope const(TypeInfo), const(TypeInfo)) ()
#9 0x000063160887c696 in _d_arrayappendcTX ()
#10 0x0000631608833419 in core.internal.array.appending._d_arrayappendcTX!(char[], char)._d_arrayappendcTX(scope return ref char[], ulong) ()
#11 0x0000631608855be7 in core.internal.array.appending._d_arrayappendT!(char[], char)._d_arrayappendT(scope return ref char[], scope char[]) ()
Thread 9 (Thread 0x7790d34006c0 (LWP 145628) "prog"):
#0 0x00007790db99f335 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=0x7790d33f8bb0, rem=0x7790d33f8bc0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1 0x00007790db9aa3e7 in __GI___nanosleep (req=<optimized out>, rem=<optimized out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2 0x0000631608891a8c in core.thread.osthread.Thread.sleep(core.time.Duration) ()
#3 0x00006316088b87f0 in core.internal.spinlock.SpinLock.yield(ulong) shared ()
#4 0x00006316088b879a in core.internal.spinlock.SpinLock.lock() shared ()
#5 0x00006316088c4aef in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.queryNoSync(void*), core.internal.gc.impl.conservative.gc.otherTime, core.internal.gc.impl.conservative.gc.numOthers, void*).runLocked(ref void*) ()
#6 0x00006316088bcd4f in core.internal.gc.impl.conservative.gc.ConservativeGC.query(void*) ()
#7 0x000063160888de84 in gc_query ()
#8 0x000063160887bf61 in _d_arrayappendcTX ()
Thread 8 (Thread 0x7790d3e006c0 (LWP 145627) "prog"):
#0 0x00007790db99f335 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=0x7790d3dfa0e0, rem=0x7790d3dfa0f0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1 0x00007790db9aa3e7 in __GI___nanosleep (req=<optimized out>, rem=<optimized out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2 0x0000631608891a8c in core.thread.osthread.Thread.sleep(core.time.Duration) ()
#3 0x00006316088b87f0 in core.internal.spinlock.SpinLock.yield(ulong) shared ()
#4 0x00006316088b879a in core.internal.spinlock.SpinLock.lock() shared ()
#5 0x00006316088c4aef in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.queryNoSync(void*), core.internal.gc.impl.conservative.gc.otherTime, core.internal.gc.impl.conservative.gc.numOthers, void*).runLocked(ref void*) ()
#6 0x00006316088bcd4f in core.internal.gc.impl.conservative.gc.ConservativeGC.query(void*) ()
#7 0x000063160888de84 in gc_query ()
#8 0x000063160887bf61 in _d_arrayappendcTX ()
#9 0x0000631608833419 in core.internal.array.appending._d_arrayappendcTX!(char[], char)._d_arrayappendcTX(scope return ref char[], ulong) ()
#10 0x0000631608855be7 in core.internal.array.appending._d_arrayappendT!(char[], char)._d_arrayappendT(scope return ref char[], scope char[]) ()
Thread 7 (Thread 0x7790d8e006c0 (LWP 145626) "prog"):
#0 0x00007790db99f335 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=0x7790d8df8bb0, rem=0x7790d8df8bc0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1 0x00007790db9aa3e7 in __GI___nanosleep (req=<optimized out>, rem=<optimized out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2 0x0000631608891a8c in core.thread.osthread.Thread.sleep(core.time.Duration) ()
#3 0x00006316088b87f0 in core.internal.spinlock.SpinLock.yield(ulong) shared ()
#4 0x00006316088b879a in core.internal.spinlock.SpinLock.lock() shared ()
#5 0x00006316088c4aef in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.queryNoSync(void*), core.internal.gc.impl.conservative.gc.otherTime, core.internal.gc.impl.conservative.gc.numOthers, void*).runLocked(ref void*) ()
#6 0x00006316088bcd4f in core.internal.gc.impl.conservative.gc.ConservativeGC.query(void*) ()
#7 0x000063160888de84 in gc_query ()
#8 0x000063160887bf61 in _d_arrayappendcTX ()
#9 0x0000631608833419 in core.internal.array.appending._d_arrayappendcTX!(char[], char)._d_arrayappendcTX(scope return ref char[], ulong) ()
#10 0x0000631608855be7 in core.internal.array.appending._d_arrayappendT!(char[], char)._d_arrayappendT(scope return ref char[], scope char[]) ()
Thread 6 (Thread 0x7790d98006c0 (LWP 145625) "prog"):
#0 0x00007790db99f335 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=0x7790d97fa0e0, rem=0x7790d97fa0f0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1 0x00007790db9aa3e7 in __GI___nanosleep (req=<optimized out>, rem=<optimized out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2 0x0000631608891a8c in core.thread.osthread.Thread.sleep(core.time.Duration) ()
#3 0x00006316088b87f0 in core.internal.spinlock.SpinLock.yield(ulong) shared ()
#4 0x00006316088b879a in core.internal.spinlock.SpinLock.lock() shared ()
#5 0x00006316088c4aef in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.queryNoSync(void*), core.internal.gc.impl.conservative.gc.otherTime, core.internal.gc.impl.conservative.gc.numOthers, void*).runLocked(ref void*) ()
#6 0x00006316088bcd4f in core.internal.gc.impl.conservative.gc.ConservativeGC.query(void*) ()
#7 0x000063160888de84 in gc_query ()
#8 0x000063160887bf61 in _d_arrayappendcTX ()
#9 0x0000631608833419 in core.internal.array.appending._d_arrayappendcTX!(char[], char)._d_arrayappendcTX(scope return ref char[], ulong) ()
#10 0x0000631608855be7 in core.internal.array.appending._d_arrayappendT!(char[], char)._d_arrayappendT(scope return ref char[], scope char[]) ()
Thread 5 (Thread 0x7790da2006c0 (LWP 145624) "prog"):
#0 0x00007790db99f335 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=0x7790da1ee970, rem=0x7790da1ee980) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1 0x00007790db9aa3e7 in __GI___nanosleep (req=<optimized out>, rem=<optimized out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2 0x0000631608891a8c in core.thread.osthread.Thread.sleep(core.time.Duration) ()
#3 0x00006316088b87f0 in core.internal.spinlock.SpinLock.yield(ulong) shared ()
#4 0x00006316088b879a in core.internal.spinlock.SpinLock.lock() shared ()
#5 0x00006316088c4aef in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.queryNoSync(void*), core.internal.gc.impl.conservative.gc.otherTime, core.internal.gc.impl.conservative.gc.numOthers, void*).runLocked(ref void*) ()
#6 0x00006316088bcd4f in core.internal.gc.impl.conservative.gc.ConservativeGC.query(void*) ()
#7 0x000063160888de84 in gc_query ()
#8 0x000063160887bf61 in _d_arrayappendcTX ()
#9 0x0000631608833419 in core.internal.array.appending._d_arrayappendcTX!(char[], char)._d_arrayappendcTX(scope return ref char[], ulong) ()
#10 0x0000631608855be7 in core.internal.array.appending._d_arrayappendT!(char[], char)._d_arrayappendT(scope return ref char[], scope char[]) ()
Thread 4 (Thread 0x7790d22006c0 (LWP 145623) "prog"):
#0 0x00007790db99f335 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=0x7790d21f8bb0, rem=0x7790d21f8bc0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1 0x00007790db9aa3e7 in __GI___nanosleep (req=<optimized out>, rem=<optimized out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2 0x0000631608891a8c in core.thread.osthread.Thread.sleep(core.time.Duration) ()
#3 0x00006316088b87f0 in core.internal.spinlock.SpinLock.yield(ulong) shared ()
#4 0x00006316088b879a in core.internal.spinlock.SpinLock.lock() shared ()
#5 0x00006316088c4aef in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.queryNoSync(void*), core.internal.gc.impl.conservative.gc.otherTime, core.internal.gc.impl.conservative.gc.numOthers, void*).runLocked(ref void*) ()
#6 0x00006316088bcd4f in core.internal.gc.impl.conservative.gc.ConservativeGC.query(void*) ()
#7 0x000063160888de84 in gc_query ()
#8 0x000063160887bf61 in _d_arrayappendcTX ()
#9 0x0000631608833419 in core.internal.array.appending._d_arrayappendcTX!(char[], char)._d_arrayappendcTX(scope return ref char[], ulong) ()
#10 0x0000631608855be7 in core.internal.array.appending._d_arrayappendT!(char[], char)._d_arrayappendT(scope return ref char[], scope char[]) ()
Thread 3 (Thread 0x7790dac006c0 (LWP 145622) "prog"):
#0 0x00007790db99f335 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=0x7790dabf8ae0, rem=0x7790dabf8af0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1 0x00007790db9aa3e7 in __GI___nanosleep (req=<optimized out>, rem=<optimized out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2 0x0000631608891a8c in core.thread.osthread.Thread.sleep(core.time.Duration) ()
#3 0x00006316088b87f0 in core.internal.spinlock.SpinLock.yield(ulong) shared ()
#4 0x00006316088b879a in core.internal.spinlock.SpinLock.lock() shared ()
#5 0x00006316088c4343 in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.mallocNoSync(ulong, uint, ref ulong, const(TypeInfo)), core.internal.gc.impl.conservative.gc.mallocTime, core.internal.gc.impl.conservative.gc.numMallocs, ulong, uint, ulong, const(TypeInfo)).runLocked(ref ulong, ref uint, ref ulong, ref const(TypeInfo)) ()
#6 0x00006316088bbe26 in core.internal.gc.impl.conservative.gc.ConservativeGC.qalloc(ulong, uint, scope const(TypeInfo)) ()
#7 0x000063160887690f in gc_qalloc ()
#8 0x0000631608894192 in rt.lifetime.__arrayAlloc(ulong, ref core.memory.BlkInfo_, scope const(TypeInfo), const(TypeInfo)) ()
#9 0x000063160887c696 in _d_arrayappendcTX ()
#10 0x0000631608833419 in core.internal.array.appending._d_arrayappendcTX!(char[], char)._d_arrayappendcTX(scope return ref char[], ulong) ()
#11 0x0000631608855be7 in core.internal.array.appending._d_arrayappendT!(char[], char)._d_arrayappendT(scope return ref char[], scope char[]) ()
Thread 2 (Thread 0x7790db6006c0 (LWP 145621) "prog"):
#0 0x00006316088be45a in core.internal.gc.impl.conservative.gc.Gcx.smallAlloc(ulong, ref ulong, uint, const(TypeInfo)) ()
#1 0x00006316088c437d in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.mallocNoSync(ulong, uint, ref ulong, const(TypeInfo)), core.internal.gc.impl.conservative.gc.mallocTime, core.internal.gc.impl.conservative.gc.numMallocs, ulong, uint, ulong, const(TypeInfo)).runLocked(ref ulong, ref uint, ref ulong, ref const(TypeInfo)) ()
#2 0x00006316088bbe26 in core.internal.gc.impl.conservative.gc.ConservativeGC.qalloc(ulong, uint, scope const(TypeInfo)) ()
#3 0x000063160887690f in gc_qalloc ()
#4 0x0000631608894192 in rt.lifetime.__arrayAlloc(ulong, ref core.memory.BlkInfo_, scope const(TypeInfo), const(TypeInfo)) ()
#5 0x000063160887c696 in _d_arrayappendcTX ()
#6 0x0000631608833419 in core.internal.array.appending._d_arrayappendcTX!(char[], char)._d_arrayappendcTX(scope return ref char[], ulong) ()
#7 0x0000631608855be7 in core.internal.array.appending._d_arrayappendT!(char[], char)._d_arrayappendT(scope return ref char[], scope char[]) ()
Thread 1 (Thread 0x7790db8c89c0 (LWP 145620) "prog"):
#0 0x00007790db99f335 in __GI___clock_nanosleep (clock_id=clock_id@entry=0, flags=flags@entry=0, req=0x7ffd1e9eedb0, rem=0x7ffd1e9eedc0) at ../sysdeps/unix/sysv/linux/clock_nanosleep.c:48
#1 0x00007790db9aa3e7 in __GI___nanosleep (req=<optimized out>, rem=<optimized out>) at ../sysdeps/unix/sysv/linux/nanosleep.c:25
#2 0x0000631608891a8c in core.thread.osthread.Thread.sleep(core.time.Duration) ()
#3 0x00006316088b87f0 in core.internal.spinlock.SpinLock.yield(ulong) shared ()
#4 0x00006316088b879a in core.internal.spinlock.SpinLock.lock() shared ()
#5 0x00006316088c4aef in core.internal.gc.impl.conservative.gc.ConservativeGC.runLocked!(core.internal.gc.impl.conservative.gc.ConservativeGC.queryNoSync(void*), core.internal.gc.impl.conservative.gc.otherTime, core.internal.gc.impl.conservative.gc.numOthers, void*).runLocked(ref void*) ()
#6 0x00006316088bcd4f in core.internal.gc.impl.conservative.gc.ConservativeGC.query(void*) ()
#7 0x000063160888de84 in gc_query ()
#8 0x000063160887bf61 in _d_arrayappendcTX ()
#9 0x0000631608833419 in core.internal.array.appending._d_arrayappendcTX!(char[], char)._d_arrayappendcTX(scope return ref char[], ulong) ()
#10 0x0000631608855be7 in core.internal.array.appending._d_arrayappendT!(char[], char)._d_arrayappendT(scope return ref char[], scope char[]) ()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment