Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slower than usual with 100% CPU since 0.6.5 #181

Closed
rborer opened this issue Nov 28, 2019 · 5 comments · Fixed by #188
Closed

Slower than usual with 100% CPU since 0.6.5 #181

rborer opened this issue Nov 28, 2019 · 5 comments · Fixed by #188

Comments

@rborer
Copy link

rborer commented Nov 28, 2019

Hi,

I have multiple projects where version 0.6.4 worked perfectly fine and since I switched to version 0.6.5 (and 0.6.6), the process is taking much more time to format the code while the CPU is at 100%.

On one of my project here is the time difference:

  • 0.6.4: 16.42s user 0.41s system 111% cpu 15.037 total
  • 0.6.6: 358.01s user 1.01s system 102% cpu 5:50.29 total

Here is a stacktrace when this happens:

2019-11-28 10:29:37
Full thread dump OpenJDK 64-Bit Server VM (25.232-b09 mixed mode):

"Service Thread" #9 daemon prio=9 os_prio=0 tid=0x00007f2914130800 nid=0x47c43 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread3" #8 daemon prio=9 os_prio=0 tid=0x00007f291412d800 nid=0x47c42 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" #7 daemon prio=9 os_prio=0 tid=0x00007f291412b800 nid=0x47c41 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007f291412a000 nid=0x47c40 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007f291411a800 nid=0x47c3f waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007f2914118800 nid=0x47c3e waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007f29140ed000 nid=0x47c3d in Object.wait() [0x00007f28dbefd000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c9808ee0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
	- locked <0x00000006c9808ee0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:216)

"Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007f29140e8800 nid=0x47c3c in Object.wait() [0x00007f28dbffe000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <0x00000006c9810e38> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:502)
	at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
	- locked <0x00000006c9810e38> (a java.lang.ref.Reference$Lock)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

"main" #1 prio=5 os_prio=0 tid=0x00007f291404d000 nid=0x47c32 runnable [0x00007f291b70f000]
   java.lang.Thread.State: RUNNABLE
	at java.lang.Object.hashCode(Native Method)
	at clojure.lang.Util.hash(Util.java:161)
	at clojure.lang.MethodImplCache.findFnFor(MethodImplCache.java:79)
	at clojure.lang.MethodImplCache.fnFor(MethodImplCache.java:67)
	at rewrite_clj.node.protocols$eval766$fn__799$G__769__804.invoke(protocols.clj:9)
	at clojure.core$complement$fn__5654.invoke(core.clj:1441)
	at clojure.core$filter$fn__5878.invoke(core.clj:2821)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x00000007766f37f0> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x00000007766f37f0> (a clojure.lang.LazySeq)
	at clojure.lang.RT.seq(RT.java:531)
	at clojure.core$seq__5387.invokeStatic(core.clj:137)
	at clojure.core$map$fn__5851.invoke(core.clj:2746)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x00000007766f3f18> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x00000007766f3f18> (a clojure.lang.LazySeq)
	at clojure.lang.Cons.next(Cons.java:39)
	at clojure.lang.PersistentVector.create(PersistentVector.java:73)
	at clojure.lang.LazilyPersistentVector.create(LazilyPersistentVector.java:44)
	at clojure.core$vec.invokeStatic(core.clj:377)
	at clojure.core$vec.invoke(core.clj:367)
	at rewrite_clj.node.seq.SeqNode.sexpr(seq.clj:16)
	at rewrite_clj.node.protocols$eval766$fn__810$G__772__812.invoke(protocols.clj:9)
	at rewrite_clj.node.protocols$eval766$fn__810$G__771__815.invoke(protocols.clj:9)
	at clojure.core$map$fn__5851.invoke(core.clj:2753)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x00000007766f0d20> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x00000007766f0d20> (a clojure.lang.LazySeq)
	at clojure.lang.RT.seq(RT.java:531)
	at clojure.core$seq__5387.invokeStatic(core.clj:137)
	at clojure.core$apply.invokeStatic(core.clj:660)
	at clojure.core$apply.invoke(core.clj:660)
	at rewrite_clj.node.seq$map_node$fn__2623.invoke(seq.clj:110)
	at rewrite_clj.node.seq.SeqNode.sexpr(seq.clj:16)
	at rewrite_clj.node.protocols$eval766$fn__810$G__772__812.invoke(protocols.clj:9)
	at rewrite_clj.node.protocols$eval766$fn__810$G__771__815.invoke(protocols.clj:9)
	at clojure.core$map$fn__5851.invoke(core.clj:2755)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x00000007766f0690> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x00000007766f0690> (a clojure.lang.LazySeq)
	at clojure.lang.ChunkedCons.chunkedNext(ChunkedCons.java:59)
	at clojure.lang.ChunkedCons.next(ChunkedCons.java:43)
	at clojure.lang.PersistentHashMap.create(PersistentHashMap.java:76)
	at clojure.core$hash_map.invokeStatic(core.clj:387)
	at clojure.core$hash_map.doInvoke(core.clj:379)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:665)
	at clojure.core$apply.invoke(core.clj:660)
	at rewrite_clj.node.seq$map_node$fn__2623.invoke(seq.clj:110)
	at rewrite_clj.node.seq.SeqNode.sexpr(seq.clj:16)
	at rewrite_clj.node.protocols$eval766$fn__810$G__772__812.invoke(protocols.clj:9)
	at rewrite_clj.node.protocols$eval766$fn__810$G__771__815.invoke(protocols.clj:9)
	at clojure.core$map$fn__5851.invoke(core.clj:2755)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x00000007766ee7b8> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x00000007766ee7b8> (a clojure.lang.LazySeq)
	at clojure.lang.ChunkedCons.chunkedNext(ChunkedCons.java:59)
	at clojure.lang.ChunkedCons.next(ChunkedCons.java:43)
	at clojure.lang.PersistentHashMap.create(PersistentHashMap.java:76)
	at clojure.core$hash_map.invokeStatic(core.clj:387)
	at clojure.core$hash_map.doInvoke(core.clj:379)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:665)
	at clojure.core$apply.invoke(core.clj:660)
	at rewrite_clj.node.seq$map_node$fn__2623.invoke(seq.clj:110)
	at rewrite_clj.node.seq.SeqNode.sexpr(seq.clj:16)
	at rewrite_clj.node.protocols$eval766$fn__810$G__772__812.invoke(protocols.clj:9)
	at rewrite_clj.node.protocols$eval766$fn__810$G__771__815.invoke(protocols.clj:9)
	at clojure.core$map$fn__5851.invoke(core.clj:2753)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x00000007766e94d0> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x00000007766e94d0> (a clojure.lang.LazySeq)
	at clojure.lang.RT.seq(RT.java:531)
	at clojure.core$seq__5387.invokeStatic(core.clj:137)
	at clojure.core$apply.invokeStatic(core.clj:660)
	at clojure.core$apply.invoke(core.clj:660)
	at rewrite_clj.node.seq$map_node$fn__2623.invoke(seq.clj:110)
	at rewrite_clj.node.seq.SeqNode.sexpr(seq.clj:16)
	at rewrite_clj.node.protocols$eval766$fn__810$G__772__812.invoke(protocols.clj:9)
	at rewrite_clj.node.protocols$eval766$fn__810$G__771__815.invoke(protocols.clj:9)
	at clojure.core$map$fn__5851.invoke(core.clj:2753)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x00000007765d6800> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x00000007765d6800> (a clojure.lang.LazySeq)
	at clojure.lang.ChunkedCons.chunkedNext(ChunkedCons.java:59)
	at clojure.lang.ChunkedCons.next(ChunkedCons.java:43)
	at clojure.lang.PersistentHashMap.create(PersistentHashMap.java:76)
	at clojure.core$hash_map.invokeStatic(core.clj:387)
	at clojure.core$hash_map.doInvoke(core.clj:379)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:665)
	at clojure.core$apply.invoke(core.clj:660)
	at rewrite_clj.node.seq$map_node$fn__2623.invoke(seq.clj:110)
	at rewrite_clj.node.seq.SeqNode.sexpr(seq.clj:16)
	at rewrite_clj.node.protocols$eval766$fn__810$G__772__812.invoke(protocols.clj:9)
	at rewrite_clj.node.protocols$eval766$fn__810$G__771__815.invoke(protocols.clj:9)
	at clojure.core$map$fn__5851.invoke(core.clj:2755)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x0000000776582aa0> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x0000000776582aa0> (a clojure.lang.LazySeq)
	at clojure.lang.ChunkedCons.chunkedNext(ChunkedCons.java:59)
	at clojure.lang.ChunkedCons.next(ChunkedCons.java:43)
	at clojure.lang.PersistentList$Primordial.doInvoke(PersistentList.java:37)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:665)
	at clojure.core$apply.invoke(core.clj:660)
	at rewrite_clj.node.seq$list_node$fn__2617.invoke(seq.clj:95)
	at rewrite_clj.node.seq.SeqNode.sexpr(seq.clj:16)
	at rewrite_clj.node.protocols$eval766$fn__810$G__772__812.invoke(protocols.clj:9)
	at rewrite_clj.node.protocols$eval766$fn__810$G__771__815.invoke(protocols.clj:9)
	at clojure.core$map$fn__5851.invoke(core.clj:2753)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x00000007763e7618> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x00000007763e7618> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.first(LazySeq.java:73)
	at clojure.lang.RT.first(RT.java:688)
	at clojure.core$first__5369.invokeStatic(core.clj:55)
	at clojure.core$first__5369.invoke(core.clj:55)
	at cljfmt.core$ns_form_QMARK_.invokeStatic(core.cljc:213)
	at cljfmt.core$ns_form_QMARK_.invoke(core.cljc:212)
	at clojure.core$complement$fn__5654.invoke(core.clj:1441)
	at clojure.core$drop_while$step__5925.invoke(core.clj:2974)
	at clojure.core$drop_while$fn__5928.invoke(core.clj:2977)
	at clojure.lang.LazySeq.sval(LazySeq.java:42)
	- locked <0x00000007763e74b0> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.seq(LazySeq.java:51)
	- locked <0x00000007763e74b0> (a clojure.lang.LazySeq)
	at clojure.lang.LazySeq.first(LazySeq.java:73)
	at clojure.lang.RT.first(RT.java:688)
	at clojure.core$first__5369.invokeStatic(core.clj:55)
	at clojure.core$first__5369.invoke(core.clj:55)
	at rewrite_clj.zip.find$find.invokeStatic(find.clj:33)
	at rewrite_clj.zip.find$find.invoke(find.clj:21)
	at cljfmt.core$find_namespace.invokeStatic(core.cljc:216)
	at cljfmt.core$find_namespace.invoke(core.cljc:215)
	at cljfmt.core$qualify_symbol_by_ns_form.invokeStatic(core.cljc:244)
	at cljfmt.core$qualify_symbol_by_ns_form.invoke(core.cljc:243)
	at cljfmt.core$fully_qualified_symbol.invokeStatic(core.cljc:251)
	at cljfmt.core$fully_qualified_symbol.invoke(core.cljc:247)
	at cljfmt.core$inner_indent.invokeStatic(core.cljc:256)
	at cljfmt.core$inner_indent.invoke(core.cljc:254)
	at cljfmt.core$eval4255$fn__4257$fn__4261.invoke(core.cljc:293)
	at clojure.core$some_fn$sp1__8632.invoke(core.clj:7445)
	at clojure.core$some_fn$spn__8675$fn__8676.invoke(core.clj:7470)
	at clojure.core$some.invokeStatic(core.clj:2701)
	at clojure.core$some_fn$spn__8675.invoke(core.clj:7468)
	at cljfmt.core$custom_indent.invokeStatic(core.cljc:313)
	at cljfmt.core$custom_indent.invoke(core.cljc:307)
	at cljfmt.core$indent_amount.invokeStatic(core.cljc:321)
	at cljfmt.core$indent_amount.invoke(core.cljc:316)
	at cljfmt.core$indent_line.invokeStatic(core.cljc:326)
	at cljfmt.core$indent_line.invoke(core.cljc:325)
	at cljfmt.core$indent$fn__4297.invoke(core.cljc:337)
	at cljfmt.core$edit_all.invokeStatic(core.cljc:48)
	at cljfmt.core$edit_all.invoke(core.cljc:45)
	at clojure.lang.AFn.applyToHelper(AFn.java:160)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at cljfmt.core$transform.invokeStatic(core.cljc:52)
	at cljfmt.core$transform.doInvoke(core.cljc:51)
	at clojure.lang.RestFn.invoke(RestFn.java:464)
	at cljfmt.core$indent.invokeStatic(core.cljc:337)
	at cljfmt.core$indent.invoke(core.cljc:331)
	at cljfmt.core$reindent.invokeStatic(core.cljc:345)
	at cljfmt.core$reindent.invoke(core.cljc:339)
	at cljfmt.core$reformat_form.invokeStatic(core.cljc:369)
	at cljfmt.core$reformat_form.invoke(core.cljc:357)
	at cljfmt.core$reformat_string.invokeStatic(core.cljc:412)
	at cljfmt.core$reformat_string.invoke(core.cljc:403)
	at cljfmt.main$reformat_string$fn__4706.invoke(main.clj:37)
	at cljfmt.core$wrap_normalize_newlines$fn__4333.invoke(core.cljc:431)
	at cljfmt.main$reformat_string.invokeStatic(main.clj:37)
	at cljfmt.main$reformat_string.invoke(main.clj:36)
	at cljfmt.main$fix$fn__4732.invoke(main.clj:131)
	at cljfmt.main$fix.invokeStatic(main.clj:130)
	at cljfmt.main$fix.invoke(main.clj:121)
	at leiningen.cljfmt$execute_command.invokeStatic(cljfmt.clj:18)
	at leiningen.cljfmt$execute_command.invoke(cljfmt.clj:15)
	at leiningen.cljfmt$cljfmt.invokeStatic(cljfmt.clj:32)
	at leiningen.cljfmt$cljfmt.doInvoke(cljfmt.clj:21)
	at clojure.lang.RestFn.invoke(RestFn.java:425)
	at clojure.lang.AFn.applyToHelper(AFn.java:156)
	at clojure.lang.RestFn.applyTo(RestFn.java:132)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$partial_task$fn__6592.doInvoke(main.clj:284)
	at clojure.lang.RestFn.applyTo(RestFn.java:139)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$apply_task.invokeStatic(main.clj:334)
	at leiningen.core.main$apply_task.invoke(main.clj:320)
	at leiningen.core.main$resolve_and_apply.invokeStatic(main.clj:343)
	at leiningen.core.main$resolve_and_apply.invoke(main.clj:336)
	at leiningen.update_in$update_in.invokeStatic(update_in.clj:37)
	at leiningen.update_in$update_in.doInvoke(update_in.clj:24)
	at clojure.lang.RestFn.applyTo(RestFn.java:146)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$partial_task$fn__6592.doInvoke(main.clj:284)
	at clojure.lang.RestFn.applyTo(RestFn.java:139)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$apply_task.invokeStatic(main.clj:334)
	at leiningen.core.main$apply_task.invoke(main.clj:320)
	at leiningen.core.main$resolve_and_apply.invokeStatic(main.clj:343)
	at leiningen.core.main$resolve_and_apply.invoke(main.clj:336)
	at leiningen.update_in$update_in.invokeStatic(update_in.clj:37)
	at leiningen.update_in$update_in.doInvoke(update_in.clj:24)
	at clojure.lang.RestFn.applyTo(RestFn.java:146)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$partial_task$fn__6592.doInvoke(main.clj:284)
	at clojure.lang.RestFn.applyTo(RestFn.java:139)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:667)
	at clojure.core$apply.invoke(core.clj:660)
	at leiningen.core.main$apply_task.invokeStatic(main.clj:334)
	at leiningen.core.main$apply_task.invoke(main.clj:320)
	at leiningen.core.main$resolve_and_apply.invokeStatic(main.clj:343)
	at leiningen.core.main$resolve_and_apply.invoke(main.clj:336)
	at leiningen.core.main$_main$fn__6681.invoke(main.clj:452)
	at leiningen.core.main$_main.invokeStatic(main.clj:442)
	at leiningen.core.main$_main.doInvoke(main.clj:439)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.core$apply.invokeStatic(core.clj:665)
	at clojure.main$main_opt.invokeStatic(main.clj:491)
	at clojure.main$main_opt.invoke(main.clj:487)
	at clojure.main$main.invokeStatic(main.clj:598)
	at clojure.main$main.doInvoke(main.clj:561)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:705)
	at clojure.main.main(main.java:37)

"VM Thread" os_prio=0 tid=0x00007f29140df000 nid=0x47c3b runnable 

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f2914060000 nid=0x47c33 runnable 

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f2914061800 nid=0x47c34 runnable 

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f2914063800 nid=0x47c35 runnable 

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f2914065800 nid=0x47c36 runnable 

"GC task thread#4 (ParallelGC)" os_prio=0 tid=0x00007f2914067000 nid=0x47c37 runnable 

"GC task thread#5 (ParallelGC)" os_prio=0 tid=0x00007f2914069000 nid=0x47c38 runnable 

"GC task thread#6 (ParallelGC)" os_prio=0 tid=0x00007f291406a800 nid=0x47c39 runnable 

"GC task thread#7 (ParallelGC)" os_prio=0 tid=0x00007f291406c800 nid=0x47c3a runnable 

"VM Periodic Task Thread" os_prio=0 tid=0x00007f291414f000 nid=0x47c44 waiting on condition 

JNI global references: 224

Heap
 PSYoungGen      total 162304K, used 142310K [0x000000076dd80000, 0x0000000790b00000, 0x00000007c0000000)
  eden space 161280K, 87% used [0x000000076dd80000,0x0000000776819898,0x0000000777b00000)
  from space 1024K, 37% used [0x0000000790900000,0x0000000790960000,0x0000000790a00000)
  to   space 1024K, 0% used [0x0000000790a00000,0x0000000790a00000,0x0000000790b00000)
 ParOldGen       total 112640K, used 17658K [0x00000006c9800000, 0x00000006d0600000, 0x000000076dd80000)
  object space 112640K, 15% used [0x00000006c9800000,0x00000006ca93eb70,0x00000006d0600000)
 Metaspace       used 28334K, capacity 34234K, committed 34352K, reserved 1075200K
  class space    used 6556K, capacity 8703K, committed 8752K, reserved 1048576K

Also here is the process command (it is started through leiningen):

java -Dfile.encoding=UTF-8 -Dmaven.wagon.http.ssl.easy=false -Dmaven.wagon.rto=10000 -Xbootclasspath/a:/home/reynald/.lein/self-installs/leiningen-2.9.1-standalone.jar -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Dleiningen.input-checksum=39044dbdeb5c7b81c8bdca8e89b8bad6928e7d8f -Dleiningen.original.pwd=/home/reynald/Projects/smallrivers/nestor -Dleiningen.script=/home/reynald/bin/lein -classpath /home/reynald/.lein/self-installs/leiningen-2.9.1-standalone.jar clojure.main -m leiningen.core.main cljfmt fix

Finally, my java version:

openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

I am a bit lost as to how to diagnose this issue 😕 . Does this ring a bell to someone? Let me know if the information I provided are enough to investigate or not.

Thanks,
Reynald

@weavejester
Copy link
Owner

Can you provide some code that demonstrates this issue?

@rborer
Copy link
Author

rborer commented Dec 2, 2019

@weavejester unfortunately no as the code where it happens is private 😢

@rborer
Copy link
Author

rborer commented Dec 2, 2019

@weavejester actually I can exhibit the same behaviour on aleph.

So you can checkout this branch https://github.com/rborer/aleph/tree/standard-cljfmt which uses 0.6.4. Bumping 0.6.6 into project.clj makes it painfully slow to indent the whole codebase:

On 0.6.4: lein cljfmt fix 8.83s user 0.34s system 120% cpu 7.573 total

While on 0.6.6 I have: lein cljfmt fix 115.12s user 0.58s system 102% cpu 1:52.74 total.

Hope it helps?

@bitti
Copy link

bitti commented Dec 4, 2019

I've the same problem: >3 Min 100% CPU on a current MacBook pro and a 4.5k line clj file.

@rborer
Copy link
Author

rborer commented Feb 20, 2020

Any plan to have it released soon so I can confirm the fix is working on my side? Thanks.

lread pushed a commit to lread/cljfmt that referenced this issue Jun 15, 2020
This patch addresses the slowdown introduced between 0.6.4 and 0.6.5
and fixes weavejester#181.

Prior to this patch, find-namespace and ns-form? called z/sexpr on
all traversed forms. The find-namespace logic needed only parts of
resulting sexprs.

The cost of z/sexpr was non-negligible when invoked on complex forms.
As a result, z/sexpr and nested functions dominated the CPU cost of
the indentation logic.

This patch makes z/sexpr calls more fine-granular and avoids invoking
the function on nodes irrelevant to find-namespace. This results in a
tenfold speedup.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants