FWIW if I run with no :jvm-opts at all then I often crash with an out-of-memory 
error, so I do know that whatever happens by default doesn't do what I'm doing 
with respect to memory, at least.

I don't know what happens with respect to the other issues (tiered compilation 
and whatever else) by default, or with -server, etc.

 -Lee


> On May 14, 2015, at 4:59 PM, Colin Yates <colin.ya...@gmail.com> wrote:
> 
> Now I feel even more of an ignoramus :)
> 
> On 14 May 2015 21:57, "Mark Engelberg" <mark.engelb...@gmail.com 
> <mailto: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 
> <mailto: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 
> <mailto: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 
> <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 
> <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 
> <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 
> > <mailto: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 
> <mailto: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 
> <mailto:clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en 
> <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 
> <mailto:clojure%2bunsubscr...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout 
> <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 
> <mailto: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 
> <mailto:clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en 
> <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 
> <mailto:clojure+unsubscr...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout 
> <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 
> <mailto: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 
> <mailto:clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en 
> <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 
> <mailto:clojure+unsubscr...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout 
> <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 
> <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 
> <mailto:clojure+unsubscr...@googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

--
Lee Spector, Professor of Computer Science
Director, Institute for Computational Intelligence
Cognitive Science, Hampshire College
893 West Street, Amherst, MA 01002-3359
lspec...@hampshire.edu, http://hampshire.edu/lspector/
Phone: 413-559-5352, Fax: 413-559-5438

-- 
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.

Reply via email to