{"action":"created","issue":{"url":"https://api.github.com/repos/facebook/rocksdb/issues/2103","repository_url":"https://api.github.com/repos/facebook/rocksdb","labels_url":"https://api.github.com/repos/facebook/rocksdb/issues/2103/labels{/name}","comments_url":"https://api.github.com/repos/facebook/rocksdb/issues/2103/comments","events_url":"https://api.github.com/repos/facebook/rocksdb/issues/2103/events","html_url":"https://github.com/facebook/rocksdb/pull/2103","id":220045969,"number":2103,"title":"New level-based L0->base_level compaction picking algorithm","user":{"login":"ajkr","id":4780362,"avatar_url":"https://avatars3.githubusercontent.com/u/4780362?v=3","gravatar_id":"","url":"https://api.github.com/users/ajkr","html_url":"https://github.com/ajkr","followers_url":"https://api.github.com/users/ajkr/followers","following_url":"https://api.github.com/users/ajkr/following{/other_user}","gists_url":"https://api.github.com/users/ajkr/gists{/gist_id}","starred_url":"https://api.github.com/users/ajkr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ajkr/subscriptions","organizations_url":"https://api.github.com/users/ajkr/orgs","repos_url":"https://api.github.com/users/ajkr/repos","events_url":"https://api.github.com/users/ajkr/events{/privacy}","received_events_url":"https://api.github.com/users/ajkr/received_events","type":"User","site_admin":false},"labels":[{"id":196859108,"url":"https://api.github.com/repos/facebook/rocksdb/labels/CLA%20Signed","name":"CLA Signed","color":"009900","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2017-04-06T21:59:19Z","updated_at":"2017-04-06T23:03:41Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/facebook/rocksdb/pulls/2103","html_url":"https://github.com/facebook/rocksdb/pull/2103","diff_url":"https://github.com/facebook/rocksdb/pull/2103.diff","patch_url":"https://github.com/facebook/rocksdb/pull/2103.patch"},"body":"Previously, we picked largest L0 file and all overlapping ones as inputs for L0->base compaction. It didn't seem to have any benefits and L0->base couldn't run concurrently with L0->L0.\r\n\r\nThis diff changes L0->base picker to start with the oldest L0 file, then expand towards newer L0 files until reaching a file being compacted. Now, L0->L0 can run concurrently since that one's picker starts with the newest file and expands towards older L0 files until reaching a file being compacted. This prevents overlap/conflict.\r\n\r\nBut I haven't removed the restriction (`level0_compactions_in_progress_`) on parallel L0->* compactions yet. That'll be my next diff.\r\n\r\nTest Plan: unit tests. In the next diff I'll test simultaneous L0->base and L0->L0.\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/facebook/rocksdb/issues/comments/292354044","html_url":"https://github.com/facebook/rocksdb/pull/2103#issuecomment-292354044","issue_url":"https://api.github.com/repos/facebook/rocksdb/issues/2103","id":292354044,"user":{"login":"ajkr","id":4780362,"avatar_url":"https://avatars3.githubusercontent.com/u/4780362?v=3","gravatar_id":"","url":"https://api.github.com/users/ajkr","html_url":"https://github.com/ajkr","followers_url":"https://api.github.com/users/ajkr/followers","following_url":"https://api.github.com/users/ajkr/following{/other_user}","gists_url":"https://api.github.com/users/ajkr/gists{/gist_id}","starred_url":"https://api.github.com/users/ajkr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ajkr/subscriptions","organizations_url":"https://api.github.com/users/ajkr/orgs","repos_url":"https://api.github.com/users/ajkr/repos","events_url":"https://api.github.com/users/ajkr/events{/privacy}","received_events_url":"https://api.github.com/users/ajkr/received_events","type":"User","site_admin":false},"created_at":"2017-04-06T23:03:41Z","updated_at":"2017-04-06T23:03:41Z","body":"sure I updated the title. The goal is more to simplify the algorithm (although as usual the resulting code looks more complicated), not really any perf improvement or user-visible behavior change"}}
{"actor":{"display_login":"ajkr"}}