Thank you both.. This information was really helpful. Tim On Oct 20, 6:05 pm, Andy Fingerhut <andy.finger...@gmail.com> wrote: > I would suspect that you would not get a _significant_ performance advantage > from specifying processor affinity, but if you really want to measure it and > find out by experimentation, read on. > > I was not able to find any portable way within a JVM to set processor > affinity, after some amount of Googling on the Internet about a year ago. > There might be some ways that are specific to some JVMs, but I didn't find > any then. > > If you want to set the processor affinity for an arbitrary process running > on Linux, whether it is a JVM or not, you can do so with a sched_affinity() > call in a little wrapper process that starts up the process for you. > > According to the StackOverflow discussion linked below, user tgamblin found > that sched_affinity() semantics can vary across Linux distributions. They > mention a Portable Linux Processor Affinity library that may be useful, > although I haven't tried it myself. They mention that for some > high-performance parallel applications, e.g. using the MPI library, it is > common practice to manually specify processor affinity. > > http://stackoverflow.com/questions/360307/multicore-hyperthreading-ho... > > Note that if you benchmark manually setting processor affinity vs. not, note > that benchmarking this with programs that use very little memory (e.g. an > infinite loop that just counts iterations) will likely not show as much > difference as a benchmark that has significant usage of the on-chip CPU > instruction and/or data cache, so that switching the scheduling of the > thread to a different CPU core actually causes significant cache misses > after being "moved". > > Andy > > On Thu, Oct 20, 2011 at 11:41 AM, Tim Robinson <tim.blacks...@gmail.com>wrote: > > > > > > > > > This may not be a Clojure specific kind of question, but this is for > > my Clojure web app(s) so hopefully it's not too far off. > > > Currently when I deploy my web apps I run 1 app instance on 1 app > > server. Given these are multi-core servers I am thinking about running > > 4 app instances on a server to get max IO capabilities at a lower > > cost. (Note that I currently using nginx, to route requests to a > > Clojure/Ring+Jetty web app on a specified port. I am expecting that in > > order to run 4 app instances I will need to load balance within nginx > > to each port and also set the processor affinity for each app instance > > to ensure they are balanced across cores). > > > So here are my questions: > > > 1. Does this idea make sense? why/whynot? > > 2. Do you do currently do this for your web apps and can you provide > > any insight/experiences that could be helpful? > > 3. Is there a way to specify processor affinity within the > > application, such that I wouldn't need to manually set them > > afterwards? > > 4. Are there better ideas to accomplish the same kind of thing? > > > Thanks for any help/ideas. > > > Tim > > > -- > > 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 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