Now I feel even more of an ignoramus :) On 14 May 2015 21:57, "Mark Engelberg" <mark.engelb...@gmail.com> wrote:
> I know that remembering to put "-server" used to be a huge issue, but I > thought that on all recent versions of Java on all modern 64-bit machines, > -server is now the default. I thought it was a non-issue at this point. > Is that incorrect? > > On Thu, May 14, 2015 at 1:54 PM, Colin Yates <colin.ya...@gmail.com> > wrote: > >> Probably not helpful, but I tend to rely on the jvm optimisations and >> just -server. I figured this is an area where a little knowledge is a >> dangerous thing. >> >> At the very least I would have a realistic benchmark suite to prove to >> myself that these gains were worth it. In my experience the performance >> bottleneck is always in design. >> >> Just my 2p, although with my self-confessed ignoramus status it is more >> like 0.5p :). >> On 14 May 2015 21:46, "Lee Spector" <lspec...@hampshire.edu> wrote: >> >>> I'd like to get more guidance on how to specify :jvm-opts for maximum >>> performance. I've received some help on this topic from people on this list >>> in the past (thanks!), but I'm pretty sure that I'm still not doing things >>> right. >>> >>> I'm almost always interested in maximum performance for long-running, >>> compute-intensive and memory-intensive processes, almost never caring much >>> at all about startup time or anything else. >>> >>> I also run my code on different machines, with different numbers of >>> cores and amounts of memory, and would prefer to be able to put something >>> in my project.clj that will do something reasonable regardless of what >>> machine it's running on. >>> >>> I run my code with "lein run", and I'd like whatever I need to "run >>> fast" to be in project.clj. >>> >>> I don't know a lot about JVM options, and I've tried to figure out what >>> to specify for :jvm-opts by asking questions here and web searches, but I'm >>> not at all confident that I'm doing it right yet. And because my systems >>> are also stochastic, it's not easy for me to do timing tests on the options >>> I've tried. >>> >>> I think there are options relevant to memory and also garbage collection >>> and maybe also compilation... and what else? I wish there was a simple >>> switch to get maximum performance of the sort I've outlined here (or at >>> least a reasonable stab at it), but I gather that there isn't. >>> >>> Anyway, here's what I've been using recently, which just deals with >>> memory and GC (and maybe not in the best way): >>> >>> :jvm-opts ~(let [mem-to-use (long (* (.getTotalPhysicalMemorySize >>> >>> (java.lang.management.ManagementFactory/getOperatingSystemMXBean)) >>> 0.8))] >>> [(str "-Xmx" mem-to-use) >>> (str "-Xms" mem-to-use) >>> "-XX:+UseG1GC"]) >>> >>> After seeing Alex's post I thought that maybe I should add "-server", as >>> follows: >>> >>> :jvm-opts ~(let [mem-to-use (long (* (.getTotalPhysicalMemorySize >>> >>> (java.lang.management.ManagementFactory/getOperatingSystemMXBean)) >>> 0.8))] >>> [(str "-Xmx" mem-to-use) >>> (str "-Xms" mem-to-use) >>> "-XX:+UseG1GC" >>> "-server"]) >>> >>> Is that right? Does it make sense? What does "-server" do? Also, should >>> I also be using "^:replace"? >>> >>> I've looked in >>> https://github.com/technomancy/leiningen/blob/master/sample.project.clj >>> in hopes that this would say more about this stuff, but it doesn't say >>> anything about -server or ^:replace. >>> >>> Looking into the compilation options, it looks from >>> https://github.com/technomancy/leiningen/wiki/Faster that I should be >>> specifying: >>> >>> :jvm-opts ^:replace [] >>> >>> This is also familiar to me from some earlier discussions. But how would >>> I combine this with the memory/GC/server(?) options above? >>> >>> A guess would be that maybe I should do this: >>> >>> :jvm-opts ^:replace >>> ~(let [mem-to-use (long (* (.getTotalPhysicalMemorySize >>> >>> (java.lang.management.ManagementFactory/getOperatingSystemMXBean)) >>> 0.8))] >>> [(str "-Xmx" mem-to-use) >>> (str "-Xms" mem-to-use) >>> "-XX:+UseG1GC" >>> "-server" >>> "-XX:-TieredCompilation"]) >>> >>> Note that this guess involves changing a + to a - in the last line, >>> which was suggested for the opposite purpose at >>> https://github.com/technomancy/leiningen/wiki/Faster -- but I don't >>> know if it's legitimate. >>> >>> Is this a reasonable thing to do to get maximum performance for >>> long-running, compute-intensive and memory-intensive processes? >>> >>> Is the tiered compilation thing maybe already done by including >>> "-server"? >>> >>> I'm probably at least somewhat confused about several different issues >>> here... >>> >>> Any help or pointers would be appreciated. >>> >>> Thanks, >>> >>> -Lee >>> >>> >>> >>> >>> > On May 14, 2015, at 3:47 PM, Alex Miller <a...@puredanger.com> wrote: >>> > >>> > Gah. Meant in project.clj: >>> > >>> > :jvm-opts ^:replace ["-server"] ;; maybe also set max heap with >>> "-Xmx1g" in there >>> > >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clojure@googlegroups.com >>> Note that posts from new members are moderated - please be patient with >>> your first post. >>> To unsubscribe from this group, send email to >>> clojure+unsubscr...@googlegroups.com >>> For more options, visit this group at >>> http://groups.google.com/group/clojure?hl=en >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to clojure+unsubscr...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. >> > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.