Ilya, agree. I like IGNITE_AVAILABLE_CPU more. Yakov Zhdanov, www.gridgain.com
2017-12-26 16:36 GMT+03:00 Ilya Lantukh <ilant...@gridgain.com>: > Hi Yakov, > > I think that property IGNITE_NODES_PER_HOST, as you suggested, would be > confusing, because users might want to reduce amount of available resources > for ignite node not only because they run multiple nodes per host, but also > because they run other software. Also, in my opinion all types of system > resources (CPU, memory, network) shouldn't be scaled using the same value. > > So I'd prefer to have IGNITE_CONCURRENCY_LEVEL or > IGNITE_AVAILABLE_PROCESSORS, as it was originally suggested. > > On Tue, Dec 26, 2017 at 4:05 PM, Yakov Zhdanov <yzhda...@apache.org> > wrote: > >> Cross-posting to dev list. >> >> Guys, >> >> Suggestion below makes sense to me. Filed a ticket >> https://issues.apache.org/jira/browse/IGNITE-7310 >> >> Perhaps, Arseny would like to provide a PR himself ;) >> >> --Yakov >> >> 2017-12-26 14:32 GMT+03:00 Arseny Kovalchuk <arseny.kovalc...@synesis.ru >> >: >> >> > Hi guys. >> > >> > Ignite configures all thread pools, selectors, etc. basing on >> Runtime.availableProcessors() >> > which seems not correct in containerized environment. In Kubernetes with >> > Docker that method returns CPU count of a Node/machine, which is 64 in >> our >> > particular case. But those 64 CPU and their timings are shared between >> > other stuff on the node like other Pods and services. Appropriate value >> of >> > available cores for Pod is usually configured as CPU Resource and >> estimated >> > basing on different things taking performance into account. General >> idea, >> > if you want to run several Pods on the same node, they all should >> request >> > less resources then the node provides. So, we give 4-8 cores for Ignite >> > instance in Kubernetes, but Ignite's thread pools are configured like >> they >> > get all 64 CPUs, and in turn we get a lot of threads for the Pod with >> 4-8 >> > cores available. >> > >> > Now we manually set appropriate values for all available properties >> which >> > relate to thread pools. >> > >> > Would it be correct to have one environment variable, say >> > IGNITE_CONCURRENCY_LEVEL which will be used as a reference value for >> those >> > configurations and by default equals to Runtime.availableProcessors()? >> > >> > Thanks. >> > >> > >> > Arseny Kovalchuk >> > >> > Senior Software Engineer at Synesis >> > skype: arseny.kovalchuk >> > mobile: +375 (29) 666-16-16 >> > LinkedIn Profile <http://www.linkedin.com/in/arsenykovalchuk/en> >> > >> > > > > -- > Best regards, > Ilya >