{"action":"opened","issue":{"url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/9133","labels_url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/9133/labels{/name}","comments_url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/9133/comments","events_url":"https://api.github.com/repos/elasticsearch/elasticsearch/issues/9133/events","html_url":"https://github.com/elasticsearch/elasticsearch/issues/9133","id":53384796,"number":9133,"title":"Expose ConcurrentMergeScheduler's auto IO throttle & stats","user":{"login":"mikemccand","id":796508,"avatar_url":"https://avatars.githubusercontent.com/u/796508?v=3","gravatar_id":"","url":"https://api.github.com/users/mikemccand","html_url":"https://github.com/mikemccand","followers_url":"https://api.github.com/users/mikemccand/followers","following_url":"https://api.github.com/users/mikemccand/following{/other_user}","gists_url":"https://api.github.com/users/mikemccand/gists{/gist_id}","starred_url":"https://api.github.com/users/mikemccand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikemccand/subscriptions","organizations_url":"https://api.github.com/users/mikemccand/orgs","repos_url":"https://api.github.com/users/mikemccand/repos","events_url":"https://api.github.com/users/mikemccand/events{/privacy}","received_events_url":"https://api.github.com/users/mikemccand/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/elasticsearch/elasticsearch/labels/v2.0.0","name":"v2.0.0","color":"dddddd"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-01-05T10:56:54Z","updated_at":"2015-01-05T10:56:54Z","closed_at":null,"body":"With https://issues.apache.org/jira/browse/LUCENE-6119 we're enabling Lucene's ConcurrentMergeScheduler to automatically set an adaptive IO throttle (writes) over time depending on the incoming merge load.\r\n\r\nWith this, an app that indexes at a slow rate but unluckily suddenly hits a large merge will see that merge aggressively throttled (not using much IO), but apps with intense indexing will see merges run at a higher IO rate or entirely unthrottled, so merges don't fall behind.\r\n\r\nThe only exposed setting is a boolean (default is true) to enable the adaptive IO throttle; it's a live setting, so I'll expose it as a dynamic setting in Elasticsearch.  I'll also remove the current hardwired throttling: it's too simplistic / dangerous.\r\n\r\nWith this change, merges also separately track how much time they were stopped (because too many smaller merges need to run) vs paused (due to IO throttle).  I'll cutover Elasticsearch's stats tracking to these..."}}