{"action":"created","issue":{"url":"https://api.github.com/repos/vbatts/tar-split/issues/22","labels_url":"https://api.github.com/repos/vbatts/tar-split/issues/22/labels{/name}","comments_url":"https://api.github.com/repos/vbatts/tar-split/issues/22/comments","events_url":"https://api.github.com/repos/vbatts/tar-split/issues/22/events","html_url":"https://github.com/vbatts/tar-split/pull/22","id":119552447,"number":22,"title":"Optimize tar stream generation","user":{"login":"tonistiigi","id":585223,"avatar_url":"https://avatars.githubusercontent.com/u/585223?v=3","gravatar_id":"","url":"https://api.github.com/users/tonistiigi","html_url":"https://github.com/tonistiigi","followers_url":"https://api.github.com/users/tonistiigi/followers","following_url":"https://api.github.com/users/tonistiigi/following{/other_user}","gists_url":"https://api.github.com/users/tonistiigi/gists{/gist_id}","starred_url":"https://api.github.com/users/tonistiigi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tonistiigi/subscriptions","organizations_url":"https://api.github.com/users/tonistiigi/orgs","repos_url":"https://api.github.com/users/tonistiigi/repos","events_url":"https://api.github.com/users/tonistiigi/events{/privacy}","received_events_url":"https://api.github.com/users/tonistiigi/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-11-30T18:35:07Z","updated_at":"2015-12-02T20:08:59Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/vbatts/tar-split/pulls/22","html_url":"https://github.com/vbatts/tar-split/pull/22","diff_url":"https://github.com/vbatts/tar-split/pull/22.diff","patch_url":"https://github.com/vbatts/tar-split/pull/22.patch"},"body":"After content addressability PR docker has a migration step when starting daemon for the first time. This step calculates the sha256 checksum of all the current data on disk.\r\n\r\nThis is quite time consuming if you have lots of data so I've tried to optimize it to make it as fast as possible.\r\n\r\nThis branch has the changes in docker side: https://github.com/docker/docker/compare/master...tonistiigi:migration-opt\r\n\r\nAll docker side optimization makes migration 55% faster in my testcase. Half of that is the parallel processing on the docker side, other half is the general optimizations mostly in this PR.\r\n\r\nThe JSON parsing itself is not optimal yet. Especially the part where it creates new buffers for decoding base64. Making this would probably result 5-10% speed increase, but I'm not sure if its worth considering the code would be quite more messy."},"comment":{"url":"https://api.github.com/repos/vbatts/tar-split/issues/comments/161418286","html_url":"https://github.com/vbatts/tar-split/pull/22#issuecomment-161418286","issue_url":"https://api.github.com/repos/vbatts/tar-split/issues/22","id":161418286,"user":{"login":"vbatts","id":67049,"avatar_url":"https://avatars.githubusercontent.com/u/67049?v=3","gravatar_id":"","url":"https://api.github.com/users/vbatts","html_url":"https://github.com/vbatts","followers_url":"https://api.github.com/users/vbatts/followers","following_url":"https://api.github.com/users/vbatts/following{/other_user}","gists_url":"https://api.github.com/users/vbatts/gists{/gist_id}","starred_url":"https://api.github.com/users/vbatts/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vbatts/subscriptions","organizations_url":"https://api.github.com/users/vbatts/orgs","repos_url":"https://api.github.com/users/vbatts/repos","events_url":"https://api.github.com/users/vbatts/events{/privacy}","received_events_url":"https://api.github.com/users/vbatts/received_events","type":"User","site_admin":false},"created_at":"2015-12-02T20:08:59Z","updated_at":"2015-12-02T20:08:59Z","body":"I see. Well overall this LGTM. I wish it were a bit more comparable for benchmarking, but so it goes."}}