You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "yossi reginiano (JIRA)" <ji...@apache.org> on 2018/10/17 06:47:00 UTC

[jira] [Updated] (GEODE-5887) checkRegisteredKeys function consumes alot of CPU

     [ https://issues.apache.org/jira/browse/GEODE-5887?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

yossi reginiano updated GEODE-5887:
-----------------------------------
    Priority: Major  (was: Minor)

> checkRegisteredKeys function consumes alot of CPU
> -------------------------------------------------
>
>                 Key: GEODE-5887
>                 URL: https://issues.apache.org/jira/browse/GEODE-5887
>             Project: Geode
>          Issue Type: Improvement
>            Reporter: yossi reginiano
>            Priority: Major
>             Fix For: 1.8.0
>
>
> {color:#333333}in our many runs we have observed that the following function - AcceptorImpl:checkRegisteredKeys consumes about 6% of total CPU{color}
> {color:#333333}this function go over all the registered connections to the JVM server , check if it was closed - and if so remove that connection from the registration{color}
> {color:#333333}this is done continuously while we have any registered key{color}
> {color:#333333}we have run the flow with update runSelectorLoop() function in which checkRegisteredKeys function is not being called continuously but rather every second , and observed about 7% reduction in the function CPU consumption - with no negative effect on the flow (was strictly verified in multiple runs){color}
> {color:#333333}we suggest to insert the following change into AcceptorImpl::runSelectorLoop (of course *timeLimit* will come as a parameter from the properties file){color}
>  
> {color:#333333}try {
>  *long initialTime = System.currentTimeMillis();*
>  *long timeLimit = 1000;*
>  logger.info(LocalizedMessage.create(LocalizedStrings.AcceptorImpl_SELECTOR_ENABLED));
>  while (this.selector.isOpen() && !Thread.currentThread().isInterrupted()) {
>  {
>  SystemFailure.checkFailure();
>  // this.cache.getDistributedSystem().getCancelCriterion().checkCancelInProgress(null);
>  if (this.cache.isClosed()) { // bug 38834
>  break; // TODO should just ask cache's CancelCriterion
>  }
>  if (this.cache.getCancelCriterion().isCancelInProgress()) {
>  break;
>  }
>  ServerConnection sc;
>  *long delta = System.currentTimeMillis() - initialTime;*
>  *if (delta >= timeLimit) {*
>  *registeredKeys = checkRegisteredKeys(registeredKeys);*
>  *initialTime = System.currentTimeMillis();*
>  *}*
>  if (registeredKeys == 0) {{color}
> {color:#333333} {color}
> {color:#333333}do note that due to many TO in this account - min-connections property was increased , which also causes checkRegisteredKeys to consume more CPU{color}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)